Core/LFG:

* added missing dungeon ID to high priestess Azil's encounter credit
* fixed the last encounter lfg reward. Cataclysm dungeons use a single entry for both difficulties so the instance needs to find the proper dungeon for the difficulty. Fixed.
* increased amount of required votes to kick a player from a party
* use the remaining teleport error messages for their according purpose
* use a bgdata location as teleport location when teleporting out of a dungeon
* fixed lfg state after group has been formed
* the amount of required roles is now determined by dbc values (thanks to Onkelz28)
* added some safety checks for reward data packets if no quest is found
* fixed lfr queue and reward display
* add the possibility to make lfg reward quests repeatable. This is getting used for dungeon quests with valor point rewards. Setting the alternative quest once the limit has been reached is handled corewise now.
* implement valor points display in the lfg window. Note: to see it for the first time you need at least 1 valor point
* implement Call to Arms system. Thanks to Tisk for the base code
* added loot for the Call to Arms Satches of Exotic mysteries
This commit is contained in:
Ovalord
2017-12-02 22:02:45 +01:00
parent f1c8505e9a
commit 7525fb165e
18 changed files with 512 additions and 132 deletions

View File

@@ -241,6 +241,26 @@ void Group::ConvertToLFG()
SendUpdate();
}
void Group::ConvertToLFR()
{
m_groupType = GroupType(m_groupType | GROUPTYPE_LFG | GROUPTYPE_LFG_RESTRICTED | GROUPTYPE_RAID);
m_lootMethod = NEED_BEFORE_GREED;
_initRaidSubGroupsCounter();
if (!isBGGroup() && !isBFGroup())
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_TYPE);
stmt->setUInt8(0, uint8(m_groupType));
stmt->setUInt32(1, m_dbStoreId);
CharacterDatabase.Execute(stmt);
}
SendUpdate();
}
void Group::ConvertToRaid()
{
m_groupType = GroupType(m_groupType | GROUPTYPE_RAID);
@@ -2374,6 +2394,15 @@ void Group::SetLfgRoles(ObjectGuid guid, uint8 roles)
SendUpdate();
}
uint8 Group::GetLfgRoles(ObjectGuid guid)
{
member_witerator slot = _getMemberWSlot(guid);
if (slot == m_memberSlots.end())
return 0;
return slot->roles;
}
bool Group::IsFull() const
{
return isRaidGroup() ? (m_memberSlots.size() >= MAXRAIDSIZE) : (m_memberSlots.size() >= MAXGROUPSIZE);
@@ -2384,6 +2413,11 @@ bool Group::isLFGGroup() const
return (m_groupType & GROUPTYPE_LFG) != 0;
}
bool Group::isLFRGroup() const
{
return (m_groupType & GROUPTYPE_LFG) && (m_groupType & GROUPTYPE_RAID);
}
bool Group::isRaidGroup() const
{
return (m_groupType & GROUPTYPE_RAID) != 0;