private bool EndQuest(Quest quest, int rewardGroup, bool owl)
{
var result = quest.GetResult();
// Increase PTJ done/success
if (quest.Data.Type == QuestType.Deliver)
this.ModifyPtjTrackRecord(quest.Data.PtjType, +1, (result == QuestResult.Perfect ? +1 : 0));
// Rewards
if (rewardGroup != -1)
{
var rewards = quest.Data.GetRewards(rewardGroup, result);
if (rewards.Count == 0)
Log.Warning("CreatureQuests.EndQuest: No rewards for group '{0}' at result '{1}' in quest '{2}'.", rewardGroup, result, quest.Id);
else
this.GiveRewards(quest, rewards, owl);
}
// Remove from quest log.
Send.QuestClear(_creature, quest.UniqueId);
// Unset party quest
if (quest.Data.IsPartyQuest)
_creature.Party.UnsetPartyQuest();
// Update PTJ stuff and stop clock
if (quest.Data.Type == QuestType.Deliver)
{
var record = this.GetPtjTrackRecord(quest.Data.PtjType);
Send.QuestUpdatePtj(_creature, quest.Data.PtjType, record.Done, record.Success);
Send.QuestEndPtj(_creature);
}
return true;
}