mirror of
https://github.com/sebastian-heinz/Arrowgene.DragonsDogmaOnline
synced 2026-08-03 11:12:41 -04:00
Added handlers and required packets for: - QuestAddPackageQuestPointHandler - QuestGetPackageQuestInfoDetailHandler - QuestGetPackageQuestInfoHandler Added new quests - q10300102.csx - q60300030.csx Added a new settings file substory.csx to describe the mission requirements. Database 56 -> 57 Co-authored-by: @hankhotspur
64 lines
2.4 KiB
C#
64 lines
2.4 KiB
C#
using Arrowgene.Ddon.GameServer.Characters;
|
|
using Arrowgene.Ddon.Server;
|
|
using Arrowgene.Ddon.Shared.Entity.PacketStructure;
|
|
using Arrowgene.Ddon.Shared.Model.Quest;
|
|
using Arrowgene.Logging;
|
|
|
|
namespace Arrowgene.Ddon.GameServer.Handler
|
|
{
|
|
public class QuestGetTutorialQuestListHandler : GameRequestPacketHandler<C2SQuestGetTutorialQuestListReq, S2CQuestGetTutorialQuestListRes>
|
|
{
|
|
private static readonly ServerLogger Logger = LogProvider.Logger<ServerLogger>(typeof(QuestGetTutorialQuestListHandler));
|
|
|
|
public QuestGetTutorialQuestListHandler(DdonGameServer server) : base(server)
|
|
{
|
|
}
|
|
|
|
public override S2CQuestGetTutorialQuestListRes Handle(GameClient client, C2SQuestGetTutorialQuestListReq request)
|
|
{
|
|
var result = new S2CQuestGetTutorialQuestListRes()
|
|
{
|
|
StageNo = request.StageNo,
|
|
};
|
|
|
|
var completedQuests = Server.Database.GetCompletedQuestsByType(client.Character.CommonId, QuestType.Tutorial);
|
|
|
|
// This handler should return personal quests which have not been started
|
|
// yet when the player enters the StageNo
|
|
foreach (var questScheduleId in QuestManager.GetQuestByStageNo(QuestType.Tutorial, request.StageNo))
|
|
{
|
|
var quest = QuestManager.GetQuestByScheduleId(questScheduleId);
|
|
if (quest == null || !quest.IsActive(client))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
uint stageNo = (uint) StageManager.ConvertIdToStageNo(quest.StageId);
|
|
if (stageNo != request.StageNo)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (completedQuests.Exists(x => x.QuestId == quest.QuestId))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var questStateManager = QuestManager.GetQuestStateManager(client, quest);
|
|
var questState = questStateManager.GetQuestState(questScheduleId);
|
|
if (questState == null || questState.Step == 0)
|
|
{
|
|
var tutorialQuest = quest.ToCDataTutorialQuestList(0);
|
|
result.TutorialQuestList.Add(tutorialQuest);
|
|
}
|
|
|
|
if (questState == null)
|
|
{
|
|
questStateManager.AddNewQuest(quest, 0);
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|
|
}
|