diff --git a/WARNING b/WARNING
index 89688d768..532f5962c 100644
--- a/WARNING
+++ b/WARNING
@@ -1,11 +1,11 @@
The Massive Network Game Object Server (MaNGOS) has been built with education
-as the main target and the MaNGOS team would like to keep it that way.
+as the main purpose and the MaNGOS team would like to keep it that way.
Since any public and/or commercial use of this software is considered illegal
in many countries (please refer to your local law), the MaNGOS team
will not provide any help nor support with such usage in any way.
Every user of this software is encouraged to make sure no law is being broken
-on his side.
+on his/her side.
-Both the MaNGOS team and MaNGOS foundation don't take any responsibility
+Both the MaNGOS team and MaNGOS foundation will not take any responsibility
for any kind of usage of this software by the end users.
diff --git a/configure.ac b/configure.ac
index e016db0b9..e8638b2b9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@
# VERSION: 0.15.0 (trunk)
# BUG-REPORT-ADDRESS: mangos-devs@lists.sourceforge.net
AC_INIT( [mangos], [0.15.0], [mangos-devs@lists.sourceforge.net])
-AC_CONFIG_SRCDIR([src/shared/Base.cpp])
+AC_CONFIG_SRCDIR([src/shared/Common.h])
## Prelude, basic settings for Automake
# Turn on all warnings and error messages, and enforce GNU
diff --git a/sql/mangos.sql b/sql/mangos.sql
index 519f93e6f..f2e6a5a5b 100644
--- a/sql/mangos.sql
+++ b/sql/mangos.sql
@@ -1150,7 +1150,7 @@ CREATE TABLE `creature_template` (
LOCK TABLES `creature_template` WRITE;
/*!40000 ALTER TABLE `creature_template` DISABLE KEYS */;
INSERT INTO `creature_template` VALUES
-(1,0,0,0,10045,0,10045,0,'Waypoint(Only GM can see it)','Visual',NULL,1,1,64,64,0,0,0,35,35,0,0.91,1,0,14,15,0,100,1,2000,2200,8,4096,0,0,0,0,0,0,1.76,2.42,100,8,5242886,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'',0,3,1.0,1.0,0,0,0,0,0,0,0,0,1,0,0,0x82,'');
+(1,0,0,0,0,0,10045,0,10045,0,'Waypoint(Only GM can see it)','Visual',NULL,1,1,64,64,0,0,0,35,35,0,0.91,1,0,14,15,0,100,1,2000,2200,8,4096,0,0,0,0,0,0,1.76,2.42,100,8,5242886,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'',0,3,1.0,1.0,0,0,0,0,0,0,0,0,1,0,0,0x82,'');
/*!40000 ALTER TABLE `creature_template` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/src/framework/Makefile.am b/src/framework/Makefile.am
index 9a1e8bb06..756f5493e 100644
--- a/src/framework/Makefile.am
+++ b/src/framework/Makefile.am
@@ -51,9 +51,6 @@ EXTRA_DIST = \
Policies/Singleton.h \
Policies/SingletonImp.h \
Policies/ThreadingModel.h \
- Utilities/CountedReference/Reference.h \
- Utilities/CountedReference/ReferenceHolder.h \
- Utilities/CountedReference/ReferenceImpl.h \
Utilities/LinkedReference/RefManager.h \
Utilities/LinkedReference/Reference.h \
Utilities/ByteConverter.h \
diff --git a/src/framework/Policies/MemoryManagement.cpp b/src/framework/Policies/MemoryManagement.cpp
index e9555e6ef..372ef0a7a 100644
--- a/src/framework/Policies/MemoryManagement.cpp
+++ b/src/framework/Policies/MemoryManagement.cpp
@@ -22,14 +22,14 @@
#include "../../dep/tbb/include/tbb/scalable_allocator.h"
-void * operator new(size_t sz) throw (std::bad_alloc)
+void * operator new(size_t sz)
{
void *res = scalable_malloc(sz);
if (NULL == res) throw std::bad_alloc();
return res;
}
-void* operator new[](size_t sz) throw (std::bad_alloc)
+void* operator new[](size_t sz)
{
void *res = scalable_malloc(sz);
if (NULL == res) throw std::bad_alloc();
diff --git a/src/framework/Utilities/CountedReference/Reference.h b/src/framework/Utilities/CountedReference/Reference.h
deleted file mode 100644
index 8fd513bb5..000000000
--- a/src/framework/Utilities/CountedReference/Reference.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2005-2009 MaNGOS
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef MANGOS_REFERENCE_H
-#define MANGOS_REFERENCE_H
-
-/**
- * Referencer
- * Referencer is an object that holds a reference holder that hold a reference
- * counted object. When an object's reference count drop to zero, it removes
- * the object. This is a non intrusive mechanism and any object at any point
- * in time can be referenced. When and object is reference counted, do not
- * pass the object directly to other methods but rather, pass its
- * reference around. Objects can be reference counted in both single threaded
- * model and multi-threaded model
- */
-
-#include
-#include "Platform/Define.h"
-#include "Policies/ThreadingModel.h"
-#include "ReferenceHolder.h"
-
-template
-<
-typename T,
-class THREADING_MODEL = MaNGOS::SingleThreaded
->
-class MANGOS_DLL_DECL Referencer
-{
- typedef typename THREADING_MODEL::Lock Lock;
- typedef ReferenceHolder ReferenceeHolder;
- public:
-
- /// Constructs a referencer.
- Referencer(T *ref = NULL);
-
- /// Copy constructor
- Referencer(const Referencer &obj) : i_holder(NULL) { *this = obj; }
-
- /// Destructor
- ~Referencer();
-
- /// Referencee accessor
- T* referencee(void) { return (i_holder == NULL ? NULL : i_holder->i_referencee); }
- const T* referencee(void) const { return (i_holder == NULL ? NULL : i_holder->i_referencee); }
-
- //T& referencee(void){ return _referencee(); }
- //const T& referencee(void) const { return const_cast(this)->_referencee(); }
- operator T&(void) { return _referencee(); }
- operator const T&(void) const { return *const_cast(this)->_referencee(); }
-
- /// cast operators
- T* operator*() { return (i_holder == NULL ? NULL : i_holder->i_referencee); }
- T const * operator*() const { return (i_holder == NULL ? NULL : i_holder->i_referencee); }
-
- /// overload operators
- T* operator->() { return (i_holder == NULL ? NULL : i_holder->i_referencee); }
- const T * operator->() const { return (i_holder == NULL ? NULL : i_holder->i_referencee); }
-
- /// operator =
- Referencer& operator=(const Referencer &obj);
- Referencer& operator=(T *);
-
- /// returns true if i_referencee is null
- bool isNull(void) const { return i_holder == NULL; }
-
- private:
-
- T& _referencee(void)
- {
- if( i_holder == NULL )
- throw std::runtime_error("Invalid access to null pointer");
- return *i_holder->i_referencee;
- }
-
- void deReference(ReferenceeHolder *);
- void addReference(ReferenceeHolder *);
-
- // private data
- ReferenceeHolder *i_holder;
-};
-#endif
diff --git a/src/framework/Utilities/CountedReference/ReferenceHolder.h b/src/framework/Utilities/CountedReference/ReferenceHolder.h
deleted file mode 100644
index d0bb2cb3e..000000000
--- a/src/framework/Utilities/CountedReference/ReferenceHolder.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2005-2009 MaNGOS
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef MANGOS_REFERENCEHOLDER_H
-#define MANGOS_REFERENCEHOLDER_H
-
-/** ReferenceHolder holds the actualy referenced obejct as well the refence
- count. The ReferenecHolder implements as a policy base object and
- will decided by the Reference class to be consnsitent.
- */
-
-template
-<
-typename T,
-class THREADING_MODEL
->
-struct ReferenceHolder : public THREADING_MODEL
-{
- explicit ReferenceHolder(T *ref) : i_referencee(ref), i_referenceCount(0) {}
- T *i_referencee;
- unsigned int i_referenceCount;
- typedef typename THREADING_MODEL::Lock Lock;
-};
-#endif
diff --git a/src/framework/Utilities/CountedReference/ReferenceImpl.h b/src/framework/Utilities/CountedReference/ReferenceImpl.h
deleted file mode 100644
index cd0143748..000000000
--- a/src/framework/Utilities/CountedReference/ReferenceImpl.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2005-2009 MaNGOS
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef MANGOS_REFERENCEIMPL_H
-#define MANGOS_REFERENCEIMPL_H
-
-#include "Reference.h"
-
-template
-<
-typename T,
-class THREADING_MODEL
->
-Referencer::Referencer(T *ref)
-: i_holder(NULL)
-{
- if( ref != NULL )
- {
- i_holder = new ReferenceeHolder(ref);
- ++i_holder->i_referenceCount;
- }
-}
-
-template
-<
-typename T,
-class THREADING_MODEL
->
-Referencer::~Referencer()
-{
- if( i_holder != NULL )
- deReference(i_holder);
- i_holder = NULL;
-}
-
-template
-<
-typename T,
-class THREADING_MODEL
->
-Referencer&
-Referencer::operator=(const Referencer &obj)
-{
- if( i_holder != NULL )
- deReference(i_holder);
- if( obj.i_holder != NULL )
- addReference(obj.i_holder);
- i_holder = obj.i_holder;
- return *this;
-}
-
-template
-<
-typename T,
-class THREADING_MODEL
->
-Referencer&
-Referencer::operator=(T *ref)
-{
- if( i_holder != NULL )
- deReference(i_holder);
- i_holder = NULL;
- if( ref != NULL )
- {
- i_holder = new ReferenceeHolder(ref);
- ++i_holder->i_referenceCount;
- }
-
- return *this;
-}
-
-template
-<
-typename T,
-class THREADING_MODEL
->
-void
-Referencer::deReference(ReferenceHolder *holder)
-{
- assert( holder != NULL && holder->i_referenceCount > 0);
- bool delete_object = false;
-
- {
- // The guard is within the scope due to the guard
- // must release earlier than expected.
- Lock guard(*holder);
- Guard(&guard);
-
- --holder->i_referenceCount;
- if( holder->i_referenceCount == 0 )
- delete_object = true;
- }
-
- if( delete_object )
- {
- delete holder->i_referencee;
- delete holder;
- }
-}
-
-template
-<
-typename T,
-class THREADING_MODEL
->
-void
-Referencer::addReference(ReferenceHolder *holder)
-{
- assert( i_holder != NULL );
- Lock guard(*holder);
- Guard(&guard);
-
- ++holder->i_referenceCount;
-}
-#endif
diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp
index 220b55ae7..dc96eea42 100644
--- a/src/game/AchievementMgr.cpp
+++ b/src/game/AchievementMgr.cpp
@@ -49,7 +49,7 @@ namespace MaNGOS
: i_player(pl), i_msgtype(msgtype), i_textId(textId), i_achievementId(ach_id) {}
void operator()(WorldPacket& data, int32 loc_idx)
{
- char const* text = objmgr.GetMangosString(i_textId,loc_idx);
+ char const* text = sObjectMgr.GetMangosString(i_textId,loc_idx);
data << uint8(i_msgtype);
data << uint32(LANG_UNIVERSAL);
@@ -104,7 +104,7 @@ bool AchievementCriteriaRequirement::IsValid(AchievementCriteriaEntry const* cri
case ACHIEVEMENT_CRITERIA_REQUIRE_DISABLED:
return true;
case ACHIEVEMENT_CRITERIA_REQUIRE_T_CREATURE:
- if (!creature.id || !objmgr.GetCreatureTemplate(creature.id))
+ if (!creature.id || !ObjectMgr::GetCreatureTemplate(creature.id))
{
sLog.outErrorDb( "Table `achievement_criteria_requirement` (Entry: %u Type: %u) for requirement ACHIEVEMENT_CRITERIA_REQUIRE_CREATURE (%u) have not existed creature id in value1 (%u), ignore.",
criteria->ID, criteria->requiredType,requirementType,creature.id);
@@ -366,7 +366,7 @@ void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaTypes type, uin
if (!sWorld.getConfig(CONFIG_GM_ALLOW_ACHIEVEMENT_GAINS) && m_player->GetSession()->GetSecurity() > SEC_PLAYER)
return;
- AchievementCriteriaEntryList const& achievementCriteriaList = achievementmgr.GetAchievementCriteriaByType(type);
+ AchievementCriteriaEntryList const& achievementCriteriaList = sAchievementMgr.GetAchievementCriteriaByType(type);
for(AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i!=achievementCriteriaList.end(); ++i)
{
AchievementCriteriaEntry const *achievementCriteria = (*i);
@@ -522,7 +522,7 @@ void AchievementMgr::LoadFromDB(QueryResult *achievementResult, QueryResult *cri
uint32 achievement_id = fields[0].GetUInt32();
- // don't must happen: cleanup at server startup in achievementmgr.LoadCompletedAchievements()
+ // don't must happen: cleanup at server startup in sAchievementMgr.LoadCompletedAchievements()
if(!sAchievementStore.LookupEntry(achievement_id))
continue;
@@ -575,7 +575,7 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
sLog.outDebug("AchievementMgr::SendAchievementEarned(%u)", achievement->ID);
#endif
- if(Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()))
+ if(Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()))
{
MaNGOS::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED,achievement->ID);
MaNGOS::LocalizedPacketDo say_do(say_builder);
@@ -665,7 +665,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if (!sWorld.getConfig(CONFIG_GM_ALLOW_ACHIEVEMENT_GAINS) && m_player->GetSession()->GetSecurity() > SEC_PLAYER)
return;
- AchievementCriteriaEntryList const& achievementCriteriaList = achievementmgr.GetAchievementCriteriaByType(type);
+ AchievementCriteriaEntryList const& achievementCriteriaList = sAchievementMgr.GetAchievementCriteriaByType(type);
for(AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i!=achievementCriteriaList.end(); ++i)
{
AchievementCriteriaEntry const *achievementCriteria = (*i);
@@ -741,7 +741,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if (achievementCriteria->win_bg.additionalRequirement1_type)
{
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if (!data || !data->Meets(GetPlayer(),unit))
continue;
}
@@ -787,7 +787,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
continue;
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if(!data || !data->Meets(GetPlayer(),unit))
continue;
@@ -833,7 +833,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
uint32 counter =0;
for(QuestStatusMap::const_iterator itr = GetPlayer()->getQuestStatusMap().begin(); itr!=GetPlayer()->getQuestStatusMap().end(); ++itr)
{
- Quest const* quest = objmgr.GetQuestTemplate(itr->first);
+ Quest const* quest = sObjectMgr.GetQuestTemplate(itr->first);
if(itr->second.m_rewarded && quest->GetZoneOrSort() >= 0 && uint32(quest->GetZoneOrSort()) == achievementCriteria->complete_quests_in_zone.zoneID)
counter++;
}
@@ -886,7 +886,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if(!miscvalue1)
continue;
- Map const* map = GetPlayer()->IsInWorld() ? GetPlayer()->GetMap() : MapManager::Instance().FindMap(GetPlayer()->GetMapId(), GetPlayer()->GetInstanceId());
+ Map const* map = GetPlayer()->IsInWorld() ? GetPlayer()->GetMap() : sMapMgr.FindMap(GetPlayer()->GetMapId(), GetPlayer()->GetInstanceId());
if(!map || !map->IsDungeon())
continue;
@@ -955,7 +955,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
continue;
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if(!data || !data->Meets(GetPlayer(),unit))
continue;
@@ -997,7 +997,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
case 1789:
{
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if(!data || !data->Meets(GetPlayer(),unit))
continue;
break;
@@ -1023,7 +1023,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
continue;
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if(!data)
continue;
@@ -1053,7 +1053,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if(achievementCriteria->loot_type.lootTypeCount==1)
{
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if(!data || !data->Meets(GetPlayer(),unit))
continue;
}
@@ -1076,7 +1076,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if(achievementCriteria->win_rated_arena.flag==ACHIEVEMENT_CRITERIA_CONDITION_NO_LOOSE)
{
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if(!data || !data->Meets(GetPlayer(),unit,miscvalue1))
{
// reset the progress as we have a win without the requirement.
@@ -1170,7 +1170,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
continue;
if(miscvalue2 != achievementCriteria->roll_greed_on_loot.rollValue)
continue;
- ItemPrototype const *pProto = objmgr.GetItemPrototype( miscvalue1 );
+ ItemPrototype const *pProto = ObjectMgr::GetItemPrototype( miscvalue1 );
uint32 requiredItemLevel = 0;
if (achievementCriteria->ID == 2412 || achievementCriteria->ID == 2358)
@@ -1191,7 +1191,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if(achievementCriteria->do_emote.count)
{
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if(!data || !data->Meets(GetPlayer(),unit))
continue;
}
@@ -1254,7 +1254,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
spellIter != GetPlayer()->GetSpellMap().end();
++spellIter)
{
- SkillLineAbilityMapBounds bounds = spellmgr.GetSkillLineAbilityMapBounds(spellIter->first);
+ SkillLineAbilityMapBounds bounds = sSpellMgr.GetSkillLineAbilityMapBounds(spellIter->first);
for(SkillLineAbilityMap::const_iterator skillIter = bounds.first; skillIter != bounds.second; ++skillIter)
{
if(skillIter->second->skillId == achievementCriteria->learn_skillline_spell.skillLine)
@@ -1272,7 +1272,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if (achievementCriteria->win_duel.duelCount)
{
// those requirements couldn't be found in the dbc
- AchievementCriteriaRequirementSet const* data = achievementmgr.GetCriteriaRequirementSet(achievementCriteria);
+ AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
if (!data)
continue;
@@ -1301,7 +1301,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
spellIter != GetPlayer()->GetSpellMap().end();
++spellIter)
{
- SkillLineAbilityMapBounds bounds = spellmgr.GetSkillLineAbilityMapBounds(spellIter->first);
+ SkillLineAbilityMapBounds bounds = sSpellMgr.GetSkillLineAbilityMapBounds(spellIter->first);
for(SkillLineAbilityMap::const_iterator skillIter = bounds.first; skillIter != bounds.second; ++skillIter)
if (skillIter->second->skillId == achievementCriteria->learn_skill_line.skillLine)
spellCount++;
@@ -1371,7 +1371,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
CompletedAchievement(achievement);
}
- if(AchievementEntryList const* achRefList = achievementmgr.GetAchievementByReferencedId(achievement->ID))
+ if(AchievementEntryList const* achRefList = sAchievementMgr.GetAchievementByReferencedId(achievement->ID))
{
for(AchievementEntryList::const_iterator itr = achRefList->begin(); itr != achRefList->end(); ++itr)
if(IsCompletedAchievement(*itr))
@@ -1392,7 +1392,7 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
if(achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
{
// someone on this realm has already completed that achievement
- if(achievementmgr.IsRealmCompleted(achievement))
+ if(sAchievementMgr.IsRealmCompleted(achievement))
return false;
}
@@ -1554,7 +1554,7 @@ bool AchievementMgr::IsCompletedAchievement(AchievementEntry const* entry)
uint32 achievmentForTestId = entry->refAchievement ? entry->refAchievement : entry->ID;
uint32 achievmentForTestCount = entry->count;
- AchievementCriteriaEntryList const* cList = achievementmgr.GetAchievementCriteriaByAchievement(achievmentForTestId);
+ AchievementCriteriaEntryList const* cList = sAchievementMgr.GetAchievementCriteriaByAchievement(achievmentForTestId);
if(!cList)
return false;
uint32 count = 0;
@@ -1683,12 +1683,12 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
// don't insert for ACHIEVEMENT_FLAG_REALM_FIRST_KILL since otherwise only the first group member would reach that achievement
// TODO: where do set this instead?
if(!(achievement->flags & ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
- achievementmgr.SetRealmCompleted(achievement);
+ sAchievementMgr.SetRealmCompleted(achievement);
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT);
// reward items and titles if any
- AchievementReward const* reward = achievementmgr.GetAchievementReward(achievement);
+ AchievementReward const* reward = sAchievementMgr.GetAchievementReward(achievement);
// no rewards
if(!reward)
@@ -1713,7 +1713,7 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
std::string text = reward->text;
if ( loc_idx >= 0 )
{
- if(AchievementRewardLocale const* loc = achievementmgr.GetAchievementRewardLocale(achievement))
+ if(AchievementRewardLocale const* loc = sAchievementMgr.GetAchievementRewardLocale(achievement))
{
if (loc->subject.size() > size_t(loc_idx) && !loc->subject[loc_idx].empty())
subject = loc->subject[loc_idx];
@@ -1722,7 +1722,7 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
}
}
- uint32 itemTextId = objmgr.CreateItemText( text );
+ uint32 itemTextId = sObjectMgr.CreateItemText( text );
MailDraft draft(subject, itemTextId);
@@ -2087,7 +2087,7 @@ void AchievementGlobalMgr::LoadRewards()
//check mail data before item for report including wrong item case
if (reward.sender)
{
- if (!objmgr.GetCreatureTemplate(reward.sender))
+ if (!ObjectMgr::GetCreatureTemplate(reward.sender))
{
sLog.outErrorDb( "Table `achievement_reward` (Entry: %u) has invalid creature entry %u as sender, mail reward skipped.", entry, reward.sender);
reward.sender = 0;
@@ -2107,7 +2107,7 @@ void AchievementGlobalMgr::LoadRewards()
if (reward.itemId)
{
- if (!objmgr.GetItemPrototype(reward.itemId))
+ if (!ObjectMgr::GetItemPrototype(reward.itemId))
{
sLog.outErrorDb( "Table `achievement_reward` (Entry: %u) has invalid item id %u, reward mail will be without item.", entry, reward.itemId);
reward.itemId = 0;
@@ -2164,7 +2164,7 @@ void AchievementGlobalMgr::LoadRewardLocales()
std::string str = fields[1+2*(i-1)].GetCppString();
if(!str.empty())
{
- int idx = objmgr.GetOrNewIndexForLocale(LocaleConstant(i));
+ int idx = sObjectMgr.GetOrNewIndexForLocale(LocaleConstant(i));
if(idx >= 0)
{
if(data.subject.size() <= size_t(idx))
@@ -2176,7 +2176,7 @@ void AchievementGlobalMgr::LoadRewardLocales()
str = fields[1+2*(i-1)+1].GetCppString();
if(!str.empty())
{
- int idx = objmgr.GetOrNewIndexForLocale(LocaleConstant(i));
+ int idx = sObjectMgr.GetOrNewIndexForLocale(LocaleConstant(i));
if(idx >= 0)
{
if(data.text.size() <= size_t(idx))
diff --git a/src/game/AchievementMgr.h b/src/game/AchievementMgr.h
index caaf16659..b13441194 100644
--- a/src/game/AchievementMgr.h
+++ b/src/game/AchievementMgr.h
@@ -323,6 +323,6 @@ class AchievementGlobalMgr
AchievementRewardLocales m_achievementRewardLocales;
};
-#define achievementmgr MaNGOS::Singleton::Instance()
+#define sAchievementMgr MaNGOS::Singleton::Instance()
#endif
diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp
index 4fe4fcb2c..4464eef96 100644
--- a/src/game/ArenaTeam.cpp
+++ b/src/game/ArenaTeam.cpp
@@ -50,9 +50,9 @@ ArenaTeam::~ArenaTeam()
bool ArenaTeam::Create(uint64 captainGuid, uint32 type, std::string ArenaTeamName)
{
- if(!objmgr.GetPlayer(captainGuid)) // player not exist
+ if(!sObjectMgr.GetPlayer(captainGuid)) // player not exist
return false;
- if(objmgr.GetArenaTeamByName(ArenaTeamName)) // arena team with this name already exist
+ if(sObjectMgr.GetArenaTeamByName(ArenaTeamName)) // arena team with this name already exist
return false;
sLog.outDebug("GUILD: creating arena team %s to leader: %u", ArenaTeamName.c_str(), GUID_LOPART(captainGuid));
@@ -61,7 +61,7 @@ bool ArenaTeam::Create(uint64 captainGuid, uint32 type, std::string ArenaTeamNam
m_Name = ArenaTeamName;
m_Type = type;
- m_TeamId = objmgr.GenerateArenaTeamId();
+ m_TeamId = sObjectMgr.GenerateArenaTeamId();
// ArenaTeamName already assigned to ArenaTeam::name, use it to encode string for DB
CharacterDatabase.escape_string(ArenaTeamName);
@@ -90,7 +90,7 @@ bool ArenaTeam::AddMember(const uint64& PlayerGuid)
if(GetMembersSize() >= GetType() * 2)
return false;
- Player *pl = objmgr.GetPlayer(PlayerGuid);
+ Player *pl = sObjectMgr.GetPlayer(PlayerGuid);
if(pl)
{
if(pl->GetArenaTeamId(GetSlot()))
@@ -250,7 +250,7 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult *arenaTeamMembersResult)
void ArenaTeam::SetCaptain(const uint64& guid)
{
// disable remove/promote buttons
- Player *oldcaptain = objmgr.GetPlayer(GetCaptain());
+ Player *oldcaptain = sObjectMgr.GetPlayer(GetCaptain());
if(oldcaptain)
oldcaptain->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (GetSlot() * ARENA_TEAM_END) + ARENA_TEAM_MEMBER, 1);
@@ -261,7 +261,7 @@ void ArenaTeam::SetCaptain(const uint64& guid)
CharacterDatabase.PExecute("UPDATE arena_team SET captainguid = '%u' WHERE arenateamid = '%u'", GUID_LOPART(guid), m_TeamId);
// enable remove/promote buttons
- Player *newcaptain = objmgr.GetPlayer(guid);
+ Player *newcaptain = sObjectMgr.GetPlayer(guid);
if(newcaptain)
newcaptain->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (GetSlot() * ARENA_TEAM_END) + ARENA_TEAM_MEMBER, 0);
}
@@ -277,7 +277,7 @@ void ArenaTeam::DelMember(uint64 guid)
}
}
- if(Player *player = objmgr.GetPlayer(guid))
+ if(Player *player = sObjectMgr.GetPlayer(guid))
{
player->GetSession()->SendArenaTeamCommandResult(ERR_ARENA_TEAM_QUIT_S, GetName(), "", 0);
// delete all info regarding this team
@@ -309,7 +309,7 @@ void ArenaTeam::Disband(WorldSession *session)
CharacterDatabase.PExecute("DELETE FROM arena_team_member WHERE arenateamid = '%u'", m_TeamId); //< this should be alredy done by calling DelMember(memberGuids[j]); for each member
CharacterDatabase.PExecute("DELETE FROM arena_team_stats WHERE arenateamid = '%u'", m_TeamId);
CharacterDatabase.CommitTransaction();
- objmgr.RemoveArenaTeam(m_TeamId);
+ sObjectMgr.RemoveArenaTeam(m_TeamId);
}
void ArenaTeam::Roster(WorldSession *session)
@@ -326,7 +326,7 @@ void ArenaTeam::Roster(WorldSession *session)
for (MemberList::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
{
- pl = objmgr.GetPlayer(itr->guid);
+ pl = sObjectMgr.GetPlayer(itr->guid);
data << uint64(itr->guid); // guid
data << uint8((pl ? 1 : 0)); // online flag
@@ -384,7 +384,7 @@ void ArenaTeam::NotifyStatsChanged()
// updates arena team stats for every member of the team (not only the ones who participated!)
for(MemberList::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
{
- Player * plr = objmgr.GetPlayer(itr->guid);
+ Player * plr = sObjectMgr.GetPlayer(itr->guid);
if(plr)
Stats(plr->GetSession());
}
@@ -457,7 +457,7 @@ void ArenaTeam::BroadcastPacket(WorldPacket *packet)
{
for (MemberList::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
{
- Player *player = objmgr.GetPlayer(itr->guid);
+ Player *player = sObjectMgr.GetPlayer(itr->guid);
if(player)
player->GetSession()->SendPacket(packet);
}
@@ -529,8 +529,8 @@ void ArenaTeam::FinishGame(int32 mod)
m_stats.games_season += 1;
// update team's rank
m_stats.rank = 1;
- ObjectMgr::ArenaTeamMap::const_iterator i = objmgr.GetArenaTeamMapBegin();
- for ( ; i != objmgr.GetArenaTeamMapEnd(); ++i)
+ ObjectMgr::ArenaTeamMap::const_iterator i = sObjectMgr.GetArenaTeamMapBegin();
+ for ( ; i != sObjectMgr.GetArenaTeamMapEnd(); ++i)
{
if (i->second->GetType() == this->m_Type && i->second->GetStats().rating > m_stats.rating)
++m_stats.rank;
@@ -561,7 +561,7 @@ int32 ArenaTeam::LostAgainst(uint32 againstRating)
float chance = GetChanceAgainst(m_stats.rating, againstRating);
float K = (m_stats.rating < 1000) ? 48.0f : 32.0f;
// calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)
- int32 mod = (int32)floor(K* (1.0f - chance));
+ int32 mod = (int32)ceil(K * (0.0f - chance));
// modify the team stats accordingly
FinishGame(mod);
@@ -578,9 +578,9 @@ void ArenaTeam::MemberLost(Player * plr, uint32 againstRating)
{
// update personal rating
float chance = GetChanceAgainst(itr->personal_rating, againstRating);
- float K = (m_stats.rating < 1000) ? 48.0f : 32.0f;
+ float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f;
// calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)
- int32 mod = (int32)floor(K* (1.0f - chance));
+ int32 mod = (int32)ceil(K * (0.0f - chance));
itr->ModifyPersonalRating(plr, mod, GetSlot());
// update personal played stats
itr->games_week += 1;
@@ -602,9 +602,9 @@ void ArenaTeam::OfflineMemberLost(uint64 guid, uint32 againstRating)
{
// update personal rating
float chance = GetChanceAgainst(itr->personal_rating, againstRating);
- float K = (m_stats.rating < 1000) ? 48.0f : 32.0f;
+ float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f;
// calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)
- int32 mod = (int32)floor(K* (1.0f - chance));
+ int32 mod = (int32)ceil(K * (0.0f - chance));
if (int32(itr->personal_rating) + mod < 0)
itr->personal_rating = 0;
else
@@ -626,7 +626,7 @@ void ArenaTeam::MemberWon(Player * plr, uint32 againstRating)
{
// update personal rating
float chance = GetChanceAgainst(itr->personal_rating, againstRating);
- float K = (m_stats.rating < 1000) ? 48.0f : 32.0f;
+ float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f;
// calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)
int32 mod = (int32)floor(K* (1.0f - chance));
itr->ModifyPersonalRating(plr, mod, GetSlot());
@@ -700,7 +700,7 @@ bool ArenaTeam::IsFighting() const
{
for (MemberList::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
{
- if (Player *p = objmgr.GetPlayer(itr->guid))
+ if (Player *p = sObjectMgr.GetPlayer(itr->guid))
{
if (p->GetMap()->IsBattleArena())
return true;
diff --git a/src/game/ArenaTeamHandler.cpp b/src/game/ArenaTeamHandler.cpp
index 0fdfdadfc..831ace1c1 100644
--- a/src/game/ArenaTeamHandler.cpp
+++ b/src/game/ArenaTeamHandler.cpp
@@ -34,13 +34,13 @@ void WorldSession::HandleInspectArenaTeamsOpcode(WorldPacket & recv_data)
recv_data >> guid;
sLog.outDebug("Inspect Arena stats (GUID: %u TypeId: %u)", GUID_LOPART(guid),GuidHigh2TypeId(GUID_HIPART(guid)));
- if(Player *plr = objmgr.GetPlayer(guid))
+ if(Player *plr = sObjectMgr.GetPlayer(guid))
{
for (uint8 i = 0; i < MAX_ARENA_SLOT; ++i)
{
if(uint32 a_id = plr->GetArenaTeamId(i))
{
- if(ArenaTeam *at = objmgr.GetArenaTeamById(a_id))
+ if(ArenaTeam *at = sObjectMgr.GetArenaTeamById(a_id))
at->InspectStats(this, plr->GetGUID());
}
}
@@ -54,7 +54,7 @@ void WorldSession::HandleArenaTeamQueryOpcode(WorldPacket & recv_data)
uint32 ArenaTeamId;
recv_data >> ArenaTeamId;
- if(ArenaTeam *arenateam = objmgr.GetArenaTeamById(ArenaTeamId))
+ if(ArenaTeam *arenateam = sObjectMgr.GetArenaTeamById(ArenaTeamId))
{
arenateam->Query(this);
arenateam->Stats(this);
@@ -68,7 +68,7 @@ void WorldSession::HandleArenaTeamRosterOpcode(WorldPacket & recv_data)
uint32 ArenaTeamId; // arena team id
recv_data >> ArenaTeamId;
- if(ArenaTeam *arenateam = objmgr.GetArenaTeamById(ArenaTeamId))
+ if(ArenaTeam *arenateam = sObjectMgr.GetArenaTeamById(ArenaTeamId))
arenateam->Roster(this);
}
@@ -88,7 +88,7 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recv_data)
if(!normalizePlayerName(Invitedname))
return;
- player = ObjectAccessor::Instance().FindPlayerByName(Invitedname.c_str());
+ player = ObjectAccessor::FindPlayerByName(Invitedname.c_str());
}
if(!player)
@@ -103,7 +103,7 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recv_data)
return;
}
- ArenaTeam *arenateam = objmgr.GetArenaTeamById(ArenaTeamId);
+ ArenaTeam *arenateam = sObjectMgr.GetArenaTeamById(ArenaTeamId);
if(!arenateam)
{
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM);
@@ -154,7 +154,7 @@ void WorldSession::HandleArenaTeamAcceptOpcode(WorldPacket & /*recv_data*/)
{
sLog.outDebug("CMSG_ARENA_TEAM_ACCEPT"); // empty opcode
- ArenaTeam *at = objmgr.GetArenaTeamById(_player->GetArenaTeamIdInvited());
+ ArenaTeam *at = sObjectMgr.GetArenaTeamById(_player->GetArenaTeamIdInvited());
if(!at)
return;
@@ -164,7 +164,7 @@ void WorldSession::HandleArenaTeamAcceptOpcode(WorldPacket & /*recv_data*/)
return;
}
- if (!sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && _player->GetTeam() != objmgr.GetPlayerTeamByGUID(at->GetCaptain()))
+ if (!sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && _player->GetTeam() != sObjectMgr.GetPlayerTeamByGUID(at->GetCaptain()))
{
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S,"","",ERR_ARENA_TEAM_NOT_ALLIED);// not let enemies sign petition
return;
@@ -196,7 +196,7 @@ void WorldSession::HandleArenaTeamLeaveOpcode(WorldPacket & recv_data)
uint32 ArenaTeamId; // arena team id
recv_data >> ArenaTeamId;
- ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
+ ArenaTeam *at = sObjectMgr.GetArenaTeamById(ArenaTeamId);
if(!at)
return;
@@ -233,7 +233,7 @@ void WorldSession::HandleArenaTeamDisbandOpcode(WorldPacket & recv_data)
uint32 ArenaTeamId; // arena team id
recv_data >> ArenaTeamId;
- if(ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId))
+ if(ArenaTeam *at = sObjectMgr.GetArenaTeamById(ArenaTeamId))
{
if(at->GetCaptain() != _player->GetGUID())
return;
@@ -256,7 +256,7 @@ void WorldSession::HandleArenaTeamRemoveOpcode(WorldPacket & recv_data)
recv_data >> ArenaTeamId;
recv_data >> name;
- ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
+ ArenaTeam *at = sObjectMgr.GetArenaTeamById(ArenaTeamId);
if(!at) // arena team not found
return;
@@ -300,7 +300,7 @@ void WorldSession::HandleArenaTeamLeaderOpcode(WorldPacket & recv_data)
recv_data >> ArenaTeamId;
recv_data >> name;
- ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
+ ArenaTeam *at = sObjectMgr.GetArenaTeamById(ArenaTeamId);
if(!at) // arena team not found
return;
diff --git a/src/game/AuctionHouseHandler.cpp b/src/game/AuctionHouseHandler.cpp
index 260b2931c..7c131a1d7 100644
--- a/src/game/AuctionHouseHandler.cpp
+++ b/src/game/AuctionHouseHandler.cpp
@@ -107,11 +107,11 @@ void WorldSession::SendAuctionOwnerNotification( AuctionEntry* auction)
void WorldSession::SendAuctionOutbiddedMail(AuctionEntry *auction, uint32 newPrice)
{
uint64 oldBidder_guid = MAKE_NEW_GUID(auction->bidder,0, HIGHGUID_PLAYER);
- Player *oldBidder = objmgr.GetPlayer(oldBidder_guid);
+ Player *oldBidder = sObjectMgr.GetPlayer(oldBidder_guid);
uint32 oldBidder_accId = 0;
if(!oldBidder)
- oldBidder_accId = objmgr.GetPlayerAccountIdByGUID(oldBidder_guid);
+ oldBidder_accId = sObjectMgr.GetPlayerAccountIdByGUID(oldBidder_guid);
// old bidder exist
if(oldBidder || oldBidder_accId)
@@ -132,11 +132,11 @@ void WorldSession::SendAuctionOutbiddedMail(AuctionEntry *auction, uint32 newPri
void WorldSession::SendAuctionCancelledToBidderMail( AuctionEntry* auction )
{
uint64 bidder_guid = MAKE_NEW_GUID(auction->bidder, 0, HIGHGUID_PLAYER);
- Player *bidder = objmgr.GetPlayer(bidder_guid);
+ Player *bidder = sObjectMgr.GetPlayer(bidder_guid);
uint32 bidder_accId = 0;
if(!bidder)
- bidder_accId = objmgr.GetPlayerAccountIdByGUID(bidder_guid);
+ bidder_accId = sObjectMgr.GetPlayerAccountIdByGUID(bidder_guid);
// bidder exist
if(bidder || bidder_accId)
@@ -202,7 +202,7 @@ void WorldSession::HandleAuctionSellItem( WorldPacket & recv_data )
Item *it = pl->GetItemByGuid( item );
//do not allow to sell already auctioned items
- if(auctionmgr.GetAItem(GUID_LOPART(item)))
+ if(sAuctionMgr.GetAItem(GUID_LOPART(item)))
{
sLog.outError("AuctionError, player %s is sending item id: %u, but item is already in another auction", pl->GetName(), GUID_LOPART(item));
SendAuctionCommandResult(0, AUCTION_SELL_ITEM, AUCTION_INTERNAL_ERROR);
@@ -227,10 +227,10 @@ void WorldSession::HandleAuctionSellItem( WorldPacket & recv_data )
return;
}
- AuctionHouseObject* auctionHouse = auctionmgr.GetAuctionsMap( pCreature->getFaction() );
+ AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap( pCreature->getFaction() );
//we have to take deposit :
- uint32 deposit = auctionmgr.GetAuctionDeposit( auctionHouseEntry, etime, it );
+ uint32 deposit = AuctionHouseMgr::GetAuctionDeposit( auctionHouseEntry, etime, it );
if ( pl->GetMoney() < deposit )
{
SendAuctionCommandResult(0, AUCTION_SELL_ITEM, AUCTION_NOT_ENOUGHT_MONEY);
@@ -248,7 +248,7 @@ void WorldSession::HandleAuctionSellItem( WorldPacket & recv_data )
uint32 auction_time = uint32(etime * sWorld.getRate(RATE_AUCTION_TIME));
AuctionEntry *AH = new AuctionEntry;
- AH->Id = objmgr.GenerateAuctionID();
+ AH->Id = sObjectMgr.GenerateAuctionID();
AH->auctioneer = GUID_LOPART(auctioneer);
AH->item_guidlow = GUID_LOPART(item);
AH->item_template = it->GetEntry();
@@ -264,7 +264,7 @@ void WorldSession::HandleAuctionSellItem( WorldPacket & recv_data )
sLog.outDetail("selling item %u to auctioneer %u with initial bid %u with buyout %u and with time %u (in sec) in auctionhouse %u", GUID_LOPART(item), GUID_LOPART(auctioneer), bid, buyout, auction_time, AH->GetHouseId());
auctionHouse->AddAuction(AH);
- auctionmgr.AddAItem(it);
+ sAuctionMgr.AddAItem(it);
pl->MoveItemFromInventory( it->GetBagSlot(), it->GetSlot(), true);
CharacterDatabase.BeginTransaction();
@@ -300,7 +300,7 @@ void WorldSession::HandleAuctionPlaceBid( WorldPacket & recv_data )
if(GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
- AuctionHouseObject* auctionHouse = auctionmgr.GetAuctionsMap( pCreature->getFaction() );
+ AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap( pCreature->getFaction() );
AuctionEntry *auction = auctionHouse->GetAuction(auctionId);
Player *pl = GetPlayer();
@@ -313,8 +313,8 @@ void WorldSession::HandleAuctionPlaceBid( WorldPacket & recv_data )
}
// impossible have online own another character (use this for speedup check in case online owner)
- Player* auction_owner = objmgr.GetPlayer(MAKE_NEW_GUID(auction->owner, 0, HIGHGUID_PLAYER));
- if( !auction_owner && objmgr.GetPlayerAccountIdByGUID(MAKE_NEW_GUID(auction->owner, 0, HIGHGUID_PLAYER)) == pl->GetSession()->GetAccountId())
+ Player* auction_owner = sObjectMgr.GetPlayer(MAKE_NEW_GUID(auction->owner, 0, HIGHGUID_PLAYER));
+ if( !auction_owner && sObjectMgr.GetPlayerAccountIdByGUID(MAKE_NEW_GUID(auction->owner, 0, HIGHGUID_PLAYER)) == pl->GetSession()->GetAccountId())
{
//you cannot bid your another character auction:
SendAuctionCommandResult( 0, AUCTION_PLACE_BID, CANNOT_BID_YOUR_AUCTION_ERROR );
@@ -387,13 +387,13 @@ void WorldSession::HandleAuctionPlaceBid( WorldPacket & recv_data )
auction->bid = auction->buyout;
GetPlayer()->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID, auction->buyout);
- auctionmgr.SendAuctionSalePendingMail( auction );
- auctionmgr.SendAuctionSuccessfulMail( auction );
- auctionmgr.SendAuctionWonMail( auction );
+ sAuctionMgr.SendAuctionSalePendingMail( auction );
+ sAuctionMgr.SendAuctionSuccessfulMail( auction );
+ sAuctionMgr.SendAuctionWonMail( auction );
SendAuctionCommandResult(auction->Id, AUCTION_PLACE_BID, AUCTION_OK);
- auctionmgr.RemoveAItem(auction->item_guidlow);
+ sAuctionMgr.RemoveAItem(auction->item_guidlow);
auctionHouse->RemoveAuction(auction->Id);
auction->DeleteFromDB();
@@ -424,14 +424,14 @@ void WorldSession::HandleAuctionRemoveItem( WorldPacket & recv_data )
if(GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
- AuctionHouseObject* auctionHouse = auctionmgr.GetAuctionsMap( pCreature->getFaction() );
+ AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap( pCreature->getFaction() );
AuctionEntry *auction = auctionHouse->GetAuction(auctionId);
Player *pl = GetPlayer();
if (auction && auction->owner == pl->GetGUIDLow())
{
- Item *pItem = auctionmgr.GetAItem(auction->item_guidlow);
+ Item *pItem = sAuctionMgr.GetAItem(auction->item_guidlow);
if (pItem)
{
if (auction->bidder > 0) // If we have a bidder, we have to send him the money he paid
@@ -474,7 +474,7 @@ void WorldSession::HandleAuctionRemoveItem( WorldPacket & recv_data )
auction->DeleteFromDB();
pl->SaveInventoryAndGoldToDB();
CharacterDatabase.CommitTransaction();
- auctionmgr.RemoveAItem( auction->item_guidlow );
+ sAuctionMgr.RemoveAItem( auction->item_guidlow );
auctionHouse->RemoveAuction( auction->Id );
delete auction;
}
@@ -506,7 +506,7 @@ void WorldSession::HandleAuctionListBidderItems( WorldPacket & recv_data )
if(GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
- AuctionHouseObject* auctionHouse = auctionmgr.GetAuctionsMap( pCreature->getFaction() );
+ AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap( pCreature->getFaction() );
WorldPacket data( SMSG_AUCTION_BIDDER_LIST_RESULT, (4+4+4) );
Player *pl = GetPlayer();
@@ -553,7 +553,7 @@ void WorldSession::HandleAuctionListOwnerItems( WorldPacket & recv_data )
if(GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
- AuctionHouseObject* auctionHouse = auctionmgr.GetAuctionsMap( pCreature->getFaction() );
+ AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap( pCreature->getFaction() );
WorldPacket data( SMSG_AUCTION_OWNER_LIST_RESULT, (4+4+4) );
data << (uint32) 0; // amount place holder
@@ -597,7 +597,7 @@ void WorldSession::HandleAuctionListItems( WorldPacket & recv_data )
if(GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
- AuctionHouseObject* auctionHouse = auctionmgr.GetAuctionsMap( pCreature->getFaction() );
+ AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap( pCreature->getFaction() );
//sLog.outDebug("Auctionhouse search (GUID: %u TypeId: %u)", , list from: %u, searchedname: %s, levelmin: %u, levelmax: %u, auctionSlotID: %u, auctionMainCategory: %u, auctionSubCategory: %u, quality: %u, usable: %u",
// GUID_LOPART(guid),GuidHigh2TypeId(GUID_HIPART(guid)), listfrom, searchedname.c_str(), levelmin, levelmax, auctionSlotID, auctionMainCategory, auctionSubCategory, quality, usable);
diff --git a/src/game/AuctionHouseMgr.cpp b/src/game/AuctionHouseMgr.cpp
index bcf9a8f5e..f0c917ecb 100644
--- a/src/game/AuctionHouseMgr.cpp
+++ b/src/game/AuctionHouseMgr.cpp
@@ -79,7 +79,7 @@ void AuctionHouseMgr::SendAuctionWonMail( AuctionEntry *auction )
return;
uint64 bidder_guid = MAKE_NEW_GUID(auction->bidder, 0, HIGHGUID_PLAYER);
- Player *bidder = objmgr.GetPlayer(bidder_guid);
+ Player *bidder = sObjectMgr.GetPlayer(bidder_guid);
uint32 bidder_accId = 0;
@@ -96,30 +96,30 @@ void AuctionHouseMgr::SendAuctionWonMail( AuctionEntry *auction )
}
else
{
- bidder_accId = objmgr.GetPlayerAccountIdByGUID(bidder_guid);
+ bidder_accId = sObjectMgr.GetPlayerAccountIdByGUID(bidder_guid);
bidder_security = accmgr.GetSecurity(bidder_accId);
if(bidder_security > SEC_PLAYER ) // not do redundant DB requests
{
- if(!objmgr.GetPlayerNameByGUID(bidder_guid,bidder_name))
- bidder_name = objmgr.GetMangosStringForDBCLocale(LANG_UNKNOWN);
+ if(!sObjectMgr.GetPlayerNameByGUID(bidder_guid,bidder_name))
+ bidder_name = sObjectMgr.GetMangosStringForDBCLocale(LANG_UNKNOWN);
}
}
if( bidder_security > SEC_PLAYER )
{
std::string owner_name;
- if(!objmgr.GetPlayerNameByGUID(auction->owner,owner_name))
- owner_name = objmgr.GetMangosStringForDBCLocale(LANG_UNKNOWN);
+ if(!sObjectMgr.GetPlayerNameByGUID(auction->owner,owner_name))
+ owner_name = sObjectMgr.GetMangosStringForDBCLocale(LANG_UNKNOWN);
- uint32 owner_accid = objmgr.GetPlayerAccountIdByGUID(auction->owner);
+ uint32 owner_accid = sObjectMgr.GetPlayerAccountIdByGUID(auction->owner);
sLog.outCommand(bidder_accId,"GM %s (Account: %u) won item in auction: %s (Entry: %u Count: %u) and pay money: %u. Original owner %s (Account: %u)",
bidder_name.c_str(),bidder_accId,pItem->GetProto()->Name1,pItem->GetEntry(),pItem->GetCount(),auction->bid,owner_name.c_str(),owner_accid);
}
}
else if(!bidder)
- bidder_accId = objmgr.GetPlayerAccountIdByGUID(bidder_guid);
+ bidder_accId = sObjectMgr.GetPlayerAccountIdByGUID(bidder_guid);
// receiver exist
if(bidder || bidder_accId)
@@ -134,7 +134,7 @@ void AuctionHouseMgr::SendAuctionWonMail( AuctionEntry *auction )
sLog.outDebug( "AuctionWon body string : %s", msgAuctionWonBody.str().c_str() );
//prepare mail data... :
- uint32 itemTextId = objmgr.CreateItemText( msgAuctionWonBody.str() );
+ uint32 itemTextId = sObjectMgr.CreateItemText( msgAuctionWonBody.str() );
// set owner to bidder (to prevent delete item with sender char deleting)
// owner in `data` will set at mail receive and item extracting
@@ -163,10 +163,10 @@ void AuctionHouseMgr::SendAuctionWonMail( AuctionEntry *auction )
void AuctionHouseMgr::SendAuctionSalePendingMail( AuctionEntry * auction )
{
uint64 owner_guid = MAKE_NEW_GUID(auction->owner, 0, HIGHGUID_PLAYER);
- Player *owner = objmgr.GetPlayer(owner_guid);
+ Player *owner = sObjectMgr.GetPlayer(owner_guid);
// owner exist (online or offline)
- if(owner || objmgr.GetPlayerAccountIdByGUID(owner_guid))
+ if(owner || sObjectMgr.GetPlayerAccountIdByGUID(owner_guid))
{
std::ostringstream msgAuctionSalePendingSubject;
msgAuctionSalePendingSubject << auction->item_template << ":0:" << AUCTION_SALE_PENDING;
@@ -184,7 +184,7 @@ void AuctionHouseMgr::SendAuctionSalePendingMail( AuctionEntry * auction )
sLog.outDebug("AuctionSalePending body string : %s", msgAuctionSalePendingBody.str().c_str());
- uint32 itemTextId = objmgr.CreateItemText( msgAuctionSalePendingBody.str() );
+ uint32 itemTextId = sObjectMgr.CreateItemText( msgAuctionSalePendingBody.str() );
MailDraft(msgAuctionSalePendingSubject.str(), itemTextId)
.SendMailTo(MailReceiver(owner,auction->owner), auction, MAIL_CHECK_MASK_AUCTION);
@@ -195,11 +195,11 @@ void AuctionHouseMgr::SendAuctionSalePendingMail( AuctionEntry * auction )
void AuctionHouseMgr::SendAuctionSuccessfulMail( AuctionEntry * auction )
{
uint64 owner_guid = MAKE_NEW_GUID(auction->owner, 0, HIGHGUID_PLAYER);
- Player *owner = objmgr.GetPlayer(owner_guid);
+ Player *owner = sObjectMgr.GetPlayer(owner_guid);
uint32 owner_accId = 0;
if(!owner)
- owner_accId = objmgr.GetPlayerAccountIdByGUID(owner_guid);
+ owner_accId = sObjectMgr.GetPlayerAccountIdByGUID(owner_guid);
// owner exist
if(owner || owner_accId)
@@ -217,7 +217,7 @@ void AuctionHouseMgr::SendAuctionSuccessfulMail( AuctionEntry * auction )
sLog.outDebug("AuctionSuccessful body string : %s", auctionSuccessfulBody.str().c_str());
- uint32 itemTextId = objmgr.CreateItemText( auctionSuccessfulBody.str() );
+ uint32 itemTextId = sObjectMgr.CreateItemText( auctionSuccessfulBody.str() );
uint32 profit = auction->bid + auction->deposit - auctionCut;
@@ -246,11 +246,11 @@ void AuctionHouseMgr::SendAuctionExpiredMail( AuctionEntry * auction )
}
uint64 owner_guid = MAKE_NEW_GUID(auction->owner, 0, HIGHGUID_PLAYER);
- Player *owner = objmgr.GetPlayer(owner_guid);
+ Player *owner = sObjectMgr.GetPlayer(owner_guid);
uint32 owner_accId = 0;
if(!owner)
- owner_accId = objmgr.GetPlayerAccountIdByGUID(owner_guid);
+ owner_accId = sObjectMgr.GetPlayerAccountIdByGUID(owner_guid);
// owner exist
if(owner || owner_accId)
@@ -304,7 +304,7 @@ void AuctionHouseMgr::LoadAuctionItems()
uint32 item_guid = fields[1].GetUInt32();
uint32 item_template = fields[2].GetUInt32();
- ItemPrototype const *proto = objmgr.GetItemPrototype(item_template);
+ ItemPrototype const *proto = ObjectMgr::GetItemPrototype(item_template);
if(!proto)
{
@@ -388,7 +388,7 @@ void AuctionHouseMgr::LoadAuctions()
aItem->startbid = fields[9].GetUInt32();
aItem->deposit = fields[10].GetUInt32();
- CreatureData const* auctioneerData = objmgr.GetCreatureData(aItem->auctioneer);
+ CreatureData const* auctioneerData = sObjectMgr.GetCreatureData(aItem->auctioneer);
if(!auctioneerData)
{
aItem->DeleteFromDB();
@@ -397,7 +397,7 @@ void AuctionHouseMgr::LoadAuctions()
continue;
}
- CreatureInfo const* auctioneerInfo = objmgr.GetCreatureTemplate(auctioneerData->id);
+ CreatureInfo const* auctioneerInfo = ObjectMgr::GetCreatureTemplate(auctioneerData->id);
if(!auctioneerInfo)
{
aItem->DeleteFromDB();
@@ -514,7 +514,7 @@ void AuctionHouseObject::Update()
///- Either cancel the auction if there was no bidder
if (itr->second->bidder == 0)
{
- auctionmgr.SendAuctionExpiredMail( itr->second );
+ sAuctionMgr.SendAuctionExpiredMail( itr->second );
}
///- Or perform the transaction
else
@@ -522,13 +522,13 @@ void AuctionHouseObject::Update()
//we should send an "item sold" message if the seller is online
//we send the item to the winner
//we send the money to the seller
- auctionmgr.SendAuctionSuccessfulMail( itr->second );
- auctionmgr.SendAuctionWonMail( itr->second );
+ sAuctionMgr.SendAuctionSuccessfulMail( itr->second );
+ sAuctionMgr.SendAuctionWonMail( itr->second );
}
///- In any case clear the auction
itr->second->DeleteFromDB();
- auctionmgr.RemoveAItem(itr->second->item_guidlow);
+ sAuctionMgr.RemoveAItem(itr->second->item_guidlow);
delete itr->second;
RemoveAuction(itr->first);
}
@@ -573,7 +573,7 @@ void AuctionHouseObject::BuildListAuctionItems(WorldPacket& data, Player* player
for (AuctionEntryMap::const_iterator itr = AuctionsMap.begin();itr != AuctionsMap.end();++itr)
{
AuctionEntry *Aentry = itr->second;
- Item *item = auctionmgr.GetAItem(Aentry->item_guidlow);
+ Item *item = sAuctionMgr.GetAItem(Aentry->item_guidlow);
if (!item)
continue;
@@ -604,7 +604,7 @@ void AuctionHouseObject::BuildListAuctionItems(WorldPacket& data, Player* player
// local name
if ( loc_idx >= 0 )
{
- ItemLocale const *il = objmgr.GetItemLocale(proto->ItemId);
+ ItemLocale const *il = sObjectMgr.GetItemLocale(proto->ItemId);
if (il)
{
if (il->Name.size() > size_t(loc_idx) && !il->Name[loc_idx].empty())
@@ -627,7 +627,7 @@ void AuctionHouseObject::BuildListAuctionItems(WorldPacket& data, Player* player
//this function inserts to WorldPacket auction's data
bool AuctionEntry::BuildAuctionInfo(WorldPacket & data) const
{
- Item *pItem = auctionmgr.GetAItem(item_guidlow);
+ Item *pItem = sAuctionMgr.GetAItem(item_guidlow);
if (!pItem)
{
sLog.outError("auction to item, that doesn't exist !!!!");
diff --git a/src/game/AuctionHouseMgr.h b/src/game/AuctionHouseMgr.h
index 2775838d9..fbcba207f 100644
--- a/src/game/AuctionHouseMgr.h
+++ b/src/game/AuctionHouseMgr.h
@@ -160,6 +160,6 @@ class AuctionHouseMgr
ItemMap mAitems;
};
-#define auctionmgr MaNGOS::Singleton::Instance()
+#define sAuctionMgr MaNGOS::Singleton::Instance()
#endif
diff --git a/src/game/Bag.cpp b/src/game/Bag.cpp
index 0feca6d14..7bbfd5d1f 100644
--- a/src/game/Bag.cpp
+++ b/src/game/Bag.cpp
@@ -60,7 +60,7 @@ void Bag::RemoveFromWorld()
bool Bag::Create(uint32 guidlow, uint32 itemid, Player const* owner)
{
- ItemPrototype const * itemProto = objmgr.GetItemPrototype(itemid);
+ ItemPrototype const * itemProto = ObjectMgr::GetItemPrototype(itemid);
if(!itemProto || itemProto->ContainerSlots > MAX_BAG_SIZE)
return false;
diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp
index f6709b3d9..fa41ad7ea 100644
--- a/src/game/BattleGround.cpp
+++ b/src/game/BattleGround.cpp
@@ -42,7 +42,7 @@ namespace MaNGOS
: i_msgtype(msgtype), i_textId(textId), i_source(source), i_args(args) {}
void operator()(WorldPacket& data, int32 loc_idx)
{
- char const* text = objmgr.GetMangosString(i_textId,loc_idx);
+ char const* text = sObjectMgr.GetMangosString(i_textId,loc_idx);
if (i_args)
{
@@ -87,7 +87,7 @@ namespace MaNGOS
: i_language(language), i_textId(textId), i_source(source), i_args(args) {}
void operator()(WorldPacket& data, int32 loc_idx)
{
- char const* text = objmgr.GetMangosString(i_textId,loc_idx);
+ char const* text = sObjectMgr.GetMangosString(i_textId,loc_idx);
if(i_args)
{
@@ -134,9 +134,9 @@ namespace MaNGOS
: i_msgtype(msgtype), i_textId(textId), i_source(source), i_arg1(arg1), i_arg2(arg2) {}
void operator()(WorldPacket& data, int32 loc_idx)
{
- char const* text = objmgr.GetMangosString(i_textId,loc_idx);
- char const* arg1str = i_arg1 ? objmgr.GetMangosString(i_arg1,loc_idx) : "";
- char const* arg2str = i_arg2 ? objmgr.GetMangosString(i_arg2,loc_idx) : "";
+ char const* text = sObjectMgr.GetMangosString(i_textId,loc_idx);
+ char const* arg1str = i_arg1 ? sObjectMgr.GetMangosString(i_arg1,loc_idx) : "";
+ char const* arg2str = i_arg2 ? sObjectMgr.GetMangosString(i_arg2,loc_idx) : "";
char str [2048];
snprintf(str,2048,text, arg1str, arg2str );
@@ -168,9 +168,9 @@ namespace MaNGOS
: i_language(language), i_textId(textId), i_source(source), i_arg1(arg1), i_arg2(arg2) {}
void operator()(WorldPacket& data, int32 loc_idx)
{
- char const* text = objmgr.GetMangosString(i_textId,loc_idx);
- char const* arg1str = i_arg1 ? objmgr.GetMangosString(i_arg1,loc_idx) : "";
- char const* arg2str = i_arg2 ? objmgr.GetMangosString(i_arg2,loc_idx) : "";
+ char const* text = sObjectMgr.GetMangosString(i_textId,loc_idx);
+ char const* arg1str = i_arg1 ? sObjectMgr.GetMangosString(i_arg1,loc_idx) : "";
+ char const* arg2str = i_arg2 ? sObjectMgr.GetMangosString(i_arg2,loc_idx) : "";
char str [2048];
snprintf(str,2048,text, arg1str, arg2str );
@@ -455,7 +455,7 @@ void BattleGround::Update(uint32 diff)
//TODO : add arena sound PlaySoundToAll(SOUND_ARENA_START);
for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
- if (Player *plr = objmgr.GetPlayer(itr->first))
+ if (Player *plr = sObjectMgr.GetPlayer(itr->first))
plr->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION);
CheckArenaWinConditions();
@@ -466,7 +466,7 @@ void BattleGround::Update(uint32 diff)
PlaySoundToAll(SOUND_BG_START);
for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
- if (Player* plr = objmgr.GetPlayer(itr->first))
+ if (Player* plr = sObjectMgr.GetPlayer(itr->first))
plr->RemoveAurasDueToSpell(SPELL_PREPARATION);
//Announce BG starting
if (sWorld.getConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE))
@@ -517,7 +517,7 @@ void BattleGround::SendPacketToAll(WorldPacket *packet)
{
for(BattleGroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
if (plr)
plr->GetSession()->SendPacket(packet);
else
@@ -529,7 +529,7 @@ void BattleGround::SendPacketToTeam(uint32 TeamID, WorldPacket *packet, Player *
{
for(BattleGroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
if (!plr)
{
@@ -561,7 +561,7 @@ void BattleGround::PlaySoundToTeam(uint32 SoundID, uint32 TeamID)
for(BattleGroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
if (!plr)
{
@@ -584,7 +584,7 @@ void BattleGround::CastSpellOnTeam(uint32 SpellID, uint32 TeamID)
{
for(BattleGroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
if (!plr)
{
@@ -604,7 +604,7 @@ void BattleGround::RewardHonorToTeam(uint32 Honor, uint32 TeamID)
{
for(BattleGroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
if (!plr)
{
@@ -629,7 +629,7 @@ void BattleGround::RewardReputationToTeam(uint32 faction_id, uint32 Reputation,
for(BattleGroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
if (!plr)
{
@@ -698,8 +698,8 @@ void BattleGround::EndBattleGround(uint32 winner)
// arena rating calculation
if (isArena() && isRated())
{
- winner_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(winner));
- loser_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(winner)));
+ winner_arena_team = sObjectMgr.GetArenaTeamById(GetArenaTeamIdForTeam(winner));
+ loser_arena_team = sObjectMgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(winner)));
if (winner_arena_team && loser_arena_team)
{
loser_rating = loser_arena_team->GetStats().rating;
@@ -719,7 +719,7 @@ void BattleGround::EndBattleGround(uint32 winner)
for(BattleGroundPlayerMap::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
uint32 team = itr->second.Team;
if (!plr)
@@ -924,7 +924,7 @@ void BattleGround::SendRewardMarkByMail(Player *plr,uint32 mark, uint32 count)
if (!bmEntry)
return;
- ItemPrototype const* markProto = objmgr.GetItemPrototype(mark);
+ ItemPrototype const* markProto = ObjectMgr::GetItemPrototype(mark);
if (!markProto)
return;
@@ -937,7 +937,7 @@ void BattleGround::SendRewardMarkByMail(Player *plr,uint32 mark, uint32 count)
std::string subject = markProto->Name1;
int loc_idx = plr->GetSession()->GetSessionDbLocaleIndex();
if (loc_idx >= 0 )
- if (ItemLocale const *il = objmgr.GetItemLocale(markProto->ItemId))
+ if (ItemLocale const *il = sObjectMgr.GetItemLocale(markProto->ItemId))
if (il->Name.size() > size_t(loc_idx) && !il->Name[loc_idx].empty())
subject = il->Name[loc_idx];
@@ -945,7 +945,7 @@ void BattleGround::SendRewardMarkByMail(Player *plr,uint32 mark, uint32 count)
std::string textFormat = plr->GetSession()->GetMangosString(LANG_BG_MARK_BY_MAIL);
char textBuf[300];
snprintf(textBuf,300,textFormat.c_str(),GetName(),GetName());
- uint32 itemTextId = objmgr.CreateItemText( textBuf );
+ uint32 itemTextId = sObjectMgr.CreateItemText( textBuf );
MailDraft(subject, itemTextId)
.AddItem(markItem)
@@ -1003,7 +1003,7 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac
m_PlayerScores.erase(itr2);
}
- Player *plr = objmgr.GetPlayer(guid);
+ Player *plr = sObjectMgr.GetPlayer(guid);
// should remove spirit of redemption
if (plr && plr->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))
@@ -1040,8 +1040,8 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac
if (isRated() && GetStatus() == STATUS_IN_PROGRESS)
{
//left a rated match while the encounter was in progress, consider as loser
- ArenaTeam * winner_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(team)));
- ArenaTeam * loser_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(team));
+ ArenaTeam * winner_arena_team = sObjectMgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(team)));
+ ArenaTeam * loser_arena_team = sObjectMgr.GetArenaTeamById(GetArenaTeamIdForTeam(team));
if (winner_arena_team && loser_arena_team)
loser_arena_team->MemberLost(plr,winner_arena_team->GetRating());
}
@@ -1062,8 +1062,8 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac
if (isRated() && GetStatus() == STATUS_IN_PROGRESS)
{
//left a rated match while the encounter was in progress, consider as loser
- ArenaTeam * others_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(team)));
- ArenaTeam * players_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(team));
+ ArenaTeam * others_arena_team = sObjectMgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(team)));
+ ArenaTeam * players_arena_team = sObjectMgr.GetArenaTeamById(GetArenaTeamIdForTeam(team));
if (others_arena_team && players_arena_team)
players_arena_team->OfflineMemberLost(guid, others_arena_team->GetRating());
}
@@ -1084,7 +1084,7 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac
{
// a player has left the battleground, so there are free slots -> add to queue
AddToBGFreeSlotQueue();
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, GetQueueId());
+ sBattleGroundMgr.ScheduleQueueUpdate(0, 0, bgQueueTypeId, bgTypeId, GetQueueId());
}
// Let others know
@@ -1384,7 +1384,7 @@ bool BattleGround::AddObject(uint32 type, uint32 entry, float x, float y, float
// and when loading it (in go::LoadFromDB()), a new guid would be assigned to the object, and a new object would be created
// so we must create it specific for this instance
GameObject * go = new GameObject;
- if(!go->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT),entry, GetBgMap(),
+ if(!go->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT),entry, GetBgMap(),
PHASEMASK_NORMAL, x,y,z,o,rotation0,rotation1,rotation2,rotation3,100,GO_STATE_READY))
{
sLog.outErrorDb("Gameobject template %u not found in database! BattleGround not created!", entry);
@@ -1397,7 +1397,7 @@ bool BattleGround::AddObject(uint32 type, uint32 entry, float x, float y, float
// without this, UseButtonOrDoor caused the crash, since it tried to get go info from godata
// iirc that was changed, so adding to go data map is no longer required if that was the only function using godata from GameObject without checking if it existed
- GameObjectData& data = objmgr.NewGOData(guid);
+ GameObjectData& data = sObjectMgr.NewGOData(guid);
data.id = entry;
data.mapid = GetMapId();
@@ -1727,7 +1727,7 @@ void BattleGround::HandleKillPlayer( Player *player, Player *killer )
for(BattleGroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
if (!plr || plr == killer)
continue;
@@ -1784,7 +1784,7 @@ uint32 BattleGround::GetAlivePlayersCountByTeam(uint32 Team) const
{
if (itr->second.Team == Team)
{
- Player * pl = objmgr.GetPlayer(itr->first);
+ Player * pl = sObjectMgr.GetPlayer(itr->first);
if (pl && pl->isAlive())
++count;
}
@@ -1810,7 +1810,7 @@ void BattleGround::SetBgRaid( uint32 TeamID, Group *bg_raid )
WorldSafeLocsEntry const* BattleGround::GetClosestGraveYard( Player* player )
{
- return objmgr.GetClosestGraveYard( player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), player->GetTeam() );
+ return sObjectMgr.GetClosestGraveYard( player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), player->GetTeam() );
}
bool BattleGround::IsTeamScoreInRange(uint32 team, uint32 minScore, uint32 maxScore) const
diff --git a/src/game/BattleGroundEY.cpp b/src/game/BattleGroundEY.cpp
index cab99dec5..8f5999109 100644
--- a/src/game/BattleGroundEY.cpp
+++ b/src/game/BattleGroundEY.cpp
@@ -131,7 +131,7 @@ void BattleGroundEY::CheckSomeoneJoinedPoint()
uint8 j = 0;
while (j < m_PlayersNearPoint[BG_EY_NODES_MAX].size())
{
- Player *plr = objmgr.GetPlayer(m_PlayersNearPoint[BG_EY_NODES_MAX][j]);
+ Player *plr = sObjectMgr.GetPlayer(m_PlayersNearPoint[BG_EY_NODES_MAX][j]);
if (!plr)
{
sLog.outError("BattleGroundEY: Player (GUID: %u) not found!", GUID_LOPART(m_PlayersNearPoint[BG_EY_NODES_MAX][j]));
@@ -167,7 +167,7 @@ void BattleGroundEY::CheckSomeoneLeftPoint()
uint8 j = 0;
while (j < m_PlayersNearPoint[i].size())
{
- Player *plr = objmgr.GetPlayer(m_PlayersNearPoint[i][j]);
+ Player *plr = sObjectMgr.GetPlayer(m_PlayersNearPoint[i][j]);
if (!plr)
{
sLog.outError("BattleGroundEY: Player (GUID: %u) not found!", GUID_LOPART(m_PlayersNearPoint[i][j]));
@@ -222,7 +222,7 @@ void BattleGroundEY::UpdatePointStatuses()
for (uint8 i = 0; i < m_PlayersNearPoint[point].size(); ++i)
{
- Player *plr = objmgr.GetPlayer(m_PlayersNearPoint[point][i]);
+ Player *plr = sObjectMgr.GetPlayer(m_PlayersNearPoint[point][i]);
if (plr)
{
UpdateWorldStateForPlayer(PROGRESS_BAR_STATUS, m_PointBarStatus[point], plr);
diff --git a/src/game/BattleGroundHandler.cpp b/src/game/BattleGroundHandler.cpp
index 868f5b9d9..30d98ee3e 100644
--- a/src/game/BattleGroundHandler.cpp
+++ b/src/game/BattleGroundHandler.cpp
@@ -148,8 +148,9 @@ void WorldSession::HandleBattlemasterJoinOpcode( WorldPacket & recv_data )
// if we're here, then the conditions to join a bg are met. We can proceed in joining.
// _player->GetGroup() was already checked, grp is already initialized
- GroupQueueInfo * ginfo = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddGroup(_player, bgTypeId, 0, false, isPremade, 0);
- uint32 avgTime = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].GetAverageQueueWaitTime(ginfo, _player->GetBattleGroundQueueIdFromLevel());
+ BattleGroundQueue& bgQueue = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId];
+ GroupQueueInfo * ginfo = bgQueue.AddGroup(_player, bgTypeId, 0, false, isPremade, 0);
+ uint32 avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, _player->GetBattleGroundQueueIdFromLevel());
if (joinAsGroup /* && _player->GetGroup()*/)
{
sLog.outDebug("Battleground: the following players are joining as group:");
@@ -166,7 +167,7 @@ void WorldSession::HandleBattlemasterJoinOpcode( WorldPacket & recv_data )
member->GetSession()->SendPacket(&data);
sBattleGroundMgr.BuildGroupJoinedBattlegroundPacket(&data, bgTypeId);
member->GetSession()->SendPacket(&data);
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddPlayer(member, ginfo);
+ bgQueue.AddPlayer(member, ginfo);
sLog.outDebug("Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,member->GetGUIDLow(), member->GetName());
}
sLog.outDebug("Battleground: group end");
@@ -181,12 +182,11 @@ void WorldSession::HandleBattlemasterJoinOpcode( WorldPacket & recv_data )
sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType);
SendPacket(&data);
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddPlayer(_player, ginfo);
+ bgQueue.AddPlayer(_player, ginfo);
sLog.outDebug("Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,_player->GetGUIDLow(), _player->GetName());
}
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel());
- if (!ginfo->IsInvitedToBGInstanceGUID)
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AnnounceWorld(ginfo, _player->GetGUID(), true);
+ sBattleGroundMgr.ScheduleQueueUpdate(0, 0, bgQueueTypeId, bgTypeId, _player->GetBattleGroundQueueIdFromLevel());
+ //we should announce queue status here, if we want
}
void WorldSession::HandleBattleGroundPlayerPositionsOpcode( WorldPacket & /*recv_data*/ )
@@ -205,11 +205,11 @@ void WorldSession::HandleBattleGroundPlayerPositionsOpcode( WorldPacket & /*recv
uint32 count1 = 0; //always constant zero?
uint32 count2 = 0; //count of next fields
- Player *ali_plr = objmgr.GetPlayer(((BattleGroundWS*)bg)->GetAllianceFlagPickerGUID());
+ Player *ali_plr = sObjectMgr.GetPlayer(((BattleGroundWS*)bg)->GetAllianceFlagPickerGUID());
if (ali_plr)
++count2;
- Player *horde_plr = objmgr.GetPlayer(((BattleGroundWS*)bg)->GetHordeFlagPickerGUID());
+ Player *horde_plr = sObjectMgr.GetPlayer(((BattleGroundWS*)bg)->GetHordeFlagPickerGUID());
if (horde_plr)
++count2;
@@ -303,7 +303,6 @@ void WorldSession::HandleBattleFieldPortOpcode( WorldPacket &recv_data )
uint8 type; // arenatype if arena
uint8 unk2; // unk, can be 0x0 (may be if was invited?) and 0x1
- uint32 instanceId;
uint32 bgTypeId_; // type id from dbc
uint16 unk; // 0x1F90 constant?
uint8 action; // enter battle 0x1, leave queue 0x0
@@ -312,183 +311,131 @@ void WorldSession::HandleBattleFieldPortOpcode( WorldPacket &recv_data )
if (!sBattlemasterListStore.LookupEntry(bgTypeId_))
{
- sLog.outError("Battleground: invalid bgtype (%u) received.", bgTypeId_);
- // update battleground slots for the player to fix his UI and sent data.
- // this is a HACK, I don't know why the client starts sending invalid packets in the first place.
- // it usually happens with extremely high latency (if debugging / stepping in the code for example)
- if (_player->InBattleGroundQueue())
- {
- // update all queues, send invitation info if player is invited, queue info if queued
- for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)
- {
- BattleGroundQueueTypeId bgQueueTypeId = _player->GetBattleGroundQueueTypeId(i);
- if (!bgQueueTypeId)
- continue;
- BattleGroundTypeId bgTypeId = BattleGroundMgr::BGTemplateId(bgQueueTypeId);
- BattleGroundQueue::QueuedPlayersMap& qpMap = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].m_QueuedPlayers;
- BattleGroundQueue::QueuedPlayersMap::iterator itrPlayerStatus = qpMap.find(_player->GetGUID());
- // if the player is not in queue, continue or no group information - this should never happen
- if (itrPlayerStatus == qpMap.end() || !itrPlayerStatus->second.GroupInfo)
- continue;
-
- BattleGround * bg = NULL;
- // get possibly needed data from groupinfo
- uint8 arenatype = itrPlayerStatus->second.GroupInfo->ArenaType;
- uint8 status = 0;
-
- if (!itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID)
- {
- // not invited to bg, get template
- bg = sBattleGroundMgr.GetBattleGroundTemplate(bgTypeId);
- status = STATUS_WAIT_QUEUE;
- }
- else
- {
- // get the bg we're invited to
- bg = sBattleGroundMgr.GetBattleGround(itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID, bgTypeId);
- status = STATUS_WAIT_JOIN;
- }
-
- // if bg not found, then continue, don't invite if already in the instance
- if (!bg || (_player->InBattleGround() && _player->GetBattleGround() && _player->GetBattleGround()->GetInstanceID() == bg->GetInstanceID()))
- continue;
-
- // re - invite player with proper data
- WorldPacket data;
- sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, i, status, INVITE_ACCEPT_WAIT_TIME, 0, arenatype);
- SendPacket(&data);
- }
- }
+ sLog.outError("BattlegroundHandler: invalid bgtype (%u) received.", bgTypeId_);
+ return;
+ }
+ if (!_player->InBattleGroundQueue())
+ {
+ sLog.outError("BattlegroundHandler: Invalid CMSG_BATTLEFIELD_PORT received from player (%u), he is not in bg_queue.", _player->GetGUIDLow());
return;
}
//get GroupQueueInfo from BattleGroundQueue
BattleGroundTypeId bgTypeId = BattleGroundTypeId(bgTypeId_);
BattleGroundQueueTypeId bgQueueTypeId = BattleGroundMgr::BGQueueTypeId(bgTypeId, type);
- BattleGroundQueue::QueuedPlayersMap& qpMap = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].m_QueuedPlayers;
- BattleGroundQueue::QueuedPlayersMap::iterator itrPlayerStatus = qpMap.find(_player->GetGUID());
- if (itrPlayerStatus == qpMap.end())
+ BattleGroundQueue& bgQueue = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId];
+ //we must use temporary variable, because GroupQueueInfo pointer can be deleted in BattleGroundQueue::RemovePlayer() function
+ GroupQueueInfo ginfo;
+ if (!bgQueue.GetPlayerGroupInfoData(_player->GetGUID(), &ginfo))
{
- sLog.outError("Battleground: itrplayerstatus not found.");
+ sLog.outError("BattlegroundHandler: itrplayerstatus not found.");
return;
}
-
- instanceId = itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID;
// if action == 1, then instanceId is required
- if (!instanceId && action == 1)
+ if (!ginfo.IsInvitedToBGInstanceGUID && action == 1)
{
- sLog.outError("Battleground: instance not found.");
+ sLog.outError("BattlegroundHandler: instance not found.");
return;
}
- BattleGround *bg = sBattleGroundMgr.GetBattleGround(instanceId, bgTypeId);
+ BattleGround *bg = sBattleGroundMgr.GetBattleGround(ginfo.IsInvitedToBGInstanceGUID, bgTypeId);
// bg template might and must be used in case of leaving queue, when instance is not created yet
if (!bg && action == 0)
bg = sBattleGroundMgr.GetBattleGroundTemplate(bgTypeId);
if (!bg)
{
- sLog.outError("Battleground: bg_template not found for type id %u.", bgTypeId);
+ sLog.outError("BattlegroundHandler: bg_template not found for type id %u.", bgTypeId);
return;
}
- if (_player->InBattleGroundQueue())
+ //some checks if player isn't cheating - it is not exactly cheating, but we cannot allow it
+ if (action == 1 && ginfo.ArenaType == 0)
{
- //we must use temporary variables, because GroupQueueInfo pointer can be deleted in BattleGroundQueue::RemovePlayer() function!
- uint32 team = itrPlayerStatus->second.GroupInfo->Team;
- uint32 arenaType = itrPlayerStatus->second.GroupInfo->ArenaType;
- uint32 isRated = itrPlayerStatus->second.GroupInfo->IsRated;
- uint32 rating = itrPlayerStatus->second.GroupInfo->ArenaTeamRating;
- uint32 opponentsRating = itrPlayerStatus->second.GroupInfo->OpponentsTeamRating;
-
- //some checks if player isn't cheating - it is not exactly cheating, but we cannot allow it
- if (action == 1 && arenaType == 0)
+ //if player is trying to enter battleground (not arena!) and he has deserter debuff, we must just remove him from queue
+ if (!_player->CanJoinToBattleground())
{
- //if player is trying to enter battleground (not arena!) and he has deserter debuff, we must just remove him from queue
- if (!_player->CanJoinToBattleground())
- {
- //send bg command result to show nice message
- WorldPacket data2(SMSG_GROUP_JOINED_BATTLEGROUND, 4);
- data2 << uint32(0xFFFFFFFE);
- _player->GetSession()->SendPacket(&data2);
- action = 0;
- sLog.outDebug("Battleground: player %s (%u) has a deserter debuff, do not port him to battleground!", _player->GetName(), _player->GetGUIDLow());
- }
- //if player don't match battleground max level, then do not allow him to enter! (this might happen when player leveled up during his waiting in queue
- if (_player->getLevel() > bg->GetMaxLevel())
- {
- sLog.outError("Battleground: Player %s (%u) has level higher than maxlevel of battleground! Do not port him to battleground!", _player->GetName(), _player->GetGUIDLow());
- action = 0;
- }
+ //send bg command result to show nice message
+ WorldPacket data2(SMSG_GROUP_JOINED_BATTLEGROUND, 4);
+ data2 << uint32(0xFFFFFFFE);
+ _player->GetSession()->SendPacket(&data2);
+ action = 0;
+ sLog.outDebug("Battleground: player %s (%u) has a deserter debuff, do not port him to battleground!", _player->GetName(), _player->GetGUIDLow());
}
- uint32 queueSlot = _player->GetBattleGroundQueueIndex(bgQueueTypeId);
- WorldPacket data;
- switch( action )
+ //if player don't match battleground max level, then do not allow him to enter! (this might happen when player leveled up during his waiting in queue
+ if (_player->getLevel() > bg->GetMaxLevel())
{
- case 1: // port to battleground
- if (!_player->IsInvitedForBattleGroundQueueType(bgQueueTypeId))
- return; // cheating?
-
- _player->SetBattleGroundEntryPoint();
-
- // resurrect the player
- if (!_player->isAlive())
- {
- _player->ResurrectPlayer(1.0f);
- _player->SpawnCorpseBones();
- }
- // stop taxi flight at port
- if (_player->isInFlight())
- {
- _player->GetMotionMaster()->MovementExpired();
- _player->m_taxi.ClearTaxiDestinations();
- }
-
- sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType());
- _player->GetSession()->SendPacket(&data);
- // remove battleground queue status from BGmgr
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].RemovePlayer(_player->GetGUID(), false);
- // this is still needed here if battleground "jumping" shouldn't add deserter debuff
- // also this is required to prevent stuck at old battleground after SetBattleGroundId set to new
- if (BattleGround *currentBg = _player->GetBattleGround())
- currentBg->RemovePlayerAtLeave(_player->GetGUID(), false, true);
-
- // set the destination instance id
- _player->SetBattleGroundId(bg->GetInstanceID(), bgTypeId);
- // set the destination team
- _player->SetBGTeam(team);
- // bg->HandleBeforeTeleportToBattleGround(_player);
- sBattleGroundMgr.SendToBattleGround(_player, instanceId, bgTypeId);
- // add only in HandleMoveWorldPortAck()
- // bg->AddPlayer(_player,team);
- sLog.outDebug("Battleground: player %s (%u) joined battle for bg %u, bgtype %u, queue type %u.", _player->GetName(), _player->GetGUIDLow(), bg->GetInstanceID(), bg->GetTypeID(), bgQueueTypeId);
- break;
- case 0: // leave queue
- // if player leaves rated arena match before match start, it is counted as he played but he lost
- if (isRated)
- {
- ArenaTeam * at = objmgr.GetArenaTeamById(team);
- if (at)
- {
- sLog.outDebug("UPDATING memberLost's personal arena rating for %u by opponents rating: %u, because he has left queue!", GUID_LOPART(_player->GetGUID()), opponentsRating);
- at->MemberLost(_player, opponentsRating);
- at->SaveToDB();
- }
- }
- _player->RemoveBattleGroundQueueId(bgQueueTypeId); // must be called this way, because if you move this call to queue->removeplayer, it causes bugs
- sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0);
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].RemovePlayer(_player->GetGUID(), true);
- // player left queue, we should update it - do not update Arena Queue
- if (!arenaType)
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel(), arenaType, isRated, rating);
- SendPacket(&data);
- sLog.outDebug("Battleground: player %s (%u) left queue for bgtype %u, queue type %u.", _player->GetName(), _player->GetGUIDLow(), bg->GetTypeID(), bgQueueTypeId);
- break;
- default:
- sLog.outError("Battleground port: unknown action %u", action);
- break;
+ sLog.outError("Battleground: Player %s (%u) has level higher than maxlevel of battleground! Do not port him to battleground!", _player->GetName(), _player->GetGUIDLow());
+ action = 0;
}
}
+ uint32 queueSlot = _player->GetBattleGroundQueueIndex(bgQueueTypeId);
+ WorldPacket data;
+ switch( action )
+ {
+ case 1: // port to battleground
+ if (!_player->IsInvitedForBattleGroundQueueType(bgQueueTypeId))
+ return; // cheating?
+
+ _player->SetBattleGroundEntryPoint();
+
+ // resurrect the player
+ if (!_player->isAlive())
+ {
+ _player->ResurrectPlayer(1.0f);
+ _player->SpawnCorpseBones();
+ }
+ // stop taxi flight at port
+ if (_player->isInFlight())
+ {
+ _player->GetMotionMaster()->MovementExpired();
+ _player->m_taxi.ClearTaxiDestinations();
+ }
+
+ sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType());
+ _player->GetSession()->SendPacket(&data);
+ // remove battleground queue status from BGmgr
+ bgQueue.RemovePlayer(_player->GetGUID(), false);
+ // this is still needed here if battleground "jumping" shouldn't add deserter debuff
+ // also this is required to prevent stuck at old battleground after SetBattleGroundId set to new
+ if (BattleGround *currentBg = _player->GetBattleGround())
+ currentBg->RemovePlayerAtLeave(_player->GetGUID(), false, true);
+
+ // set the destination instance id
+ _player->SetBattleGroundId(bg->GetInstanceID(), bgTypeId);
+ // set the destination team
+ _player->SetBGTeam(ginfo.Team);
+ // bg->HandleBeforeTeleportToBattleGround(_player);
+ sBattleGroundMgr.SendToBattleGround(_player, ginfo.IsInvitedToBGInstanceGUID, bgTypeId);
+ // add only in HandleMoveWorldPortAck()
+ // bg->AddPlayer(_player,team);
+ sLog.outDebug("Battleground: player %s (%u) joined battle for bg %u, bgtype %u, queue type %u.", _player->GetName(), _player->GetGUIDLow(), bg->GetInstanceID(), bg->GetTypeID(), bgQueueTypeId);
+ break;
+ case 0: // leave queue
+ // if player leaves rated arena match before match start, it is counted as he played but he lost
+ if (ginfo.IsRated)
+ {
+ ArenaTeam * at = sObjectMgr.GetArenaTeamById(ginfo.Team);
+ if (at)
+ {
+ sLog.outDebug("UPDATING memberLost's personal arena rating for %u by opponents rating: %u, because he has left queue!", GUID_LOPART(_player->GetGUID()), ginfo.OpponentsTeamRating);
+ at->MemberLost(_player, ginfo.OpponentsTeamRating);
+ at->SaveToDB();
+ }
+ }
+ _player->RemoveBattleGroundQueueId(bgQueueTypeId); // must be called this way, because if you move this call to queue->removeplayer, it causes bugs
+ sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0);
+ bgQueue.RemovePlayer(_player->GetGUID(), true);
+ // player left queue, we should update it - do not update Arena Queue
+ if (!ginfo.ArenaType)
+ sBattleGroundMgr.ScheduleQueueUpdate(ginfo.ArenaTeamRating, ginfo.ArenaType, bgQueueTypeId, bgTypeId, _player->GetBattleGroundQueueIdFromLevel());
+ SendPacket(&data);
+ sLog.outDebug("Battleground: player %s (%u) left queue for bgtype %u, queue type %u.", _player->GetName(), _player->GetGUIDLow(), bg->GetTypeID(), bgQueueTypeId);
+ break;
+ default:
+ sLog.outError("Battleground port: unknown action %u", action);
+ break;
+ }
}
void WorldSession::HandleLeaveBattlefieldOpcode( WorldPacket & /*recv_data*/ )
@@ -544,16 +491,16 @@ void WorldSession::HandleBattlefieldStatusOpcode( WorldPacket & /*recv_data*/ )
}
//we are sending update to player about queue - he can be invited there!
//get GroupQueueInfo for queue status
- BattleGroundQueue::QueuedPlayersMap& qpMap = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].m_QueuedPlayers;
- BattleGroundQueue::QueuedPlayersMap::iterator itrPlayerStatus = qpMap.find(_player->GetGUID());
- if (itrPlayerStatus == qpMap.end())
+ BattleGroundQueue& bgQueue = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId];
+ GroupQueueInfo ginfo;
+ if (!bgQueue.GetPlayerGroupInfoData(_player->GetGUID(), &ginfo))
continue;
- if (itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID)
+ if (ginfo.IsInvitedToBGInstanceGUID)
{
- bg = sBattleGroundMgr.GetBattleGround(itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID, bgTypeId);
+ bg = sBattleGroundMgr.GetBattleGround(ginfo.IsInvitedToBGInstanceGUID, bgTypeId);
if (!bg)
continue;
- uint32 remainingTime = getMSTimeDiff(getMSTime(), itrPlayerStatus->second.GroupInfo->RemoveInviteTime);
+ uint32 remainingTime = getMSTimeDiff(getMSTime(), ginfo.RemoveInviteTime);
// send status invited to BattleGround
sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, i, STATUS_WAIT_JOIN, remainingTime, 0, arenaType);
SendPacket(&data);
@@ -563,9 +510,9 @@ void WorldSession::HandleBattlefieldStatusOpcode( WorldPacket & /*recv_data*/ )
bg = sBattleGroundMgr.GetBattleGroundTemplate(bgTypeId);
if (!bg)
continue;
- uint32 avgTime = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].GetAverageQueueWaitTime(itrPlayerStatus->second.GroupInfo, _player->GetBattleGroundQueueIdFromLevel());
+ uint32 avgTime = bgQueue.GetAverageQueueWaitTime(&ginfo, _player->GetBattleGroundQueueIdFromLevel());
// send status in BattleGround Queue
- sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, avgTime, getMSTimeDiff(itrPlayerStatus->second.GroupInfo->JoinTime, getMSTime()), arenaType);
+ sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, avgTime, getMSTimeDiff(ginfo.JoinTime, getMSTime()), arenaType);
SendPacket(&data);
}
}
@@ -698,7 +645,7 @@ void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data )
{
ateamId = _player->GetArenaTeamId(arenaslot);
// check real arenateam existence only here (if it was moved to group->CanJoin .. () then we would ahve to get it twice)
- ArenaTeam * at = objmgr.GetArenaTeamById(ateamId);
+ ArenaTeam * at = sObjectMgr.GetArenaTeamById(ateamId);
if (!at)
{
_player->GetSession()->SendNotInArenaTeamPacket(arenatype);
@@ -725,8 +672,9 @@ void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data )
arenaRating = avg_pers_rating;
}
- GroupQueueInfo * ginfo = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddGroup(_player, bgTypeId, arenatype, isRated, false, arenaRating, ateamId);
- uint32 avgTime = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].GetAverageQueueWaitTime(ginfo, _player->GetBattleGroundQueueIdFromLevel());
+ BattleGroundQueue &bgQueue = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId];
+ GroupQueueInfo * ginfo = bgQueue.AddGroup(_player, bgTypeId, arenatype, isRated, false, arenaRating, ateamId);
+ uint32 avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, _player->GetBattleGroundQueueIdFromLevel());
if (asGroup)
{
sLog.outDebug("Battleground: arena join as group start");
@@ -745,12 +693,11 @@ void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data )
member->GetSession()->SendPacket(&data);
sBattleGroundMgr.BuildGroupJoinedBattlegroundPacket(&data, bgTypeId);
member->GetSession()->SendPacket(&data);
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddPlayer(member, ginfo);
+ bgQueue.AddPlayer(member, ginfo);
sLog.outDebug("Battleground: player joined queue for arena as group bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,member->GetGUIDLow(), member->GetName());
}
sLog.outDebug("Battleground: arena join as group end");
- if (isRated)
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AnnounceWorld(ginfo, _player->GetGUID(), true);
+ //announce to world ... removed
}
else
{
@@ -760,17 +707,17 @@ void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data )
// send status packet (in queue)
sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype);
SendPacket(&data);
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddPlayer(_player, ginfo);
+ bgQueue.AddPlayer(_player, ginfo);
sLog.outDebug("Battleground: player joined queue for arena, skirmish, bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,_player->GetGUIDLow(), _player->GetName());
}
- sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel(), arenatype, isRated, arenaRating);
+ sBattleGroundMgr.ScheduleQueueUpdate(arenaRating, arenatype, bgQueueTypeId, bgTypeId, _player->GetBattleGroundQueueIdFromLevel());
}
void WorldSession::HandleReportPvPAFK( WorldPacket & recv_data )
{
uint64 playerGuid;
recv_data >> playerGuid;
- Player *reportedPlayer = objmgr.GetPlayer(playerGuid);
+ Player *reportedPlayer = sObjectMgr.GetPlayer(playerGuid);
if (!reportedPlayer)
{
diff --git a/src/game/BattleGroundMgr.cpp b/src/game/BattleGroundMgr.cpp
index a7e7d418c..07d3f845e 100644
--- a/src/game/BattleGroundMgr.cpp
+++ b/src/game/BattleGroundMgr.cpp
@@ -177,6 +177,7 @@ GroupQueueInfo * BattleGroundQueue::AddGroup(Player *leader, BattleGroundTypeId
index++;
sLog.outDebug("Adding Group to BattleGroundQueue bgTypeId : %u, queue_id : %u, index : %u", BgTypeId, queue_id, index);
+ ACE_Guard guard(m_Lock);
m_QueuedGroups[queue_id][index].push_back(ginfo);
// return ginfo, because it is needed to add players to this group info
@@ -186,6 +187,8 @@ GroupQueueInfo * BattleGroundQueue::AddGroup(Player *leader, BattleGroundTypeId
//add player to playermap
void BattleGroundQueue::AddPlayer(Player *plr, GroupQueueInfo *ginfo)
{
+ ACE_Guard guard(m_Lock);
+
//if player isn't in queue, he is added, if already is, then values are overwritten, no memory leak
PlayerQueueInfo& info = m_QueuedPlayers[plr->GetGUID()];
info.LastOnlineTime = getMSTime();
@@ -247,7 +250,8 @@ uint32 BattleGroundQueue::GetAverageQueueWaitTime(GroupQueueInfo* ginfo, BGQueue
//remove player from queue and from group info, if group info is empty then remove it too
void BattleGroundQueue::RemovePlayer(const uint64& guid, bool decreaseInvitedCount)
{
- //Player *plr = objmgr.GetPlayer(guid);
+ //Player *plr = sObjectMgr.GetPlayer(guid);
+ ACE_Guard guard(m_Lock);
int32 queue_id = -1; // signed for proper for-loop finish
QueuedPlayersMap::iterator itr;
@@ -322,11 +326,11 @@ void BattleGroundQueue::RemovePlayer(const uint64& guid, bool decreaseInvitedCou
//if player leaves queue and he is invited to rated arena match, then he have to loose
if (group->IsInvitedToBGInstanceGUID && group->IsRated && decreaseInvitedCount)
{
- ArenaTeam * at = objmgr.GetArenaTeamById(group->ArenaTeamId);
+ ArenaTeam * at = sObjectMgr.GetArenaTeamById(group->ArenaTeamId);
if (at)
{
sLog.outDebug("UPDATING memberLost's personal arena rating for %u by opponents rating: %u", GUID_LOPART(guid), group->OpponentsTeamRating);
- Player *plr = objmgr.GetPlayer(guid);
+ Player *plr = sObjectMgr.GetPlayer(guid);
if (plr)
at->MemberLost(plr, group->OpponentsTeamRating);
else
@@ -348,7 +352,7 @@ void BattleGroundQueue::RemovePlayer(const uint64& guid, bool decreaseInvitedCou
{
// remove next player, this is recursive
// first send removal information
- if (Player *plr2 = objmgr.GetPlayer(group->Players.begin()->first))
+ if (Player *plr2 = sObjectMgr.GetPlayer(group->Players.begin()->first))
{
BattleGround * bg = sBattleGroundMgr.GetBattleGroundTemplate(group->BgTypeId);
BattleGroundQueueTypeId bgQueueTypeId = BattleGroundMgr::BGQueueTypeId(group->BgTypeId, group->ArenaType);
@@ -364,6 +368,26 @@ void BattleGroundQueue::RemovePlayer(const uint64& guid, bool decreaseInvitedCou
}
}
+//returns true when player pl_guid is in queue and is invited to bgInstanceGuid
+bool BattleGroundQueue::IsPlayerInvited(const uint64& pl_guid, const uint32 bgInstanceGuid, const uint32 removeTime)
+{
+ ACE_Guard g(m_Lock);
+ QueuedPlayersMap::const_iterator qItr = m_QueuedPlayers.find(pl_guid);
+ return ( qItr != m_QueuedPlayers.end()
+ && qItr->second.GroupInfo->IsInvitedToBGInstanceGUID == bgInstanceGuid
+ && qItr->second.GroupInfo->RemoveInviteTime == removeTime );
+}
+
+bool BattleGroundQueue::GetPlayerGroupInfoData(const uint64& guid, GroupQueueInfo* ginfo)
+{
+ ACE_Guard g(m_Lock);
+ QueuedPlayersMap::const_iterator qItr = m_QueuedPlayers.find(guid);
+ if (qItr == m_QueuedPlayers.end())
+ return false;
+ *ginfo = *(qItr->second.GroupInfo);
+ return true;
+}
+
//Announce world message
void BattleGroundQueue::AnnounceWorld(GroupQueueInfo *ginfo, const uint64& playerGUID, bool isAddedToQueue)
{
@@ -386,7 +410,7 @@ void BattleGroundQueue::AnnounceWorld(GroupQueueInfo *ginfo, const uint64& playe
{
if (sWorld.getConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE))
{
- Player *plr = objmgr.GetPlayer(playerGUID);
+ Player *plr = sObjectMgr.GetPlayer(playerGUID);
BattleGround* bg = sBattleGroundMgr.GetBattleGroundTemplate(ginfo->BgTypeId);
if (!bg || !plr)
return;
@@ -446,7 +470,7 @@ bool BattleGroundQueue::InviteGroupToBG(GroupQueueInfo * ginfo, BattleGround * b
for(std::map::iterator itr = ginfo->Players.begin(); itr != ginfo->Players.end(); ++itr)
{
// get the player
- Player* plr = objmgr.GetPlayer(itr->first);
+ Player* plr = sObjectMgr.GetPlayer(itr->first);
// if offline, skip him, this should not happen - player is removed from queue when he logs out
if (!plr)
continue;
@@ -461,7 +485,7 @@ bool BattleGroundQueue::InviteGroupToBG(GroupQueueInfo * ginfo, BattleGround * b
plr->SetInviteForBattleGroundQueueType(bgQueueTypeId, ginfo->IsInvitedToBGInstanceGUID);
// create remind invite events
- BGQueueInviteEvent* inviteEvent = new BGQueueInviteEvent(plr->GetGUID(), ginfo->IsInvitedToBGInstanceGUID, bgTypeId, ginfo->RemoveInviteTime);
+ BGQueueInviteEvent* inviteEvent = new BGQueueInviteEvent(plr->GetGUID(), ginfo->IsInvitedToBGInstanceGUID, bgTypeId, ginfo->ArenaType, ginfo->RemoveInviteTime);
plr->m_Events.AddEvent(inviteEvent, plr->m_Events.CalculateTime(INVITATION_REMIND_TIME));
// create automatic remove events
BGQueueRemoveEvent* removeEvent = new BGQueueRemoveEvent(plr->GetGUID(), ginfo->IsInvitedToBGInstanceGUID, bgTypeId, bgQueueTypeId, ginfo->RemoveInviteTime);
@@ -732,6 +756,7 @@ should be called from BattleGround::RemovePlayer function in some cases
*/
void BattleGroundQueue::Update(BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLevel queue_id, uint8 arenaType, bool isRated, uint32 arenaRating)
{
+ ACE_Guard guard(m_Lock);
//if no players in queue - do nothing
if( m_QueuedGroups[queue_id][BG_QUEUE_PREMADE_ALLIANCE].empty() &&
m_QueuedGroups[queue_id][BG_QUEUE_PREMADE_HORDE].empty() &&
@@ -1009,7 +1034,7 @@ void BattleGroundQueue::Update(BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLeve
bool BGQueueInviteEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
{
- Player* plr = objmgr.GetPlayer( m_PlayerGuid );
+ Player* plr = sObjectMgr.GetPlayer( m_PlayerGuid );
// player logged off (we should do nothing, he is correctly removed from queue in another procedure)
if (!plr)
return true;
@@ -1021,17 +1046,15 @@ bool BGQueueInviteEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
BattleGroundQueueTypeId bgQueueTypeId = BattleGroundMgr::BGQueueTypeId(bg->GetTypeID(), bg->GetArenaType());
uint32 queueSlot = plr->GetBattleGroundQueueIndex(bgQueueTypeId);
- if( queueSlot < PLAYER_MAX_BATTLEGROUND_QUEUES ) // player is in queue or in battleground
+ if (queueSlot < PLAYER_MAX_BATTLEGROUND_QUEUES) // player is in queue or in battleground
{
// check if player is invited to this bg
- BattleGroundQueue::QueuedPlayersMap const& qpMap = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].m_QueuedPlayers;
- BattleGroundQueue::QueuedPlayersMap::const_iterator qItr = qpMap.find(m_PlayerGuid);
- if( qItr != qpMap.end() && qItr->second.GroupInfo->IsInvitedToBGInstanceGUID == m_BgInstanceGUID
- && qItr->second.GroupInfo->RemoveInviteTime == m_RemoveTime )
+ BattleGroundQueue &bgQueue = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId];
+ if (bgQueue.IsPlayerInvited(m_PlayerGuid, m_BgInstanceGUID, m_RemoveTime))
{
WorldPacket data;
//we must send remaining time in queue
- sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME - INVITATION_REMIND_TIME, 0, qItr->second.GroupInfo->ArenaType);
+ sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME - INVITATION_REMIND_TIME, 0, m_ArenaType);
plr->GetSession()->SendPacket(&data);
}
}
@@ -1054,7 +1077,7 @@ void BGQueueInviteEvent::Abort(uint64 /*e_time*/)
*/
bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
{
- Player* plr = objmgr.GetPlayer( m_PlayerGuid );
+ Player* plr = sObjectMgr.GetPlayer( m_PlayerGuid );
if (!plr)
// player logged off (we should do nothing, he is correctly removed from queue in another procedure)
return true;
@@ -1064,22 +1087,19 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
//bg pointer can be NULL! so use it carefully!
uint32 queueSlot = plr->GetBattleGroundQueueIndex(m_BgQueueTypeId);
- if( queueSlot < PLAYER_MAX_BATTLEGROUND_QUEUES ) // player is in queue, or in Battleground
+ if (queueSlot < PLAYER_MAX_BATTLEGROUND_QUEUES) // player is in queue, or in Battleground
{
// check if player is in queue for this BG and if we are removing his invite event
- BattleGroundQueue::QueuedPlayersMap& qpMap = sBattleGroundMgr.m_BattleGroundQueues[m_BgQueueTypeId].m_QueuedPlayers;
- BattleGroundQueue::QueuedPlayersMap::iterator qMapItr = qpMap.find(m_PlayerGuid);
- if( qMapItr != qpMap.end() && qMapItr->second.GroupInfo
- && qMapItr->second.GroupInfo->IsInvitedToBGInstanceGUID == m_BgInstanceGUID
- && qMapItr->second.GroupInfo->RemoveInviteTime == m_RemoveTime )
+ BattleGroundQueue &bgQueue = sBattleGroundMgr.m_BattleGroundQueues[m_BgQueueTypeId];
+ if (bgQueue.IsPlayerInvited(m_PlayerGuid, m_BgInstanceGUID, m_RemoveTime))
{
sLog.outDebug("Battleground: removing player %u from bg queue for instance %u because of not pressing enter battle in time.",plr->GetGUIDLow(),m_BgInstanceGUID);
plr->RemoveBattleGroundQueueId(m_BgQueueTypeId);
- sBattleGroundMgr.m_BattleGroundQueues[m_BgQueueTypeId].RemovePlayer(m_PlayerGuid, true);
+ bgQueue.RemovePlayer(m_PlayerGuid, true);
//update queues if battleground isn't ended
- if (bg)
- sBattleGroundMgr.ScheduleQueueUpdate(m_BgQueueTypeId, m_BgTypeId, bg->GetQueueId());
+ if (bg && bg->isBattleGround() && bg->GetStatus() != STATUS_WAIT_LEAVE)
+ sBattleGroundMgr.ScheduleQueueUpdate(0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetQueueId());
WorldPacket data;
sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0);
@@ -1167,18 +1187,24 @@ void BattleGroundMgr::Update(uint32 diff)
// update scheduled queues
if (!m_QueueUpdateScheduler.empty())
{
- //copy vector and clear the other
- // TODO add lock
- // TODO maybe std::list would be better and then unlock after end of cycle
- std::vector scheduled(m_QueueUpdateScheduler);
- m_QueueUpdateScheduler.clear();
- // TODO drop lock
+ std::vector scheduled;
+ {
+ //create mutex
+ ACE_Guard guard(SchedulerLock);
+ //copy vector and clear the other
+ scheduled = std::vector(m_QueueUpdateScheduler);
+ m_QueueUpdateScheduler.clear();
+ //release lock
+ }
+
for (uint8 i = 0; i < scheduled.size(); i++)
{
- BattleGroundQueueTypeId bgQueueTypeId = BattleGroundQueueTypeId(scheduled[i] >> 16);
+ uint32 arenaRating = scheduled[i] >> 32;
+ uint8 arenaType = scheduled[i] >> 24 & 255;
+ BattleGroundQueueTypeId bgQueueTypeId = BattleGroundQueueTypeId(scheduled[i] >> 16 & 255);
BattleGroundTypeId bgTypeId = BattleGroundTypeId((scheduled[i] >> 8) & 255);
BGQueueIdBasedOnLevel queue_id = BGQueueIdBasedOnLevel(scheduled[i] & 255);
- m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, queue_id);
+ m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, queue_id, arenaType, arenaRating > 0, arenaRating);
}
}
@@ -1332,7 +1358,7 @@ void BattleGroundMgr::BuildPvpLogDataPacket(WorldPacket *data, BattleGround *bg)
for(int i = 1; i >= 0; --i)
{
uint32 at_id = bg->m_ArenaTeamIds[i];
- ArenaTeam * at = objmgr.GetArenaTeamById(at_id);
+ ArenaTeam * at = sObjectMgr.GetArenaTeamById(at_id);
if (at)
*data << at->GetName();
else
@@ -1364,7 +1390,7 @@ void BattleGroundMgr::BuildPvpLogDataPacket(WorldPacket *data, BattleGround *bg)
}
else
{
- Player *plr = objmgr.GetPlayer(itr->first);
+ Player *plr = sObjectMgr.GetPlayer(itr->first);
uint32 team = bg->GetPlayerTeam(itr->first);
if (!team && plr)
team = plr->GetTeam();
@@ -1597,7 +1623,7 @@ BattleGround * BattleGroundMgr::CreateNewBattleGround(BattleGroundTypeId bgTypeI
}
// generate a new instance id
- bg->SetInstanceID(MapManager::Instance().GenerateInstanceId()); // set instance id
+ bg->SetInstanceID(sMapMgr.GenerateInstanceId()); // set instance id
bg->SetClientInstanceID(CreateClientVisibleInstanceId(bgTypeId, queue_id));
// reset the new bg (set status to status_wait_queue from status_none)
@@ -1808,7 +1834,7 @@ void BattleGroundMgr::DistributeArenaPoints()
std::map PlayerPoints;
//at first update all points for all team members
- for(ObjectMgr::ArenaTeamMap::iterator team_itr = objmgr.GetArenaTeamMapBegin(); team_itr != objmgr.GetArenaTeamMapEnd(); ++team_itr)
+ for(ObjectMgr::ArenaTeamMap::iterator team_itr = sObjectMgr.GetArenaTeamMapBegin(); team_itr != sObjectMgr.GetArenaTeamMapEnd(); ++team_itr)
{
if (ArenaTeam * at = team_itr->second)
{
@@ -1822,7 +1848,7 @@ void BattleGroundMgr::DistributeArenaPoints()
//update to database
CharacterDatabase.PExecute("UPDATE characters SET arena_pending_points = '%u' WHERE guid = '%u'", plr_itr->second, plr_itr->first);
//add points if player is online
- Player* pl = objmgr.GetPlayer(plr_itr->first);
+ Player* pl = sObjectMgr.GetPlayer(plr_itr->first);
if (pl)
pl->ModifyArenaPoints(plr_itr->second);
}
@@ -1832,7 +1858,7 @@ void BattleGroundMgr::DistributeArenaPoints()
sWorld.SendWorldText(LANG_DIST_ARENA_POINTS_ONLINE_END);
sWorld.SendWorldText(LANG_DIST_ARENA_POINTS_TEAM_START);
- for(ObjectMgr::ArenaTeamMap::iterator titr = objmgr.GetArenaTeamMapBegin(); titr != objmgr.GetArenaTeamMapEnd(); ++titr)
+ for(ObjectMgr::ArenaTeamMap::iterator titr = sObjectMgr.GetArenaTeamMapBegin(); titr != sObjectMgr.GetArenaTeamMapEnd(); ++titr)
{
if (ArenaTeam * at = titr->second)
{
@@ -2009,11 +2035,11 @@ void BattleGroundMgr::ToggleArenaTesting()
sWorld.SendWorldText(LANG_DEBUG_ARENA_OFF);
}
-void BattleGroundMgr::ScheduleQueueUpdate(BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLevel queue_id)
+void BattleGroundMgr::ScheduleQueueUpdate(uint32 arenaRating, uint8 arenaType, BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLevel queue_id)
{
- //This method must be atomic, TODO add mutex
+ ACE_Guard guard(SchedulerLock);
//we will use only 1 number created of bgTypeId and queue_id
- uint32 schedule_id = (bgQueueTypeId << 16) | (bgTypeId << 8) | queue_id;
+ uint64 schedule_id = ((uint64)arenaRating << 32) | (arenaType << 24) | (bgQueueTypeId << 16) | (bgTypeId << 8) | queue_id;
bool found = false;
for (uint8 i = 0; i < m_QueueUpdateScheduler.size(); i++)
{
diff --git a/src/game/BattleGroundMgr.h b/src/game/BattleGroundMgr.h
index 4d72d9656..36f097cdb 100644
--- a/src/game/BattleGroundMgr.h
+++ b/src/game/BattleGroundMgr.h
@@ -23,6 +23,7 @@
#include "Policies/Singleton.h"
#include "Utilities/EventProcessor.h"
#include "BattleGround.h"
+#include "ace/Recursive_Thread_Mutex.h"
typedef std::map BattleGroundSet;
@@ -83,12 +84,19 @@ class BattleGroundQueue
GroupQueueInfo * AddGroup(Player * leader, BattleGroundTypeId bgTypeId, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 ArenaTeamId = 0);
void AddPlayer(Player *plr, GroupQueueInfo *ginfo);
void RemovePlayer(const uint64& guid, bool decreaseInvitedCount);
+ bool IsPlayerInvited(const uint64& pl_guid, const uint32 bgInstanceGuid, const uint32 removeTime);
+ bool GetPlayerGroupInfoData(const uint64& guid, GroupQueueInfo* ginfo);
void PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* ginfo, BGQueueIdBasedOnLevel queue_id);
uint32 GetAverageQueueWaitTime(GroupQueueInfo* ginfo, BGQueueIdBasedOnLevel queue_id);
void DecreaseGroupLength(uint32 queueId, uint32 AsGroup);
void AnnounceWorld(GroupQueueInfo *ginfo, const uint64& playerGUID, bool isAddedToQueue);
+ private:
+ //mutex that should not allow changing private data, nor allowing to update Queue during private data change.
+ ACE_Recursive_Thread_Mutex m_Lock;
+
+
typedef std::map QueuedPlayersMap;
QueuedPlayersMap m_QueuedPlayers;
@@ -123,8 +131,6 @@ class BattleGroundQueue
//one selection pool for horde, other one for alliance
SelectionPool m_SelectionPools[BG_TEAMS_COUNT];
- private:
-
bool InviteGroupToBG(GroupQueueInfo * ginfo, BattleGround * bg, uint32 side);
uint32 m_WaitTimes[BG_TEAMS_COUNT][MAX_BATTLEGROUND_QUEUES][COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME];
uint32 m_WaitTimeLastPlayer[BG_TEAMS_COUNT][MAX_BATTLEGROUND_QUEUES];
@@ -138,8 +144,8 @@ class BattleGroundQueue
class BGQueueInviteEvent : public BasicEvent
{
public:
- BGQueueInviteEvent(const uint64& pl_guid, uint32 BgInstanceGUID, BattleGroundTypeId BgTypeId, uint32 removeTime) :
- m_PlayerGuid(pl_guid), m_BgInstanceGUID(BgInstanceGUID), m_BgTypeId(BgTypeId), m_RemoveTime(removeTime)
+ BGQueueInviteEvent(const uint64& pl_guid, uint32 BgInstanceGUID, BattleGroundTypeId BgTypeId, uint8 arenaType, uint32 removeTime) :
+ m_PlayerGuid(pl_guid), m_BgInstanceGUID(BgInstanceGUID), m_BgTypeId(BgTypeId), m_ArenaType(arenaType), m_RemoveTime(removeTime)
{
};
virtual ~BGQueueInviteEvent() {};
@@ -150,6 +156,7 @@ class BGQueueInviteEvent : public BasicEvent
uint64 m_PlayerGuid;
uint32 m_BgInstanceGUID;
BattleGroundTypeId m_BgTypeId;
+ uint8 m_ArenaType;
uint32 m_RemoveTime;
};
@@ -219,7 +226,7 @@ class BattleGroundMgr
BGFreeSlotQueueType BGFreeSlotQueue[MAX_BATTLEGROUND_TYPE_ID];
- void ScheduleQueueUpdate(BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLevel queue_id);
+ void ScheduleQueueUpdate(uint32 arenaRating, uint8 arenaType, BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLevel queue_id);
uint32 GetMaxRatingDifference() const;
uint32 GetRatingDiscardTimer() const;
uint32 GetPrematureFinishTime() const;
@@ -265,13 +272,14 @@ class BattleGroundMgr
static bool IsBGWeekend(BattleGroundTypeId bgTypeId);
private:
+ ACE_Thread_Mutex SchedulerLock;
BattleMastersMap mBattleMastersMap;
CreatureBattleEventIndexesMap m_CreatureBattleEventIndexMap;
GameObjectBattleEventIndexesMap m_GameObjectBattleEventIndexMap;
/* Battlegrounds */
BattleGroundSet m_BattleGrounds[MAX_BATTLEGROUND_TYPE_ID];
- std::vectorm_QueueUpdateScheduler;
+ std::vector m_QueueUpdateScheduler;
std::set m_ClientBattleGroundIds[MAX_BATTLEGROUND_TYPE_ID][MAX_BATTLEGROUND_QUEUES]; //the instanceids just visible for the client
uint32 m_NextRatingDiscardUpdate;
time_t m_NextAutoDistributionTime;
diff --git a/src/game/Channel.cpp b/src/game/Channel.cpp
index e0fca88c6..026c2eae2 100644
--- a/src/game/Channel.cpp
+++ b/src/game/Channel.cpp
@@ -77,7 +77,7 @@ void Channel::Join(uint64 p, const char *pass)
return;
}
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if(plr)
{
@@ -135,7 +135,7 @@ void Channel::Leave(uint64 p, bool send)
}
else
{
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if(send)
{
@@ -170,7 +170,7 @@ void Channel::Leave(uint64 p, bool send)
void Channel::KickOrBan(uint64 good, const char *badname, bool ban)
{
AccountTypes sec = SEC_PLAYER;
- Player *gplr = objmgr.GetPlayer(good);
+ Player *gplr = sObjectMgr.GetPlayer(good);
if(gplr)
sec = gplr->GetSession()->GetSecurity();
@@ -188,7 +188,7 @@ void Channel::KickOrBan(uint64 good, const char *badname, bool ban)
}
else
{
- Player *bad = objmgr.GetPlayer(badname);
+ Player *bad = sObjectMgr.GetPlayer(badname);
if(bad == NULL || !IsOn(bad->GetGUID()))
{
WorldPacket data;
@@ -231,7 +231,7 @@ void Channel::KickOrBan(uint64 good, const char *badname, bool ban)
void Channel::UnBan(uint64 good, const char *badname)
{
uint32 sec = 0;
- Player *gplr = objmgr.GetPlayer(good);
+ Player *gplr = sObjectMgr.GetPlayer(good);
if(gplr)
sec = gplr->GetSession()->GetSecurity();
@@ -249,7 +249,7 @@ void Channel::UnBan(uint64 good, const char *badname)
}
else
{
- Player *bad = objmgr.GetPlayer(badname);
+ Player *bad = sObjectMgr.GetPlayer(badname);
if(bad == NULL || !IsBanned(bad->GetGUID()))
{
WorldPacket data;
@@ -270,7 +270,7 @@ void Channel::UnBan(uint64 good, const char *badname)
void Channel::Password(uint64 p, const char *pass)
{
uint32 sec = 0;
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if(plr)
sec = plr->GetSession()->GetSecurity();
@@ -298,7 +298,7 @@ void Channel::Password(uint64 p, const char *pass)
void Channel::SetMode(uint64 p, const char *p2n, bool mod, bool set)
{
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if (!plr)
return;
@@ -318,7 +318,7 @@ void Channel::SetMode(uint64 p, const char *p2n, bool mod, bool set)
}
else
{
- Player *newp = objmgr.GetPlayer(p2n);
+ Player *newp = sObjectMgr.GetPlayer(p2n);
if(!newp)
{
WorldPacket data;
@@ -367,7 +367,7 @@ void Channel::SetMode(uint64 p, const char *p2n, bool mod, bool set)
void Channel::SetOwner(uint64 p, const char *newname)
{
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if (!plr)
return;
@@ -389,7 +389,7 @@ void Channel::SetOwner(uint64 p, const char *newname)
return;
}
- Player *newp = objmgr.GetPlayer(newname);
+ Player *newp = sObjectMgr.GetPlayer(newname);
if(newp == NULL || !IsOn(newp->GetGUID()))
{
WorldPacket data;
@@ -451,7 +451,7 @@ void Channel::List(Player* player)
uint32 count = 0;
for(PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
{
- Player *plr = objmgr.GetPlayer(i->first);
+ Player *plr = sObjectMgr.GetPlayer(i->first);
// PLAYER can't see MODERATOR, GAME MASTER, ADMINISTRATOR characters
// MODERATOR, GAME MASTER, ADMINISTRATOR can see all
@@ -473,7 +473,7 @@ void Channel::List(Player* player)
void Channel::Announce(uint64 p)
{
uint32 sec = 0;
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if(plr)
sec = plr->GetSession()->GetSecurity();
@@ -505,7 +505,7 @@ void Channel::Announce(uint64 p)
void Channel::Moderate(uint64 p)
{
uint32 sec = 0;
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if(plr)
sec = plr->GetSession()->GetSecurity();
@@ -542,7 +542,7 @@ void Channel::Say(uint64 p, const char *what, uint32 lang)
lang = LANG_UNIVERSAL;
uint32 sec = 0;
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if(plr)
sec = plr->GetSession()->GetSecurity();
@@ -593,7 +593,7 @@ void Channel::Invite(uint64 p, const char *newname)
return;
}
- Player *newp = objmgr.GetPlayer(newname);
+ Player *newp = sObjectMgr.GetPlayer(newname);
if(!newp)
{
WorldPacket data;
@@ -602,7 +602,7 @@ void Channel::Invite(uint64 p, const char *newname)
return;
}
- Player *plr = objmgr.GetPlayer(p);
+ Player *plr = sObjectMgr.GetPlayer(p);
if (!plr)
return;
@@ -665,7 +665,7 @@ void Channel::SendToAll(WorldPacket *data, uint64 p)
{
for(PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
{
- Player *plr = objmgr.GetPlayer(i->first);
+ Player *plr = sObjectMgr.GetPlayer(i->first);
if(plr)
{
if(!p || !plr->GetSocial()->HasIgnore(GUID_LOPART(p)))
@@ -680,7 +680,7 @@ void Channel::SendToAllButOne(WorldPacket *data, uint64 who)
{
if(i->first != who)
{
- Player *plr = objmgr.GetPlayer(i->first);
+ Player *plr = sObjectMgr.GetPlayer(i->first);
if(plr)
plr->GetSession()->SendPacket(data);
}
@@ -689,7 +689,7 @@ void Channel::SendToAllButOne(WorldPacket *data, uint64 who)
void Channel::SendToOne(WorldPacket *data, uint64 who)
{
- Player *plr = objmgr.GetPlayer(who);
+ Player *plr = sObjectMgr.GetPlayer(who);
if(plr)
plr->GetSession()->SendPacket(data);
}
@@ -793,7 +793,7 @@ void Channel::MakeChannelOwner(WorldPacket *data)
{
std::string name = "";
- if(!objmgr.GetPlayerNameByGUID(m_ownerGUID, name) || name.empty())
+ if(!sObjectMgr.GetPlayerNameByGUID(m_ownerGUID, name) || name.empty())
name = "PLAYER_NOT_FOUND";
MakeNotifyPacket(data, CHAT_CHANNEL_OWNER_NOTICE);
diff --git a/src/game/CharacterHandler.cpp b/src/game/CharacterHandler.cpp
index aa550947b..815a48c5e 100644
--- a/src/game/CharacterHandler.cpp
+++ b/src/game/CharacterHandler.cpp
@@ -255,14 +255,14 @@ void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
return;
}
- if (GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(name))
+ if (GetSecurity() == SEC_PLAYER && sObjectMgr.IsReservedName(name))
{
data << (uint8)CHAR_NAME_RESERVED;
SendPacket( &data );
return;
}
- if (objmgr.GetPlayerGUIDByName(name))
+ if (sObjectMgr.GetPlayerGUIDByName(name))
{
data << (uint8)CHAR_CREATE_NAME_IN_USE;
SendPacket( &data );
@@ -432,7 +432,7 @@ void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
recv_data >> hairStyle >> hairColor >> facialHair >> outfitId;
Player *pNewChar = new Player(this);
- if(!pNewChar->Create( objmgr.GenerateLowGuid(HIGHGUID_PLAYER), name, race_, class_, gender, skin, face, hairStyle, hairColor, facialHair, outfitId ))
+ if(!pNewChar->Create( sObjectMgr.GenerateLowGuid(HIGHGUID_PLAYER), name, race_, class_, gender, skin, face, hairStyle, hairColor, facialHair, outfitId ))
{
// Player not create (race/class problem?)
delete pNewChar;
@@ -469,14 +469,14 @@ void WorldSession::HandleCharDeleteOpcode( WorldPacket & recv_data )
recv_data >> guid;
// can't delete loaded character
- if(objmgr.GetPlayer(guid))
+ if(sObjectMgr.GetPlayer(guid))
return;
uint32 accountId = 0;
std::string name;
// is guild leader
- if(objmgr.GetGuildByLeader(guid))
+ if(sObjectMgr.GetGuildByLeader(guid))
{
WorldPacket data(SMSG_CHAR_DELETE, 1);
data << (uint8)CHAR_DELETE_FAILED_GUILD_LEADER;
@@ -485,7 +485,7 @@ void WorldSession::HandleCharDeleteOpcode( WorldPacket & recv_data )
}
// is arena team captain
- if(objmgr.GetArenaTeamByCaptain(guid))
+ if(sObjectMgr.GetArenaTeamByCaptain(guid))
{
WorldPacket data(SMSG_CHAR_DELETE, 1);
data << (uint8)CHAR_DELETE_FAILED_ARENA_CAPTAIN;
@@ -637,7 +637,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder *holder)
if(pCurrChar->GetGuildId() != 0)
{
- Guild* guild = objmgr.GetGuildById(pCurrChar->GetGuildId());
+ Guild* guild = sObjectMgr.GetGuildById(pCurrChar->GetGuildId());
if(guild)
{
data.Initialize(SMSG_GUILD_EVENT, (2+guild->GetMOTD().size()+1));
@@ -692,14 +692,14 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder *holder)
if (!pCurrChar->GetMap()->Add(pCurrChar))
{
- AreaTrigger const* at = objmgr.GetGoBackTrigger(pCurrChar->GetMapId());
+ AreaTrigger const* at = sObjectMgr.GetGoBackTrigger(pCurrChar->GetMapId());
if(at)
pCurrChar->TeleportTo(at->target_mapId, at->target_X, at->target_Y, at->target_Z, pCurrChar->GetOrientation());
else
pCurrChar->TeleportTo(pCurrChar->m_homebindMapId, pCurrChar->m_homebindX, pCurrChar->m_homebindY, pCurrChar->m_homebindZ, pCurrChar->GetOrientation());
}
- ObjectAccessor::Instance().AddObject(pCurrChar);
+ sObjectAccessor.AddObject(pCurrChar);
//sLog.outDebug("Player %s added to Map.",pCurrChar->GetName());
pCurrChar->SendInitialPacketsAfterAddToMap();
@@ -918,7 +918,7 @@ void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
}
// check name limitations
- if (GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(newname))
+ if (GetSecurity() == SEC_PLAYER && sObjectMgr.IsReservedName(newname))
{
WorldPacket data(SMSG_CHAR_RENAME, 1);
data << uint8(CHAR_NAME_RESERVED);
@@ -981,7 +981,7 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
// not accept declined names for unsupported languages
std::string name;
- if(!objmgr.GetPlayerNameByGUID(guid, name))
+ if(!sObjectMgr.GetPlayerNameByGUID(guid, name))
{
WorldPacket data(SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, 4+8);
data << uint32(1);
@@ -1181,7 +1181,7 @@ void WorldSession::HandleCharCustomize(WorldPacket& recv_data)
}
// check name limitations
- if (GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(newname))
+ if (GetSecurity() == SEC_PLAYER && sObjectMgr.IsReservedName(newname))
{
WorldPacket data(SMSG_CHAR_CUSTOMIZE, 1);
data << uint8(CHAR_NAME_RESERVED);
@@ -1190,7 +1190,7 @@ void WorldSession::HandleCharCustomize(WorldPacket& recv_data)
}
// character with this name already exist
- if (uint64 newguid = objmgr.GetPlayerGUIDByName(newname))
+ if (uint64 newguid = sObjectMgr.GetPlayerGUIDByName(newname))
{
if (newguid != guid)
{
diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp
index 2e738bd7f..20473b17e 100644
--- a/src/game/Chat.cpp
+++ b/src/game/Chat.cpp
@@ -698,7 +698,7 @@ bool ChatHandler::HasLowerSecurity(Player* target, uint64 guid, bool strong)
if (target)
target_session = target->GetSession();
else if (guid)
- target_account = objmgr.GetPlayerAccountIdByGUID(guid);
+ target_account = sObjectMgr.GetPlayerAccountIdByGUID(guid);
if(!target_session && !target_account)
{
@@ -1164,7 +1164,7 @@ valid examples:
// read item entry
reader.getline(buffer, 256, ':');
- linkedItem= objmgr.GetItemPrototype(atoi(buffer));
+ linkedItem = ObjectMgr::GetItemPrototype(atoi(buffer));
if(!linkedItem)
{
#ifdef MANGOS_DEBUG
@@ -1243,7 +1243,7 @@ valid examples:
c = reader.peek();
}
- linkedQuest = objmgr.GetQuestTemplate(questid);
+ linkedQuest = sObjectMgr.GetQuestTemplate(questid);
if(!linkedQuest)
{
@@ -1414,7 +1414,7 @@ valid examples:
if (linkedSpell->Attributes & SPELL_ATTR_TRADESPELL)
{
// lookup skillid
- SkillLineAbilityMapBounds bounds = spellmgr.GetSkillLineAbilityMapBounds(linkedSpell->Id);
+ SkillLineAbilityMapBounds bounds = sSpellMgr.GetSkillLineAbilityMapBounds(linkedSpell->Id);
if (bounds.first == bounds.second)
{
return false;
@@ -1461,7 +1461,7 @@ valid examples:
{
if (linkedQuest->GetTitle() != buffer)
{
- QuestLocale const *ql = objmgr.GetQuestLocale(linkedQuest->GetQuestId());
+ QuestLocale const *ql = sObjectMgr.GetQuestLocale(linkedQuest->GetQuestId());
if (!ql)
{
@@ -1502,12 +1502,12 @@ valid examples:
if (expectedName != buffer)
{
- ItemLocale const *il = objmgr.GetItemLocale(linkedItem->ItemId);
+ ItemLocale const *il = sObjectMgr.GetItemLocale(linkedItem->ItemId);
bool foundName = false;
for(uint8 i=LOCALE_koKR; i= il->Name.size())
// using strange database/client combinations can lead to this case
expectedName = linkedItem->Name1;
@@ -1758,7 +1758,7 @@ Player * ChatHandler::getSelectedPlayer()
if (guid == 0)
return m_session->GetPlayer();
- return objmgr.GetPlayer(guid);
+ return sObjectMgr.GetPlayer(guid);
}
Unit* ChatHandler::getSelectedUnit()
@@ -1935,7 +1935,7 @@ GameObject* ChatHandler::GetObjectGlobalyWithGuidOrNearWithDbGuid(uint32 lowguid
GameObject* obj = pl->GetMap()->GetGameObject(MAKE_NEW_GUID(lowguid, entry, HIGHGUID_GAMEOBJECT));
- if(!obj && objmgr.GetGOData(lowguid)) // guid is DB guid of object
+ if(!obj && sObjectMgr.GetGOData(lowguid)) // guid is DB guid of object
{
// search near player then
CellPair p(MaNGOS::ComputeCellPair(pl->GetPositionX(), pl->GetPositionY()));
@@ -2036,9 +2036,9 @@ GameTele const* ChatHandler::extractGameTeleFromLink(char* text)
// id case (explicit or from shift link)
if(cId[0] >= '0' || cId[0] >= '9')
if(uint32 id = atoi(cId))
- return objmgr.GetGameTele(id);
+ return sObjectMgr.GetGameTele(id);
- return objmgr.GetGameTele(cId);
+ return sObjectMgr.GetGameTele(cId);
}
enum GuidLinkType
@@ -2075,10 +2075,10 @@ uint64 ChatHandler::extractGuidFromLink(char* text)
if(!normalizePlayerName(name))
return 0;
- if(Player* player = objmgr.GetPlayer(name.c_str()))
+ if(Player* player = sObjectMgr.GetPlayer(name.c_str()))
return player->GetGUID();
- if(uint64 guid = objmgr.GetPlayerGUIDByName(name))
+ if(uint64 guid = sObjectMgr.GetPlayerGUIDByName(name))
return guid;
return 0;
@@ -2087,7 +2087,7 @@ uint64 ChatHandler::extractGuidFromLink(char* text)
{
uint32 lowguid = (uint32)atol(idS);
- if(CreatureData const* data = objmgr.GetCreatureData(lowguid) )
+ if(CreatureData const* data = sObjectMgr.GetCreatureData(lowguid) )
return MAKE_NEW_GUID(lowguid,data->id,HIGHGUID_UNIT);
else
return 0;
@@ -2096,7 +2096,7 @@ uint64 ChatHandler::extractGuidFromLink(char* text)
{
uint32 lowguid = (uint32)atol(idS);
- if(GameObjectData const* data = objmgr.GetGOData(lowguid) )
+ if(GameObjectData const* data = sObjectMgr.GetGOData(lowguid) )
return MAKE_NEW_GUID(lowguid,data->id,HIGHGUID_GAMEOBJECT);
else
return 0;
@@ -2133,14 +2133,14 @@ bool ChatHandler::extractPlayerTarget(char* args, Player** player, uint64* playe
return false;
}
- Player* pl = objmgr.GetPlayer(name.c_str());
+ Player* pl = sObjectMgr.GetPlayer(name.c_str());
// if allowed player pointer
if(player)
*player = pl;
// if need guid value from DB (in name case for check player existence)
- uint64 guid = !pl && (player_guid || player_name) ? objmgr.GetPlayerGUIDByName(name) : 0;
+ uint64 guid = !pl && (player_guid || player_name) ? sObjectMgr.GetPlayerGUIDByName(name) : 0;
// if allowed player guid (if no then only online players allowed)
if(player_guid)
@@ -2226,7 +2226,7 @@ int ChatHandler::GetSessionDbLocaleIndex() const
const char *CliHandler::GetMangosString(int32 entry) const
{
- return objmgr.GetMangosStringForDBCLocale(entry);
+ return sObjectMgr.GetMangosStringForDBCLocale(entry);
}
bool CliHandler::isAvailable(ChatCommand const& cmd) const
@@ -2258,5 +2258,5 @@ LocaleConstant CliHandler::GetSessionDbcLocale() const
int CliHandler::GetSessionDbLocaleIndex() const
{
- return objmgr.GetDBCLocaleIndex();
+ return sObjectMgr.GetDBCLocaleIndex();
}
diff --git a/src/game/ChatHandler.cpp b/src/game/ChatHandler.cpp
index edd647ee4..d043af46f 100644
--- a/src/game/ChatHandler.cpp
+++ b/src/game/ChatHandler.cpp
@@ -206,7 +206,7 @@ void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data )
break;
}
- Player *player = objmgr.GetPlayer(to.c_str());
+ Player *player = sObjectMgr.GetPlayer(to.c_str());
uint32 tSecurity = GetSecurity();
uint32 pSecurity = player ? player->GetSession()->GetSecurity() : SEC_PLAYER;
if (!player || (tSecurity == SEC_PLAYER && pSecurity > SEC_PLAYER && !player->isAcceptWhispers()))
@@ -280,7 +280,7 @@ void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data )
if (GetPlayer()->GetGuildId())
{
- Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
+ Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if (guild)
guild->BroadcastToGuild(this, msg, lang == LANG_ADDON ? LANG_ADDON : LANG_UNIVERSAL);
}
@@ -306,7 +306,7 @@ void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data )
if (GetPlayer()->GetGuildId())
{
- Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
+ Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if (guild)
guild->BroadcastToOfficers(this, msg, lang == LANG_ADDON ? LANG_ADDON : LANG_UNIVERSAL);
}
@@ -602,7 +602,7 @@ void WorldSession::HandleChatIgnoredOpcode(WorldPacket& recv_data )
recv_data >> iguid;
recv_data >> unk; // probably related to spam reporting
- Player *player = objmgr.GetPlayer(iguid);
+ Player *player = sObjectMgr.GetPlayer(iguid);
if(!player || !player->GetSession())
return;
diff --git a/src/game/Corpse.cpp b/src/game/Corpse.cpp
index 166bc34ce..e31a2d94f 100644
--- a/src/game/Corpse.cpp
+++ b/src/game/Corpse.cpp
@@ -50,7 +50,7 @@ void Corpse::AddToWorld()
{
///- Register the corpse for guid lookup
if(!IsInWorld())
- ObjectAccessor::Instance().AddObject(this);
+ sObjectAccessor.AddObject(this);
Object::AddToWorld();
}
@@ -59,7 +59,7 @@ void Corpse::RemoveFromWorld()
{
///- Remove the corpse from the accessor
if(IsInWorld())
- ObjectAccessor::Instance().RemoveObject(this);
+ sObjectAccessor.RemoveObject(this);
Object::RemoveFromWorld();
}
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp
index 7ef4f89ae..812def559 100644
--- a/src/game/Creature.cpp
+++ b/src/game/Creature.cpp
@@ -26,7 +26,7 @@
#include "QuestDef.h"
#include "GossipDef.h"
#include "Player.h"
-#include "PoolHandler.h"
+#include "PoolManager.h"
#include "Opcodes.h"
#include "Log.h"
#include "LootMgr.h"
@@ -181,7 +181,7 @@ void Creature::RemoveCorpse()
*/
bool Creature::InitEntry(uint32 Entry, uint32 team, const CreatureData *data )
{
- CreatureInfo const *normalInfo = objmgr.GetCreatureTemplate(Entry);
+ CreatureInfo const *normalInfo = ObjectMgr::GetCreatureTemplate(Entry);
if(!normalInfo)
{
sLog.outErrorDb("Creature::UpdateEntry creature entry %u does not exist.", Entry);
@@ -199,7 +199,7 @@ bool Creature::InitEntry(uint32 Entry, uint32 team, const CreatureData *data )
// we already have valid Map pointer for current creature!
if (GetMap()->GetSpawnMode() > diff)
{
- cinfo = objmgr.GetCreatureTemplate(normalInfo->DifficultyEntry[diff]);
+ cinfo = ObjectMgr::GetCreatureTemplate(normalInfo->DifficultyEntry[diff]);
if (!cinfo)
{
// maybe check such things already at startup
@@ -219,14 +219,14 @@ bool Creature::InitEntry(uint32 Entry, uint32 team, const CreatureData *data )
// known valid are: CLASS_WARRIOR,CLASS_PALADIN,CLASS_ROGUE,CLASS_MAGE
SetByteValue(UNIT_FIELD_BYTES_0, 1, uint8(cinfo->unit_class));
- uint32 display_id = objmgr.ChooseDisplayId(team, GetCreatureInfo(), data);
+ uint32 display_id = sObjectMgr.ChooseDisplayId(team, GetCreatureInfo(), data);
if (!display_id) // Cancel load if no display id
{
sLog.outErrorDb("Creature (Entry: %u) has model %u not found in table `creature_model_info`, can't load. ", Entry, display_id);
return false;
}
- CreatureModelInfo const *minfo = objmgr.GetCreatureModelRandomGender(display_id);
+ CreatureModelInfo const *minfo = sObjectMgr.GetCreatureModelRandomGender(display_id);
if (!minfo) // Cancel load if no model defined
{
sLog.outErrorDb("Creature (Entry: %u) has no model defined in table `creature_template`, can't load. ",Entry);
@@ -369,9 +369,9 @@ void Creature::Update(uint32 diff)
//Call AI respawn virtual function
i_AI->JustRespawned();
- uint16 poolid = poolhandler.IsPartOfAPool(GetGUIDLow(), GetTypeId());
+ uint16 poolid = sPoolMgr.IsPartOfAPool(GetGUIDLow(), GetTypeId());
if (poolid)
- poolhandler.UpdatePool(poolid, GetGUIDLow(), TYPEID_UNIT);
+ sPoolMgr.UpdatePool(poolid, GetGUIDLow(), TYPEID_UNIT);
else
GetMap()->Add(this);
}
@@ -398,7 +398,7 @@ void Creature::Update(uint32 diff)
}
else
{
- Group* group = objmgr.GetGroupByLeader(lootingGroupLeaderGUID);
+ Group* group = sObjectMgr.GetGroupByLeader(lootingGroupLeaderGUID);
if (group)
group->EndRoll();
m_groupLootTimer = 0;
@@ -761,7 +761,7 @@ void Creature::prepareGossipMenu( Player *pPlayer,uint32 gossipid )
if(gso->Id==1)
{
uint32 textid=GetNpcTextId();
- GossipText const* gossiptext=objmgr.GetGossipText(textid);
+ GossipText const* gossiptext=sObjectMgr.GetGossipText(textid);
if(!gossiptext)
cantalking=false;
}
@@ -835,7 +835,7 @@ void Creature::prepareGossipMenu( Player *pPlayer,uint32 gossipid )
int loc_idx = pPlayer->GetSession()->GetSessionDbLocaleIndex();
if (loc_idx >= 0)
{
- NpcOptionLocale const *no = objmgr.GetNpcOptionLocale(gso->Id);
+ NpcOptionLocale const *no = sObjectMgr.GetNpcOptionLocale(gso->Id);
if (no)
{
if (no->OptionText.size() > loc_idx && !no->OptionText[loc_idx].empty())
@@ -1031,7 +1031,7 @@ uint32 Creature::GetNpcTextId()
if (!m_DBTableGuid)
return DEFAULT_GOSSIP_MESSAGE;
- if(uint32 pos = objmgr.GetNpcGossip(m_DBTableGuid))
+ if(uint32 pos = sObjectMgr.GetNpcGossip(m_DBTableGuid))
return pos;
return DEFAULT_GOSSIP_MESSAGE;
@@ -1054,7 +1054,7 @@ void Creature::LoadGossipOptions()
uint32 npcflags=GetUInt32Value(UNIT_NPC_FLAGS);
- CacheNpcOptionList const& noList = objmgr.GetNpcOptions ();
+ CacheNpcOptionList const& noList = sObjectMgr.GetNpcOptions ();
for (CacheNpcOptionList::const_iterator i = noList.begin (); i != noList.end (); ++i)
if(i->NpcFlag & npcflags)
addGossipOption(*i);
@@ -1116,7 +1116,7 @@ void Creature::SaveToDB()
{
// this should only be used when the creature has already been loaded
// preferably after adding to map, because mapid may not be valid otherwise
- CreatureData const *data = objmgr.GetCreatureData(m_DBTableGuid);
+ CreatureData const *data = sObjectMgr.GetCreatureData(m_DBTableGuid);
if(!data)
{
sLog.outError("Creature::SaveToDB failed, cannot get creature data!");
@@ -1131,7 +1131,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
// update in loaded data
if (!m_DBTableGuid)
m_DBTableGuid = GetGUIDLow();
- CreatureData& data = objmgr.NewOrExistCreatureData(m_DBTableGuid);
+ CreatureData& data = sObjectMgr.NewOrExistCreatureData(m_DBTableGuid);
uint32 displayId = GetNativeDisplayId();
@@ -1143,22 +1143,22 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
displayId != cinfo->DisplayID_H[0] && displayId != cinfo->DisplayID_H[1])
{
if (cinfo->DisplayID_A[0])
- if (CreatureModelInfo const *minfo = objmgr.GetCreatureModelInfo(cinfo->DisplayID_A[0]))
+ if (CreatureModelInfo const *minfo = sObjectMgr.GetCreatureModelInfo(cinfo->DisplayID_A[0]))
if(displayId == minfo->modelid_other_gender)
displayId = 0;
if (displayId && cinfo->DisplayID_A[1])
- if (CreatureModelInfo const *minfo = objmgr.GetCreatureModelInfo(cinfo->DisplayID_A[1]))
+ if (CreatureModelInfo const *minfo = sObjectMgr.GetCreatureModelInfo(cinfo->DisplayID_A[1]))
if(displayId == minfo->modelid_other_gender)
displayId = 0;
if (displayId && cinfo->DisplayID_H[0])
- if (CreatureModelInfo const *minfo = objmgr.GetCreatureModelInfo(cinfo->DisplayID_H[0]))
+ if (CreatureModelInfo const *minfo = sObjectMgr.GetCreatureModelInfo(cinfo->DisplayID_H[0]))
if(displayId == minfo->modelid_other_gender)
displayId = 0;
if (displayId && cinfo->DisplayID_H[1])
- if (CreatureModelInfo const *minfo = objmgr.GetCreatureModelInfo(cinfo->DisplayID_H[1]))
+ if (CreatureModelInfo const *minfo = sObjectMgr.GetCreatureModelInfo(cinfo->DisplayID_H[1]))
if(displayId == minfo->modelid_other_gender)
displayId = 0;
}
@@ -1327,7 +1327,7 @@ float Creature::GetSpellDamageMod(int32 Rank)
bool Creature::CreateFromProto(uint32 guidlow, uint32 Entry, uint32 team, const CreatureData *data)
{
- CreatureInfo const *cinfo = objmgr.GetCreatureTemplate(Entry);
+ CreatureInfo const *cinfo = ObjectMgr::GetCreatureTemplate(Entry);
if(!cinfo)
{
sLog.outErrorDb("Creature entry %u does not exist.", Entry);
@@ -1345,7 +1345,7 @@ bool Creature::CreateFromProto(uint32 guidlow, uint32 Entry, uint32 team, const
bool Creature::LoadFromDB(uint32 guid, Map *map)
{
- CreatureData const* data = objmgr.GetCreatureData(guid);
+ CreatureData const* data = sObjectMgr.GetCreatureData(guid);
if(!data)
{
@@ -1364,7 +1364,7 @@ bool Creature::LoadFromDB(uint32 guid, Map *map)
return false;
}
else
- guid = objmgr.GenerateLowGuid(HIGHGUID_UNIT);
+ guid = sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT);
uint16 team = 0;
if(!Create(guid,map,data->phaseMask,data->id,team,data))
@@ -1384,7 +1384,7 @@ bool Creature::LoadFromDB(uint32 guid, Map *map)
m_isDeadByDefault = data->is_dead;
m_deathState = m_isDeadByDefault ? DEAD : ALIVE;
- m_respawnTime = objmgr.GetCreatureRespawnTime(m_DBTableGuid,GetInstanceId());
+ m_respawnTime = sObjectMgr.GetCreatureRespawnTime(m_DBTableGuid,GetInstanceId());
if(m_respawnTime > time(NULL)) // not ready to respawn
{
m_deathState = DEAD;
@@ -1398,7 +1398,7 @@ bool Creature::LoadFromDB(uint32 guid, Map *map)
else if(m_respawnTime) // respawn time set but expired
{
m_respawnTime = 0;
- objmgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),0);
+ sObjectMgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),0);
}
uint32 curhealth = data->curhealth;
@@ -1434,7 +1434,7 @@ void Creature::LoadEquipment(uint32 equip_entry, bool force)
return;
}
- EquipmentInfo const *einfo = objmgr.GetEquipmentInfo(equip_entry);
+ EquipmentInfo const *einfo = sObjectMgr.GetEquipmentInfo(equip_entry);
if (!einfo)
return;
@@ -1445,7 +1445,7 @@ void Creature::LoadEquipment(uint32 equip_entry, bool force)
bool Creature::hasQuest(uint32 quest_id) const
{
- QuestRelations const& qr = objmgr.mCreatureQuestRelations;
+ QuestRelations const& qr = sObjectMgr.mCreatureQuestRelations;
for(QuestRelations::const_iterator itr = qr.lower_bound(GetEntry()); itr != qr.upper_bound(GetEntry()); ++itr)
{
if(itr->second==quest_id)
@@ -1456,7 +1456,7 @@ bool Creature::hasQuest(uint32 quest_id) const
bool Creature::hasInvolvedQuest(uint32 quest_id) const
{
- QuestRelations const& qr = objmgr.mCreatureQuestInvolvedRelations;
+ QuestRelations const& qr = sObjectMgr.mCreatureQuestInvolvedRelations;
for(QuestRelations::const_iterator itr = qr.lower_bound(GetEntry()); itr != qr.upper_bound(GetEntry()); ++itr)
{
if(itr->second==quest_id)
@@ -1473,8 +1473,8 @@ void Creature::DeleteFromDB()
return;
}
- objmgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),0);
- objmgr.DeleteCreatureData(m_DBTableGuid);
+ sObjectMgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),0);
+ sObjectMgr.DeleteCreatureData(m_DBTableGuid);
WorldDatabase.BeginTransaction();
WorldDatabase.PExecuteLog("DELETE FROM creature WHERE guid = '%u'", m_DBTableGuid);
@@ -1607,7 +1607,7 @@ void Creature::Respawn()
if(getDeathState()==DEAD)
{
if (m_DBTableGuid)
- objmgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),0);
+ sObjectMgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),0);
m_respawnTime = time(NULL); // respawn at next tick
}
}
@@ -1902,9 +1902,9 @@ void Creature::SaveRespawnTime()
return;
if(m_respawnTime > time(NULL)) // dead (no corpse)
- objmgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),m_respawnTime);
+ sObjectMgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),m_respawnTime);
else if(m_deathTimer > 0) // dead (corpse)
- objmgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),time(NULL)+m_respawnDelay+m_deathTimer/IN_MILISECONDS);
+ sObjectMgr.SaveCreatureRespawnTime(m_DBTableGuid,GetInstanceId(),time(NULL)+m_respawnDelay+m_deathTimer/IN_MILISECONDS);
}
bool Creature::IsOutOfThreatArea(Unit* pVictim) const
@@ -2139,7 +2139,7 @@ void Creature::GetRespawnCoord( float &x, float &y, float &z, float* ori, float*
{
if (m_DBTableGuid)
{
- if (CreatureData const* data = objmgr.GetCreatureData(GetDBTableGUIDLow()))
+ if (CreatureData const* data = sObjectMgr.GetCreatureData(GetDBTableGUIDLow()))
{
x = data->posX;
y = data->posY;
@@ -2203,7 +2203,7 @@ std::string Creature::GetAIName() const
std::string Creature::GetScriptName() const
{
- return objmgr.GetScriptName(GetScriptId());
+ return sObjectMgr.GetScriptName(GetScriptId());
}
uint32 Creature::GetScriptId() const
@@ -2213,7 +2213,7 @@ uint32 Creature::GetScriptId() const
VendorItemData const* Creature::GetVendorItems() const
{
- return objmgr.GetNpcVendorItemList(GetEntry());
+ return sObjectMgr.GetNpcVendorItemList(GetEntry());
}
uint32 Creature::GetVendorItemCurrentCount(VendorItem const* vItem)
@@ -2235,7 +2235,7 @@ uint32 Creature::GetVendorItemCurrentCount(VendorItem const* vItem)
if( vCount->lastIncrementTime + vItem->incrtime <= ptime )
{
- ItemPrototype const* pProto = objmgr.GetItemPrototype(vItem->item);
+ ItemPrototype const* pProto = ObjectMgr::GetItemPrototype(vItem->item);
uint32 diff = uint32((ptime - vCount->lastIncrementTime)/vItem->incrtime);
if((vCount->count + diff * pProto->BuyCount) >= vItem->maxcount )
@@ -2274,7 +2274,7 @@ uint32 Creature::UpdateVendorItemCurrentCount(VendorItem const* vItem, uint32 us
if( vCount->lastIncrementTime + vItem->incrtime <= ptime )
{
- ItemPrototype const* pProto = objmgr.GetItemPrototype(vItem->item);
+ ItemPrototype const* pProto = ObjectMgr::GetItemPrototype(vItem->item);
uint32 diff = uint32((ptime - vCount->lastIncrementTime)/vItem->incrtime);
if((vCount->count + diff * pProto->BuyCount) < vItem->maxcount )
@@ -2290,7 +2290,7 @@ uint32 Creature::UpdateVendorItemCurrentCount(VendorItem const* vItem, uint32 us
TrainerSpellData const* Creature::GetTrainerSpells() const
{
- return objmgr.GetNpcTrainerSpells(GetEntry());
+ return sObjectMgr.GetNpcTrainerSpells(GetEntry());
}
// overwrite WorldObject function for proper name localization
@@ -2298,7 +2298,7 @@ const char* Creature::GetNameForLocaleIdx(int32 loc_idx) const
{
if (loc_idx >= 0)
{
- CreatureLocale const *cl = objmgr.GetCreatureLocale(GetEntry());
+ CreatureLocale const *cl = sObjectMgr.GetCreatureLocale(GetEntry());
if (cl)
{
if (cl->Name.size() > loc_idx && !cl->Name[loc_idx].empty())
diff --git a/src/game/CreatureEventAI.cpp b/src/game/CreatureEventAI.cpp
index 87edbf125..078e4335a 100644
--- a/src/game/CreatureEventAI.cpp
+++ b/src/game/CreatureEventAI.cpp
@@ -55,8 +55,8 @@ int CreatureEventAI::Permissible(const Creature *creature)
CreatureEventAI::CreatureEventAI(Creature *c ) : CreatureAI(c)
{
// Need make copy for filter unneeded steps and safe in case table reload
- CreatureEventAI_Event_Map::const_iterator CreatureEvents = CreatureEAI_Mgr.GetCreatureEventAIMap().find(m_creature->GetEntry());
- if (CreatureEvents != CreatureEAI_Mgr.GetCreatureEventAIMap().end())
+ CreatureEventAI_Event_Map::const_iterator CreatureEvents = sEventAIMgr.GetCreatureEventAIMap().find(m_creature->GetEntry());
+ if (CreatureEvents != sEventAIMgr.GetCreatureEventAIMap().end())
{
std::vector::const_iterator i;
for (i = (*CreatureEvents).second.begin(); i != (*CreatureEvents).second.end(); ++i)
@@ -406,7 +406,7 @@ void CreatureEventAI::ProcessAction(CreatureEventAI_Action const& action, uint32
{
if (CreatureInfo const* ci = GetCreatureTemplateStore(action.morph.creatureId))
{
- uint32 display_id = objmgr.ChooseDisplayId(0,ci);
+ uint32 display_id = sObjectMgr.ChooseDisplayId(0,ci);
m_creature->SetDisplayId(display_id);
}
}
@@ -672,8 +672,8 @@ void CreatureEventAI::ProcessAction(CreatureEventAI_Action const& action, uint32
{
Unit* target = GetTargetByType(action.summon_id.target, pActionInvoker);
- CreatureEventAI_Summon_Map::const_iterator i = CreatureEAI_Mgr.GetCreatureEventAISummonMap().find(action.summon_id.spawnId);
- if (i == CreatureEAI_Mgr.GetCreatureEventAISummonMap().end())
+ CreatureEventAI_Summon_Map::const_iterator i = sEventAIMgr.GetCreatureEventAISummonMap().find(action.summon_id.spawnId);
+ if (i == sEventAIMgr.GetCreatureEventAISummonMap().end())
{
sLog.outErrorDb( "CreatureEventAI: failed to spawn creature %u. Summon map index %u does not exist. EventID %d. CreatureID %d", action.summon_id.creatureId, action.summon_id.spawnId, EventId, m_creature->GetEntry());
return;
@@ -1259,9 +1259,9 @@ void CreatureEventAI::DoScriptText(int32 textEntry, WorldObject* pSource, Unit*
return;
}
- CreatureEventAI_TextMap::const_iterator i = CreatureEAI_Mgr.GetCreatureEventAITextMap().find(textEntry);
+ CreatureEventAI_TextMap::const_iterator i = sEventAIMgr.GetCreatureEventAITextMap().find(textEntry);
- if (i == CreatureEAI_Mgr.GetCreatureEventAITextMap().end())
+ if (i == sEventAIMgr.GetCreatureEventAITextMap().end())
{
sLog.outErrorDb("CreatureEventAI: DoScriptText with source entry %u (TypeId=%u, guid=%u) could not find text entry %i.",pSource->GetEntry(),pSource->GetTypeId(),pSource->GetGUIDLow(),textEntry);
return;
diff --git a/src/game/CreatureEventAIMgr.cpp b/src/game/CreatureEventAIMgr.cpp
index 5361073eb..d94ee1a12 100644
--- a/src/game/CreatureEventAIMgr.cpp
+++ b/src/game/CreatureEventAIMgr.cpp
@@ -36,7 +36,7 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Texts(bool check_entry_use)
m_CreatureEventAI_TextMap.clear();
// Load EventAI Text
- objmgr.LoadMangosStrings(WorldDatabase,"creature_ai_texts",MIN_CREATURE_AI_TEXT_STRING_ID,MAX_CREATURE_AI_TEXT_STRING_ID);
+ sObjectMgr.LoadMangosStrings(WorldDatabase,"creature_ai_texts",MIN_CREATURE_AI_TEXT_STRING_ID,MAX_CREATURE_AI_TEXT_STRING_ID);
// Gather Additional data from EventAI Texts
QueryResult *result = WorldDatabase.Query("SELECT entry, sound, type, language, emote FROM creature_ai_texts");
@@ -67,7 +67,7 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Texts(bool check_entry_use)
}
// range negative (don't must be happen, loaded from same table)
- if (!objmgr.GetMangosStringLocale(i))
+ if (!sObjectMgr.GetMangosStringLocale(i))
{
sLog.outErrorDb("CreatureEventAI: Entry %i in table `creature_ai_texts` not found",i);
continue;
@@ -411,7 +411,7 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts()
break;
case EVENT_T_QUEST_ACCEPT:
case EVENT_T_QUEST_COMPLETE:
- if (!objmgr.GetQuestTemplate(temp.quest.questId))
+ if (!sObjectMgr.GetQuestTemplate(temp.quest.questId))
sLog.outErrorDb("CreatureEventAI: Creature %u are using event(%u) with not existed qyest id (%u) in param1, skipped.", temp.creature_id, i, temp.quest.questId);
sLog.outErrorDb("CreatureEventAI: Creature %u using not implemented event (%u) in event %u.", temp.creature_id, temp.event_id, i);
continue;
@@ -619,7 +619,7 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts()
sLog.outErrorDb("CreatureEventAI: Event %u Action %u uses invalid percent value %u.", i, j+1, action.threat_all_pct.percent);
break;
case ACTION_T_QUEST_EVENT:
- if (Quest const* qid = objmgr.GetQuestTemplate(action.quest_event.questId))
+ if (Quest const* qid = sObjectMgr.GetQuestTemplate(action.quest_event.questId))
{
if (!qid->HasFlag(QUEST_MANGOS_FLAGS_EXPLORATION_OR_EVENT))
sLog.outErrorDb("CreatureEventAI: Event %u Action %u. SpecialFlags for quest entry %u does not include |2, Action will not have any effect.", i, j+1, action.quest_event.questId);
@@ -661,7 +661,7 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts()
sLog.outErrorDb("CreatureEventAI: Event %u Action %u is change phase by too large for any use %i.", i, j+1, action.set_inc_phase.step);
break;
case ACTION_T_QUEST_EVENT_ALL:
- if (Quest const* qid = objmgr.GetQuestTemplate(action.quest_event_all.questId))
+ if (Quest const* qid = sObjectMgr.GetQuestTemplate(action.quest_event_all.questId))
{
if (!qid->HasFlag(QUEST_MANGOS_FLAGS_EXPLORATION_OR_EVENT))
sLog.outErrorDb("CreatureEventAI: Event %u Action %u. SpecialFlags for quest entry %u does not include |2, Action will not have any effect.", i, j+1, action.quest_event_all.questId);
diff --git a/src/game/CreatureEventAIMgr.h b/src/game/CreatureEventAIMgr.h
index 1345774e6..c8aed6687 100644
--- a/src/game/CreatureEventAIMgr.h
+++ b/src/game/CreatureEventAIMgr.h
@@ -45,5 +45,5 @@ class CreatureEventAIMgr
CreatureEventAI_TextMap m_CreatureEventAI_TextMap;
};
-#define CreatureEAI_Mgr MaNGOS::Singleton::Instance()
+#define sEventAIMgr MaNGOS::Singleton::Instance()
#endif
diff --git a/src/game/GMTicketHandler.cpp b/src/game/GMTicketHandler.cpp
index 4e062ac9f..a2868ad62 100644
--- a/src/game/GMTicketHandler.cpp
+++ b/src/game/GMTicketHandler.cpp
@@ -50,7 +50,7 @@ void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/ )
data << (uint32)0;
SendPacket( &data );
- GMTicket* ticket = ticketmgr.GetGMTicket(GetPlayer()->GetGUIDLow());
+ GMTicket* ticket = sTicketMgr.GetGMTicket(GetPlayer()->GetGUIDLow());
if(ticket)
SendGMTicketGetTicket(0x06,ticket->GetText());
else
@@ -62,7 +62,7 @@ void WorldSession::HandleGMTicketUpdateTextOpcode( WorldPacket & recv_data )
std::string ticketText;
recv_data >> ticketText;
- if(GMTicket* ticket = ticketmgr.GetGMTicket(GetPlayer()->GetGUIDLow()))
+ if(GMTicket* ticket = sTicketMgr.GetGMTicket(GetPlayer()->GetGUIDLow()))
ticket->SetText(ticketText.c_str());
else
sLog.outError("Ticket update: Player %s (GUID: %u) doesn't have active ticket", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow());
@@ -70,7 +70,7 @@ void WorldSession::HandleGMTicketUpdateTextOpcode( WorldPacket & recv_data )
void WorldSession::HandleGMTicketDeleteTicketOpcode( WorldPacket & /*recv_data*/ )
{
- ticketmgr.Delete(GetPlayer()->GetGUIDLow());
+ sTicketMgr.Delete(GetPlayer()->GetGUIDLow());
WorldPacket data( SMSG_GMTICKET_DELETETICKET, 4 );
data << uint32(9);
@@ -95,7 +95,7 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
sLog.outDebug("TicketCreate: map %u, x %f, y %f, z %f, text %s", map, x, y, z, ticketText.c_str());
- if(ticketmgr.GetGMTicket(GetPlayer()->GetGUIDLow()))
+ if(sTicketMgr.GetGMTicket(GetPlayer()->GetGUIDLow()))
{
WorldPacket data( SMSG_GMTICKET_CREATE, 4 );
data << uint32(1); // 1 - You already have GM ticket
@@ -103,7 +103,7 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
return;
}
- ticketmgr.Create(_player->GetGUIDLow(), ticketText.c_str());
+ sTicketMgr.Create(_player->GetGUIDLow(), ticketText.c_str());
WorldPacket data( SMSG_QUERY_TIME_RESPONSE, 4+4 );
data << (uint32)time(NULL);
@@ -116,7 +116,7 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
DEBUG_LOG("update the ticket");
//TODO: Guard player map
- HashMapHolder::MapType &m = ObjectAccessor::Instance().GetPlayers();
+ HashMapHolder::MapType &m = sObjectAccessor.GetPlayers();
for(HashMapHolder::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr)
{
if(itr->second->GetSession()->GetSecurity() >= SEC_GAMEMASTER && itr->second->isAcceptTickets())
diff --git a/src/game/GMTicketMgr.cpp b/src/game/GMTicketMgr.cpp
index 621c18b42..17ed65c7b 100644
--- a/src/game/GMTicketMgr.cpp
+++ b/src/game/GMTicketMgr.cpp
@@ -72,7 +72,7 @@ void GMTicketMgr::DeleteAll()
{
for(GMTicketMap::const_iterator itr = m_GMTicketMap.begin(); itr != m_GMTicketMap.end(); ++itr)
{
- if(Player* owner = objmgr.GetPlayer(MAKE_NEW_GUID(itr->first,0,HIGHGUID_PLAYER)))
+ if(Player* owner = sObjectMgr.GetPlayer(MAKE_NEW_GUID(itr->first,0,HIGHGUID_PLAYER)))
owner->GetSession()->SendGMTicketGetTicket(0x0A,0);
}
CharacterDatabase.PExecute("DELETE FROM character_ticket");
diff --git a/src/game/GMTicketMgr.h b/src/game/GMTicketMgr.h
index 65487da0a..54e4df428 100644
--- a/src/game/GMTicketMgr.h
+++ b/src/game/GMTicketMgr.h
@@ -121,5 +121,5 @@ class GMTicketMgr
GMTicketMap m_GMTicketMap;
};
-#define ticketmgr MaNGOS::Singleton::Instance()
+#define sTicketMgr MaNGOS::Singleton::Instance()
#endif
diff --git a/src/game/GameEventMgr.cpp b/src/game/GameEventMgr.cpp
index 140aa7880..71557ad24 100644
--- a/src/game/GameEventMgr.cpp
+++ b/src/game/GameEventMgr.cpp
@@ -19,7 +19,7 @@
#include "GameEventMgr.h"
#include "World.h"
#include "ObjectMgr.h"
-#include "PoolHandler.h"
+#include "PoolManager.h"
#include "ProgressBar.h"
#include "Language.h"
#include "Log.h"
@@ -305,7 +305,7 @@ void GameEventMgr::LoadFromDB()
if(newModelEquipSet.equipment_id > 0)
{
- if(!objmgr.GetEquipmentInfo(newModelEquipSet.equipment_id))
+ if(!sObjectMgr.GetEquipmentInfo(newModelEquipSet.equipment_id))
{
sLog.outErrorDb("Table `game_event_model_equip` have creature (Guid: %u) with equipment_id %u not found in table `creature_equip_template`, set to no equipment.", guid, newModelEquipSet.equipment_id);
continue;
@@ -399,7 +399,7 @@ void GameEventMgr::LoadFromDB()
continue;
}
- if (!poolhandler.CheckPool(entry))
+ if (!sPoolMgr.CheckPool(entry))
{
sLog.outErrorDb("Pool Id (%u) has all creatures or gameobjects with explicit chance sum <>100 and no equal chance defined. The pool system cannot pick one to spawn.", entry);
continue;
@@ -514,13 +514,13 @@ void GameEventMgr::GameEventSpawn(int16 event_id)
for (GuidList::iterator itr = mGameEventCreatureGuids[internal_event_id].begin();itr != mGameEventCreatureGuids[internal_event_id].end();++itr)
{
// Add to correct cell
- CreatureData const* data = objmgr.GetCreatureData(*itr);
+ CreatureData const* data = sObjectMgr.GetCreatureData(*itr);
if (data)
{
- objmgr.AddCreatureToGrid(*itr, data);
+ sObjectMgr.AddCreatureToGrid(*itr, data);
// Spawn if necessary (loaded grids only)
- Map* map = const_cast