*Merge.
*One rev skipped: Fixed exploit with several spells being casted on pet with no de-buff applied. Author: Elron. --HG-- branch : trunk
This commit is contained in:
@@ -40,6 +40,7 @@ ActiveState::Update(Map &m, NGridType &grid, GridInfo & info, const uint32 &x, c
|
||||
ObjectGridStoper stoper(grid);
|
||||
stoper.StopN();
|
||||
grid.SetGridState(GRID_STATE_IDLE);
|
||||
sLog.outDebug("Grid[%u,%u] on map %u moved to IDLE state", x, y, m.GetId());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -53,7 +54,7 @@ IdleState::Update(Map &m, NGridType &grid, GridInfo &, const uint32 &x, const ui
|
||||
{
|
||||
m.ResetGridExpiry(grid);
|
||||
grid.SetGridState(GRID_STATE_REMOVAL);
|
||||
sLog.outDebug("Grid[%u,%u] on map %u moved to IDLE state", x, y, m.GetId());
|
||||
sLog.outDebug("Grid[%u,%u] on map %u moved to REMOVAL state", x, y, m.GetId());
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
+3
-1
@@ -386,6 +386,8 @@ Map::EnsureGridCreated(const GridPair &p)
|
||||
Guard guard(*this);
|
||||
if(!getNGrid(p.x_coord, p.y_coord))
|
||||
{
|
||||
sLog.outDebug("Loading grid[%u,%u] for map %u", p.x_coord, p.y_coord, i_id);
|
||||
|
||||
setNGrid(new NGridType(p.x_coord*MAX_NUMBER_OF_GRIDS + p.y_coord, p.x_coord, p.y_coord, i_gridExpiry, sWorld.getConfig(CONFIG_GRID_UNLOAD)),
|
||||
p.x_coord, p.y_coord);
|
||||
|
||||
@@ -1113,7 +1115,7 @@ bool Map::UnloadGrid(const uint32 &x, const uint32 &y, bool unloadAll)
|
||||
if(!unloadAll && ActiveObjectsNearGrid(x, y) )
|
||||
return false;
|
||||
|
||||
DEBUG_LOG("Unloading grid[%u,%u] for map %u", x,y, i_id);
|
||||
sLog.outDebug("Unloading grid[%u,%u] for map %u", x,y, i_id);
|
||||
|
||||
ObjectGridUnloader unloader(*grid);
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ void
|
||||
MotionMaster::MoveChase(Unit* target, float dist, float angle)
|
||||
{
|
||||
// ignore movement request if target not exist
|
||||
if(!target)
|
||||
if(!target || target == i_owner)
|
||||
return;
|
||||
|
||||
i_owner->clearUnitState(UNIT_STAT_FOLLOW);
|
||||
@@ -268,7 +268,7 @@ void
|
||||
MotionMaster::MoveFollow(Unit* target, float dist, float angle, MovementSlot slot)
|
||||
{
|
||||
// ignore movement request if target not exist
|
||||
if(!target)
|
||||
if(!target || target == i_owner)
|
||||
return;
|
||||
|
||||
i_owner->addUnitState(UNIT_STAT_FOLLOW);
|
||||
|
||||
@@ -161,6 +161,7 @@ ObjectMgr::~ObjectMgr()
|
||||
|
||||
for (GuildMap::iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr)
|
||||
delete itr->second;
|
||||
mGuildMap.clear();
|
||||
|
||||
for (CachePlayerInfoMap::iterator itr = m_mPlayerInfoMap.begin(); itr != m_mPlayerInfoMap.end(); ++itr)
|
||||
delete itr->second;
|
||||
|
||||
+1
-1
@@ -17987,7 +17987,7 @@ bool Player::canSeeOrDetect(Unit const* u, bool detect, bool inVisibleList, bool
|
||||
return false;
|
||||
}
|
||||
|
||||
if(u->GetVisibility() == VISIBILITY_OFF)
|
||||
if(u->GetVisibility() == VISIBILITY_OFF || u->m_invisibilityMask )
|
||||
{
|
||||
// GMs see any players, not higher GMs and all units
|
||||
if(isGameMaster())
|
||||
|
||||
Reference in New Issue
Block a user