Scripts/SmartAI: SMART_TARGET_INVOKER cleanup step 1. The core will now log errors on start-up if SMART_TARGET_INVOKER abuse is found, but will continue to load the scripts as deprecated for now.

Note that a lot of these scripts may either not currently work, not work reliably, or may be prone to breaking unexpectedly when core internals change. SMART_TARGET_INVOKER is undefined behavior on any event that doesn't directly specify its invoker.

(We are considering options for allowing INVOKER to make sense in timed action lists in a reliable fashion, so they are exempted at this time.)

(cherry picked from commit 482328bddf)
This commit is contained in:
Treeston
2018-02-13 16:38:28 +01:00
committed by Shauren
parent 6c5e170d9f
commit 06b5b8d8b7
5 changed files with 76 additions and 7 deletions
+3 -2
View File
@@ -823,7 +823,8 @@ void SmartAI::StopFollow(bool complete)
if (!complete)
return;
if (Player * player = ObjectAccessor::GetPlayer(*me, mFollowGuid))
Player* player = ObjectAccessor::GetPlayer(*me, mFollowGuid);
if (player)
{
if (!mFollowCreditType)
player->RewardPlayerAndGroupAtEvent(mFollowCredit, me);
@@ -833,7 +834,7 @@ void SmartAI::StopFollow(bool complete)
SetDespawnTime(5000);
StartDespawn();
GetScript()->ProcessEventsFor(SMART_EVENT_FOLLOW_COMPLETED);
GetScript()->ProcessEventsFor(SMART_EVENT_FOLLOW_COMPLETED, player);
}
void SmartAI::SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker)