diff options
author | Michael <michaelneubert1988@gmail.com> | 2014-05-25 21:52:27 +0200 |
---|---|---|
committer | Michael <michaelneubert1988@gmail.com> | 2014-05-25 21:52:27 +0200 |
commit | 15efe08a60d3ccb277dde03abc6cce562ad0b44b (patch) | |
tree | 9c2a48c3e55a000205ed0f3159d0684f29a0d994 /src/server/game/Spells/SpellInfo.cpp | |
parent | 49a17c6282fac3d2636e3db740b1a6960fb387ba (diff) | |
parent | c06dc7d37aa8c795ff505550a7bc388d2a66ecac (diff) |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts:
src/server/game/Entities/Item/Item.cpp
src/server/game/Entities/Pet/Pet.cpp
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Player/Player.h
src/server/game/Handlers/MiscHandler.cpp
src/server/game/Miscellaneous/SharedDefines.h
src/server/game/Reputation/ReputationMgr.cpp
src/server/game/Server/Protocol/Opcodes.h
src/server/game/Server/WorldSession.cpp
src/server/game/Server/WorldSession.h
src/server/game/Spells/SpellEffects.cpp
src/server/game/Weather/Weather.cpp
src/server/game/Weather/WeatherMgr.cpp
src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp
src/server/scripts/Spells/spell_hunter.cpp
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index ef9e6d5aa21..7491920c36a 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -24,6 +24,7 @@ #include "Player.h" #include "Battleground.h" #include "Vehicle.h" +#include "Pet.h" uint32 GetTargetFlagMask(SpellTargetObjectTypes objType) { @@ -1678,8 +1679,16 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta // creature/player specific target checks if (unitTarget) { - if (AttributesEx & SPELL_ATTR1_CANT_TARGET_IN_COMBAT && unitTarget->IsInCombat()) - return SPELL_FAILED_TARGET_AFFECTING_COMBAT; + if (AttributesEx & SPELL_ATTR1_CANT_TARGET_IN_COMBAT) + { + if (unitTarget->IsInCombat()) + return SPELL_FAILED_TARGET_AFFECTING_COMBAT; + // player with active pet counts as a player in combat + else if (Player const* player = unitTarget->ToPlayer()) + if (Pet* pet = player->GetPet()) + if (pet->GetVictim() && !pet->HasUnitState(UNIT_STATE_CONTROLLED)) + return SPELL_FAILED_TARGET_AFFECTING_COMBAT; + } // only spells with SPELL_ATTR3_ONLY_TARGET_GHOSTS can target ghosts if (((AttributesEx3 & SPELL_ATTR3_ONLY_TARGET_GHOSTS) != 0) != unitTarget->HasAuraType(SPELL_AURA_GHOST)) |