diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/PetHandler.cpp | 9 | ||||
-rw-r--r-- | src/game/World.cpp | 2 | ||||
-rw-r--r-- | src/game/World.h | 2 | ||||
-rw-r--r-- | src/trinitycore/trinitycore.conf.dist | 8 |
4 files changed, 16 insertions, 5 deletions
diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index a3644371f47..350c390d86c 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -115,9 +115,14 @@ void WorldSession::HandlePetAction( WorldPacket & recv_data ) return; // Not let attack through obstructions - //if(!pet->IsWithinLOSInMap(TargetUnit)) - // return; + if(sWorld.getConfig(CONFIG_PET_LOS)) + { + + if(!pet->IsWithinLOSInMap(TargetUnit)) + return; + } + pet->clearUnitState(UNIT_STAT_FOLLOW); if(pet->GetTypeId() != TYPEID_PLAYER && ((Creature*)pet)->IsAIEnabled) diff --git a/src/game/World.cpp b/src/game/World.cpp index d1f5490ba55..c0f815e8888 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -1009,7 +1009,7 @@ void World::LoadConfigSettings(bool reload) m_configs[CONFIG_MAX_WHO] = sConfig.GetIntDefault("MaxWhoListReturns", 49); - + m_configs[CONFIG_PET_LOS] = sConfig.GetBoolDefault("vmap.petLOS", false); m_configs[CONFIG_PREMATURE_BG_REWARD] = sConfig.GetBoolDefault("Battleground.PrematureReward", true); m_configs[CONFIG_BG_START_MUSIC] = sConfig.GetBoolDefault("MusicInBattleground", false); m_configs[CONFIG_START_ALL_SPELLS] = sConfig.GetBoolDefault("PlayerStart.AllSpells", false); diff --git a/src/game/World.h b/src/game/World.h index 513d8894640..32af277c8f5 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -207,7 +207,7 @@ enum WorldConfigs CONFIG_MIN_LOG_UPDATE, CONFIG_ENABLE_SINFO_LOGIN, CONFIG_PREMATURE_BG_REWARD, - + CONFIG_PET_LOS, CONFIG_VALUE_COUNT }; diff --git a/src/trinitycore/trinitycore.conf.dist b/src/trinitycore/trinitycore.conf.dist index d7b892320d9..ce290c796b9 100644 --- a/src/trinitycore/trinitycore.conf.dist +++ b/src/trinitycore/trinitycore.conf.dist @@ -146,7 +146,12 @@ EAIErrorLevel = 2 # vmap.ignoreSpellIds # These spells are ignored for LoS calculation # List of ids with delimiter ',' -# +# +# vmap.petLOS +# Check LOS for pets, to avoid them going through walls etc. +# Default: 0 (disable, less CPU usage) +# 1 (enable, each pet attack command will check for LOS) +# # DetectPosCollision # Check final move position, summon position, etc for visible collision with other objects or # wall (wall only if vmaps are enabled) @@ -193,6 +198,7 @@ vmap.enableLOS = 0 vmap.enableHeight = 0 vmap.ignoreMapIds = "369" vmap.ignoreSpellIds = "7720" +vmap.petLOS = 0 DetectPosCollision = 1 TargetPosRecalculateRange = 1.5 UpdateUptimeInterval = 10 |