aboutsummaryrefslogtreecommitdiff
path: root/src/game/PoolHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/PoolHandler.cpp')
-rw-r--r--src/game/PoolHandler.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/game/PoolHandler.cpp b/src/game/PoolHandler.cpp
index 43f726c42a8..03b09f9a483 100644
--- a/src/game/PoolHandler.cpp
+++ b/src/game/PoolHandler.cpp
@@ -32,6 +32,7 @@ template <class T>
PoolGroup<T>::PoolGroup()
{
m_SpawnedPoolAmount = 0;
+ m_LastDespawnedNode = 0;
}
// Method to add a gameobject/creature guid to the proper list depending on pool type and chance value
@@ -107,7 +108,7 @@ void PoolGroup<T>::DespawnObject(uint32 guid)
if (!guid || EqualChanced[i].guid == guid)
{
if (guid)
- CacheValue = EqualChanced[i].guid;
+ m_LastDespawnedNode = EqualChanced[i].guid;
else
Despawn1Object(EqualChanced[i].guid);
@@ -183,9 +184,11 @@ void PoolGroup<T>::SpawnObject(uint32 limit, bool cache)
if (limit == 1) // This is the only case where explicit chance is used
{
uint32 roll = RollOne();
- if (cache && CacheValue != roll)
- Despawn1Object(CacheValue);
- CacheValue = Spawn1Object(roll);
+ if (cache && m_LastDespawnedNode != roll)
+ Despawn1Object(m_LastDespawnedNode);
+
+ m_LastDespawnedNode = 0;
+ Spawn1Object(roll);
}
else if (limit < EqualChanced.size() && m_SpawnedPoolAmount < limit)
{
@@ -198,10 +201,10 @@ void PoolGroup<T>::SpawnObject(uint32 limit, bool cache)
{
uint32 roll = urand(1, IndexList.size()) - 1;
uint32 index = IndexList[roll];
- if (!cache || (cache && EqualChanced[index].guid != CacheValue))
+ if (!cache || (cache && EqualChanced[index].guid != m_LastDespawnedNode))
{
if (cache)
- Despawn1Object(CacheValue);
+ Despawn1Object(m_LastDespawnedNode);
EqualChanced[index].spawned = Spawn1Object(EqualChanced[index].guid);
}
else
@@ -213,7 +216,7 @@ void PoolGroup<T>::SpawnObject(uint32 limit, bool cache)
std::vector<uint32>::iterator itr = IndexList.begin()+roll;
IndexList.erase(itr);
}
- CacheValue = 0;
+ m_LastDespawnedNode = 0;
}
else // Not enough objects in pool, so spawn all
{
@@ -332,7 +335,7 @@ bool PoolGroup<Pool>::ReSpawn1Object(uint32 /*guid*/)
PoolHandler::PoolHandler()
{
- isSystemInit = false;
+ m_IsPoolSystemStarted = false;
}
void PoolHandler::LoadFromDB()
@@ -626,7 +629,7 @@ void PoolHandler::Initialize()
}
sLog.outBasic("Pool handling system initialized, %u pools spawned.", count);
- isSystemInit = true;
+ m_IsPoolSystemStarted = true;
}
// Call to spawn a pool, if cache if true the method will spawn only if cached entry is different