From 21c8c61b474740ff182880c4312c521bd523646f Mon Sep 17 00:00:00 2001 From: jeefo Date: Wed, 6 Aug 2014 00:03:50 +0400 Subject: [PATCH] a little optimization --- include/core.h | 3 + project/yapb.rc | 2 +- source/basecode.cpp | 155 ++++++++++++++++++++---------------------- source/botmanager.cpp | 1 + source/chatlib.cpp | 12 ++-- source/combat.cpp | 24 +++---- source/navigate.cpp | 50 +++++++------- 7 files changed, 118 insertions(+), 129 deletions(-) diff --git a/include/core.h b/include/core.h index 27022c6..ce13840 100644 --- a/include/core.h +++ b/include/core.h @@ -1220,6 +1220,9 @@ public: int m_ammoInClip[MAX_WEAPONS]; // ammo in clip for each weapons int m_ammo[MAX_AMMO_SLOTS]; // total ammo amounts + // a little optimization + int m_team; + Array m_tasks; Bot (edict_t *bot, int skill, int personality, int team, int member); diff --git a/project/yapb.rc b/project/yapb.rc index 03275b6..343ad66 100644 --- a/project/yapb.rc +++ b/project/yapb.rc @@ -26,7 +26,7 @@ #include <../include/resource.h> // generated by update tool -- do not edit -- -#define PRODUCT_BUILD_TOOL 2542 +#define PRODUCT_BUILD_TOOL 3850 VS_VERSION_INFO VERSIONINFO FILEVERSION PRODUCT_VERSION_DWORD, PRODUCT_BUILD_TOOL diff --git a/source/basecode.cpp b/source/basecode.cpp index b698c02..8dcf31e 100644 --- a/source/basecode.cpp +++ b/source/basecode.cpp @@ -78,7 +78,7 @@ void Bot::PushMessageQueue (int message) if (otherBot != NULL && otherBot->pev != pev) { - if (IsAlive (GetEntity ()) == IsAlive (otherBot->GetEntity ())) + if (m_notKilled == IsAlive (otherBot->GetEntity ())) { otherBot->m_sayTextBuffer.entityIndex = entityIndex; strcpy (otherBot->m_sayTextBuffer.sayText, m_tempStrings); @@ -207,7 +207,7 @@ bool Bot::IsEnemyViewable (edict_t *player) bool forceTrueIfVisible = false; - if (IsValidPlayer (pev->dmg_inflictor) && GetTeam (pev->dmg_inflictor) != GetTeam (GetEntity ()) && ::IsInViewCone (EyePosition (), pev->dmg_inflictor)) + if (IsValidPlayer (pev->dmg_inflictor) && GetTeam (pev->dmg_inflictor) != m_team && ::IsInViewCone (EyePosition (), pev->dmg_inflictor)) forceTrueIfVisible = true; if (CheckVisibility (VARS (player), &m_enemyOrigin, &m_visibility) && (IsInViewCone (player->v.origin + Vector (0, 0, 14)) || forceTrueIfVisible)) @@ -303,7 +303,7 @@ void Bot::AvoidGrenades (void) if (!FNullEnt (m_avoidGrenade)) return; - if (GetTeam (ent->v.owner) == GetTeam (GetEntity ()) && ent->v.owner != GetEntity ()) + if (GetTeam (ent->v.owner) == m_team && ent->v.owner != GetEntity ()) return; if ((ent->v.flags & FL_ONGROUND) == 0) @@ -564,7 +564,7 @@ void Bot::FindItem (void) allowPickup = true; pickupType = PICKUP_SHIELD; } - else if (strncmp ("item_thighpack", STRING (ent->v.classname), 14) == 0 && GetTeam (GetEntity ()) == TEAM_CF && !m_hasDefuser) + else if (strncmp ("item_thighpack", STRING (ent->v.classname), 14) == 0 && m_team == TEAM_CF && !m_hasDefuser) { allowPickup = true; pickupType = PICKUP_DEFUSEKIT; @@ -621,7 +621,7 @@ void Bot::FindItem (void) if ((pev->weapons & (1 << WEAPON_ELITE)) || HasShield () || m_isVIP || (HasPrimaryWeapon () && !RateGroundWeapon (ent))) allowPickup = false; } - else if (GetTeam (GetEntity ()) == TEAM_TF) // terrorist team specific + else if (m_team == TEAM_TF) // terrorist team specific { if (pickupType == PICKUP_DROPPED_C4) { @@ -686,7 +686,7 @@ void Bot::FindItem (void) } } } - else if (GetTeam (GetEntity ()) == TEAM_CF) + else if (m_team == TEAM_CF) { if (pickupType == PICKUP_HOSTAGE) { @@ -885,7 +885,7 @@ void Bot::SwitchChatterIcon (bool show) { edict_t *ent = INDEXENT (i); - if (!IsValidPlayer (ent) || IsValidBot (ent) || GetTeam (ent) != GetTeam (GetEntity ())) + if (!IsValidPlayer (ent) || IsValidBot (ent) || GetTeam (ent) != m_team) continue; MESSAGE_BEGIN (MSG_ONE, g_netMsg->GetId (NETMSG_BOTVOICE), NULL, ent); // begin message @@ -902,7 +902,7 @@ void Bot::InstantChatterMessage (int type) if (yb_communication_type.GetInt () != 2 || g_chatterFactory[type].IsEmpty () || g_gameVersion == CSV_OLD || !g_sendAudioFinished) return; - if (IsAlive (GetEntity ())) + if (m_notKilled) SwitchChatterIcon (true); static float reportTime = GetWorldTime (); @@ -923,7 +923,7 @@ void Bot::InstantChatterMessage (int type) { edict_t *ent = INDEXENT (i); - if (!IsValidPlayer (ent) || IsValidBot (ent) || GetTeam (ent) != GetTeam (GetEntity ())) + if (!IsValidPlayer (ent) || IsValidBot (ent) || GetTeam (ent) != m_team) continue; g_sendAudioFinished = false; @@ -996,8 +996,6 @@ void Bot::CheckMessageQueue (void) if (currentQueueMessage == GSM_IDLE || (currentQueueMessage == GSM_RADIO && yb_csdm_mode.GetInt () == 2)) return; - int team = GetTeam (GetEntity ()); - switch (currentQueueMessage) { case GSM_BUY_STUFF: // general buy message @@ -1044,7 +1042,7 @@ void Bot::CheckMessageQueue (void) } // prevent terrorists from buying on es maps - if ((g_mapType & MAP_ES) && GetTeam (GetEntity ()) == TEAM_TF) + if ((g_mapType & MAP_ES) && m_team == TEAM_TF) m_buyState = 6; // prevent teams from buying on fun maps @@ -1069,19 +1067,19 @@ void Bot::CheckMessageQueue (void) case GSM_RADIO: // general radio message issued // if last bot radio command (global) happened just a second ago, delay response - if (g_lastRadioTime[team] + 1.0 < GetWorldTime ()) + if (g_lastRadioTime[m_team] + 1.0 < GetWorldTime ()) { // if same message like previous just do a yes/no if (m_radioSelect != Radio_Affirmative && m_radioSelect != Radio_Negative) { - if (m_radioSelect == g_lastRadio[team] && g_lastRadioTime[team] + 1.5 > GetWorldTime ()) + if (m_radioSelect == g_lastRadio[m_team] && g_lastRadioTime[m_team] + 1.5 > GetWorldTime ()) m_radioSelect = -1; else { if (m_radioSelect != Radio_ReportingIn) - g_lastRadio[team] = m_radioSelect; + g_lastRadio[m_team] = m_radioSelect; else - g_lastRadio[team] = -1; + g_lastRadio[m_team] = -1; for (int i = 0; i < GetMaxClients (); i++) { @@ -1089,7 +1087,7 @@ void Bot::CheckMessageQueue (void) if (bot != NULL) { - if (pev != bot->pev && GetTeam (bot->GetEntity ()) == team) + if (pev != bot->pev && GetTeam (bot->GetEntity ()) == m_team) { bot->m_radioOrder = m_radioSelect; bot->m_radioEntity = GetEntity (); @@ -1110,7 +1108,7 @@ void Bot::CheckMessageQueue (void) if (path->flags & FLAG_GOAL) { - if ((g_mapType & MAP_DE) && GetTeam (GetEntity ()) == TEAM_TF && (pev->weapons & (1 << WEAPON_C4))) + if ((g_mapType & MAP_DE) && m_team == TEAM_TF && (pev->weapons & (1 << WEAPON_C4))) InstantChatterMessage (Chatter_GoingToPlantBomb); else InstantChatterMessage (Chatter_Nothing); @@ -1134,9 +1132,9 @@ void Bot::CheckMessageQueue (void) if (g_randGen.Long (0, 100) < 40) { - if (g_bombPlanted && GetTeam (GetEntity ()) == TEAM_TF) + if (g_bombPlanted && m_team == TEAM_TF) InstantChatterMessage (Chatter_GuardDroppedC4); - else if (m_inVIPZone && GetTeam (GetEntity ()) == TEAM_TF) + else if (m_inVIPZone && m_team == TEAM_TF) InstantChatterMessage (Chatter_GuardingVipSafety); else InstantChatterMessage (Chatter_Camp); @@ -1188,7 +1186,7 @@ void Bot::CheckMessageQueue (void) InstantChatterMessage (m_radioSelect); g_radioInsteadVoice = false; // reset radio to voice - g_lastRadioTime[team] = GetWorldTime (); // store last radio usage + g_lastRadioTime[m_team] = GetWorldTime (); // store last radio usage } else PushMessageQueue (GSM_RADIO); @@ -1316,14 +1314,13 @@ void Bot::PerformWeaponPurchase (void) // select the priority tab for this personality int *ptr = g_weaponPrefs[m_personality] + NUM_WEAPONS; - int team = GetTeam (GetEntity ()); bool isPistolMode = (g_weaponSelect[25].teamStandard == -1) && (g_weaponSelect[3].teamStandard == 2); switch (m_buyState) { case 0: // if no primary weapon and bot has some money, buy a primary weapon - if ((!HasShield () && !HasPrimaryWeapon ()) && (g_botManager->EconomicsValid (team) || IsMorePowerfulWeaponCanBeBought ())) + if ((!HasShield () && !HasPrimaryWeapon ()) && (g_botManager->EconomicsValid (m_team) || IsMorePowerfulWeaponCanBeBought ())) { do { @@ -1341,7 +1338,7 @@ void Bot::PerformWeaponPurchase (void) continue; // weapon available for every team? - if ((g_mapType & MAP_AS) && selectedWeapon->teamAS != 2 && selectedWeapon->teamAS != team) + if ((g_mapType & MAP_AS) && selectedWeapon->teamAS != 2 && selectedWeapon->teamAS != m_team) continue; // ignore weapon if this weapon not supported by currently running cs version... @@ -1349,7 +1346,7 @@ void Bot::PerformWeaponPurchase (void) continue; // ignore weapon if this weapon is not targeted to out team.... - if (selectedWeapon->teamStandard != 2 && selectedWeapon->teamStandard != team) + if (selectedWeapon->teamStandard != 2 && selectedWeapon->teamStandard != m_team) continue; // ignore weapon if this weapon is restricted @@ -1372,7 +1369,7 @@ void Bot::PerformWeaponPurchase (void) break; } - if (team == TEAM_CF) + if (m_team == TEAM_CF) { switch (selectedWeapon->id) { @@ -1388,7 +1385,7 @@ void Bot::PerformWeaponPurchase (void) if (selectedWeapon->id == WEAPON_SHIELD && m_moneyAmount > g_botBuyEconomyTable[10]) ignoreWeapon = true; } - else if (team == TEAM_TF) + else if (m_team == TEAM_TF) { switch (selectedWeapon->id) { @@ -1428,7 +1425,7 @@ void Bot::PerformWeaponPurchase (void) int moneySave = g_randGen.Long (900, 1100); - if (g_botManager->GetLastWinner () == team) + if (g_botManager->GetLastWinner () == m_team) moneySave = 0; if (selectedWeapon->price <= (m_moneyAmount - moneySave)) @@ -1460,7 +1457,7 @@ void Bot::PerformWeaponPurchase (void) FakeClientCommand(GetEntity (), "menuselect %d", selectedWeapon->buySelect); else // SteamCS buy menu is different from the old one { - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) FakeClientCommand(GetEntity (), "menuselect %d", selectedWeapon->newBuySelectT); else FakeClientCommand (GetEntity (), "menuselect %d", selectedWeapon->newBuySelectCT); @@ -1479,7 +1476,7 @@ void Bot::PerformWeaponPurchase (void) } case 1: // if armor is damaged and bot has some money, buy some armor - if (pev->armorvalue < g_randGen.Long (50, 80) && (isPistolMode || (g_botManager->EconomicsValid (team) && HasPrimaryWeapon ()))) + if (pev->armorvalue < g_randGen.Long (50, 80) && (isPistolMode || (g_botManager->EconomicsValid (m_team) && HasPrimaryWeapon ()))) { // if bot is rich, buy kevlar + helmet, else buy a single kevlar if (m_moneyAmount > 1500 && !IsRestricted (WEAPON_ARMORHELM)) @@ -1510,13 +1507,13 @@ void Bot::PerformWeaponPurchase (void) continue; // weapon available for every team? - if ((g_mapType & MAP_AS) && selectedWeapon->teamAS != 2 && selectedWeapon->teamAS != team) + if ((g_mapType & MAP_AS) && selectedWeapon->teamAS != 2 && selectedWeapon->teamAS != m_team) continue; if (g_gameVersion == CSV_OLD && selectedWeapon->buySelect == -1) continue; - if (selectedWeapon->teamStandard != 2 && selectedWeapon->teamStandard != team) + if (selectedWeapon->teamStandard != 2 && selectedWeapon->teamStandard != m_team) continue; if (selectedWeapon->price <= (m_moneyAmount - g_randGen.Long (100, 200))) @@ -1566,14 +1563,14 @@ void Bot::PerformWeaponPurchase (void) FakeClientCommand (GetEntity (), "menuselect 4"); } - if (g_randGen.Long (1, 100) < g_grenadeBuyPrecent[1] && m_moneyAmount >= 300 && g_botManager->EconomicsValid (team) && !IsRestricted (WEAPON_FLASHBANG)) + if (g_randGen.Long (1, 100) < g_grenadeBuyPrecent[1] && m_moneyAmount >= 300 && g_botManager->EconomicsValid (m_team) && !IsRestricted (WEAPON_FLASHBANG)) { // buy a concussion grenade, i.e., 'flashbang' FakeClientCommand (GetEntity (), "buyequip"); FakeClientCommand (GetEntity (), "menuselect 3"); } - if (g_randGen.Long (1, 100) < g_grenadeBuyPrecent[2] && m_moneyAmount >= 400 && g_botManager->EconomicsValid (team) && !IsRestricted (WEAPON_SMOKE)) + if (g_randGen.Long (1, 100) < g_grenadeBuyPrecent[2] && m_moneyAmount >= 400 && g_botManager->EconomicsValid (m_team) && !IsRestricted (WEAPON_SMOKE)) { // buy a smoke grenade FakeClientCommand (GetEntity (), "buyequip"); @@ -1582,7 +1579,7 @@ void Bot::PerformWeaponPurchase (void) break; case 4: // if bot is CT and we're on a bomb map, randomly buy the defuse kit - if ((g_mapType & MAP_DE) && GetTeam (GetEntity ()) == TEAM_CF && g_randGen.Long (1, 100) < 80 && m_moneyAmount > 200 && !IsRestricted (WEAPON_DEFUSER)) + if ((g_mapType & MAP_DE) && m_team == TEAM_CF && g_randGen.Long (1, 100) < 80 && m_moneyAmount > 200 && !IsRestricted (WEAPON_DEFUSER)) { if (g_gameVersion == CSV_OLD) FakeClientCommand (GetEntity (), "buyequip;menuselect 6"); @@ -1671,7 +1668,6 @@ void Bot::SetConditions (void) // this function carried out each frame. does all of the sensing, calculates emotions and finally sets the desired // action after applying all of the Filters - int team = GetTeam (GetEntity ()); m_aimFlags = 0; // slowly increase/decrease dynamic emotions back to their base level @@ -1714,7 +1710,7 @@ void Bot::SetConditions (void) // did bot just kill an enemy? if (!FNullEnt (m_lastVictim)) { - if (GetTeam (m_lastVictim) != team) + if (GetTeam (m_lastVictim) != m_team) { // add some aggression because we just killed somebody m_agressionLevel += 0.1; @@ -1761,7 +1757,7 @@ void Bot::SetConditions (void) } // if no more enemies found AND bomb planted, switch to knife to get to bombplace faster - if (GetTeam (GetEntity ()) == TEAM_CF && m_currentWeapon != WEAPON_KNIFE && GetNearbyEnemiesNearPosition (pev->origin, 9999) == 0 && g_bombPlanted) + if (m_team == TEAM_CF && m_currentWeapon != WEAPON_KNIFE && GetNearbyEnemiesNearPosition (pev->origin, 9999) == 0 && g_bombPlanted) { SelectWeaponByName ("weapon_knife"); m_plantedBombWptIndex = FindPlantedBomb (); @@ -2013,7 +2009,7 @@ void Bot::SetConditions (void) g_taskFilters[TASK_ATTACK].desire = 0; // calculate desires to seek cover or hunt - if (IsValidPlayer (m_lastEnemy) && m_lastEnemyOrigin != nullvec && !((g_mapType & MAP_DE) && g_bombPlanted) && !(pev->weapons & (1 << WEAPON_C4)) && (m_loosedBombWptIndex == -1 && GetTeam (GetEntity ()) == TEAM_TF)) + if (IsValidPlayer (m_lastEnemy) && m_lastEnemyOrigin != nullvec && !((g_mapType & MAP_DE) && g_bombPlanted) && !(pev->weapons & (1 << WEAPON_C4)) && (m_loosedBombWptIndex == -1 && m_team == TEAM_TF)) { float distance = (m_lastEnemyOrigin - pev->origin).GetLength (); @@ -2171,7 +2167,7 @@ void Bot::StartTask (TaskId_t id, float desire, int data, float time, bool resum else m_chosenGoalIndex = GetTask ()->data; - if (g_randGen.Long (0, 100) < 80 && GetTaskId () == TASK_CAMP && GetTeam (GetEntity ()) == TEAM_TF && m_inVIPZone) + if (g_randGen.Long (0, 100) < 80 && GetTaskId () == TASK_CAMP && m_team == TEAM_TF && m_inVIPZone) ChatterMessage (Chatter_GoingToGuardVIPSafety); } @@ -2536,7 +2532,7 @@ void Bot::CheckRadioCommands (void) break; case Radio_ShesGonnaBlow: - if (FNullEnt (m_enemy) && distance < 2048 && g_bombPlanted && GetTeam (GetEntity ()) == TEAM_TF) + if (FNullEnt (m_enemy) && distance < 2048 && g_bombPlanted && m_team == TEAM_TF) { RadioMessage (Radio_Affirmative); @@ -2553,7 +2549,7 @@ void Bot::CheckRadioCommands (void) case Radio_RegroupTeam: // if no more enemies found AND bomb planted, switch to knife to get to bombplace faster - if ((GetTeam (GetEntity ()) == TEAM_CF) && m_currentWeapon != WEAPON_KNIFE && GetNearbyEnemiesNearPosition (pev->origin, 9999) == 0 && g_bombPlanted && GetTaskId () != TASK_DEFUSEBOMB) + if ((m_team == TEAM_CF) && m_currentWeapon != WEAPON_KNIFE && GetNearbyEnemiesNearPosition (pev->origin, 9999) == 0 && g_bombPlanted && GetTaskId () != TASK_DEFUSEBOMB) { SelectWeaponByName ("weapon_knife"); @@ -2624,13 +2620,12 @@ void Bot::CheckRadioCommands (void) // if bot has no enemy if (m_lastEnemyOrigin == nullvec) { - int team = GetTeam (GetEntity ()); float nearestDistance = FLT_MAX; // take nearest enemy to ordering player for (int i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team == team) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team == m_team) continue; edict_t *enemy = g_clients[i].ent; @@ -2661,7 +2656,7 @@ void Bot::CheckRadioCommands (void) int bombPoint = -1; // check if it's a ct command - if (GetTeam (m_radioEntity) == TEAM_CF && GetTeam (GetEntity ()) == TEAM_CF && IsValidBot (m_radioEntity)) + if (GetTeam (m_radioEntity) == TEAM_CF && m_team == TEAM_CF && IsValidBot (m_radioEntity)) { if (g_timeNextBombUpdate < GetWorldTime ()) { @@ -2721,13 +2716,12 @@ void Bot::CheckRadioCommands (void) // If Bot has no enemy if (m_lastEnemyOrigin == nullvec) { - int team = GetTeam (GetEntity ()); float nearestDistance = FLT_MAX; // Take nearest enemy to ordering Player for (int i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team == team) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team == m_team) continue; edict_t *enemy = g_clients[i].ent; @@ -2974,7 +2968,7 @@ void Bot::ChooseAimDirection (void) TraceResult tr; int index = m_currentWaypointIndex; - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) { if ((g_experienceData + (index * g_numWaypoints) + index)->team0DangerIndex != -1) { @@ -3027,6 +3021,7 @@ void Bot::Think (void) m_canChooseAimDirection = true; m_notKilled = IsAlive (GetEntity ()); + m_team = GetTeam (GetEntity ()); m_frameInterval = GetWorldTime () - m_lastThinkTime; m_lastThinkTime = GetWorldTime (); @@ -3159,15 +3154,13 @@ void Bot::SecondThink (void) { // this function is called from main think function every second (second not frame). - if (g_bombPlanted && GetTeam (GetEntity ()) == TEAM_CF && (pev->origin - g_waypoint->GetBombPosition ()).GetLength () < 700 && !IsBombDefusing (g_waypoint->GetBombPosition ()) && !m_hasProgressBar && GetTaskId () != TASK_ESCAPEFROMBOMB) + if (g_bombPlanted && m_team == TEAM_CF && (pev->origin - g_waypoint->GetBombPosition ()).GetLength () < 700 && !IsBombDefusing (g_waypoint->GetBombPosition ()) && !m_hasProgressBar && GetTaskId () != TASK_ESCAPEFROMBOMB) ResetTasks (); } void Bot::RunTask (void) { // this is core function that handle task execution - - int team = GetTeam (GetEntity ()); int destIndex, i; Vector src, destination; @@ -3182,7 +3175,7 @@ void Bot::RunTask (void) case TASK_NORMAL: m_aimFlags |= AIM_NAVPOINT; - if ((g_mapType & MAP_DE) && team == TEAM_TF) + if ((g_mapType & MAP_DE) && m_team == TEAM_TF) { if (!g_bombPlanted) { @@ -3237,7 +3230,7 @@ void Bot::RunTask (void) m_reloadState = RELOAD_PRIMARY; // if bomb planted and it's a CT calculate new path to bomb point if he's not already heading for - if (g_bombPlanted && team == TEAM_CF && GetTask ()->data != -1 && !(g_waypoint->GetPath (GetTask ()->data)->flags & FLAG_GOAL) && GetTaskId () != TASK_ESCAPEFROMBOMB) + if (g_bombPlanted && m_team == TEAM_CF && GetTask ()->data != -1 && !(g_waypoint->GetPath (GetTask ()->data)->flags & FLAG_GOAL) && GetTaskId () != TASK_ESCAPEFROMBOMB) { DeleteSearchNodes (); GetTask ()->data = -1; @@ -3265,7 +3258,7 @@ void Bot::RunTask (void) bool campingAllowed = true; // Check if it's not allowed for this team to camp here - if (team == TEAM_TF) + if (m_team == TEAM_TF) { if (m_currentPath->flags & FLAG_CF_ONLY) campingAllowed = false; @@ -3277,7 +3270,7 @@ void Bot::RunTask (void) } // don't allow vip on as_ maps to camp + don't allow terrorist carrying c4 to camp - if (((g_mapType & MAP_AS) && *(INFOKEY_VALUE (GET_INFOKEYBUFFER (GetEntity ()), "model")) == 'v') || ((g_mapType & MAP_DE) && GetTeam (GetEntity ()) == TEAM_TF && !g_bombPlanted && (pev->weapons & (1 << WEAPON_C4)))) + if (((g_mapType & MAP_AS) && *(INFOKEY_VALUE (GET_INFOKEYBUFFER (GetEntity ()), "model")) == 'v') || ((g_mapType & MAP_DE) && m_team == TEAM_TF && !g_bombPlanted && (pev->weapons & (1 << WEAPON_C4)))) campingAllowed = false; // check if another bot is already camping here @@ -3324,7 +3317,7 @@ void Bot::RunTask (void) if (g_mapType & MAP_CS) { // CT Bot has some hostages following? - if (HasHostage () && team == TEAM_CF) + if (HasHostage () && m_team == TEAM_CF) { // and reached a Rescue Point? if (m_currentPath->flags & FLAG_RESCUE) @@ -3333,7 +3326,7 @@ void Bot::RunTask (void) m_hostages[i] = NULL; // clear array of hostage pointers } } - else if (team == TEAM_TF && g_randGen.Long (0, 100) < 80) + else if (m_team == TEAM_TF && g_randGen.Long (0, 100) < 80) { int index = FindDefendWaypoint (m_currentPath->origin); @@ -3365,7 +3358,7 @@ void Bot::RunTask (void) else StartTask (TASK_PLANTBOMB, TASKPRI_PLANTBOMB, -1, 0.0, false); } - else if (team == TEAM_CF) + else if (m_team == TEAM_CF) { if (!g_bombPlanted && GetNearbyFriendsNearPosition (pev->origin, 120) <= 4 && g_randGen.Long (0, 100) < 65 && GetTaskId () == TASK_NORMAL && m_fearLevel > m_agressionLevel / 2) { @@ -3404,7 +3397,7 @@ void Bot::RunTask (void) // do pathfinding if it's not the current waypoint if (destIndex != m_currentWaypointIndex) - FindPath (m_currentWaypointIndex, destIndex, ((g_bombPlanted && team == TEAM_CF) || yb_debug_goal.GetInt () != -1) ? 0 : m_pathType); + FindPath (m_currentWaypointIndex, destIndex, ((g_bombPlanted && m_team == TEAM_CF) || yb_debug_goal.GetInt () != -1) ? 0 : m_pathType); } else { @@ -3480,7 +3473,7 @@ void Bot::RunTask (void) m_lastEnemy = NULL; m_lastEnemyOrigin = nullvec; } - else if (GetTeam (m_lastEnemy) == team) + else if (GetTeam (m_lastEnemy) == m_team) { // don't hunt down our teammate... RemoveCertainTask (TASK_HUNTENEMY); @@ -3695,7 +3688,7 @@ void Bot::RunTask (void) m_checkTerrain = false; m_moveToGoal = false; - if (g_bombPlanted && m_defendedBomb && !IsBombDefusing(g_waypoint->GetBombPosition()) && !OutOfBombTimer() && team == TEAM_CF) + if (g_bombPlanted && m_defendedBomb && !IsBombDefusing (g_waypoint->GetBombPosition ()) && !OutOfBombTimer () && m_team == TEAM_CF) { m_defendedBomb = false; TaskComplete(); @@ -4134,7 +4127,7 @@ void Bot::RunTask (void) MakeVectors (m_targetEntity->v.v_angle); TraceLine (m_targetEntity->v.origin + m_targetEntity->v.view_ofs, g_pGlobals->v_forward * 500, true, true, GetEntity (), &tr); - if (!FNullEnt (tr.pHit) && IsValidPlayer (tr.pHit) && GetTeam (tr.pHit) != team) + if (!FNullEnt (tr.pHit) && IsValidPlayer (tr.pHit) && GetTeam (tr.pHit) != m_team) { m_targetEntity = NULL; m_lastEnemy = tr.pHit; @@ -4662,7 +4655,7 @@ void Bot::RunTask (void) case PICKUP_PLANTED_C4: m_aimFlags |= AIM_ENTITY; - if (team == TEAM_CF && itemDistance < 55) + if (m_team == TEAM_CF && itemDistance < 55) { ChatterMessage (Chatter_DefusingC4); @@ -4776,8 +4769,6 @@ void Bot::BotAI (void) float movedDistance; // length of different vector (distance bot moved) TraceResult tr; - int team = GetTeam (GetEntity ()); - // switch to knife if time to do this if (m_checkKnifeSwitch && m_buyingFinished && m_spawnTime + g_randGen.Float (4.0, 6.5) < GetWorldTime ()) { @@ -4816,7 +4807,7 @@ void Bot::BotAI (void) } // select a leader bot for this team - SelectLeaderEachTeam (team); + SelectLeaderEachTeam (m_team); m_checkWeaponSwitch = false; if (m_isLeader && m_moveToC4) @@ -4869,10 +4860,10 @@ void Bot::BotAI (void) if (g_randGen.Long (0, 100) < 45 && GetNearbyFriendsNearPosition (pev->origin, 512) == 0 && (m_enemy->v.weapons & (1 << WEAPON_C4))) ChatterMessage (Chatter_SpotTheBomber); - if (g_randGen.Long (0, 100) < 45 && GetTeam (GetEntity ()) == TEAM_TF && GetNearbyFriendsNearPosition (pev->origin, 512) == 0 && *g_engfuncs.pfnInfoKeyValue (g_engfuncs.pfnGetInfoKeyBuffer (m_enemy), "model") == 'v') + if (g_randGen.Long (0, 100) < 45 && m_team == TEAM_TF && GetNearbyFriendsNearPosition (pev->origin, 512) == 0 && *g_engfuncs.pfnInfoKeyValue (g_engfuncs.pfnGetInfoKeyBuffer (m_enemy), "model") == 'v') ChatterMessage (Chatter_VIPSpotted); - if (g_randGen.Long (0, 100) < 50 && GetNearbyFriendsNearPosition (pev->origin, 450) == 0 && GetTeam (m_enemy) != GetTeam (GetEntity ()) && IsGroupOfEnemies (m_enemy->v.origin, 2, 384)) + if (g_randGen.Long (0, 100) < 50 && GetNearbyFriendsNearPosition (pev->origin, 450) == 0 && GetTeam (m_enemy) != m_team && IsGroupOfEnemies (m_enemy->v.origin, 2, 384)) ChatterMessage (Chatter_ScaredEmotion); if (g_randGen.Long (0, 100) < 40 && GetNearbyFriendsNearPosition (pev->origin, 1024) == 0 && ((m_enemy->v.weapons & (1 << WEAPON_AWP)) || (m_enemy->v.weapons & (1 << WEAPON_SCOUT)) || (m_enemy->v.weapons & (1 << WEAPON_G3SG1)) || (m_enemy->v.weapons & (1 << WEAPON_SG550)))) @@ -5544,9 +5535,9 @@ void Bot::BotAI (void) WRITE_SHORT (FixedSigned16 (-1, 1 << 13)); WRITE_SHORT (FixedSigned16 (0, 1 << 13)); WRITE_BYTE (0); - WRITE_BYTE (GetTeam (GetEntity ()) == TEAM_CF ? 0 : 255); + WRITE_BYTE (m_team == TEAM_CF ? 0 : 255); WRITE_BYTE (100); - WRITE_BYTE (GetTeam (GetEntity ()) != TEAM_CF ? 0 : 255); + WRITE_BYTE (m_team != TEAM_CF ? 0 : 255); WRITE_BYTE (0); WRITE_BYTE (255); WRITE_BYTE (255); @@ -5644,13 +5635,11 @@ void Bot::TakeDamage (edict_t *inflictor, int damage, int armor, int bits) // other player. m_lastDamageType = bits; - - int team = GetTeam (GetEntity ()); - CollectGoalExperience (damage, team); + CollectGoalExperience (damage, m_team); if (IsValidPlayer (inflictor)) { - if (GetTeam (inflictor) == team && yb_tkpunish.GetBool () && !g_botManager->GetBot (inflictor)) + if (GetTeam (inflictor) == m_team && yb_tkpunish.GetBool () && !g_botManager->GetBot (inflictor)) { // alright, die you teamkiller!!! m_actualReactionTime = 0.0; @@ -5684,7 +5673,7 @@ void Bot::TakeDamage (edict_t *inflictor, int damage, int armor, int bits) } RemoveCertainTask (TASK_CAMP); - if (FNullEnt (m_enemy) && team != GetTeam (inflictor)) + if (FNullEnt (m_enemy) && m_team != GetTeam (inflictor)) { m_lastEnemy = inflictor; m_lastEnemyOrigin = inflictor->v.origin; @@ -5802,7 +5791,7 @@ void Bot::CollectExperienceData (edict_t *attacker, int damage) return; int attackerTeam = GetTeam (attacker); - int victimTeam = GetTeam (GetEntity ()); + int victimTeam = m_team; if (attackerTeam == victimTeam ) return; @@ -5868,7 +5857,7 @@ void Bot::HandleChatterMessage (const char *tempMessage) { // this function is added to prevent engine crashes with: 'Message XX started, before message XX ended', or something. - if (FStrEq (tempMessage, "#CTs_Win") && (GetTeam (GetEntity ()) == TEAM_CF)) + if (FStrEq (tempMessage, "#CTs_Win") && (m_team == TEAM_CF)) { if (g_timeRoundMid > GetWorldTime ()) ChatterMessage (Chatter_QuicklyWonTheRound); @@ -5876,7 +5865,7 @@ void Bot::HandleChatterMessage (const char *tempMessage) ChatterMessage (Chatter_WonTheRound); } - if (FStrEq (tempMessage, "#Terrorists_Win") && (GetTeam (GetEntity ()) == TEAM_TF)) + if (FStrEq (tempMessage, "#Terrorists_Win") && (m_team == TEAM_TF)) { if (g_timeRoundMid > GetWorldTime ()) ChatterMessage (Chatter_QuicklyWonTheRound); @@ -6273,7 +6262,7 @@ bool Bot::OutOfBombTimer (void) Vector bombOrigin = g_waypoint->GetBombPosition (); // for terrorist, if timer is lower than eleven seconds, return true - if (static_cast (timeLeft) < 16 && GetTeam (GetEntity ()) == TEAM_TF && (bombOrigin - pev->origin).GetLength () < 1000) + if (static_cast (timeLeft) < 16 && m_team == TEAM_TF && (bombOrigin - pev->origin).GetLength () < 1000) return true; bool hasTeammatesWithDefuserKit = false; @@ -6342,7 +6331,7 @@ void Bot::ReactOnSound (void) else volume = 2.0 * hearingDistance * (1.0 - distance / hearingDistance) * (g_clients[i].timeSoundLasting - GetWorldTime ()) / g_clients[i].maxTimeSoundLasting; - if (g_clients[hearEnemyIndex].team == GetTeam (GetEntity ()) && yb_csdm_mode.GetInt () != 2) + if (g_clients[hearEnemyIndex].team == m_team && yb_csdm_mode.GetInt () != 2) volume = 0.3 * volume; // we will care about the most hearable sound instead of the closest one - KWo @@ -6360,7 +6349,7 @@ void Bot::ReactOnSound (void) if (hearEnemyIndex >= 0) { - if (g_clients[hearEnemyIndex].team != GetTeam (GetEntity ()) && yb_csdm_mode.GetInt () != 2) + if (g_clients[hearEnemyIndex].team != m_team && yb_csdm_mode.GetInt () != 2) player = g_clients[hearEnemyIndex].ent; } @@ -6477,7 +6466,7 @@ bool Bot::IsBombDefusing (Vector bombOrigin) if (bot == NULL || bot == this) continue; // skip invalid bots - if (GetTeam (GetEntity ()) != GetTeam (bot->GetEntity ()) || bot->GetTaskId () == TASK_ESCAPEFROMBOMB) + if (m_team != GetTeam (bot->GetEntity ()) || bot->GetTaskId () == TASK_ESCAPEFROMBOMB) continue; // skip other mess if ((bot->pev->origin - bombOrigin).GetLength () < 100 && (bot->GetTaskId () == TASK_DEFUSEBOMB || bot->m_hasProgressBar)) @@ -6487,7 +6476,7 @@ bool Bot::IsBombDefusing (Vector bombOrigin) } // take in account peoples too - if (defusingInProgress || !(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != GetTeam (GetEntity ()) || IsValidBot (g_clients[i].ent)) + if (defusingInProgress || !(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != m_team || IsValidBot (g_clients[i].ent)) continue; if ((g_clients[i].ent->v.origin - bombOrigin).GetLength () < 100) diff --git a/source/botmanager.cpp b/source/botmanager.cpp index 7eddf87..86eb054 100644 --- a/source/botmanager.cpp +++ b/source/botmanager.cpp @@ -991,6 +991,7 @@ void Bot::NewRound (void) m_prevWptIndex[4] = -1; m_navTimeset = GetWorldTime (); + m_team = GetTeam (GetEntity ()); switch (m_personality) { diff --git a/source/chatlib.cpp b/source/chatlib.cpp index 605ac3c..de8216f 100644 --- a/source/chatlib.cpp +++ b/source/chatlib.cpp @@ -237,12 +237,11 @@ void Bot::PrepareChatMessage (char *text) // teammate alive? else if (*pattern == 't') { - int team = GetTeam (GetEntity ()); int i; for (i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || (g_clients[i].team != team) || (g_clients[i].ent == GetEntity ())) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || (g_clients[i].team != m_team) || (g_clients[i].ent == GetEntity ())) continue; break; @@ -250,7 +249,7 @@ void Bot::PrepareChatMessage (char *text) if (i < GetMaxClients ()) { - if (!FNullEnt (pev->dmg_inflictor) && (GetTeam (GetEntity ()) == GetTeam (pev->dmg_inflictor))) + if (!FNullEnt (pev->dmg_inflictor) && (m_team == GetTeam (pev->dmg_inflictor))) talkEntity = pev->dmg_inflictor; else talkEntity = g_clients[i].ent; @@ -262,7 +261,7 @@ void Bot::PrepareChatMessage (char *text) { for (i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || (g_clients[i].team != team) || (g_clients[i].ent == GetEntity ())) + if (!(g_clients[i].flags & CF_USED) || (g_clients[i].team != m_team) || (g_clients[i].ent == GetEntity ())) continue; break; @@ -279,12 +278,11 @@ void Bot::PrepareChatMessage (char *text) } else if (*pattern == 'e') { - int team = GetTeam (GetEntity ()); int i; for (i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || (g_clients[i].team == team) || (g_clients[i].ent == GetEntity ())) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || (g_clients[i].team == m_team) || (g_clients[i].ent == GetEntity ())) continue; break; } @@ -300,7 +298,7 @@ void Bot::PrepareChatMessage (char *text) { for (i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || (g_clients[i].team == team) || (g_clients[i].ent == GetEntity ())) + if (!(g_clients[i].flags & CF_USED) || (g_clients[i].team == m_team) || (g_clients[i].ent == GetEntity ())) continue; break; } diff --git a/source/combat.cpp b/source/combat.cpp index dfc867a..c7f8d6d 100644 --- a/source/combat.cpp +++ b/source/combat.cpp @@ -32,11 +32,11 @@ ConVar mp_friendlyfire ("mp_friendlyfire", NULL, VT_NOREGISTER); int Bot::GetNearbyFriendsNearPosition (Vector origin, int radius) { - int count = 0, team = GetTeam (GetEntity ()); + int count = 0; for (int i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != team || g_clients[i].ent == GetEntity ()) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != m_team || g_clients[i].ent == GetEntity ()) continue; if ((g_clients[i].origin - origin).GetLengthSquared () < static_cast (radius * radius)) @@ -47,11 +47,11 @@ int Bot::GetNearbyFriendsNearPosition (Vector origin, int radius) int Bot::GetNearbyEnemiesNearPosition (Vector origin, int radius) { - int count = 0, team = GetTeam (GetEntity ()); + int count = 0; for (int i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team == team) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team == m_team) continue; if ((g_clients[i].origin - origin).GetLengthSquared () < static_cast (radius * radius)) @@ -79,7 +79,7 @@ bool Bot::LookupEnemy (void) edict_t *player, *newEnemy = NULL; float nearestDistance = m_viewDistance; - int i, team = GetTeam (GetEntity ()); + int i; // setup potentially visible set for this bot Vector potentialVisibility = EyePosition (); @@ -111,7 +111,7 @@ bool Bot::LookupEnemy (void) // search the world for players... for (i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || (g_clients[i].team == team) || (g_clients[i].ent == GetEntity ())) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || (g_clients[i].team == m_team) || (g_clients[i].ent == GetEntity ())) continue; player = g_clients[i].ent; @@ -194,7 +194,7 @@ bool Bot::LookupEnemy (void) // now alarm all teammates who see this bot & don't have an actual enemy of the bots enemy should simulate human players seeing a teammate firing for (int j = 0; j < GetMaxClients (); j++) { - if (!(g_clients[j].flags & CF_USED) || !(g_clients[j].flags & CF_ALIVE) || g_clients[j].team != team || g_clients[j].ent == GetEntity ()) + if (!(g_clients[j].flags & CF_USED) || !(g_clients[j].flags & CF_ALIVE) || g_clients[j].team != m_team || g_clients[j].ent == GetEntity ()) continue; Bot *friendBot = g_botManager->GetBot (g_clients[j].ent); @@ -416,14 +416,14 @@ bool Bot::IsFriendInLineOfFire (float distance) int playerIndex = ENTINDEX (tr.pHit) - 1; // check valid range - if (playerIndex >= 0 && playerIndex < GetMaxClients () && g_clients[playerIndex].team == GetTeam (GetEntity ()) && (g_clients[playerIndex].flags & CF_ALIVE)) + if (playerIndex >= 0 && playerIndex < GetMaxClients () && g_clients[playerIndex].team == m_team && (g_clients[playerIndex].flags & CF_ALIVE)) return true; } // search the world for players for (int i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != GetTeam (GetEntity ()) || g_clients[i].ent == GetEntity ()) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != m_team || g_clients[i].ent == GetEntity ()) continue; edict_t *ent = g_clients[i].ent; @@ -1329,7 +1329,7 @@ void Bot::AttachToUser (void) // search friends near us for (int i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != GetTeam (GetEntity ()) || g_clients[i].ent == GetEntity ()) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != m_team || g_clients[i].ent == GetEntity ()) continue; if (EntityIsVisible (g_clients[i].origin) && !IsValidBot (g_clients[i].ent)) @@ -1357,7 +1357,7 @@ void Bot::CommandTeam (void) // search teammates seen by this bot for (int i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != GetTeam (GetEntity ()) || g_clients[i].ent == GetEntity ()) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != m_team || g_clients[i].ent == GetEntity ()) continue; memberExists = true; @@ -1397,7 +1397,7 @@ bool Bot::IsGroupOfEnemies (Vector location, int numEnemies, int radius) if ((g_clients[i].ent->v.origin - location).GetLength () < radius) { // don't target our teammates... - if (g_clients[i].team == GetTeam (GetEntity ())) + if (g_clients[i].team == m_team) return false; if (numPlayers++ > numEnemies) diff --git a/source/navigate.cpp b/source/navigate.cpp index bee848a..addc566 100644 --- a/source/navigate.cpp +++ b/source/navigate.cpp @@ -48,9 +48,7 @@ ConVar yb_aim_target_anticipation_ratio ("yb_aim_target_anticipation_ratio", "3. int Bot::FindGoal (void) { // chooses a destination (goal) waypoint for a bot - int team = GetTeam (GetEntity ()); - - if (team == TEAM_TF && (g_mapType & MAP_DE)) + if (m_team == TEAM_TF && (g_mapType & MAP_DE)) { edict_t *pent = NULL; @@ -82,7 +80,7 @@ int Bot::FindGoal (void) Array offensiveWpts; Array defensiveWpts; - switch (team) + switch (m_team) { case TEAM_TF: offensiveWpts = g_waypoint->m_ctPoints; @@ -101,7 +99,7 @@ int Bot::FindGoal (void) tactic = 3; goto TacticChoosen; } - else if (HasHostage () && team == TEAM_CF) + else if (HasHostage () && m_team == TEAM_CF) { tactic = 2; offensiveWpts = g_waypoint->m_rescuePoints; @@ -114,18 +112,18 @@ int Bot::FindGoal (void) if (g_mapType & (MAP_AS | MAP_CS)) { - if (team == TEAM_TF) + if (m_team == TEAM_TF) { defensive += 25.0f; offensive -= 25.0f; } - else if (team == TEAM_CF) + else if (m_team == TEAM_CF) { defensive -= 25.0f; offensive += 25.0f; } } - else if ((g_mapType & MAP_DE) && team == TEAM_CF) + else if ((g_mapType & MAP_DE) && m_team == TEAM_CF) { if (g_bombPlanted && GetTaskId () != TASK_ESCAPEFROMBOMB && g_waypoint->GetBombPosition () != nullvec) { @@ -139,7 +137,7 @@ int Bot::FindGoal (void) defensive += 40.0f; offensive -= 25.0f; } - else if ((g_mapType & MAP_DE) && team == TEAM_TF) + else if ((g_mapType & MAP_DE) && m_team == TEAM_TF) { // send some terrorists to guard planter bomb if (g_bombPlanted && GetTaskId () != TASK_ESCAPEFROMBOMB && GetBombTimeleft () >= 15.0) @@ -251,7 +249,7 @@ TacticChoosen: if (testIndex < 0) break; - if (team == TEAM_TF) + if (m_team == TEAM_TF) { if ((g_experienceData + (m_currentWaypointIndex * g_numWaypoints) + goalChoices[i])->team0Value < (g_experienceData + (m_currentWaypointIndex * g_numWaypoints) + goalChoices[i + 1])->team0Value) { @@ -447,7 +445,7 @@ bool Bot::DoWaypointNav (void) if (bot == NULL || bot == this) continue; - if (!IsAlive (bot->GetEntity ()) || GetTeam (bot->GetEntity ()) != GetTeam (GetEntity ()) || bot->m_targetEntity != GetEntity () || bot->GetTaskId () != TASK_FOLLOWUSER) + if (!IsAlive (bot->GetEntity ()) || GetTeam (bot->GetEntity ()) != m_team || bot->m_targetEntity != GetEntity () || bot->GetTaskId () != TASK_FOLLOWUSER) continue; if (bot->pev->groundentity == m_liftEntity && bot->IsOnFloor ()) @@ -486,7 +484,7 @@ bool Bot::DoWaypointNav (void) if (bot == NULL) continue; // skip invalid bots - if (!IsAlive (bot->GetEntity ()) || GetTeam (bot->GetEntity ()) != GetTeam (GetEntity ()) || bot->m_targetEntity != GetEntity () || bot->GetTaskId () != TASK_FOLLOWUSER || bot->m_liftEntity != m_liftEntity) + if (!IsAlive (bot->GetEntity ()) || GetTeam (bot->GetEntity ()) != m_team || bot->m_targetEntity != GetEntity () || bot->GetTaskId () != TASK_FOLLOWUSER || bot->m_liftEntity != m_liftEntity) continue; if (bot->pev->groundentity == m_liftEntity || !bot->IsOnFloor ()) @@ -589,7 +587,7 @@ bool Bot::DoWaypointNav (void) // iterate though clients, and find if lift already used for (int i = 0; i < GetMaxClients (); i++) { - if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != GetTeam (GetEntity ()) || g_clients[i].ent == GetEntity () || FNullEnt (g_clients[i].ent->v.groundentity)) + if (!(g_clients[i].flags & CF_USED) || !(g_clients[i].flags & CF_ALIVE) || g_clients[i].team != m_team || g_clients[i].ent == GetEntity () || FNullEnt (g_clients[i].ent->v.groundentity)) continue; if (g_clients[i].ent->v.groundentity == m_liftEntity) @@ -750,7 +748,7 @@ bool Bot::DoWaypointNav (void) if (m_doorOpenAttempt > 2 && !FNullEnt (ent = FIND_ENTITY_IN_SPHERE (ent, pev->origin, 100))) { - if (IsValidPlayer (ent) && IsAlive (ent) && GetTeam (GetEntity ()) != GetTeam (ent) && IsWeaponShootingThroughWall (m_currentWeapon)) + if (IsValidPlayer (ent) && IsAlive (ent) && m_team != GetTeam (ent) && IsWeaponShootingThroughWall (m_currentWeapon)) { m_seeEnemyTime = GetWorldTime (); @@ -762,7 +760,7 @@ bool Bot::DoWaypointNav (void) m_lastEnemyOrigin = ent->v.origin; } - else if (IsValidPlayer (ent) && IsAlive (ent) && GetTeam (GetEntity ()) == GetTeam (ent)) + else if (IsValidPlayer (ent) && IsAlive (ent) && m_team == GetTeam (ent)) { DeleteSearchNodes (); ResetTasks (); @@ -818,7 +816,7 @@ bool Bot::DoWaypointNav (void) int startIndex = m_chosenGoalIndex; int goalIndex = m_currentWaypointIndex; - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) { waypointValue = (g_experienceData + (startIndex * g_numWaypoints) + goalIndex)->team0Value; waypointValue += static_cast (pev->health * 0.5); @@ -850,7 +848,7 @@ bool Bot::DoWaypointNav (void) else if (m_navNode == NULL) return false; - if ((g_mapType & MAP_DE) && g_bombPlanted && GetTeam (GetEntity ()) == TEAM_CF && GetTaskId () != TASK_ESCAPEFROMBOMB && GetTask ()->data != -1) + if ((g_mapType & MAP_DE) && g_bombPlanted && m_team == TEAM_CF && GetTaskId () != TASK_ESCAPEFROMBOMB && GetTask ()->data != -1) { Vector bombOrigin = CheckBombAudible (); @@ -1288,7 +1286,7 @@ void Bot::FindPath (int srcIndex, int destIndex, unsigned char pathType) break; case 1: - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) { gcalc = gfunctionKillsDistT; hcalc = hfunctionSquareDist; @@ -1306,7 +1304,7 @@ void Bot::FindPath (int srcIndex, int destIndex, unsigned char pathType) break; case 2: - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) { gcalc = gfunctionKillsT; hcalc = hfunctionNone; @@ -1554,7 +1552,7 @@ void Bot::GetValidWaypoint (void) } else if ((m_navTimeset + GetEstimatedReachTime () < GetWorldTime ()) && FNullEnt (m_enemy)) { - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) { int value = (g_experienceData + (m_currentWaypointIndex * g_numWaypoints) + m_currentWaypointIndex)->team0Damage; value += 100; @@ -1733,12 +1731,12 @@ int Bot::FindDefendWaypoint (Vector origin) Experience *exp = (g_experienceData + (waypointIndex[i] * g_numWaypoints) + waypointIndex[i]); int experience = -1; - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) experience = exp->team0Damage; else experience = exp->team1Damage; - experience = (experience * 100) / (GetTeam (GetEntity ()) == TEAM_TF ? g_highestDamageT : g_highestDamageCT); + experience = (experience * 100) / (m_team == TEAM_TF ? g_highestDamageT : g_highestDamageCT); minDistance[i] = (experience * 100) / 8192; minDistance[i] += experience; } @@ -1874,7 +1872,7 @@ int Bot::FindCoverWaypoint (float maxDistance) Experience *exp = (g_experienceData + (waypointIndex[i] * g_numWaypoints) + waypointIndex[i]); int experience = -1; - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) experience = exp->team0Damage; else experience = exp->team1Damage; @@ -1991,7 +1989,7 @@ bool Bot::HeadTowardWaypoint (void) int waypoint = m_navNode->next->index; float kills = 0; - if (GetTeam (GetEntity ()) == TEAM_TF) + if (m_team == TEAM_TF) kills = (g_experienceData + (waypoint * g_numWaypoints) + waypoint)->team0Damage / g_highestDamageT; else kills = (g_experienceData + (waypoint * g_numWaypoints) + waypoint)->team1Damage / g_highestDamageCT; @@ -2906,7 +2904,7 @@ int Bot::FindLoosedBomb (void) { // this function tries to find droped c4 on the defuse scenario map and returns nearest to it waypoint - if ((GetTeam (GetEntity ()) != TEAM_TF) || !(g_mapType & MAP_DE)) + if ((m_team != TEAM_TF) || !(g_mapType & MAP_DE)) return -1; // don't search for bomb if the player is CT, or it's not defusing bomb edict_t *bombEntity = NULL; // temporaly pointer to bomb @@ -2931,7 +2929,7 @@ int Bot::FindPlantedBomb (void) { // this function tries to find planted c4 on the defuse scenario map and returns nearest to it waypoint - if ((GetTeam (GetEntity ()) != TEAM_TF) || !(g_mapType & MAP_DE)) + if ((m_team != TEAM_TF) || !(g_mapType & MAP_DE)) return -1; // don't search for bomb if the player is CT, or it's not defusing bomb edict_t *bombEntity = NULL; // temporaly pointer to bomb