mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-20 19:04:35 +01:00
Fix main mission obtain reward
This commit is contained in:
45
nksrv/LobbyServer/Msgs/Trigger/ObtainMainQuestReward.cs
Normal file
45
nksrv/LobbyServer/Msgs/Trigger/ObtainMainQuestReward.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using nksrv.Database;
|
||||
using nksrv.LobbyServer.Msgs.Stage;
|
||||
using nksrv.StaticInfo;
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.Trigger
|
||||
{
|
||||
[PacketPath("/trigger/obtainmainquestreward")]
|
||||
public class ObtainMainQuestReward : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqObtainMainQuestReward>();
|
||||
var user = GetUser();
|
||||
|
||||
ResObtainMainQuestReward response = new();
|
||||
List<NetRewardData> rewards = new();
|
||||
|
||||
foreach (var item in user.MainQuestData)
|
||||
{
|
||||
if (!item.Value && req.TidList.Contains(item.Key))
|
||||
{
|
||||
user.MainQuestData[item.Key] = true;
|
||||
|
||||
var questInfo = StaticDataParser.Instance.GetMainQuestByTableId(item.Key);
|
||||
if (questInfo == null) throw new Exception("failed to lookup quest id " + item.Key);
|
||||
var reward = StaticDataParser.Instance.GetRewardTableEntry(questInfo.reward_id);
|
||||
if (reward == null) throw new Exception("failed to lookup reward id " + questInfo.reward_id);
|
||||
|
||||
rewards.Add(ClearStage.RegisterRewardsForUser(user, reward));
|
||||
}
|
||||
}
|
||||
|
||||
response.Reward = NetUtils.MergeRewards(rewards, user);
|
||||
JsonDb.Save();
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user