#include "../common/items/_mod.qh"
#include "../common/state.qh"
#include "../common/effects/qc/globalsound.qh"
+#include "../common/wepent.qh"
#include "../lib/csqcmodel/sv_model.qh"
#include "../lib/warpzone/anglestransform.qh"
#include "../lib/warpzone/server.qh"
}
-string admin_name()
-{
- if(autocvar_sv_adminnick != "")
- return autocvar_sv_adminnick;
- else
- return "SERVER ADMIN";
-}
-
-
void GameLogEcho(string s)
{
string fn;
return ret;
}
+string AmmoNameFromWeaponentity(entity wpn)
+{
+ string ammoitems = "batteries";
+ switch((wpn.m_weapon).ammo_field)
+ {
+ case ammo_shells: ammoitems = ITEM_Shells.m_name; break;
+ case ammo_nails: ammoitems = ITEM_Bullets.m_name; break;
+ case ammo_rockets: ammoitems = ITEM_Rockets.m_name; break;
+ case ammo_cells: ammoitems = ITEM_Cells.m_name; break;
+ case ammo_plasma: ammoitems = ITEM_Plasma.m_name; break;
+ case ammo_fuel: ammoitems = ITEM_JetpackFuel.m_name; break;
+ }
+ return ammoitems;
+}
+
string formatmessage(entity this, string msg)
{
float p, p1, p2;
entity cursor_ent;
string escape;
string replacement;
- string ammoitems;
p = 0;
n = 7;
- ammoitems = "batteries";
- switch((PS(this).m_weapon).ammo_field)
- {
- case ammo_shells: ammoitems = ITEM_Shells.m_name; break;
- case ammo_nails: ammoitems = ITEM_Bullets.m_name; break;
- case ammo_rockets: ammoitems = ITEM_Rockets.m_name; break;
- case ammo_cells: ammoitems = ITEM_Cells.m_name; break;
- case ammo_plasma: ammoitems = ITEM_Plasma.m_name; break;
- case ammo_fuel: ammoitems = ITEM_JetpackFuel.m_name; break;
- }
-
WarpZone_crosshair_trace(this);
cursor = trace_endpos;
cursor_ent = trace_ent;
replacement = substring(msg, p, 2);
escape = substring(msg, p + 1, 1);
+ .entity weaponentity = weaponentities[0]; // TODO: unhardcode
+
switch(escape)
{
case "%": replacement = "%"; break;
case "l": replacement = NearestLocation(this.origin); break;
case "y": replacement = NearestLocation(cursor); break;
case "d": replacement = NearestLocation(this.death_origin); break;
- case "w": replacement = ((PS(this).m_weapon == WEP_Null) ? ((PS(this).m_switchweapon == WEP_Null) ? Weapons_from(this.cnt) : PS(this).m_switchweapon) : PS(this).m_weapon).m_name; break;
- case "W": replacement = ammoitems; break;
+ case "w": replacement = ((this.(weaponentity).m_weapon == WEP_Null) ? ((this.(weaponentity).m_switchweapon == WEP_Null) ? Weapons_from(this.(weaponentity).cnt) : this.(weaponentity).m_switchweapon) : this.(weaponentity).m_weapon).m_name; break;
+ case "W": replacement = AmmoNameFromWeaponentity(this.(weaponentity)); break;
case "x": replacement = ((cursor_ent.netname == "" || !cursor_ent) ? "nothing" : cursor_ent.netname); break;
case "s": replacement = ftos(vlen(this.velocity - this.velocity_z * '0 0 1')); break;
case "S": replacement = ftos(vlen(this.velocity)); break;
if (f > 0)
{
if (s == "cl_weaponpriority")
- if (PS(this)) PS(this).m_switchweapon = w_getbestweapon(this);
+ {
+ for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
+ {
+ .entity weaponentity = weaponentities[slot];
+ if (this.(weaponentity) && (this.(weaponentity).m_weapon != WEP_Null || slot == 0))
+ this.(weaponentity).m_switchweapon = w_getbestweapon(this, weaponentity);
+ }
+ }
if (s == "cl_allow_uidtracking")
PlayerStats_GameReport_AddPlayer(this);
}
}
// decolorizes and team colors the player name when needed
-string playername(entity p)
+string playername(entity p, bool team_colorize)
{
string t;
- if (teamplay && !gameover && IS_PLAYER(p))
+ if (team_colorize && teamplay && !intermission_running && IS_PLAYER(p))
{
t = Team_ColorCode(p.team);
return strcat(t, strdecolorize(p.netname));
}
else
- return p.netname;
+ return ColorTranslateRGB(p.netname);
}
float want_weapon(entity weaponinfo, float allguns) // WEAPONTODO: what still needs done?
g_weaponarena_weapons |= (it.m_wepset);
));
}
+ else if (s == "devall")
+ {
+ g_weaponarena = 1;
+ g_weaponarena_list = "All Weapons"; // TODO: report as more than just all weapons?
+ FOREACH(Weapons, it != WEP_Null,
+ {
+ g_weaponarena_weapons |= (it.m_wepset);
+ });
+ }
else if (s == "most")
{
g_weaponarena = 1;
if(this.classname == "nade")
return false; // no checks here
else if(this.classname == "grapplinghook")
- RemoveGrapplingHook(this.realowner);
+ RemoveHook(this);
else if(this.classname == "spike")
{
W_Crylink_Dequeue(this);
float tagscale;
org = e.origin - gettaginfo(to, gettagindex(to, tag));
- tagscale = pow(vlen(v_forward), -2); // undo a scale on the tag
+ tagscale = (vlen(v_forward) ** -2); // undo a scale on the tag
t_forward = v_forward * tagscale;
t_left = v_right * -tagscale;
t_up = v_up * tagscale;