76 vector mi =
'0 0 0', ma =
'0 0 0';
80 switch (wepent.activeweapon)
83 case WEP_OVERKILL_NEX:
167 static float rainbow_last_flicker;
168 static vector rainbow_prev_color;
169 vector wcross_color =
'0 0 0';
175 wcross_color = this.m_color;
184 float health_and_armor =
floor(v.x + 1);
190 if (
time >= rainbow_last_flicker)
195 wcross_color = rainbow_prev_color;
244 float wcross_alpha, wcross_resolution;
248 if (wcross_style ==
"0")
251 if (wcross_resolution == 0)
254 if (wcross_alpha == 0)
257 static int crosshair_chase_state = 0;
267 if (
csqcplayer && chase_playeralpha < 1 && my_alpha > chase_playeralpha)
269 crosshair_chase_state = 2;
280 float new_alpha = hit
284 if (new_alpha != prev_alpha)
293 if (crosshair_chase_state == 2)
294 crosshair_chase_state = 1;
295 else if (crosshair_chase_state == 1)
300 crosshair_chase_state = 0;
317 if (
vdist(v, >, 0.01))
326 vector wcross_color =
'0 0 0', wcross_size =
'0 0 0';
327 string wcross_name =
"";
328 float wcross_scale, wcross_blur;
334 e = wepent.switchingweapon;
343 wcross_resolution *= e.w_crosshair_size;
344 wcross_name = e.w_crosshair;
348 if (wcross_name ==
"")
349 wcross_name =
strcat(
"gfx/crosshair", wcross_style);
356 wcross_scale = wcross_resolution;
357 wcross_resolution = 1;
364 float stat_pickup_time =
STAT(LAST_PICKUP);
368 if (
time - stat_pickup_time < 5)
432 wcross_alpha *= 0.75;
455 wcross_size = draw_getimagesize(wcross_name) * wcross_scale;
457 if (wcross_scale >= 0.001 && wcross_alpha >= 0.001)
463 float ring_value = 0, ring_scale = 0, ring_alpha = 0, ring_inner_value = 0, ring_inner_alpha = 0;
465 vector ring_rgb =
'0 0 0', ring_inner_rgb =
'0 0 0';
471 int weapon_clipload = wepent.clip_load;
472 int weapon_clipsize = wepent.clip_size;
474 float arc_heat = wepent.arc_heat_percent;
480 float chargepool = 0;
481 bool ring_vortex_enabled =
false;
484 if (wepent.activeweapon == WEP_VORTEX)
486 charge = wepent.vortex_charge;
487 chargepool = wepent.vortex_chargepool_ammo;
489 else if (wepent.activeweapon == WEP_OVERKILL_NEX)
491 charge = wepent.oknex_charge;
492 chargepool = wepent.oknex_chargepool_ammo;
495 ring_vortex_enabled =
true;
498 if (ring_vortex_enabled)
503 ring_inner_value = chargepool;
514 ring_inner_image =
"gfx/crosshair_ring_inner";
519 ring_rgb = wcross_color;
520 ring_image =
"gfx/crosshair_ring_nexgun";
524 ring_value =
bound(0, wepent.minelayer_mines /
WEP_CVAR(WEP_MINE_LAYER, limit), 1);
526 ring_rgb = wcross_color;
527 ring_image =
"gfx/crosshair_ring";
533 ring_rgb = wcross_color;
534 ring_image =
"gfx/crosshair_ring";
538 ring_value =
bound(0, weapon_clipload / weapon_clipsize, 1);
541 ring_rgb = wcross_color;
545 if (wepent.activeweapon == WEP_RIFLE && weapon_clipsize == 80)
546 ring_image =
"gfx/crosshair_ring_rifle";
548 ring_image =
"gfx/crosshair_ring";
552 ring_value = arc_heat;
556 ring_image =
"gfx/crosshair_ring";
574 ring_alpha *=
bound(0, f, 1);
585 #define CROSSHAIR_DO_BLUR(M, sz, wcross_name, wcross_alpha) MACRO_BEGIN \
586 vector scaled_sz = sz * wcross_size; \
587 if (wcross_blur > 0) \
588 for (int j, i = -2; i <= 2; ++i) \
589 for (j = -2; j <= 2; ++j) \
590 M(i, j, sz, scaled_sz, wcross_name, wcross_alpha * 0.04); \
592 M(0, 0, sz, scaled_sz, wcross_name, wcross_alpha); \
595 #define CROSSHAIR_DRAW_SINGLE(i, j, sz, scaled_sz, wcross_name, wcross_alpha) \
596 drawpic(wcross_origin - ('0.5 0 0' * (scaled_sz.x + i * wcross_blur) + '0 0.5 0' * (scaled_sz.y + j * wcross_blur)), wcross_name, scaled_sz, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
598 #define CROSSHAIR_DRAW(sz,wcross_name,wcross_alpha) \
599 CROSSHAIR_DO_BLUR(CROSSHAIR_DRAW_SINGLE, sz, wcross_name, wcross_alpha)
614 wcross_size = draw_getimagesize(wcross_name) * wcross_scale;
620 wcross_color_old = wcross_color;
627 wcross_color = wcross_color_old;
655 bool wep_zoomed =
false;
659 Weapon wep = wepe.activeweapon;
660 if (wep != WEP_Null && wep.
wr_zoom)
665 wep_zoomed += do_zoom;
689 vector reticle_pos =
'0 0 0', reticle_size =
'0 0 0';
707 switch (reticle_type)
#define MUTATOR_CALLHOOK(id,...)
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
bool HUD_MinigameMenu_IsOpened()
virtual void vr_crosshair()
(CLIENT) logic to run every frame
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
virtual void wr_zoom()
(BOTH) weapon specific zoom reticle
string w_reticle
A: reticle : per-weapon zoom reticle.
void DrawCircleClippedPic(vector centre, float radi, string pic, float f, vector rgb, float a, float drawflag)
#define drawpic(position, pic, size, rgb, alpha, flag)
int spectatee_status
the -1 disables HUD panels before CSQC receives necessary data
float current_zoomfraction
vector healtharmor_maxdamage(float h, float a, float armorblock, int deathtype)
vector decompressShotOrigin(int f)
const int HUD_BUMBLEBEE_GUN
float pickup_crosshair_size
const float SHOTTYPE_HITTEAM
float wcross_resolution_goal_prev_prev
string wcross_name_goal_prev_prev
void HUD_Crosshair_ApplyPlayerAlpha(float new_alpha)
float wcross_scale_goal_prev
float pickup_crosshair_time
void HUD_Crosshair_Vehicle(entity this)
float wcross_resolution_goal_prev
float use_vortex_chargepool
float wcross_changedonetime
#define CROSSHAIR_DRAW(sz, wcross_name, wcross_alpha)
int TrueAimCheck(entity wepent)
const float SHOTTYPE_HITWORLD
vector wcross_color_goal_prev
void DrawReticle(entity this)
const float SHOTTYPE_HITENEMY
void HUD_Crosshair(entity this)
const float SHOTTYPE_HITOBSTRUCTION
float wcross_name_changestarttime
string wcross_name_goal_prev
float wcross_name_changedonetime
float hitindication_crosshair_size
vector crosshair_getcolor(entity this, float health_stat)
float wcross_alpha_goal_prev
float wcross_name_alpha_goal_prev_prev
float wcross_name_alpha_goal_prev
bool autocvar_crosshair_ring_hagar
float autocvar_crosshair_ring_vortex_inner_color_blue
bool autocvar_crosshair_ring
float autocvar_crosshair_ring_vortex_inner_color_red
string autocvar_crosshair_2d
bool autocvar_cl_reticle_weapon
float autocvar_crosshair_ring_vortex_alpha
bool autocvar_crosshair_hitindication
bool autocvar_crosshair_hittest
float autocvar_crosshair_size
bool autocvar_crosshair_effect_scalefade
float autocvar_crosshair_ring_reload_size
bool autocvar_crosshair_ring_arc
string autocvar_crosshair_dot_color
bool autocvar_crosshair_enabled
float autocvar_crosshair_ring_size
float autocvar_crosshair_ring_reload_alpha
float autocvar_cl_reticle_weapon_alpha
int autocvar_crosshair_color_special
bool autocvar_crosshair_ring_inner
float autocvar_crosshair_ring_vortex_currentcharge_movingavg_rate
float autocvar_crosshair_ring_hagar_alpha
bool autocvar_crosshair_hittest_blur_wall
bool autocvar_cl_reticle_stretch
float autocvar_crosshair_ring_vortex_inner_color_green
float autocvar_crosshair_pickup_speed
float autocvar_crosshair_dot_size
bool autocvar_crosshair_ring_minelayer
float autocvar_crosshair_color_special_rainbow_delay
string autocvar_crosshair_color
float autocvar_crosshair_ring_vortex_currentcharge_scale
bool autocvar_crosshair_ring_reload
float autocvar_crosshair_ring_arc_cold_alpha
bool autocvar_crosshair_hittest_showimpact
bool autocvar_crosshair_per_weapon
float autocvar_crosshair_ring_vortex_inner_alpha
vector autocvar_crosshair_ring_arc_hot_color
bool autocvar_crosshair_hittest_blur_teammate
float autocvar_crosshair_pickup
float autocvar_crosshair_color_special_rainbow_brightness
float vortex_charge_movingavg
float autocvar_crosshair_hitindication_speed
float autocvar_cl_reticle_normal_alpha
bool autocvar_cl_reticle_chase
float autocvar_crosshair_effect_time
float autocvar_crosshair_ring_minelayer_alpha
bool autocvar_crosshair_dot
bool autocvar_crosshair_dot_color_custom
string autocvar_crosshair_hitindication_per_weapon_color
bool autocvar_crosshair_ring_vortex
float autocvar_crosshair_dot_alpha
string autocvar_crosshair_hitindication_color
float autocvar_crosshair_chase_playeralpha
string autocvar_crosshair
float autocvar_crosshair_alpha
bool autocvar_crosshair_chase
float autocvar_crosshair_ring_arc_hot_alpha
const float DRAWFLAG_NORMAL
const float MOVE_NOMONSTERS
const float DRAWFLAG_ADDITIVE
float trace_networkentity
#define entcs_receiver(...)
vector HUD_Get_Num_Color(float hp, float maxvalue, bool blink)
float autocvar__menu_alpha
#define FOREACH_ENTITY_CLASS(class, cond, body)
noref float vid_conheight
void WarpZone_TraceLine(vector org, vector end, float nomonsters, entity forent)
const int VIEWLOC_FREEAIM
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))
#define new_pure(class)
purely logical entities (not linked to the area grid)
#define REGISTRY_GET(id, i)
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt()
#define pointinsidebox(point, bmins, bmaxs)
vector project_3d_to_2d(vector vec)
int autocvar_chase_active
bool autocvar_chase_front
bool autocvar_cl_lockview
entity viewmodels[MAX_WEAPONSLOTS]
#define WEP_CVAR(wep, name)
#define WEP_CVAR_SEC(wep, name)
const int MAX_WEAPONSLOTS
const int WEP_FLAG_NOTRUEAIM