Core/SAI: Implement quest source for SAI

Port From (https://github.com/TrinityCore/TrinityCore/commit/1b4c4d216478c57a562247815dfba0e5d2c9f192)
This commit is contained in:
hondacrx
2021-03-08 14:17:23 -05:00
parent ee97dc7b32
commit 8ada9c99e7
4 changed files with 100 additions and 41 deletions
+42
View File
@@ -86,4 +86,46 @@ namespace Scripts.Smart
smartScript.ProcessEventsFor(SmartEvents.SceneComplete, player);
}
}
[Script]
class SmartQuest : QuestScript
{
public SmartQuest() : base("SmartQuest") { }
// Called when a quest status change
public override void OnQuestStatusChange(Player player, Quest quest, QuestStatus oldStatus, QuestStatus newStatus)
{
SmartScript smartScript = new SmartScript();
smartScript.OnInitialize(quest);
switch (newStatus)
{
case QuestStatus.Incomplete:
smartScript.ProcessEventsFor(SmartEvents.QuestAccepted, player);
break;
case QuestStatus.Complete:
smartScript.ProcessEventsFor(SmartEvents.QuestCompletion, player);
break;
case QuestStatus.Failed:
smartScript.ProcessEventsFor(SmartEvents.QuestFail, player);
break;
case QuestStatus.Rewarded:
smartScript.ProcessEventsFor(SmartEvents.QuestRewarded, player);
break;
case QuestStatus.None:
default:
break;
}
}
// Called when a quest objective data change
public override void OnQuestObjectiveChange(Player player, Quest quest, QuestObjective objective, int oldAmount, int newAmount)
{
if (player.IsQuestObjectiveComplete(objective))
{
SmartScript smartScript = new SmartScript();
smartScript.OnInitialize(quest);
smartScript.ProcessEventsFor(SmartEvents.QuestObjCompletion, player, objective.Id);
}
}
}
}