Compare commits

..

1 Commits

Author SHA1 Message Date
bash
4f3a28bcbd nullptr exception 2025-08-10 17:51:46 +02:00
2 changed files with 16 additions and 38 deletions

View File

@@ -209,30 +209,16 @@ public:
void OnPlayerGiveXP(Player* player, uint32& amount, Unit* /*victim*/, uint8 /*xpSource*/) override
{
// early return
if (sPlayerbotAIConfig->randomBotXPRate == 1.0 || !player)
if (!player->GetSession()->IsBot())
return;
// no XP multiplier, when player is no bot.
if (!player->GetSession()->IsBot() || !sRandomPlayerbotMgr->IsRandomBot(player))
if (!sRandomPlayerbotMgr->IsRandomBot(player))
return;
// no XP multiplier, when bot has group where leader is a real player.
if (Group* group = player->GetGroup())
if (sPlayerbotAIConfig->randomBotXPRate != 1.0)
{
Player* leader = group->GetLeader();
if (leader && leader != player)
{
if (PlayerbotAI* leaderBotAI = GET_PLAYERBOT_AI(leader))
{
if (leaderBotAI->HasRealPlayerMaster())
return;
}
}
amount = static_cast<uint32>(std::round(static_cast<float>(amount) * sPlayerbotAIConfig->randomBotXPRate));
}
// otherwise apply bot XP multiplier.
amount = static_cast<uint32>(std::round(static_cast<float>(amount) * sPlayerbotAIConfig->randomBotXPRate));
}
};

View File

@@ -166,27 +166,18 @@ void PlayerbotFactory::Init()
}
ItemTemplate const* proto = sObjectMgr->GetItemTemplate(gemId);
if (!proto)
{
continue;
}
if (proto) {
if (proto->ItemLevel < 60)
continue;
if (proto->ItemLevel < 60)
{
continue;
}
if (proto->Flags & ITEM_FLAG_UNIQUE_EQUIPPABLE)
{
continue;
if (proto->Flags & ITEM_FLAG_UNIQUE_EQUIPPABLE)
continue;
}
if (sRandomItemMgr->IsTestItem(gemId))
{
continue;
}
continue;
if (!sGemPropertiesStore.LookupEntry(proto->GemProperties))
if (!proto || !sGemPropertiesStore.LookupEntry(proto->GemProperties))
{
continue;
}
@@ -194,6 +185,7 @@ void PlayerbotFactory::Init()
// LOG_INFO("playerbots", "Add {} to enchantment gems", gemId);
enchantGemIdCache.push_back(gemId);
}
LOG_INFO("playerbots", "Loading {} enchantment gems", enchantGemIdCache.size());
}