string GetAdvancedDeathReports(entity enPlayer) // Extra fragmessage information
{
- local float nPlayerHealth = rint(enPlayer.health);
- local float nPlayerArmor = rint(enPlayer.armorvalue);
- local float nPlayerHandicap = enPlayer.cvar_cl_handicap;
- local float nPlayerPing = rint(enPlayer.ping);
- local string strPlayerPingColor;
- local string strMessage;
+ float nPlayerHealth = rint(enPlayer.health);
+ float nPlayerArmor = rint(enPlayer.armorvalue);
+ float nPlayerHandicap = enPlayer.cvar_cl_handicap;
+ float nPlayerPing = rint(enPlayer.ping);
+ string strPlayerPingColor;
+ string strMessage;
+
if(nPlayerPing >= 150)
strPlayerPingColor = "^1";
else
strPlayerPingColor = "^2";
if((autocvar_sv_fragmessage_information_stats) && (enPlayer.health >= 1))
- strMessage = strcat(strMessage, "\n^7(Health ^1", ftos(nPlayerHealth), "^7 / Armor ^2", ftos(nPlayerArmor), "^7)");
+ strMessage = strcat(strMessage, "^7(Health ^1", ftos(nPlayerHealth), "^7 / Armor ^2", ftos(nPlayerArmor), "^7)");
if(autocvar_sv_fragmessage_information_ping) {
if(clienttype(enPlayer) == CLIENTTYPE_BOT) // Bots have no ping
} else if(autocvar_sv_fragmessage_information_handicap) {
if(autocvar_sv_fragmessage_information_handicap == 2)
if(nPlayerHandicap <= 1)
- strMessage = strcat(strMessage, "\n^7(Handicap ^2Off^7)");
+ strMessage = strcat(strMessage, "^7(Handicap ^2Off^7)");
else
- strMessage = strcat(strMessage, "\n^7(Handicap ^2", ftos(nPlayerHandicap), "^7)");
+ strMessage = strcat(strMessage, "^7(Handicap ^2", ftos(nPlayerHandicap), "^7)");
else if(nPlayerHandicap > 1)
- strMessage = strcat(strMessage, "\n^7(Handicap ^2", ftos(nPlayerHandicap), "^7)");
+ strMessage = strcat(strMessage, "^7(Handicap ^2", ftos(nPlayerHandicap), "^7)");
}
+
+ if(strMessage) // add new line to the beginning if there is a message
+ strMessage = strcat("\n", strMessage);
+
return strMessage;
}
void bcenterprint(string s)
GetCvars_handleFloat(s, f, cvar_cl_playerdetailreduction, "cl_playerdetailreduction");
GetCvars_handleString(s, f, cvar_g_xonoticversion, "g_xonoticversion");
GetCvars_handleFloat(s, f, cvar_cl_handicap, "cl_handicap");
+ GetCvars_handleFloat(s, f, cvar_cl_clippedspectating, "cl_clippedspectating");
GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriority, "cl_weaponpriority", W_FixWeaponOrder_ForceComplete_AndBuildImpulseList);
GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[0], "cl_weaponpriority0", W_FixWeaponOrder_AllowIncomplete);
GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[1], "cl_weaponpriority1", W_FixWeaponOrder_AllowIncomplete);
GetCvars_handleFloatOnce(s, f, cvar_cl_gunalign, "cl_gunalign");
GetCvars_handleFloat(s, f, cvar_cl_allow_uid2name, "cl_allow_uid2name");
GetCvars_handleFloat(s, f, cvar_cl_allow_uidtracking, "cl_allow_uidtracking");
+ GetCvars_handleFloat(s, f, cvar_cl_movement_track_canjump, "cl_movement_track_canjump");
// fixup of switchweapon (needed for LMS or when spectating is disabled, as PutClientInServer comes too early)
if (f > 0)
g_bloodloss = cvar("g_bloodloss");
sv_maxidle = cvar("sv_maxidle");
sv_maxidle_spectatorsareidle = cvar("sv_maxidle_spectatorsareidle");
- sv_pogostick = cvar("sv_pogostick");
g_ctf_reverse = cvar("g_ctf_reverse");
sv_autotaunt = cvar("sv_autotaunt");
sv_taunt = cvar("sv_taunt");
if(!g_weapon_stay)
g_weapon_stay = cvar("g_weapon_stay");
- if (!g_weapon_stay && (cvar("deathmatch") == 2))
- g_weapon_stay = 1;
-
g_ghost_items = cvar("g_ghost_items");
if(g_ghost_items >= 1)
msg_entity = e;
WRITESPECTATABLE_MSG_ONE({
WriteByte(MSG_ONE, SVC_TEMPENTITY);
- WriteByte(MSG_ONE, TE_CSQC_NOTIFY);
- WriteByte(MSG_ONE, CSQC_CENTERPRINT_GENERIC);
+ WriteByte(MSG_ONE, TE_CSQC_CENTERPRINT_GENERIC);
WriteByte(MSG_ONE, id);
WriteString(MSG_ONE, s);
if (id != 0 && s != "")
void remove_unsafely(entity e)
{
+ if(e.classname == "spike")
+ error("Removing spikes is forbidden (crylink bug), please report");
remove_builtin(e);
}
#define SUB_OwnerCheck() (other && (other == self.owner))
void RemoveGrapplingHook(entity pl);
+void W_Crylink_Dequeue(entity e);
float WarpZone_Projectile_Touch_ImpactFilter_Callback()
{
if(SUB_OwnerCheck())
{
if(self.classname == "grapplinghook")
RemoveGrapplingHook(self.realowner);
+ else if(self.classname == "spike")
+ {
+ W_Crylink_Dequeue(self);
+ remove(self);
+ }
else
remove(self);
return TRUE;
}
if(trace_ent && trace_ent.solid > SOLID_TRIGGER)
- UpdateCSQCProjectileNextFrame(self);
+ UpdateCSQCProjectile(self);
return FALSE;
}
#define PROJECTILE_TOUCH if(WarpZone_Projectile_Touch()) return
dprint(data);
dprint("\nEnd of data.\n");
- if (id == URI_GET_DISCARD)
+ if(url_URI_Get_Callback(id, status, data))
+ {
+ // handled
+ }
+ else if (id == URI_GET_DISCARD)
{
// discard
}
{
float m, i;
vector start, org, delta, end, enddown, mstart;
+ entity sp;
m = e.dphitcontentsmask;
e.dphitcontentsmask = goodcontents | badcontents;
if (trace_fraction >= 1)
continue;
+ // rule 4: we must "see" some spawnpoint
+ for(sp = world; (sp = find(sp, classname, "info_player_deathmatch")); )
+ if(checkpvs(mstart, sp))
+ break;
+ if(!sp)
+ {
+ for(sp = world; (sp = findflags(sp, flags, FL_ITEM)); )
+ if(checkpvs(mstart, sp))
+ break;
+ if(!sp)
+ continue;
+ }
+
// find a random vector to "look at"
end_x = org_x + random() * delta_x;
end_y = org_y + random() * delta_y;