zoomspeed = 3.5;
zoomdir = button_zoom;
- if((getstati(STAT_ACTIVEWEAPON) == WEP_NEX && nex_scope) || (getstati(STAT_ACTIVEWEAPON) == WEP_SNIPERRIFLE && sniperrifle_scope)) // do NOT use switchweapon here
+ if((getstati(STAT_ACTIVEWEAPON) == WEP_NEX && nex_scope) || (getstati(STAT_ACTIVEWEAPON) == WEP_RIFLE && rifle_scope)) // do NOT use switchweapon here
zoomdir += button_attack2;
if(spectatee_status > 0 || isdemo())
{
case WEP_MINSTANEX:
mv = MOVE_NORMAL;
break;
- case WEP_SNIPERRIFLE:
+ case WEP_RIFLE:
ta = trueaim_rifle;
mv = MOVE_NORMAL;
if(zoomscript_caught)
void PostInit(void);
void CSQC_Demo_Camera();
float HUD_WouldDrawScoreboard();
-float view_set;
float camera_mode;
float reticle_type;
string NextFrameCommand;
// event chase camera
if(autocvar_chase_active <= 0) // greater than 0 means it's enabled manually, and this code is skipped
{
- if(spectatee_status >= 0 && (autocvar_cl_eventchase_death && getstati(STAT_HEALTH) <= 0 && !intermission) || (autocvar_cl_eventchase_intermission && intermission))
+ if(spectatee_status >= 0 && (autocvar_cl_eventchase_death && getstati(STAT_HEALTH) <= 0 && !intermission) || intermission)
{
// We must enable chase_active to get a third person view (weapon viewmodel hidden and own player model showing).
// Ideally, there should be another way to enable third person cameras, such as through R_SetView()
// pass 1, used to check where the camera would go and obtain the trace_fraction
eventchase_target_origin = pmove_org - v_forward * eventchase_current_distance;
- traceline(pmove_org, eventchase_target_origin, MOVE_WORLDONLY, self);
+ WarpZone_TraceLine(pmove_org, eventchase_target_origin, MOVE_WORLDONLY, self);
// pass 2, also multiplying view_forward with trace_fraction, to prevent the camera from going through walls
// The 0.1 subtraction is to not limit the camera precisely at the wall surface, as that allows the view to poke through
eventchase_target_origin = pmove_org - v_forward * eventchase_current_distance * (trace_fraction - 0.1);
-
- R_SetView(VF_ORIGIN, eventchase_target_origin);
+ WarpZone_TraceLine(pmove_org, eventchase_target_origin, MOVE_WORLDONLY, self);
+
+ R_SetView(VF_ORIGIN, trace_endpos);
+ R_SetView(VF_ANGLES, WarpZone_TransformVAngles(WarpZone_trace_transform, view_angles));
+
+ vector o, corner0, corner1, corner2, corner3, nearclip;
+ nearclip = '0 0 1' * (cvar("r_nearclip") * 1.125);
+ corner0 = cs_unproject('0 0 0' + nearclip);
+ corner1 = cs_unproject('1 0 0' * cvar("vid_conwidth") + nearclip);
+ corner2 = cs_unproject('0 1 0' * cvar("vid_conheight") + nearclip);
+ corner3 = cs_unproject('1 0 0' * cvar("vid_conwidth") + '0 1 0' * cvar("vid_conheight") + nearclip);
+ o = trace_endpos;
+ o = o + WarpZone_FixNearClip(trace_endpos, corner0, corner1, corner2, corner3);
+ R_SetView(VF_ORIGIN, o);
}
else if(autocvar_chase_active < 0) // time to disable chase_active if it was set by this code
{
}
// Render the Scene
- if(!intermission || !view_set || (intermission && autocvar_cl_eventchase_intermission))
- {
- view_origin = pmove_org + vo;
- view_angles = input_angles;
- makevectors(view_angles);
- view_forward = v_forward;
- view_right = v_right;
- view_up = v_up;
- view_set = 1;
- }
+ view_origin = R_SetView3fv(VF_ORIGIN);
+ view_angles = R_SetView3fv(VF_ANGLES);
+ makevectors(view_angles);
+ view_forward = v_forward;
+ view_right = v_right;
+ view_up = v_up;
#ifdef BLURTEST
if(time > blurtest_time0 && time < blurtest_time1)
// ALWAYS Clear Current Scene First
R_ClearScene();
+ R_SetView(VF_ORIGIN, view_origin);
+ R_SetView(VF_ANGLES, view_angles);
// FIXME engine bug? VF_SIZE and VF_MIN are not restored to sensible values by this
R_SetView(VF_SIZE, vf_size);
// the view to go back to normal, so reticle_type would become 0 as we fade out)
if(spectatee_status || getstati(STAT_HEALTH) <= 0)
reticle_type = 0; // prevent reticle from showing during the respawn zoom effect or for spectators
- else if(activeweapon == WEP_NEX && (button_zoom || zoomscript_caught) || activeweapon == WEP_SNIPERRIFLE && (button_zoom || zoomscript_caught) || activeweapon == WEP_MINSTANEX && (button_zoom || zoomscript_caught))
+ else if(activeweapon == WEP_NEX && (button_zoom || zoomscript_caught) || activeweapon == WEP_RIFLE && (button_zoom || zoomscript_caught) || activeweapon == WEP_MINSTANEX && (button_zoom || zoomscript_caught))
reticle_type = 2; // nex zoom
else if(button_zoom || zoomscript_caught)
reticle_type = 1; // normal zoom
- else if(activeweapon == WEP_NEX && button_attack2 || activeweapon == WEP_SNIPERRIFLE && button_attack2)
+ else if(activeweapon == WEP_NEX && button_attack2 || activeweapon == WEP_RIFLE && button_attack2)
reticle_type = 2; // nex zoom
if (reticle_type)
drawfill('0 0 0', eX * vid_conwidth + eY * vid_conheight, liquidcolor_prev, contentavgalpha * liquidalpha_prev, DRAWFLAG_NORMAL);
}
- if(autocvar_hud_damage)
+ if(autocvar_hud_damage && !autocvar_chase_active)
{
splash_size_x = max(vid_conwidth, vid_conheight);
splash_size_y = max(vid_conwidth, vid_conheight);
if(self.draw2d)
self.draw2d();
self = e;
+ Draw_ShowNames_All();
scoreboard_active = HUD_WouldDrawScoreboard();
CSQC_common_hud();
// crosshair goes VERY LAST
- if(!scoreboard_active && !camera_active && intermission != 2) {
+ if(!scoreboard_active && !camera_active && intermission != 2 && spectatee_status != -1) {
string wcross_style;
float wcross_alpha, wcross_resolution;
wcross_style = autocvar_crosshair;
ring_rgb = wcross_color;
ring_image = "gfx/crosshair_ring.tga";
}
+ else if (activeweapon == WEP_HAGAR && getstati(STAT_HAGAR_LOAD) && autocvar_crosshair_ring_hagar)
+ {
+ ring_value = bound(0, getstati(STAT_HAGAR_LOAD) / hagar_maxrockets, 1);
+ ring_alpha = autocvar_crosshair_ring_hagar_alpha;
+ ring_rgb = wcross_color;
+ ring_image = "gfx/crosshair_ring.tga";
+ }
if(autocvar_crosshair_ring_reload && weapon_clipsize) // forces there to be only an ammo ring
{
// Note: This is to stop Taoki from complaining that the image doesn't match all potential balances.
// if a new image for another weapon is added, add the code (and its respective file/value) here
- if ((activeweapon == WEP_SNIPERRIFLE) && (weapon_clipsize == 80))
- ring_image = "gfx/crosshair_ring_sniperrifle.tga";
+ if ((activeweapon == WEP_RIFLE) && (weapon_clipsize == 80))
+ ring_image = "gfx/crosshair_ring_rifle.tga";
else
ring_image = "gfx/crosshair_ring.tga";
}