this.angles = spot.angles;
this.angles_z = 0; // never spawn tilted even if the spot says to
if (IS_BOT_CLIENT(this))
+ {
this.v_angle = this.angles;
+ bot_aim_reset(this);
+ }
this.fixangle = true; // turn this way immediately
this.oldvelocity = this.velocity = '0 0 0';
this.avelocity = '0 0 0';
return s;
}
+bool autocvar_sv_qcphysics = false; // TODO this is for testing - remove when qcphysics work
+
/**
=============
ClientConnect
if (IS_REAL_CLIENT(this))
sv_notice_join(this);
- this.move_qcphysics = false;
+ this.move_qcphysics = autocvar_sv_qcphysics;
// update physics stats (players can spawn before physics runs)
Physics_UpdateStats(this);
MUTATOR_CALLHOOK(ChatMessage, source, ret);
ret = M_ARGV(1, int);
+ string event_log_msg = "";
+
if(sourcemsgstr != "" && ret != 0)
{
if(ret < 0) // faked message, because the player is muted
FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != source && CS(it).active_minigame == CS(source).active_minigame && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), {
sprint(it, msgstr);
});
+ event_log_msg = sprintf(":chat_minigame:%d:%d:%s", source.playerid, etof(CS(source).active_minigame), msgin);
+
}
else if(teamsay > 0) // team message, only sent to team mates
{
if(cmsgstr != "")
centerprint(it, cmsgstr);
});
+ event_log_msg = sprintf(":chat_team:%d:%d:%s", source.playerid, source.team, strreplace("\n", " ", msgin));
}
else if(teamsay < 0) // spectator message, only sent to spectators
{
FOREACH_CLIENT(!(IS_PLAYER(it) || it.caplayer) && IS_REAL_CLIENT(it) && it != source && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), {
sprint(it, msgstr);
});
+ event_log_msg = sprintf(":chat_spec:%d:%s", source.playerid, strreplace("\n", " ", msgin));
}
else
{
FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != source && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), {
sprint(it, msgstr);
});
+ event_log_msg = sprintf(":chat:%d:%s", source.playerid, strreplace("\n", " ", msgin));
}
}
+ if (autocvar_sv_eventlog && (event_log_msg != "")) {
+ GameLogEcho(event_log_msg);
+ }
+
return ret;
}