case "x": replacement = ((cursor_ent.netname == "" || !cursor_ent) ? "nothing" : cursor_ent.netname); break;
case "s": replacement = ftos(vlen(self.velocity - self.velocity_z * '0 0 1')); break;
case "S": replacement = ftos(vlen(self.velocity)); break;
+ case "t": replacement = seconds_tostring(ceil(max(0, autocvar_timelimit * 60 + game_starttime - time))); break;
+ case "T": replacement = seconds_tostring(floor(time - game_starttime)); break;
default:
{
MUTATOR_CALLHOOK(FormatMessage, escape, replacement, msg);
else
d = !(!weaponinfo.weaponstart);
- if(g_grappling_hook) // if possible, redirect off-hand hook to on-hand hook
- d |= (i == WEP_HOOK.m_id);
if(!g_cts && (weaponinfo.spawnflags & WEP_FLAG_MUTATORBLOCKED)) // never default mutator blocked guns
d = 0;
MUTATOR_CALLHOOK(SetStartItems);
- if ((start_items & ITEM_Jetpack.m_itemid) || (g_grappling_hook && (start_weapons & WEPSET_HOOK)))
+ if (start_items & ITEM_Jetpack.m_itemid)
{
start_items |= ITEM_JetpackRegen.m_itemid;
start_ammo_fuel = max(start_ammo_fuel, cvar("g_balance_fuel_rotstable"));
for (i = WEP_FIRST; i <= WEP_LAST; ++i)
{
e = get_weaponinfo(i);
- if(precache_weapons & WepSet_FromWeapon(i))
- _WEP_ACTION(i, WR_INIT);
+ if(precache_weapons & WepSet_FromWeapon(i)) {
+ Weapon w = get_weaponinfo(i);
+ w.wr_init(w);
+ }
}
start_ammo_shells = max(0, start_ammo_shells);
remove = remove_unsafely;
}
-void UncustomizeEntitiesRun()
-{SELFPARAM();
- for (entity e = NULL; (e = findfloat(e, uncustomizeentityforclient_set, 1)); )
- {
- WITH(entity, self, e, e.uncustomizeentityforclient());
- }
-}
-void SetCustomizer(entity e, float(void) customizer, void(void) uncustomizer)
-{
- e.customizeentityforclient = customizer;
- e.uncustomizeentityforclient = uncustomizer;
- e.uncustomizeentityforclient_set = !!uncustomizer;
-}
-
-void Net_LinkEntity(entity e, bool docull, float dt, bool(entity, int) sendfunc)
-{SELFPARAM();
- vector mi, ma;
-
- if (e.classname == "")
- e.classname = "net_linked";
-
- if (e.model == "" || self.modelindex == 0)
- {
- mi = e.mins;
- ma = e.maxs;
- setmodel(e, MDL_Null);
- setsize(e, mi, ma);
- }
-
- e.SendEntity = sendfunc;
- e.SendFlags = 0xFFFFFF;
-
- if (!docull)
- e.effects |= EF_NODEPTHTEST;
-
- if (dt)
- {
- e.nextthink = time + dt;
- e.think = SUB_Remove;
- }
-}
-
-
.float(entity) isEliminated;
float EliminatedPlayers_SendEntity(entity to, float sendflags)
{
return s;
}
-float MoveToRandomMapLocation(entity e, float goodcontents, float badcontents, float badsurfaceflags, float attempts, float maxaboveground, float minviewdistance)
+float MoveToRandomLocationWithinBounds(entity e, vector boundmin, vector boundmax, float goodcontents, float badcontents, float badsurfaceflags, float attempts, float maxaboveground, float minviewdistance)
{
float m, i;
vector start, org, delta, end, enddown, mstart;
m = e.dphitcontentsmask;
e.dphitcontentsmask = goodcontents | badcontents;
- org = world.mins;
- delta = world.maxs - world.mins;
+ org = boundmin;
+ delta = boundmax - boundmin;
start = end = org;
return false;
}
+float MoveToRandomMapLocation(entity e, float goodcontents, float badcontents, float badsurfaceflags, float attempts, float maxaboveground, float minviewdistance)
+{
+ return MoveToRandomLocationWithinBounds(e, world.mins, world.maxs, goodcontents, badcontents, badsurfaceflags, attempts, maxaboveground, minviewdistance);
+}
+
void write_recordmarker(entity pl, float tstart, float dt)
{
GameLogEcho(strcat(":recordset:", ftos(pl.playerid), ":", ftos(dt)));