CPartyDefinePacket::CPartyDefinePacket(CParty* PParty) { this->type = 0xC8; this->size = 0x7C; //party is an alliance do the double loop if (PParty != NULL) { if (PParty->m_PAlliance!= NULL) { uint8 offset = 0; for (uint8 a = 0; a < PParty->m_PAlliance->partyList.size(); ++a) { for (uint8 i = 0; i < PParty->m_PAlliance->partyList.at(a)->members.size(); ++i) { CBattleEntity* PChar = PParty->m_PAlliance->partyList.at(a)->members.at(i); WBUFL(data,12*offset+(0x08)-4) = PChar->id; WBUFW(data,12*offset+(0x0C)-4) = PChar->targid; WBUFW(data,12*offset+(0x0E)-4) = PChar->PParty->GetMemberFlags(PChar); WBUFW(data,12*offset+(0x10)-4) = PChar->getZone(); offset++; } } } else //regular party { DSP_DEBUG_BREAK_IF(PParty->members.size() > 6); for (uint8 i = 0; i < PParty->members.size(); ++i) { CBattleEntity* PChar = PParty->members.at(i); WBUFL(data,12*i+(0x08)-4) = PChar->id; WBUFW(data,12*i+(0x0C)-4) = PChar->targid; WBUFW(data,12*i+(0x0E)-4) = PChar->PParty->GetMemberFlags(PChar); WBUFW(data,12*i+(0x10)-4) = PChar->getZone(); } } } }
CBattleEntity* CEnmityContainer::GetHighestEnmity() { if (m_EnmityList.empty()) { return nullptr; } uint32 HighestEnmity = 0; auto highest = m_EnmityList.end(); bool active = false; for (auto it = m_EnmityList.begin(); it != m_EnmityList.end(); ++it) { const EnmityObject_t& PEnmityObject = it->second; uint32 Enmity = PEnmityObject.CE + PEnmityObject.VE; if (Enmity >= HighestEnmity && ((PEnmityObject.active == active) || (PEnmityObject.active && !active))) { auto POwner = PEnmityObject.PEnmityOwner; if (!POwner || (POwner->allegiance != m_EnmityHolder->allegiance)) { active = PEnmityObject.active; HighestEnmity = Enmity; highest = it; } } } CBattleEntity* PEntity = nullptr; if (highest != m_EnmityList.end()) { PEntity = highest->second.PEnmityOwner; if (!PEntity) { PEntity = zoneutils::GetChar(highest->first); } if (!PEntity || PEntity->getZone() != m_EnmityHolder->getZone() || PEntity->PInstance != m_EnmityHolder->PInstance) { m_EnmityList.erase(highest); PEntity = GetHighestEnmity(); } } return PEntity; }