24 bool IsLfgDungeonState(
LfgState state)
29 bool ClearStrayPlayerState(Player* player,
char const* reason)
41 if (!savedGroup && !IsLfgDungeonState(state) && state !=
LFG_STATE_BOOT)
49 SF_LOG_DEBUG(
"lfg",
"%s, Player %s(%u) cleared stray LFG state %u savedGroup %u.",
50 reason ? reason :
"LFG stray state cleanup", player->
GetName().c_str(),
GUID_LOPART(guid),
85 SF_LOG_ERROR(
"lfg",
"%s on group %u but LFG has group %u saved... Fixing.",
92 if (ClearStrayPlayerState(player,
"LFGPlayerScript::OnLogin"))
95 if (
sLFGMgr->RestoreActiveQueue(guid))
100 sLFGMgr->SendActiveProposal(guid);
120 SF_LOG_ERROR(
"lfg",
"LFGPlayerScript::OnMapChanged, Player %s (%u) is in LFG dungeon map but does not have a valid group! "
126 if (
Player* member = itr->GetSource())
134 if (ClearStrayPlayerState(player,
"LFGPlayerScript::OnMapChanged"))
147 if (!IsLfgDungeonState(groupState) && groupState !=
LFG_STATE_NONE)
155 SF_LOG_DEBUG(
"lfg",
"LFGPlayerScript::OnMapChanged, Player %s(%u) left LFG dungeon flow; disbanded LFG group %u with state %u.",
175 sLFGMgr->SetLeader(gguid, guid);
190 sLFGMgr->SetGroup(guid, gguid);
191 sLFGMgr->AddPlayerToGroup(gguid, guid);
200 SF_LOG_DEBUG(
"lfg",
"LFGScripts::OnRemoveMember [" UI64FMTD "]: remove [" UI64FMTD "] Method: %d Kicker: [" UI64FMTD "] Reason: %s", gguid, guid, method, kicker, (reason ? reason :
""));
208 std::string str_reason =
"";
210 str_reason = std::string(reason);
211 sLFGMgr->InitBoot(gguid, kicker, guid, str_reason);
220 sLFGMgr->RemovePlayerFromGroup(gguid, guid);
226 uint8 players =
sLFGMgr->RemovePlayerFromGroup(gguid, guid);
238 sLFGMgr->TeleportPlayer(player,
true);
266 sLFGMgr->TeleportDungeonGroupOut(group);
270 sLFGMgr->RemoveGroupData(gguid);
281 sLFGMgr->SetLeader(gguid, newLeaderGuid);
295 if (leader && !gguid)
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
uint32 GUID_LOPART(uint64 x)
@ GROUP_REMOVEMETHOD_DEFAULT
@ GROUP_REMOVEMETHOD_KICK
@ GROUP_REMOVEMETHOD_LEAVE
void Disband(bool hideDestroy=false)
GroupReference * GetFirstMember()
uint32 GetDbStoreId() const
uint64 GetLeaderGUID() const
GroupScript(const char *name)
DifficultyID GetDifficulty() const
static Player * FindPlayer(uint64)
uint32 GetGUIDLow() const
WorldSession * GetSession() const
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0)
PlayerScript(const char *name)
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
void RemoveAurasDueToSpell(uint32 spellId, uint64 casterGUID=0, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
std::string const & GetName() const
void SendLfgClearStatus(uint64 lfgGroupGuid=0, uint8 queueIdOverride=0, bool groupLeave=false)
bool PlayerDisconnected() const
void SendNameQueryOpcode(ObjectGuid guid)
std::string GetPlayerInfo() const
void SendLfgUpdateStatus(lfg::LfgUpdateData const &updateData, bool party, uint64 queueGuidOverride=0, uint8 queueIdOverride=0)
void SendLfgOfferContinue(uint32 dungeonEntry)
void OnChangeLeader(Group *group, uint64 newLeaderGuid, uint64 oldLeaderGuid)
void OnInviteMember(Group *group, uint64 guid)
void OnDisband(Group *group)
void OnRemoveMember(Group *group, uint64 guid, RemoveMethod method, uint64 kicker, char const *reason)
void OnAddMember(Group *group, uint64 guid)
void OnLogout(Player *player)
void OnLogin(Player *player, bool loginFirst)
void OnMapChanged(Player *player)
@ LFG_OPTION_ENABLE_DUNGEON_FINDER
@ LFG_OPTION_ENABLE_RAID_BROWSER
@ LFG_STATE_FINISHED_DUNGEON
@ LFG_UPDATETYPE_LEADER_UNK1
@ LFG_GROUP_KICK_VOTES_NEEDED
@ LFG_SPELL_LUCK_OF_THE_DRAW
@ LFG_SPELL_DUNGEON_DESERTER