#include "../common/constants.qh"
#include "../common/mapinfo.qh"
-#include "../common/nades.qh"
+#include "../common/nades/all.qh"
#include "../common/stats.qh"
#include "../common/triggers/target/music.qh"
#include "../common/teams.qh"
entity porto;
vector polyline[16];
-void Porto_Draw()
+void Porto_Draw(entity this)
{
vector p, dir, ang, q, nextdir;
float portal_number, portal1_idx;
{
case WEP_TUBA.m_id: // no aim
case WEP_PORTO.m_id: // shoots from eye
+ case WEP_NEXBALL.m_id: // shoots from eye
case WEP_HOOK.m_id: // no trueaim
case WEP_MORTAR.m_id: // toss curve
return SHOTTYPE_HITWORLD;
float eventchase_current_distance;
float eventchase_running;
bool WantEventchase()
-{
+{SELFPARAM();
if(autocvar_cl_orthoview)
return false;
if(intermission)
return true;
if(MUTATOR_CALLHOOK(WantEventchase, self))
return true;
- if(autocvar_cl_eventchase_nexball && gametype == MAPINFO_TYPE_NEXBALL && !(WepSet_GetFromStat() & WepSet_FromWeapon(WEP_PORTO.m_id)))
+ if(autocvar_cl_eventchase_nexball && gametype == MAPINFO_TYPE_NEXBALL && !(WepSet_GetFromStat() & WepSet_FromWeapon(WEP_NEXBALL.m_id)))
return true;
if(autocvar_cl_eventchase_death && (getstati(STAT_HEALTH) <= 0))
{
// todo: avoid very long and very short sounds from wave stretching using different sound files? seems unnecessary
// todo: normalize sound pressure levels? seems unnecessary
- sound7(world, CH_INFO, "misc/hit.wav", VOL_BASE, ATTN_NONE, pitch_shift * 100, 0);
+ sound7(world, CH_INFO, SND(HIT), VOL_BASE, ATTN_NONE, pitch_shift * 100, 0);
}
unaccounted_damage = 0;
hitsound_time_prev = time;
float typehit_time = getstatf(STAT_TYPEHIT_TIME);
if (COMPARE_INCREASING(typehit_time, typehit_time_prev) > autocvar_cl_hitsound_antispam_time)
{
- sound(world, CH_INFO, "misc/typehit.wav", VOL_BASE, ATTN_NONE);
+ sound(world, CH_INFO, SND_TYPEHIT, VOL_BASE, ATTN_NONE);
typehit_time_prev = typehit_time;
}
}
void UpdateCrosshair()
-{
+{SELFPARAM();
static float rainbow_last_flicker;
static vector rainbow_prev_color;
entity e = self;
CSQC_common_hud();
// crosshair goes VERY LAST
- if(!scoreboard_active && !camera_active && intermission != 2 &&
+ if(!scoreboard_active && !camera_active && intermission != 2 &&
spectatee_status != -1 && hud == HUD_NORMAL && !csqcplayer.viewloc &&
!HUD_MinigameMenu_IsOpened() )
{
float vh_notice_time;
void WaypointSprite_Load();
void CSQC_UpdateView(float w, float h)
-{
+{SELFPARAM();
entity e;
float fov;
float f;
mousepos = mousepos*0.5 + getmousepos();
*/
- e = self;
- for(self = world; (self = nextent(self)); )
- if(self.draw)
- self.draw();
- self = e;
+ for(entity e = NULL; (e = nextent(e)); ) if (e.draw) {
+ WITH(entity, self, e, e.draw(e));
+ }
addentities(MASK_NORMAL | MASK_ENGINE | MASK_ENGINEVIEWMODELS);
renderscene();
if(autocvar_cl_reticle)
{
+ Weapon wep = get_weaponinfo(activeweapon);
// Draw the aiming reticle for weapons that use it
// reticle_type is changed to the item we are zooming / aiming with, to decide which reticle to use
// It must be a persisted float for fading out to work properly (you let go of the zoom button for
// no zoom reticle while dead
reticle_type = 0;
}
- else if(WEP_ACTION(activeweapon, WR_ZOOMRETICLE) && autocvar_cl_reticle_weapon)
+ else if(wep.wr_zoomreticle(wep) && autocvar_cl_reticle_weapon)
{
if(reticle_image != "") { reticle_type = 2; }
else { reticle_type = 0; }
} else */
// draw 2D entities
- e = self;
- for(self = world; (self = nextent(self)); )
- if(self.draw2d)
- self.draw2d();
- self = e;
+ for (entity e = NULL; (e = nextent(e)); ) if (e.draw2d) {
+ WITH(entity, self, e, e.draw2d(e));
+ }
Draw_ShowNames_All();
scoreboard_active = HUD_WouldDrawScoreboard();
if(hud && !intermission)
if(hud == HUD_BUMBLEBEE_GUN)
CSQC_BUMBLE_GUN_HUD();
- else
- VEH_ACTION(hud, VR_HUD);
+ else {
+ Vehicle info = get_vehicleinfo(hud);
+ info.vr_hud(info);
+ }
cl_notice_run();