1 #define hud_bg "gfx/vehicles/frame.tga"
2 #define hud_sh "gfx/vehicles/vh-shield.tga"
4 #define hud_hp_bar "gfx/vehicles/bar_up_left.tga"
5 #define hud_hp_ico "gfx/vehicles/health.tga"
6 #define hud_sh_bar "gfx/vehicles/bar_dwn_left.tga"
7 #define hud_sh_ico "gfx/vehicles/shield.tga"
9 #define hud_ammo1_bar "gfx/vehicles/bar_up_right.tga"
10 #define hud_ammo1_ico "gfx/vehicles/bullets.tga"
11 #define hud_ammo2_bar "gfx/vehicles/bar_dwn_right.tga"
12 #define hud_ammo2_ico "gfx/vehicles/rocket.tga"
13 #define hud_energy "gfx/vehicles/energy.tga"
18 #define SBRM_ARTILLERY 3
27 float autocvar_cl_vehicles_hudscale;
28 float autocvar_cl_vehicles_hudalpha;
30 #define raptor_ico "gfx/vehicles/raptor.tga"
31 #define raptor_gun "gfx/vehicles/raptor_guns.tga"
32 #define raptor_bomb "gfx/vehicles/raptor_bombs.tga"
33 #define raptor_drop "gfx/vehicles/axh-dropcross.tga"
36 void CSQC_WAKIZASHI_HUD();
37 void CSQC_SPIDER_HUD();
38 void CSQC_RAPTOR_HUD();
39 void CSQC_BUMBLE_HUD();
40 void CSQC_BUMBLE_GUN_HUD();
43 entity AuxiliaryXhair[MAX_AXH];
44 const var void Draw_Not();
51 #define bumb_ico "gfx/vehicles/bumb.tga"
52 #define bumb_lgun "gfx/vehicles/bumb_lgun.tga"
53 #define bumb_rgun "gfx/vehicles/bumb_rgun.tga"
55 #define bumb_gun_ico "gfx/vehicles/bumb_side.tga"
56 #define bumb_gun_gun "gfx/vehicles/bumb_side_gun.tga"
58 #define spider_ico "gfx/vehicles/sbot.tga"
59 #define spider_rkt "gfx/vehicles/sbot_rpods.tga"
60 #define spider_mgun "gfx/vehicles/sbot_mguns.tga"
61 string spider_xhair; // = "gfx/vehicles/axh-special1.tga";
63 #define waki_ico "gfx/vehicles/waki.tga"
64 #define waki_eng "gfx/vehicles/waki_e.tga"
65 #define waki_gun "gfx/vehicles/waki_guns.tga"
66 #define waki_rkt "gfx/vehicles/waki_rockets.tga"
67 #define waki_xhair "gfx/vehicles/axh-special1.tga"
72 void AuxiliaryXhair_Draw2D()
76 psize = self.axh_scale * draw_getimagesize(self.axh_image);
77 loc = project_3d_to_2d(self.move_origin) - 0.5 * psize;
78 if not (loc_z < 0 || loc_x < 0 || loc_y < 0 || loc_x > vid_conwidth || loc_y > vid_conheight)
82 drawpic(loc, self.axh_image, psize, self.colormod, self.alpha, self.axh_drawflag);
85 if(time - self.cnt > self.axh_fadetime)
86 self.draw2d = Draw_Not;
89 void Net_AuXair2(float bIsNew)
94 axh_id = bound(0, ReadByte(), MAX_AXH);
95 axh = AuxiliaryXhair[axh_id];
97 if(axh == world || wasfreed(axh)) // MADNESS? THIS IS QQQQCCCCCCCCC (wasfreed, why do you exsist?)
100 axh.draw2d = Draw_Not;
101 axh.drawmask = MASK_NORMAL;
102 axh.axh_drawflag = DRAWFLAG_ADDITIVE;
103 axh.axh_fadetime = 0.1;
104 axh.axh_image = "gfx/vehicles/axh-ring.tga";
107 AuxiliaryXhair[axh_id] = axh;
110 if(axh.oldorigin != ' 0 0 0')
112 //axh.move_velocity =
113 axh.move_origin = axh.origin;
114 axh.move_time = time;
118 axh.draw2d = AuxiliaryXhair_Draw2D;
120 axh.move_origin_x = ReadCoord();
121 axh.move_origin_y = ReadCoord();
122 axh.move_origin_z = ReadCoord();
124 axh.colormod_x = ReadByte() / 255;
125 axh.colormod_y = ReadByte() / 255;
126 axh.colormod_z = ReadByte() / 255;
131 void Net_VehicleSetup()
139 if(hud_id > HUD_VEHICLE_LAST)
141 weapon2mode = hud_id - HUD_VEHICLE_LAST;
145 // hud_id == 0 means we exited a vehicle, so stop alarm sound/s
148 sound(self, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
149 sound(self, CH_PAIN_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
154 hud_id = bound(HUD_VEHICLE_FIRST, hud_id, HUD_VEHICLE_LAST);
156 // Init auxiliary crosshairs
158 for(i = 0; i < MAX_AXH; ++i)
160 axh = AuxiliaryXhair[i];
161 if(axh != world && !wasfreed(axh)) // MADNESS? THIS IS QQQQCCCCCCCCC (wasfreed, why do you exsist?)
165 axh.draw2d = Draw_Not;
166 axh.drawmask = MASK_NORMAL;
167 axh.axh_drawflag = DRAWFLAG_NORMAL;
168 axh.axh_fadetime = 0.1;
169 axh.axh_image = "gfx/vehicles/axh-ring.tga";
172 AuxiliaryXhair[i] = axh;
179 AuxiliaryXhair[0].axh_image = "gfx/vehicles/axh-ring.tga";
180 AuxiliaryXhair[0].axh_scale = 0.25;
182 AuxiliaryXhair[1].axh_image = "gfx/vehicles/axh-ring.tga";
183 AuxiliaryXhair[1].axh_scale = 0.25;
185 AuxiliaryXhair[2].axh_image = "gfx/vehicles/axh-special1.tga";
186 AuxiliaryXhair[2].axh_scale = 0.5;
190 AuxiliaryXhair[0].axh_image = "gfx/vehicles/axh-bracket.tga";
191 AuxiliaryXhair[0].axh_scale = 0.25;
195 AuxiliaryXhair[0].axh_image = "gfx/vehicles/axh-special2.tga";
196 AuxiliaryXhair[0].axh_scale = 0.5;
197 //AuxiliaryXhair[0].alpha = 0.5;
199 AuxiliaryXhair[1].axh_image = "gfx/vehicles/axh-bracket.tga";
200 AuxiliaryXhair[1].axh_scale = 0.25;
201 //AuxiliaryXhair[1].alpha = 0.75;
202 //AuxiliaryXhair[1].axh_drawflag = DRAWFLAG_NORMAL;
207 AuxiliaryXhair[0].axh_image = "gfx/vehicles/axh-bracket.tga";
208 AuxiliaryXhair[0].axh_scale = 0.25;
211 AuxiliaryXhair[1].axh_image = "gfx/vehicles/axh-ring.tga";
212 AuxiliaryXhair[1].axh_scale = 0.25;
215 AuxiliaryXhair[2].axh_image = "gfx/vehicles/axh-ring.tga";
216 AuxiliaryXhair[2].axh_scale = 0.25;
218 case HUD_BUMBLEBEE_GUN:
220 AuxiliaryXhair[0].axh_image = "gfx/vehicles/axh-bracket.tga";
221 AuxiliaryXhair[0].axh_scale = 0.25;
223 AuxiliaryXhair[1].axh_image = "gfx/vehicles/axh-bracket.tga";
224 AuxiliaryXhair[1].axh_scale = 0.25;
228 #define HUD_GETSTATS \
229 float vh_health = getstati(STAT_VEHICLESTAT_HEALTH); \
230 float shield = getstati(STAT_VEHICLESTAT_SHIELD); \
231 float energy = getstati(STAT_VEHICLESTAT_ENERGY); \
232 float ammo1 = getstati(STAT_VEHICLESTAT_AMMO1); \
233 float reload1 = getstati(STAT_VEHICLESTAT_RELOAD1); \
234 float ammo2 = getstati(STAT_VEHICLESTAT_AMMO2); \
235 float reload2 = getstati(STAT_VEHICLESTAT_RELOAD2);
237 void CSQC_BUMBLE_HUD()
240 drawpic(hudloc, waki_s, picsize, '1 1 1', shield, DRAWFLAG_NORMAL);
241 drawpic(hudloc, waki_b, picsize, '0 1 0' * health + '1 0 0' * (1 - health), 1, DRAWFLAG_NORMAL);
242 drawpic(hudloc, waki_r, picsize, '1 1 1' * reload1 + '1 0 0' * (1 - reload1), 1, DRAWFLAG_NORMAL);
243 drawpic(hudloc, waki_e, picsize, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
245 if(autocvar_r_letterbox)
248 vector picsize, hudloc, pic2size, picloc;
250 // Fetch health & ammo stats
253 picsize = draw_getimagesize(hud_bg) * autocvar_cl_vehicles_hudscale;
254 hudloc_y = vid_conheight - picsize_y;
255 hudloc_x = vid_conwidth * 0.5 - picsize_x * 0.5;
257 drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL);
264 pic2size = draw_getimagesize(bumb_ico) * (autocvar_cl_vehicles_hudscale * 0.8);
265 picloc = picsize * 0.5 - pic2size * 0.5;
268 drawpic(hudloc + picloc, bumb_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
270 drawpic(hudloc + picloc, bumb_ico, pic2size, '1 1 1' * vh_health + '1 0 0' * (1 - vh_health), 1, DRAWFLAG_NORMAL);
272 drawpic(hudloc + picloc, bumb_lgun, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
273 drawpic(hudloc + picloc, bumb_lgun, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
274 drawpic(hudloc + picloc, hud_sh, pic2size, '1 1 1', shield, DRAWFLAG_NORMAL);
277 picsize = draw_getimagesize(hud_hp_bar) * autocvar_cl_vehicles_hudscale;
278 picloc = '69 69 0' * autocvar_cl_vehicles_hudscale;
279 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - vh_health)), 0, vid_conwidth, vid_conheight);
280 drawpic(hudloc + picloc, hud_hp_bar, picsize, '1 1 1', 1 , DRAWFLAG_NORMAL);
283 picsize = draw_getimagesize(hud_hp_ico) * autocvar_cl_vehicles_hudscale;
284 picloc = '37 65 0' * autocvar_cl_vehicles_hudscale;
287 if(alarm1time < time)
289 alarm1time = time + 2;
290 sound(self, CH_PAIN_SINGLE, "vehicles/alarm.wav", VOL_BASEVOICE, ATTN_NONE);
293 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
297 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
300 sound(self, CH_PAIN_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
306 picsize = draw_getimagesize(hud_sh_bar) * autocvar_cl_vehicles_hudscale;
307 picloc = '69 140 0' * autocvar_cl_vehicles_hudscale;
308 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - shield)), 0, vid_conwidth, vid_conheight);
309 drawpic(hudloc + picloc, hud_sh_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
312 picloc = '40 136 0' * autocvar_cl_vehicles_hudscale;
313 picsize = draw_getimagesize(hud_sh_ico) * autocvar_cl_vehicles_hudscale;
316 if(alarm2time < time)
318 alarm2time = time + 1;
319 sound(self, CH_TRIGGER_SINGLE, "vehicles/alarm_shield.wav", VOL_BASEVOICE, ATTN_NONE);
321 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
325 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
328 sound(self, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
337 picsize = draw_getimagesize(hud_ammo1_bar) * autocvar_cl_vehicles_hudscale;
338 picloc = '450 69 0' * autocvar_cl_vehicles_hudscale;
339 drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * ammo1, vid_conheight);
340 drawpic(hudloc + picloc, hud_ammo1_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
343 picsize = 1.5 * draw_getimagesize(hud_energy) * autocvar_cl_vehicles_hudscale;
344 picloc = '664 60 0' * autocvar_cl_vehicles_hudscale;
346 drawpic(hudloc + picloc, hud_energy, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
348 drawpic(hudloc + picloc, hud_energy, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
351 picsize = draw_getimagesize(hud_ammo2_bar) * autocvar_cl_vehicles_hudscale;
352 picloc = '450 140 0' * autocvar_cl_vehicles_hudscale;
353 drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * ammo2, vid_conheight);
354 drawpic(hudloc + picloc, hud_ammo2_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
357 picsize = 1.5 * draw_getimagesize(hud_energy) * autocvar_cl_vehicles_hudscale;
358 picloc = '664 130 0' * autocvar_cl_vehicles_hudscale;
360 drawpic(hudloc + picloc, hud_energy, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
362 drawpic(hudloc + picloc, hud_energy, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
366 picsize = draw_getimagesize(hud_ammo2_bar) * autocvar_cl_vehicles_hudscale;
367 picloc = '450 140 0' * autocvar_cl_vehicles_hudscale;
368 drawsetcliparea(hudloc_x + picloc_x, hudloc_y + picloc_y, picsize_x * reload1, vid_conheight);
369 drawpic(hudloc + picloc, hud_ammo2_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
372 pic2size = draw_getimagesize(hud_ammo2_ico) * autocvar_cl_vehicles_hudscale;
373 picloc = '664 130 0' * autocvar_cl_vehicles_hudscale;
375 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
377 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 1 1', 1, DRAWFLAG_NORMAL);
379 if (scoreboard_showscores)
380 HUD_DrawScoreboard();
383 picsize = draw_getimagesize(waki_xhair);
388 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);
392 void CSQC_BUMBLE_GUN_HUD()
395 if(autocvar_r_letterbox)
398 vector picsize, hudloc, pic2size, picloc;
400 // Fetch health & ammo stats
403 picsize = draw_getimagesize(hud_bg) * autocvar_cl_vehicles_hudscale;
404 hudloc_y = vid_conheight - picsize_y;
405 hudloc_x = vid_conwidth * 0.5 - picsize_x * 0.5;
407 drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL);
414 pic2size = draw_getimagesize(bumb_gun_ico) * (autocvar_cl_vehicles_hudscale * 0.8);
415 picloc = picsize * 0.5 - pic2size * 0.5;
418 drawpic(hudloc + picloc, bumb_gun_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
420 drawpic(hudloc + picloc, bumb_gun_ico, pic2size, '1 1 1' * vh_health + '1 0 0' * (1 - vh_health), 1, DRAWFLAG_NORMAL);
422 drawpic(hudloc + picloc, bumb_gun_gun, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
423 drawpic(hudloc + picloc, hud_sh, pic2size, '1 1 1', shield, DRAWFLAG_NORMAL);
426 picsize = draw_getimagesize(hud_hp_bar) * autocvar_cl_vehicles_hudscale;
427 picloc = '69 69 0' * autocvar_cl_vehicles_hudscale;
428 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - vh_health)), 0, vid_conwidth, vid_conheight);
429 drawpic(hudloc + picloc, hud_hp_bar, picsize, '1 1 1', 1 , DRAWFLAG_NORMAL);
432 picsize = draw_getimagesize(hud_hp_ico) * autocvar_cl_vehicles_hudscale;
433 picloc = '37 65 0' * autocvar_cl_vehicles_hudscale;
436 if(alarm1time < time)
438 alarm1time = time + 2;
439 sound(self, CH_PAIN_SINGLE, "vehicles/alarm.wav", VOL_BASEVOICE, ATTN_NONE);
442 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
446 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
449 sound(self, CH_PAIN_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
455 picsize = draw_getimagesize(hud_sh_bar) * autocvar_cl_vehicles_hudscale;
456 picloc = '69 140 0' * autocvar_cl_vehicles_hudscale;
457 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - shield)), 0, vid_conwidth, vid_conheight);
458 drawpic(hudloc + picloc, hud_sh_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
461 picloc = '40 136 0' * autocvar_cl_vehicles_hudscale;
462 picsize = draw_getimagesize(hud_sh_ico) * autocvar_cl_vehicles_hudscale;
465 if(alarm2time < time)
467 alarm2time = time + 1;
468 sound(self, CH_TRIGGER_SINGLE, "vehicles/alarm_shield.wav", VOL_BASEVOICE, ATTN_NONE);
470 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
474 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
477 sound(self, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
483 picsize = draw_getimagesize(hud_ammo1_bar) * autocvar_cl_vehicles_hudscale;
484 picloc = '450 69 0' * autocvar_cl_vehicles_hudscale;
485 drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * energy, vid_conheight);
486 drawpic(hudloc + picloc, hud_ammo1_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
489 picsize = 1.5 * draw_getimagesize(hud_energy) * autocvar_cl_vehicles_hudscale;
490 picloc = '664 60 0' * autocvar_cl_vehicles_hudscale;
492 drawpic(hudloc + picloc, hud_energy, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
494 drawpic(hudloc + picloc, hud_energy, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
497 picsize = draw_getimagesize(hud_ammo2_bar) * autocvar_cl_vehicles_hudscale;
498 picloc = '450 140 0' * autocvar_cl_vehicles_hudscale;
499 drawsetcliparea(hudloc_x + picloc_x, hudloc_y + picloc_y, picsize_x * reload1, vid_conheight);
500 drawpic(hudloc + picloc, hud_ammo2_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
503 pic2size = draw_getimagesize(hud_ammo2_ico) * autocvar_cl_vehicles_hudscale;
504 picloc = '664 130 0' * autocvar_cl_vehicles_hudscale;
506 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
508 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 1 1', 1, DRAWFLAG_NORMAL);
510 if (scoreboard_showscores)
511 HUD_DrawScoreboard();
514 picsize = draw_getimagesize(waki_xhair);
519 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);
525 void CSQC_SPIDER_HUD()
527 if(autocvar_r_letterbox)
530 vector picsize, hudloc, pic2size, picloc;
533 // Fetch health & ammo stats
536 picsize = draw_getimagesize(hud_bg) * autocvar_cl_vehicles_hudscale;
537 hudloc_y = vid_conheight - picsize_y;
538 hudloc_x = vid_conwidth * 0.5 - picsize_x * 0.5;
540 drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL);
547 pic2size = draw_getimagesize(spider_ico) * (autocvar_cl_vehicles_hudscale * 0.8);
548 picloc = picsize * 0.5 - pic2size * 0.5;
550 drawpic(hudloc + picloc, spider_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
552 drawpic(hudloc + picloc, spider_ico, pic2size, '1 1 1' * vh_health + '1 0 0' * (1 - vh_health), 1, DRAWFLAG_NORMAL);
553 drawpic(hudloc + picloc, spider_rkt, pic2size, '1 1 1' * reload2 + '1 0 0' * (1 - reload2), 1, DRAWFLAG_NORMAL);
554 drawpic(hudloc + picloc, spider_mgun, pic2size, '1 1 1' * ammo1 + '1 0 0' * (1 - ammo1), 1, DRAWFLAG_NORMAL);
555 drawpic(hudloc + picloc, hud_sh, pic2size, '1 1 1', shield, DRAWFLAG_NORMAL);
558 picsize = draw_getimagesize(hud_hp_bar) * autocvar_cl_vehicles_hudscale;
559 picloc = '69 69 0' * autocvar_cl_vehicles_hudscale;
560 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - vh_health)), 0, vid_conwidth, vid_conheight);
561 drawpic(hudloc + picloc, hud_hp_bar, picsize, '1 1 1', 1 , DRAWFLAG_NORMAL);
564 picsize = draw_getimagesize(hud_hp_ico) * autocvar_cl_vehicles_hudscale;
565 picloc = '37 65 0' * autocvar_cl_vehicles_hudscale;
568 if(alarm1time < time)
570 alarm1time = time + 2;
571 sound(self, CH_PAIN_SINGLE, "vehicles/alarm.wav", VOL_BASEVOICE, ATTN_NONE);
573 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
577 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
580 sound(self, CH_PAIN_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
585 picsize = draw_getimagesize(hud_sh_bar) * autocvar_cl_vehicles_hudscale;
586 picloc = '69 140 0' * autocvar_cl_vehicles_hudscale;
587 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - shield)), 0, vid_conwidth, vid_conheight);
588 drawpic(hudloc + picloc, hud_sh_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
591 picloc = '40 136 0' * autocvar_cl_vehicles_hudscale;
592 picsize = draw_getimagesize(hud_sh_ico) * autocvar_cl_vehicles_hudscale;
595 if(alarm2time < time)
597 alarm2time = time + 1;
598 sound(self, CH_TRIGGER_SINGLE, "vehicles/alarm_shield.wav", VOL_BASEVOICE, ATTN_NONE);
600 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
604 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
607 sound(self, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
613 picsize = draw_getimagesize(hud_ammo1_bar) * autocvar_cl_vehicles_hudscale;
614 picloc = '450 69 0' * autocvar_cl_vehicles_hudscale;
615 drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * ammo1, vid_conheight);
616 drawpic(hudloc + picloc, hud_ammo1_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
619 picsize = draw_getimagesize(hud_ammo1_ico) * autocvar_cl_vehicles_hudscale;
620 picloc = '664 60 0' * autocvar_cl_vehicles_hudscale;
622 drawpic(hudloc + picloc, hud_ammo1_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
624 drawpic(hudloc + picloc, hud_ammo1_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
627 picsize = draw_getimagesize(hud_ammo2_bar) * autocvar_cl_vehicles_hudscale;
628 ammo1 = picsize_x / 8;
629 picloc = '450 140 0' * autocvar_cl_vehicles_hudscale;
630 drawsetcliparea(hudloc_x + picloc_x, hudloc_y + picloc_y, picsize_x * reload2, vid_conheight);
631 drawpic(hudloc + picloc, hud_ammo2_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
635 pic2size = 0.35 * draw_getimagesize(hud_ammo2_ico) * autocvar_cl_vehicles_hudscale;
636 picloc_x -= pic2size_x;
637 picloc_y += pic2size_y * 2.25;
640 for(i = 1; i < 9; ++i)
643 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, ((8 * reload2 <= i) ? '0 0 0' : '1 1 1'), 0.75, DRAWFLAG_NORMAL);
648 for(i = 1; i < 9; ++i)
651 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, ((i >= ammo2) ? '1 1 1' : '0 0 0'), 0.75, DRAWFLAG_NORMAL);
654 pic2size = draw_getimagesize(hud_ammo2_ico) * autocvar_cl_vehicles_hudscale;
655 picloc = '664 130 0' * autocvar_cl_vehicles_hudscale;
657 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
659 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 1 1', 1, DRAWFLAG_NORMAL);
661 if (scoreboard_showscores)
662 HUD_DrawScoreboard();
668 spider_xhair = "gfx/vehicles/axh-bracket.tga";
671 spider_xhair = "gfx/vehicles/axh-cross.tga";
674 spider_xhair = "gfx/vehicles/axh-tag.tga";
677 spider_xhair= "gfx/vehicles/axh-tag.tga";
680 picsize = draw_getimagesize(spider_xhair);
681 picsize_x *= autocvar_cl_vehicle_spiderbot_cross_size;
682 picsize_y *= autocvar_cl_vehicle_spiderbot_cross_size;
684 drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), spider_xhair, picsize, '1 1 1', autocvar_cl_vehicle_spiderbot_cross_alpha, DRAWFLAG_ADDITIVE);
688 void CSQC_RAPTOR_HUD()
690 if(autocvar_r_letterbox)
693 vector picsize, hudloc, pic2size, picloc;
695 // Fetch health & ammo stats
698 picsize = draw_getimagesize(hud_bg) * autocvar_cl_vehicles_hudscale;
699 hudloc_y = vid_conheight - picsize_y;
700 hudloc_x = vid_conwidth * 0.5 - picsize_x * 0.5;
702 drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL);
709 reload1 = reload2 * 0.01;
712 pic2size = draw_getimagesize(spider_ico) * (autocvar_cl_vehicles_hudscale * 0.8);
713 picloc = picsize * 0.5 - pic2size * 0.5;
715 drawpic(hudloc + picloc, raptor_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
717 drawpic(hudloc + picloc, raptor_ico, pic2size, '1 1 1' * vh_health + '1 0 0' * (1 - vh_health), 1, DRAWFLAG_NORMAL);
718 drawpic(hudloc + picloc, raptor_bomb, pic2size, '1 1 1' * reload1 + '1 0 0' * (1 - reload1), 1, DRAWFLAG_NORMAL);
719 drawpic(hudloc + picloc, raptor_gun, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
720 drawpic(hudloc + picloc, hud_sh, pic2size, '1 1 1', shield, DRAWFLAG_NORMAL);
723 picsize = draw_getimagesize(hud_hp_bar) * autocvar_cl_vehicles_hudscale;
724 picloc = '69 69 0' * autocvar_cl_vehicles_hudscale;
725 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - vh_health)), 0, vid_conwidth, vid_conheight);
726 drawpic(hudloc + picloc, hud_hp_bar, picsize, '1 1 1', 1 , DRAWFLAG_NORMAL);
729 picsize = draw_getimagesize(hud_hp_ico) * autocvar_cl_vehicles_hudscale;
730 picloc = '37 65 0' * autocvar_cl_vehicles_hudscale;
733 if(alarm1time < time)
735 alarm1time = time + 2;
736 sound(self, CH_PAIN_SINGLE, "vehicles/alarm.wav", VOL_BASEVOICE, ATTN_NONE);
739 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
743 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
746 sound(self, CH_PAIN_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
752 picsize = draw_getimagesize(hud_sh_bar) * autocvar_cl_vehicles_hudscale;
753 picloc = '69 140 0' * autocvar_cl_vehicles_hudscale;
754 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - shield)), 0, vid_conwidth, vid_conheight);
755 drawpic(hudloc + picloc, hud_sh_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
758 picloc = '40 136 0' * autocvar_cl_vehicles_hudscale;
759 picsize = draw_getimagesize(hud_sh_ico) * autocvar_cl_vehicles_hudscale;
762 if(alarm2time < time)
764 alarm2time = time + 1;
765 sound(self, CH_TRIGGER_SINGLE, "vehicles/alarm_shield.wav", VOL_BASEVOICE, ATTN_NONE);
767 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
771 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
774 sound(self, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
780 picsize = draw_getimagesize(hud_ammo1_bar) * autocvar_cl_vehicles_hudscale;
781 picloc = '450 69 0' * autocvar_cl_vehicles_hudscale;
782 drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * energy, vid_conheight);
783 drawpic(hudloc + picloc, hud_ammo1_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
786 picsize = draw_getimagesize(hud_ammo1_ico) * autocvar_cl_vehicles_hudscale;
787 picloc = '664 60 0' * autocvar_cl_vehicles_hudscale;
789 drawpic(hudloc + picloc, hud_ammo1_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
791 drawpic(hudloc + picloc, hud_ammo1_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
794 picsize = draw_getimagesize(hud_ammo2_bar) * autocvar_cl_vehicles_hudscale;
795 picloc = '450 140 0' * autocvar_cl_vehicles_hudscale;
796 drawsetcliparea(hudloc_x + picloc_x, hudloc_y + picloc_y, picsize_x * reload1, vid_conheight);
797 drawpic(hudloc + picloc, hud_ammo2_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
800 pic2size = draw_getimagesize(hud_ammo2_ico) * autocvar_cl_vehicles_hudscale;
801 picloc = '664 130 0' * autocvar_cl_vehicles_hudscale;
803 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
805 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 1 1', 1, DRAWFLAG_NORMAL);
807 if(weapon2mode == RSM_FLARE)
809 raptor_xhair = "gfx/vehicles/axh-bracket.tga";
813 raptor_xhair = "gfx/vehicles/axh-ring.tga";
819 dropmark.owner = self;
820 dropmark.gravity = 1;
827 setorigin(dropmark, pmove_org);
828 dropmark.velocity = pmove_vel;
829 tracetoss(dropmark, self);
831 where = project_3d_to_2d(trace_endpos);
833 setorigin(dropmark, trace_endpos);
834 picsize = draw_getimagesize(raptor_drop) * 0.2;
836 if not (where_z < 0 || where_x < 0 || where_y < 0 || where_x > vid_conwidth || where_y > vid_conheight)
838 where_x -= picsize_x * 0.5;
839 where_y -= picsize_y * 0.5;
841 drawpic(where, raptor_drop, picsize, '0 2 0', 1, DRAWFLAG_ADDITIVE);
843 dropmark.cnt = time + 5;
848 if(dropmark.cnt > time)
850 where = project_3d_to_2d(dropmark.origin);
851 picsize = draw_getimagesize(raptor_drop) * 0.25;
853 if not (where_z < 0 || where_x < 0 || where_y < 0 || where_x > vid_conwidth || where_y > vid_conheight)
855 where_x -= picsize_x * 0.5;
856 where_y -= picsize_y * 0.5;
858 drawpic(where, raptor_drop, picsize, '2 0 0', 1, DRAWFLAG_ADDITIVE);
864 if (scoreboard_showscores)
865 HUD_DrawScoreboard();
868 picsize = draw_getimagesize(raptor_xhair);
872 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);
876 void CSQC_WAKIZASHI_HUD()
879 drawpic(hudloc, waki_s, picsize, '1 1 1', shield, DRAWFLAG_NORMAL);
880 drawpic(hudloc, waki_b, picsize, '0 1 0' * health + '1 0 0' * (1 - health), 1, DRAWFLAG_NORMAL);
881 drawpic(hudloc, waki_r, picsize, '1 1 1' * reload1 + '1 0 0' * (1 - reload1), 1, DRAWFLAG_NORMAL);
882 drawpic(hudloc, waki_e, picsize, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
884 if(autocvar_r_letterbox)
887 vector picsize, hudloc, pic2size, picloc;
889 // Fetch health & ammo stats
892 picsize = draw_getimagesize(hud_bg) * autocvar_cl_vehicles_hudscale;
893 hudloc_y = vid_conheight - picsize_y;
894 hudloc_x = vid_conwidth * 0.5 - picsize_x * 0.5;
896 drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL);
903 pic2size = draw_getimagesize(spider_ico) * (autocvar_cl_vehicles_hudscale * 0.8);
904 picloc = picsize * 0.5 - pic2size * 0.5;
906 drawpic(hudloc + picloc, waki_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
908 drawpic(hudloc + picloc, waki_ico, pic2size, '1 1 1' * vh_health + '1 0 0' * (1 - vh_health), 1, DRAWFLAG_NORMAL);
909 drawpic(hudloc + picloc, waki_eng, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
910 drawpic(hudloc + picloc, waki_gun, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
911 drawpic(hudloc + picloc, waki_rkt, pic2size, '1 1 1' * reload1 + '1 0 0' * (1 - reload1), 1, DRAWFLAG_NORMAL);
912 drawpic(hudloc + picloc, hud_sh, pic2size, '1 1 1', shield, DRAWFLAG_NORMAL);
915 picsize = draw_getimagesize(hud_hp_bar) * autocvar_cl_vehicles_hudscale;
916 picloc = '69 69 0' * autocvar_cl_vehicles_hudscale;
917 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - vh_health)), 0, vid_conwidth, vid_conheight);
918 drawpic(hudloc + picloc, hud_hp_bar, picsize, '1 1 1', 1 , DRAWFLAG_NORMAL);
921 picsize = draw_getimagesize(hud_hp_ico) * autocvar_cl_vehicles_hudscale;
922 picloc = '37 65 0' * autocvar_cl_vehicles_hudscale;
925 if(alarm1time < time)
927 alarm1time = time + 2;
928 sound(self, CH_PAIN_SINGLE, "vehicles/alarm.wav", VOL_BASEVOICE, ATTN_NONE);
931 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
935 drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
938 sound(self, CH_PAIN_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
945 picsize = draw_getimagesize(hud_sh_bar) * autocvar_cl_vehicles_hudscale;
946 picloc = '69 140 0' * autocvar_cl_vehicles_hudscale;
947 drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - shield)), 0, vid_conwidth, vid_conheight);
948 drawpic(hudloc + picloc, hud_sh_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
951 picloc = '40 136 0' * autocvar_cl_vehicles_hudscale;
952 picsize = draw_getimagesize(hud_sh_ico) * autocvar_cl_vehicles_hudscale;
955 if(alarm2time < time)
957 alarm2time = time + 1;
958 sound(self, CH_TRIGGER_SINGLE, "vehicles/alarm_shield.wav", VOL_BASEVOICE, ATTN_NONE);
960 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
964 drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
967 sound(self, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
973 picsize = draw_getimagesize(hud_ammo1_bar) * autocvar_cl_vehicles_hudscale;
974 picloc = '450 69 0' * autocvar_cl_vehicles_hudscale;
975 drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * energy, vid_conheight);
976 drawpic(hudloc + picloc, hud_ammo1_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
979 picsize = draw_getimagesize(hud_ammo1_ico) * autocvar_cl_vehicles_hudscale;
980 picloc = '664 60 0' * autocvar_cl_vehicles_hudscale;
982 drawpic(hudloc + picloc, hud_ammo1_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
984 drawpic(hudloc + picloc, hud_ammo1_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
987 picsize = draw_getimagesize(hud_ammo2_bar) * autocvar_cl_vehicles_hudscale;
988 picloc = '450 140 0' * autocvar_cl_vehicles_hudscale;
989 drawsetcliparea(hudloc_x + picloc_x, hudloc_y + picloc_y, picsize_x * reload1, vid_conheight);
990 drawpic(hudloc + picloc, hud_ammo2_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
993 pic2size = draw_getimagesize(hud_ammo2_ico) * autocvar_cl_vehicles_hudscale;
994 picloc = '664 130 0' * autocvar_cl_vehicles_hudscale;
996 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
998 drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 1 1', 1, DRAWFLAG_NORMAL);
1000 if (scoreboard_showscores)
1001 HUD_DrawScoreboard();
1004 picsize = draw_getimagesize(waki_xhair);
1009 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);
1013 void Vehicles_Precache()
1015 // fixme: HAAAAKKKZZZ!!!!!!!!!!!! (this belongs as a setting in default.cfg)
1016 if(!autocvar_cl_vehicles_hudscale )
1017 autocvar_cl_vehicles_hudscale = 0.5;
1019 if(!autocvar_cl_vehicles_hudalpha)
1020 autocvar_cl_vehicles_hudalpha = 0.75;
1022 //precache_model("models/vehicles/wakizashi.dpm");
1024 precache_model("models/vehicles/bomblet.md3");
1025 precache_model("models/vehicles/clusterbomb.md3");
1026 precache_model("models/vehicles/clusterbomb_fragment.md3");
1027 precache_model("models/vehicles/rocket01.md3");
1028 precache_model("models/vehicles/rocket02.md3");
1030 precache_sound ("vehicles/alarm.wav");
1031 precache_sound ("vehicles/alarm_shield.wav");
1034 void RaptorCBShellfragDraw()
1037 Movetype_Physics_MatchTicrate(autocvar_cl_gibs_ticrate, autocvar_cl_gibs_sloppy);
1041 self.move_avelocity += randomvec() * 15;
1042 self.renderflags = 0;
1044 self.alpha = bound(0, self.nextthink - time, 1);
1046 if(self.alpha < ALPHA_MIN_VISIBLE)
1050 void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang)
1055 setmodel(sfrag, "models/vehicles/clusterbomb_fragment.md3");
1056 setorigin(sfrag, _org);
1058 sfrag.move_movetype = MOVETYPE_BOUNCE;
1059 sfrag.gravity = 0.15;
1060 sfrag.solid = SOLID_CORPSE;
1062 sfrag.draw = RaptorCBShellfragDraw;
1064 sfrag.move_origin = sfrag.origin = _org;
1065 sfrag.move_velocity = _vel;
1066 sfrag.move_avelocity = prandomvec() * vlen(sfrag.move_velocity);
1067 sfrag.angles = self.move_angles = _ang;
1069 sfrag.move_time = time;
1070 sfrag.damageforcescale = 4;
1072 sfrag.nextthink = time + 3;
1073 sfrag.cnt = time + 2;
1075 sfrag.drawmask = MASK_NORMAL;