diff --git a/EpinelPS/LobbyServer/Outpost/Recycle/PersonalResearchLevelUp.cs b/EpinelPS/LobbyServer/Outpost/Recycle/PersonalResearchLevelUp.cs new file mode 100644 index 0000000..9b0604c --- /dev/null +++ b/EpinelPS/LobbyServer/Outpost/Recycle/PersonalResearchLevelUp.cs @@ -0,0 +1,30 @@ +using EpinelPS.Database; +using EpinelPS.Utils; + +namespace EpinelPS.LobbyServer.Outpost.Recycle +{ + [PacketPath("/outpost/RecycleRoom/PersonalResearchLevelUp")] + public class PersonalResearchLevelUp : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + ReqPersonalResearchRecycleLevelUp req = await ReadData(); + ResPersonalResearchRecycleLevelUp response = new(); + User user = GetUser(); + + const int personalResearchTid = 1001; + RecycleRoomResearchProgress personalResearchProgress = user.ResearchProgress[personalResearchTid] ?? throw new Exception("PersonalRearch not found."); + personalResearchProgress.Level += req.LevelUpCount; + response.Recycle = new() + { + Tid = personalResearchTid, + Lv = personalResearchProgress.Level, + Exp = personalResearchProgress.Exp + }; + + JsonDb.Save(); + + await WriteDataAsync(response); + } + } +}