show DIALOG_STATUS_AVAILABLE instead of DIALOG_STATUS_REWARD for non-repeatable autocomplete quests.
This commit is contained in:
@@ -604,7 +604,9 @@ namespace Game.Entities
|
|||||||
InventoryResult res = CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, quest.RewardChoiceItemId[i], quest.RewardChoiceItemCount[i]);
|
InventoryResult res = CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, quest.RewardChoiceItemId[i], quest.RewardChoiceItemCount[i]);
|
||||||
if (res != InventoryResult.Ok)
|
if (res != InventoryResult.Ok)
|
||||||
{
|
{
|
||||||
SendEquipError(res, null, null, quest.RewardChoiceItemId[i]);
|
if (msg)
|
||||||
|
SendQuestFailed(quest.Id, res);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -620,7 +622,9 @@ namespace Game.Entities
|
|||||||
InventoryResult res = CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, quest.RewardItemId[i], quest.RewardItemCount[i]);
|
InventoryResult res = CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, quest.RewardItemId[i], quest.RewardItemCount[i]);
|
||||||
if (res != InventoryResult.Ok)
|
if (res != InventoryResult.Ok)
|
||||||
{
|
{
|
||||||
SendEquipError(res, null, null, quest.RewardItemId[i]);
|
if (msg)
|
||||||
|
SendQuestFailed(quest.Id, res);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1109,6 +1113,10 @@ namespace Game.Entities
|
|||||||
if (GetQuestStatus(questId) == QuestStatus.Complete && !quest.HasSpecialFlag(QuestSpecialFlags.Timed))
|
if (GetQuestStatus(questId) == QuestStatus.Complete && !quest.HasSpecialFlag(QuestSpecialFlags.Timed))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// You can't fail a quest if you don't have it, or if it's already rewarded.
|
||||||
|
if (GetQuestStatus(questId) == QuestStatus.None || GetQuestStatus(questId) == QuestStatus.Rewarded)
|
||||||
|
return;
|
||||||
|
|
||||||
SetQuestStatus(questId, QuestStatus.Failed);
|
SetQuestStatus(questId, QuestStatus.Failed);
|
||||||
|
|
||||||
ushort log_slot = FindQuestSlot(questId);
|
ushort log_slot = FindQuestSlot(questId);
|
||||||
@@ -1836,17 +1844,14 @@ namespace Game.Entities
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
QuestStatus status = GetQuestStatus(questId);
|
QuestStatus status = GetQuestStatus(questId);
|
||||||
if ((status == QuestStatus.Complete && !GetQuestRewardStatus(questId)) ||
|
if (status == QuestStatus.Complete && !GetQuestRewardStatus(questId))
|
||||||
(quest.IsAutoComplete() && CanTakeQuest(quest, false)))
|
result2 = QuestGiverStatus.Reward;
|
||||||
{
|
|
||||||
if (quest.IsAutoComplete() && quest.IsRepeatable() && !quest.IsDailyOrWeekly())
|
|
||||||
result2 = QuestGiverStatus.RewardRep;
|
|
||||||
else
|
|
||||||
result2 = QuestGiverStatus.Reward;
|
|
||||||
}
|
|
||||||
else if (status == QuestStatus.Incomplete)
|
else if (status == QuestStatus.Incomplete)
|
||||||
result2 = QuestGiverStatus.Incomplete;
|
result2 = QuestGiverStatus.Incomplete;
|
||||||
|
|
||||||
|
if (quest.IsAutoComplete() && CanTakeQuest(quest, false) && quest.IsRepeatable() && !quest.IsDailyOrWeekly())
|
||||||
|
result2 = QuestGiverStatus.RewardRep;
|
||||||
|
|
||||||
if (result2 > result)
|
if (result2 > result)
|
||||||
result = result2;
|
result = result2;
|
||||||
}
|
}
|
||||||
@@ -1868,9 +1873,7 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
if (SatisfyQuestLevel(quest, false))
|
if (SatisfyQuestLevel(quest, false))
|
||||||
{
|
{
|
||||||
if (quest.IsAutoComplete())
|
if (getLevel() <= (GetQuestLevel(quest) + WorldConfig.GetIntValue(WorldCfg.QuestLowLevelHideDiff)))
|
||||||
result2 = QuestGiverStatus.RewardRep;
|
|
||||||
else if (getLevel() <= (GetQuestLevel(quest) + WorldConfig.GetIntValue(WorldCfg.QuestLowLevelHideDiff)))
|
|
||||||
{
|
{
|
||||||
if (quest.IsDaily())
|
if (quest.IsDaily())
|
||||||
result2 = QuestGiverStatus.AvailableRep;
|
result2 = QuestGiverStatus.AvailableRep;
|
||||||
|
|||||||
Reference in New Issue
Block a user