Make battleground join / arena join / loot money session packet (#1178)

* Make battleground / arena join session packet

* Loot money

* Avoid aoe crash
This commit is contained in:
Yunfan Li
2025-04-08 10:11:03 +08:00
committed by GitHub
parent 2fced71069
commit 2f3f8d565c
3 changed files with 18 additions and 9 deletions

View File

@@ -543,18 +543,22 @@ bool BGJoinAction::JoinQueue(uint32 type)
}
botAI->GetAiObjectContext()->GetValue<uint32>("bg type")->Set(0);
if (!isArena)
{
WorldPacket packet(CMSG_BATTLEMASTER_JOIN, 20);
packet << bot->GetGUID() << bgTypeId_ << instanceId << joinAsGroup;
bot->GetSession()->HandleBattlemasterJoinOpcode(packet);
WorldPacket* packet = new WorldPacket(CMSG_BATTLEMASTER_JOIN, 20);
*packet << bot->GetGUID() << bgTypeId_ << instanceId << joinAsGroup;
/// FIX race condition
// bot->GetSession()->HandleBattlemasterJoinOpcode(packet);
bot->GetSession()->QueuePacket(packet);
}
else
{
WorldPacket arena_packet(CMSG_BATTLEMASTER_JOIN_ARENA, 20);
arena_packet << unit->GetGUID() << arenaslot << asGroup << uint8(isRated);
bot->GetSession()->HandleBattlemasterJoinArena(arena_packet);
WorldPacket* arena_packet = new WorldPacket(CMSG_BATTLEMASTER_JOIN_ARENA, 20);
*arena_packet << unit->GetGUID() << arenaslot << asGroup << uint8(isRated);
/// FIX race condition
// bot->GetSession()->HandleBattlemasterJoinArena(arena_packet);
bot->GetSession()->QueuePacket(arena_packet);
}
return true;

View File

@@ -356,8 +356,9 @@ bool StoreLootAction::Execute(Event event)
if (gold > 0)
{
WorldPacket packet(CMSG_LOOT_MONEY, 0);
bot->GetSession()->HandleLootMoneyOpcode(packet);
WorldPacket* packet = new WorldPacket(CMSG_LOOT_MONEY, 0);
bot->GetSession()->QueuePacket(packet);
// bot->GetSession()->HandleLootMoneyOpcode(packet);
}
for (uint8 i = 0; i < items; ++i)

View File

@@ -135,7 +135,11 @@ Aura* AreaDebuffValue::Calculate()
for (auto i = list.begin(); i != list.end(); ++i)
{
AuraEffect* aurEff = *i;
if (!aurEff)
continue;
Aura* aura = aurEff->GetBase();
if (!aura)
continue;
AuraObjectType type = aura->GetType();
bool isPositive = aura->GetSpellInfo()->IsPositive();
if (type == DYNOBJ_AURA_TYPE && !isPositive)