greatly improve performance

This commit is contained in:
Yunfan Li
2023-07-28 23:27:28 +08:00
parent 74293912ec
commit 7bd7c46088
6 changed files with 19 additions and 17 deletions

View File

@@ -1247,7 +1247,7 @@ void PlayerbotFactory::InitEquipment(bool incremental)
if (CanEquipUnseenItem(slot, dest, itemId)) if (CanEquipUnseenItem(slot, dest, itemId))
items[slot].push_back(itemId); items[slot].push_back(itemId);
} }
} while (items[slot].size() < 25 && desiredQuality-- > ITEM_QUALITY_NORMAL); } while (items[slot].size() < 10 && desiredQuality-- > ITEM_QUALITY_NORMAL);
} }
for (uint8 slot = 0; slot < EQUIPMENT_SLOT_END; ++slot) for (uint8 slot = 0; slot < EQUIPMENT_SLOT_END; ++slot)

View File

@@ -61,13 +61,13 @@ bool DropTargetAction::Execute(Event event)
context->GetValue<LootObjectStack*>("available loot")->Get()->Add(guid); context->GetValue<LootObjectStack*>("available loot")->Get()->Add(guid);
} }
ObjectGuid pullTarget = context->GetValue<ObjectGuid>("pull target")->Get(); // ObjectGuid pullTarget = context->GetValue<ObjectGuid>("pull target")->Get();
GuidVector possible = botAI->GetAiObjectContext()->GetValue<GuidVector>("possible targets no los")->Get(); // GuidVector possible = botAI->GetAiObjectContext()->GetValue<GuidVector>("possible targets no los")->Get();
if (pullTarget && find(possible.begin(), possible.end(), pullTarget) == possible.end()) // if (pullTarget && find(possible.begin(), possible.end(), pullTarget) == possible.end())
{ // {
context->GetValue<ObjectGuid>("pull target")->Set(ObjectGuid::Empty); // context->GetValue<ObjectGuid>("pull target")->Set(ObjectGuid::Empty);
} // }
context->GetValue<Unit*>("current target")->Set(nullptr); context->GetValue<Unit*>("current target")->Set(nullptr);

View File

@@ -7,12 +7,14 @@
void NonCombatStrategy::InitTriggers(std::vector<TriggerNode*>& triggers) void NonCombatStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{ {
triggers.push_back(new TriggerNode("timer", NextAction::array(0, new NextAction("check mount state", 1.0f), new NextAction("check values", 1.0f), nullptr))); triggers.push_back(new TriggerNode("timer", NextAction::array(0, new NextAction("check mount state", 1.0f),
triggers.push_back(new TriggerNode("near dark portal", NextAction::array(0, new NextAction("move to dark portal", 1.0f), nullptr))); // new NextAction("check values", 1.0f),
triggers.push_back(new TriggerNode("at dark portal azeroth", NextAction::array(0, new NextAction("use dark portal azeroth", 1.0f), nullptr))); nullptr)));
triggers.push_back(new TriggerNode("at dark portal outland", NextAction::array(0, new NextAction("move from dark portal", 1.0f), nullptr))); // triggers.push_back(new TriggerNode("near dark portal", NextAction::array(0, new NextAction("move to dark portal", 1.0f), nullptr)));
triggers.push_back(new TriggerNode("need world buff", NextAction::array(0, new NextAction("world buff", 1.0f), nullptr))); // triggers.push_back(new TriggerNode("at dark portal azeroth", NextAction::array(0, new NextAction("use dark portal azeroth", 1.0f), nullptr)));
triggers.push_back(new TriggerNode("vehicle near", NextAction::array(0, new NextAction("enter vehicle", 10.0f), nullptr))); // triggers.push_back(new TriggerNode("at dark portal outland", NextAction::array(0, new NextAction("move from dark portal", 1.0f), nullptr)));
// triggers.push_back(new TriggerNode("need world buff", NextAction::array(0, new NextAction("world buff", 1.0f), nullptr)));
// triggers.push_back(new TriggerNode("vehicle near", NextAction::array(0, new NextAction("enter vehicle", 10.0f), nullptr)));
} }
void CollisionStrategy::InitTriggers(std::vector<TriggerNode*>& triggers) void CollisionStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)

View File

@@ -113,8 +113,8 @@ Unit* EnemyPlayerValue::Calculate()
continue; continue;
if (Unit* pAttacker = pMember->getAttackerForHelper()) if (Unit* pAttacker = pMember->getAttackerForHelper())
if (bot->IsWithinDist(pAttacker, maxAggroDistance * 2.0f) && bot->IsWithinLOSInMap(pAttacker) && pAttacker != pVictim if (pAttacker->IsPlayer() && bot->IsWithinDist(pAttacker, maxAggroDistance * 2.0f) && bot->IsWithinLOSInMap(pAttacker) && pAttacker != pVictim
&& pAttacker->CanSeeOrDetect(bot) && pAttacker->IsPlayer()) && pAttacker->CanSeeOrDetect(bot))
return pAttacker; return pAttacker;
} }
} }

View File

@@ -13,7 +13,7 @@ GuidVector NearestUnitsValue::Calculate()
GuidVector results; GuidVector results;
for (Unit* unit : targets) for (Unit* unit : targets)
{ {
if ((ignoreLos || bot->IsWithinLOSInMap(unit)) && AcceptUnit(unit)) if (AcceptUnit(unit) && (ignoreLos || bot->IsWithinLOSInMap(unit)))
results.push_back(unit->GetGUID()); results.push_back(unit->GetGUID());
} }

View File

@@ -74,7 +74,7 @@ bool PartyMemberToHeal::Check(Unit* player)
{ {
// return player && player != bot && player->GetMapId() == bot->GetMapId() && player->IsInWorld() && // return player && player != bot && player->GetMapId() == bot->GetMapId() && player->IsInWorld() &&
// sServerFacade->GetDistance2d(bot, player) < (player->IsPlayer() && botAI->IsTank((Player*)player) ? 50.0f : 40.0f); // sServerFacade->GetDistance2d(bot, player) < (player->IsPlayer() && botAI->IsTank((Player*)player) ? 50.0f : 40.0f);
return player && player->GetMapId() == bot->GetMapId() && return player->GetMapId() == bot->GetMapId() &&
bot->GetDistance2d(player) < sPlayerbotAIConfig->healDistance * 2 && bot->GetDistance2d(player) < sPlayerbotAIConfig->healDistance * 2 &&
bot->IsWithinLOS(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()); bot->IsWithinLOS(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ());
} }