*Update relocation notify code. Only notify units within max visible distance.
*Delete a duplicated config option. --HG-- branch : trunk
This commit is contained in:
+14
-4
@@ -656,12 +656,22 @@ void Map::Update(const uint32 &t_diff)
|
|||||||
unit->m_Notified = true;
|
unit->m_Notified = true;
|
||||||
if(!unit->IsInWorld())
|
if(!unit->IsInWorld())
|
||||||
continue;
|
continue;
|
||||||
CellPair val = Trinity::ComputeCellPair(unit->GetPositionX(), unit->GetPositionY());
|
//CellPair val = Trinity::ComputeCellPair(unit->GetPositionX(), unit->GetPositionY());
|
||||||
Cell cell(val);
|
//Cell cell(val);
|
||||||
|
//if(unit->GetTypeId() == TYPEID_PLAYER)
|
||||||
|
// PlayerRelocationNotify((Player*)unit, cell, val);
|
||||||
|
//else
|
||||||
|
// CreatureRelocationNotify((Creature*)unit, cell, val);
|
||||||
if(unit->GetTypeId() == TYPEID_PLAYER)
|
if(unit->GetTypeId() == TYPEID_PLAYER)
|
||||||
PlayerRelocationNotify((Player*)unit, cell, val);
|
{
|
||||||
|
Trinity::PlayerRelocationNotifier notifier(*((Player*)unit));
|
||||||
|
VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), notifier);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
CreatureRelocationNotify((Creature*)unit, cell, val);
|
{
|
||||||
|
Trinity::CreatureRelocationNotifier notifier(*((Creature*)unit));
|
||||||
|
VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), notifier);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for(std::vector<uint64>::iterator iter = i_unitsToNotify.begin(); iter != i_unitsToNotify.end(); ++iter)
|
for(std::vector<uint64>::iterator iter = i_unitsToNotify.begin(); iter != i_unitsToNotify.end(); ++iter)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -587,22 +587,6 @@ void Spell::FillTargetMap()
|
|||||||
if(IsChanneledSpell(m_spellInfo) && !tmpUnitMap.empty())
|
if(IsChanneledSpell(m_spellInfo) && !tmpUnitMap.empty())
|
||||||
m_needAliveTargetMask |= (1<<i);
|
m_needAliveTargetMask |= (1<<i);
|
||||||
|
|
||||||
/*if(m_caster->GetTypeId() == TYPEID_PLAYER)
|
|
||||||
{
|
|
||||||
Player *me = (Player*)m_caster;
|
|
||||||
for (std::list<Unit*>::const_iterator itr = tmpUnitMap.begin(); itr != tmpUnitMap.end(); ++itr)
|
|
||||||
{
|
|
||||||
Unit *owner = (*itr)->GetOwner();
|
|
||||||
Unit *u = owner ? owner : (*itr);
|
|
||||||
if(u!=m_caster && u->IsPvP() && (!me->duel || me->duel->opponent != u))
|
|
||||||
{
|
|
||||||
me->UpdatePvP(true);
|
|
||||||
me->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
for (std::list<Unit*>::iterator itr = tmpUnitMap.begin() ; itr != tmpUnitMap.end();)
|
for (std::list<Unit*>::iterator itr = tmpUnitMap.begin() ; itr != tmpUnitMap.end();)
|
||||||
{
|
{
|
||||||
if(!CheckTarget(*itr, i, false ))
|
if(!CheckTarget(*itr, i, false ))
|
||||||
|
|||||||
+8
-7
@@ -904,6 +904,7 @@ void World::LoadConfigSettings(bool reload)
|
|||||||
sLog.outError("Visibility. Distance .Creature can't be greater %f",MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance);
|
sLog.outError("Visibility. Distance .Creature can't be greater %f",MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance);
|
||||||
m_MaxVisibleDistanceForCreature = MAX_VISIBILITY_DISTANCE-m_VisibleUnitGreyDistance;
|
m_MaxVisibleDistanceForCreature = MAX_VISIBILITY_DISTANCE-m_VisibleUnitGreyDistance;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_MaxVisibleDistanceForPlayer = sConfig.GetFloatDefault("Visibility.Distance.Player", DEFAULT_VISIBILITY_DISTANCE);
|
m_MaxVisibleDistanceForPlayer = sConfig.GetFloatDefault("Visibility.Distance.Player", DEFAULT_VISIBILITY_DISTANCE);
|
||||||
if(m_MaxVisibleDistanceForPlayer < 45*sWorld.getRate(RATE_CREATURE_AGGRO))
|
if(m_MaxVisibleDistanceForPlayer < 45*sWorld.getRate(RATE_CREATURE_AGGRO))
|
||||||
{
|
{
|
||||||
@@ -915,6 +916,8 @@ void World::LoadConfigSettings(bool reload)
|
|||||||
sLog.outError("Visibility.Distance.Player can't be greater %f",MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance);
|
sLog.outError("Visibility.Distance.Player can't be greater %f",MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance);
|
||||||
m_MaxVisibleDistanceForPlayer = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance;
|
m_MaxVisibleDistanceForPlayer = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance;
|
||||||
}
|
}
|
||||||
|
m_MaxVisibleDistance = std::max(m_MaxVisibleDistanceForPlayer, m_MaxVisibleDistanceForCreature);
|
||||||
|
|
||||||
m_MaxVisibleDistanceForObject = sConfig.GetFloatDefault("Visibility.Distance.Gameobject", DEFAULT_VISIBILITY_DISTANCE);
|
m_MaxVisibleDistanceForObject = sConfig.GetFloatDefault("Visibility.Distance.Gameobject", DEFAULT_VISIBILITY_DISTANCE);
|
||||||
if(m_MaxVisibleDistanceForObject < INTERACTION_DISTANCE)
|
if(m_MaxVisibleDistanceForObject < INTERACTION_DISTANCE)
|
||||||
{
|
{
|
||||||
@@ -926,12 +929,17 @@ void World::LoadConfigSettings(bool reload)
|
|||||||
sLog.outError("Visibility.Distance.Object can't be greater %f",MAX_VISIBILITY_DISTANCE-m_VisibleObjectGreyDistance);
|
sLog.outError("Visibility.Distance.Object can't be greater %f",MAX_VISIBILITY_DISTANCE-m_VisibleObjectGreyDistance);
|
||||||
m_MaxVisibleDistanceForObject = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance;
|
m_MaxVisibleDistanceForObject = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance;
|
||||||
}
|
}
|
||||||
|
if(m_MaxVisibleDistance < m_MaxVisibleDistanceForObject)
|
||||||
|
m_MaxVisibleDistance = m_MaxVisibleDistanceForObject;
|
||||||
|
|
||||||
m_MaxVisibleDistanceInFlight = sConfig.GetFloatDefault("Visibility.Distance.InFlight", DEFAULT_VISIBILITY_DISTANCE);
|
m_MaxVisibleDistanceInFlight = sConfig.GetFloatDefault("Visibility.Distance.InFlight", DEFAULT_VISIBILITY_DISTANCE);
|
||||||
if(m_MaxVisibleDistanceInFlight + m_VisibleObjectGreyDistance > MAX_VISIBILITY_DISTANCE)
|
if(m_MaxVisibleDistanceInFlight + m_VisibleObjectGreyDistance > MAX_VISIBILITY_DISTANCE)
|
||||||
{
|
{
|
||||||
sLog.outError("Visibility.Distance.InFlight can't be greater %f",MAX_VISIBILITY_DISTANCE-m_VisibleObjectGreyDistance);
|
sLog.outError("Visibility.Distance.InFlight can't be greater %f",MAX_VISIBILITY_DISTANCE-m_VisibleObjectGreyDistance);
|
||||||
m_MaxVisibleDistanceInFlight = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance;
|
m_MaxVisibleDistanceInFlight = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance;
|
||||||
}
|
}
|
||||||
|
if(m_MaxVisibleDistance < m_MaxVisibleDistanceInFlight)
|
||||||
|
m_MaxVisibleDistance = m_MaxVisibleDistanceInFlight;
|
||||||
|
|
||||||
///- Read the "Data" directory from the config file
|
///- Read the "Data" directory from the config file
|
||||||
std::string dataPath = sConfig.GetStringDefault("DataDir","./");
|
std::string dataPath = sConfig.GetStringDefault("DataDir","./");
|
||||||
@@ -980,13 +988,6 @@ void World::LoadConfigSettings(bool reload)
|
|||||||
m_configs[CONFIG_PVP_TOKEN_COUNT] = 1;
|
m_configs[CONFIG_PVP_TOKEN_COUNT] = 1;
|
||||||
m_configs[CONFIG_NO_RESET_TALENT_COST] = sConfig.GetBoolDefault("NoResetTalentsCost", false);
|
m_configs[CONFIG_NO_RESET_TALENT_COST] = sConfig.GetBoolDefault("NoResetTalentsCost", false);
|
||||||
|
|
||||||
m_configs[CONFIG_ARENA_MAX_RATING_DIFFERENCE] = sConfig.GetIntDefault("Arena.MaxRatingDifference", 0);
|
|
||||||
m_configs[CONFIG_ARENA_RATING_DISCARD_TIMER] = sConfig.GetIntDefault("Arena.RatingDiscardTimer",300000);
|
|
||||||
m_configs[CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS] = sConfig.GetBoolDefault("Arena.AutoDistributePoints", false);
|
|
||||||
m_configs[CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS] = sConfig.GetIntDefault("Arena.AutoDistributeInterval", 7);
|
|
||||||
|
|
||||||
m_configs[CONFIG_BATTLEGROUND_PREMATURE_FINISH_TIMER] = sConfig.GetIntDefault("BattleGround.PrematureFinishTimer", 0);
|
|
||||||
|
|
||||||
std::string forbiddenmaps = sConfig.GetStringDefault("ForbiddenMaps", "");
|
std::string forbiddenmaps = sConfig.GetStringDefault("ForbiddenMaps", "");
|
||||||
char * forbiddenMaps = new char[forbiddenmaps.length() + 1];
|
char * forbiddenMaps = new char[forbiddenmaps.length() + 1];
|
||||||
forbiddenMaps[forbiddenmaps.length()] = 0;
|
forbiddenMaps[forbiddenmaps.length()] = 0;
|
||||||
|
|||||||
@@ -474,6 +474,7 @@ class World
|
|||||||
bool IsAllowedMap(uint32 mapid) { return m_forbiddenMapIds.count(mapid) == 0 ;}
|
bool IsAllowedMap(uint32 mapid) { return m_forbiddenMapIds.count(mapid) == 0 ;}
|
||||||
|
|
||||||
// for max speed access
|
// for max speed access
|
||||||
|
static float GetMaxVisibleDistance() { return m_MaxVisibleDistance; }
|
||||||
static float GetMaxVisibleDistanceForCreature() { return m_MaxVisibleDistanceForCreature; }
|
static float GetMaxVisibleDistanceForCreature() { return m_MaxVisibleDistanceForCreature; }
|
||||||
static float GetMaxVisibleDistanceForPlayer() { return m_MaxVisibleDistanceForPlayer; }
|
static float GetMaxVisibleDistanceForPlayer() { return m_MaxVisibleDistanceForPlayer; }
|
||||||
static float GetMaxVisibleDistanceForObject() { return m_MaxVisibleDistanceForObject; }
|
static float GetMaxVisibleDistanceForObject() { return m_MaxVisibleDistanceForObject; }
|
||||||
@@ -542,6 +543,7 @@ class World
|
|||||||
std::set<uint32> m_forbiddenMapIds;
|
std::set<uint32> m_forbiddenMapIds;
|
||||||
|
|
||||||
// for max speed access
|
// for max speed access
|
||||||
|
static float m_MaxVisibleDistance;
|
||||||
static float m_MaxVisibleDistanceForCreature;
|
static float m_MaxVisibleDistanceForCreature;
|
||||||
static float m_MaxVisibleDistanceForPlayer;
|
static float m_MaxVisibleDistanceForPlayer;
|
||||||
static float m_MaxVisibleDistanceForObject;
|
static float m_MaxVisibleDistanceForObject;
|
||||||
|
|||||||
@@ -1215,11 +1215,6 @@ Ra.Secure = 1
|
|||||||
# PlayerStart.MapsExplored
|
# PlayerStart.MapsExplored
|
||||||
# Players will start with all maps explored if enabled
|
# Players will start with all maps explored if enabled
|
||||||
#
|
#
|
||||||
# PlayerInstantLogout
|
|
||||||
# Enable or disable instant logout for all players (NOT in combat/while dueling/while falling)
|
|
||||||
# Default: 0 - off
|
|
||||||
# 1 - on
|
|
||||||
#
|
|
||||||
# MusicInBattleground
|
# MusicInBattleground
|
||||||
# If enabled, "L70ETC - Power of the horde" will be played when BG starts ;)
|
# If enabled, "L70ETC - Power of the horde" will be played when BG starts ;)
|
||||||
#
|
#
|
||||||
@@ -1261,7 +1256,6 @@ Ra.Secure = 1
|
|||||||
PlayerStart.AllReputation = 0
|
PlayerStart.AllReputation = 0
|
||||||
PlayerStart.AllSpells = 0
|
PlayerStart.AllSpells = 0
|
||||||
PlayerStart.MapsExplored = 0
|
PlayerStart.MapsExplored = 0
|
||||||
PlayerInstantLogout = 0
|
|
||||||
MusicInBattleground = 0
|
MusicInBattleground = 0
|
||||||
HonorPointsAfterDuel = 0
|
HonorPointsAfterDuel = 0
|
||||||
AlwaysMaxWeaponSkill = 0
|
AlwaysMaxWeaponSkill = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user