#include <common/ent_cs.qh>
#include <common/anim.qh>
#include <common/constants.qh>
+#include <common/net_linked.qh>
#include <common/debug.qh>
#include <common/mapinfo.qh>
#include <common/gamemodes/_mod.qh>
#include <common/triggers/target/music.qh>
#include <common/teams.qh>
+#include <common/weapons/weapon/tuba.qh>
+
#include <common/vehicles/all.qh>
#include <common/weapons/_all.qh>
#include <common/viewloc.qh>
wasinvehicle = invehicle;
Weapon wep = activeweapon;
int c = entcs_GetClientColors(current_player);
- vector g = weaponentity_glowmod(wep, c);
+ vector g = weaponentity_glowmod(wep, NULL, c);
entity me = CSQCModel_server2csqc(player_localentnum - 1);
int fx = ((me.csqcmodel_effects & EFMASK_CHEAP)
| EF_NODEPTHTEST)
{
static string name_last;
string name = wep.mdl;
+ if(wep == WEP_TUBA)
+ {
+ name = (this.tuba_instrument == 0) ? "tuba" :
+ (this.tuba_instrument == 1) ? "akordeon" :
+ "kleinbottle";
+ }
bool swap = name != name_last;
// if (swap)
{
void PostInit();
void CSQC_Demo_Camera();
-float Scoreboard_WouldDraw();
float camera_mode;
const float CAMERA_FREE = 1;
const float CAMERA_CHASE = 2;
float a = autocvar_cl_hitsound_max_pitch;
float b = autocvar_cl_hitsound_min_pitch;
float c = autocvar_cl_hitsound_nom_damage;
- float x = unaccounted_damage;
- float pitch_shift = (b*x*(a-1) + a*c*(1-b)) / (x*(a-1) + c*(1-b));
+ float d = unaccounted_damage;
+ float pitch_shift = (b*d*(a-1) + a*c*(1-b)) / (d*(a-1) + c*(1-b));
// if sound variation is disabled, set pitch_shift to 1
if (autocvar_cl_hitsound == 1)
case 2: // crosshair_color_by_health
{
- float x = health_stat;
+ float hp = health_stat;
//x = red
//y = green
wcross_color.z = 0;
- if(x > 200)
+ if(hp > 200)
{
wcross_color.x = 0;
wcross_color.y = 1;
}
- else if(x > 150)
+ else if(hp > 150)
{
- wcross_color.x = 0.4 - (x-150)*0.02 * 0.4;
- wcross_color.y = 0.9 + (x-150)*0.02 * 0.1;
+ wcross_color.x = 0.4 - (hp-150)*0.02 * 0.4;
+ wcross_color.y = 0.9 + (hp-150)*0.02 * 0.1;
}
- else if(x > 100)
+ else if(hp > 100)
{
- wcross_color.x = 1 - (x-100)*0.02 * 0.6;
- wcross_color.y = 1 - (x-100)*0.02 * 0.1;
- wcross_color.z = 1 - (x-100)*0.02;
+ wcross_color.x = 1 - (hp-100)*0.02 * 0.6;
+ wcross_color.y = 1 - (hp-100)*0.02 * 0.1;
+ wcross_color.z = 1 - (hp-100)*0.02;
}
- else if(x > 50)
+ else if(hp > 50)
{
wcross_color.x = 1;
wcross_color.y = 1;
- wcross_color.z = 0.2 + (x-50)*0.02 * 0.8;
+ wcross_color.z = 0.2 + (hp-50)*0.02 * 0.8;
}
- else if(x > 20)
+ else if(hp > 20)
{
wcross_color.x = 1;
- wcross_color.y = (x-20)*90/27/100;
- wcross_color.z = (x-20)*90/27/100 * 0.2;
+ wcross_color.y = (hp-20)*90/27/100;
+ wcross_color.z = (hp-20)*90/27/100 * 0.2;
}
else
{
v = wcross_origin - wcross_oldorigin;
v.x /= vid_conwidth;
v.y /= vid_conheight;
- if(vlen(v) > 0.01)
+ if(vdist(v, >, 0.01))
shottype = SHOTTYPE_HITOBSTRUCTION;
}
if(!autocvar_crosshair_hittest_showimpact)
void HUD_Draw(entity this)
{
+ // if we don't know gametype and scores yet avoid drawing the scoreboard
+ // also in the very first frames, player state may be inconsistent so avoid drawing the hud at all
+ // e.g. since initial player's health is 0 hud would display the hud_damage effect,
+ // cl_deathscoreboard would show the scoreboard and so on
+ if(!gametype)
+ return;
+
if(!intermission)
if (MUTATOR_CALLHOOK(HUD_Draw_overlay))
{
cvar_set("chase_active", "0");
float vehicle_chase = (hud != HUD_NORMAL && (autocvar_cl_eventchase_vehicle || spectatee_status > 0));
- float ons_roundlost = (gametype == MAPINFO_TYPE_ONSLAUGHT && STAT(ROUNDLOST));
- entity gen = NULL;
float vehicle_viewdist = 0;
vector vehicle_viewofs = '0 0 0';
}
}
- if(ons_roundlost)
- {
- FOREACH_ENTITY_CLASS("onslaught_generator", it.health <= 0, {
- gen = it;
- break;
- });
- if(!gen)
- ons_roundlost = false; // don't enforce the 3rd person camera if there is no dead generator to show
- }
- if(WantEventchase(this) || (!autocvar_cl_orthoview && ons_roundlost))
+ if(WantEventchase(this))
{
+ vector current_view_origin_override = '0 0 0';
+ vector view_offset_override = '0 0 0';
+ float chase_distance_override = 0;
+ bool custom_eventchase = MUTATOR_CALLHOOK(CustomizeEventchase, this);
+ if(custom_eventchase)
+ {
+ current_view_origin_override = M_ARGV(0, vector);
+ view_offset_override = M_ARGV(1, vector);
+ chase_distance_override = M_ARGV(0, float);
+ }
eventchase_running = true;
entity local_player = ((csqcplayer) ? csqcplayer : CSQCModel_server2csqc(player_localentnum - 1));
// make special vector since we can't use view_origin (It is one frame old as of this code, it gets set later with the results this code makes.)
vector current_view_origin = (csqcplayer ? csqcplayer.origin : pmove_org);
- if(ons_roundlost) { current_view_origin = gen.origin; }
+ if (custom_eventchase)
+ current_view_origin = current_view_origin_override;
// detect maximum viewoffset and use it
vector view_offset = autocvar_cl_eventchase_viewoffset;
else
view_offset = autocvar_cl_eventchase_vehicle_viewoffset;
}
- if(ons_roundlost) { view_offset = autocvar_cl_eventchase_generator_viewoffset; }
+ if (custom_eventchase)
+ view_offset = view_offset_override;
if(view_offset)
{
else
chase_distance = autocvar_cl_eventchase_vehicle_distance;
}
- if(ons_roundlost) { chase_distance = autocvar_cl_eventchase_generator_distance; }
+ if (custom_eventchase)
+ chase_distance = chase_distance_override;
if(autocvar_cl_eventchase_speed && eventchase_current_distance < chase_distance)
eventchase_current_distance += autocvar_cl_eventchase_speed * (chase_distance - eventchase_current_distance) * frametime; // slow down the further we get
if(!postinit)
PostInit();
+ if(intermission && !gameover_time)
+ gameover_time = time;
+
if(intermission && !isdemo() && !(calledhooks & HOOK_END))
{
if(calledhooks & HOOK_START)
switchweapon = Weapons_from(STAT(SWITCHWEAPON));
- f = (serverflags & SERVERFLAG_TEAMPLAY);
- if(f != teamplay)
- {
- teamplay = f;
- Scoreboard_InitScores();
- }
-
if(last_switchweapon != switchweapon)
{
weapontime = time;
if(autocvar__hud_configure)
HUD_Panel_Mouse();
- else if ( HUD_MinigameMenu_IsOpened() || minigame_isactive() )
+ else if (HUD_MinigameMenu_IsOpened() || active_minigame)
HUD_Minigame_Mouse();
else if(QuickMenu_IsOpened())
QuickMenu_Mouse();