fix: crash with hl25 structs on xash3d again

fix: %t placeholder should return damage inflictor when used in team attack section of chat
fix: all arguments in bot commands are lowercased (resolves #680)
bot: disable threads when engine's timescale is active
bot: a little refactor for the code all over the places
linkage: resolved crash due to sse alignment on ancient engines (resolves #614)
utils move wave parse into crlib
practice: move loading practice to thread pool
build: allow to build with static linkents instead of hooking dlsym

Co-Authored-By: Max <161382234+dyspose@users.noreply.github.com>
This commit is contained in:
jeefo 2025-03-16 18:25:15 +03:00
commit 38c45aff9a
No known key found for this signature in database
GPG key ID: D696786B81B667C8
37 changed files with 348 additions and 304 deletions

View file

@ -142,7 +142,7 @@ void Bot::prepareChatMessage (StringRef message) {
m_chatBuffer = message;
// must be called before return or on the end
auto finishPreparation = [&] () {
auto addChatErrors = [&] () {
if (!m_chatBuffer.empty ()) {
chatlib.addChatErrors (m_chatBuffer);
}
@ -153,7 +153,7 @@ void Bot::prepareChatMessage (StringRef message) {
// nothing found, bail out
if (pos == String::InvalidIndex || pos >= message.length ()) {
finishPreparation ();
addChatErrors ();
return;
}
@ -241,6 +241,11 @@ void Bot::prepareChatMessage (StringRef message) {
return humanizedName (playerIndex);
}
else if (!needsEnemy && m_team == client.team) {
if (util.isPlayer (pev->dmg_inflictor)
&& game.getRealTeam (pev->dmg_inflictor) == m_team) {
return humanizedName (game.indexOfPlayer (pev->dmg_inflictor));
}
return humanizedName (playerIndex);
}
}
@ -304,7 +309,7 @@ void Bot::prepareChatMessage (StringRef message) {
};
++replaceCounter;
}
finishPreparation ();
addChatErrors ();
}
bool Bot::checkChatKeywords (String &reply) {