diff options
4 files changed, 22 insertions, 1 deletions
diff --git a/sql/updates/world/master/2017_02_12_08_world_2016_08_19_00_world.sql b/sql/updates/world/master/2017_02_12_08_world_2016_08_19_00_world.sql new file mode 100644 index 00000000000..208482f7d89 --- /dev/null +++ b/sql/updates/world/master/2017_02_12_08_world_2016_08_19_00_world.sql @@ -0,0 +1,2 @@ +-- fix Rider of the Unholy / Blood / Frost (issue #17817) +UPDATE `smart_scripts` SET `target_type`=27 WHERE `source_type`=0 AND `entryorguid` IN (30954,30956,30953) AND `action_type`=33; diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index fc0d46f1004..ebfac226efb 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2783,6 +2783,23 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /* l->push_back(target); break; } + case SMART_TARGET_LOOT_RECIPIENTS: + { + if (me) + { + if (Group* lootGroup = me->GetLootRecipientGroup()) + { + for (GroupReference* it = lootGroup->GetFirstMember(); it != nullptr; it = it->next()) + if (Player* recipient = it->GetSource()) + l->push_back(recipient); + } + else + { + if (Player* recipient = me->GetLootRecipient()) + l->push_back(recipient); + } + } + } case SMART_TARGET_POSITION: case SMART_TARGET_NONE: default: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 3ece45a309d..6553a2d99a4 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -375,6 +375,7 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e) case SMART_TARGET_CLOSEST_ENEMY: case SMART_TARGET_CLOSEST_FRIENDLY: case SMART_TARGET_STORED: + case SMART_TARGET_LOOT_RECIPIENTS: break; default: TC_LOG_ERROR("sql.sql", "SmartAIMgr: Not handled target_type(%u), Entry " SI64FMTD " SourceType %u Event %u Action %u, skipped.", e.GetTargetType(), e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType()); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index b418bf97821..b45be8a9fbc 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1104,8 +1104,9 @@ enum SMARTAI_TARGETS SMART_TARGET_THREAT_LIST = 24, // All units on creature's threat list SMART_TARGET_CLOSEST_ENEMY = 25, // maxDist, playerOnly SMART_TARGET_CLOSEST_FRIENDLY = 26, // maxDist, playerOnly + SMART_TARGET_LOOT_RECIPIENTS = 27, // all players that have tagged this creature (for kill credit) - SMART_TARGET_END = 27 + SMART_TARGET_END = 28 }; struct SmartTarget |
