diff --git a/EpinelPS/Database/JsonDb.cs b/EpinelPS/Database/JsonDb.cs index b2d9554..d92b0ee 100644 --- a/EpinelPS/Database/JsonDb.cs +++ b/EpinelPS/Database/JsonDb.cs @@ -148,6 +148,7 @@ namespace EpinelPS.Database public bool IsAdmin = false; public bool sickpulls = false; public bool IsBanned = false; + public int TitleId = 1; public DateTime BanStart; public DateTime BanEnd; public int BanId = 0; diff --git a/EpinelPS/GameData/GameData.cs b/EpinelPS/GameData/GameData.cs index 29b127b..562c4f1 100644 --- a/EpinelPS/GameData/GameData.cs +++ b/EpinelPS/GameData/GameData.cs @@ -52,6 +52,7 @@ namespace EpinelPS.StaticInfo public Dictionary archiveEventStoryRecords = new Dictionary(); public Dictionary archiveEventQuestRecords = new Dictionary(); public Dictionary archiveEventDungeonStageRecords = new Dictionary(); + public Dictionary userTitleRecords = new Dictionary(); @@ -423,6 +424,12 @@ namespace EpinelPS.StaticInfo { archiveEventDungeonStageRecords.Add(obj.id, obj); } + + var userTitleTable = await LoadZip("UserTitleTable.json", progress); + foreach (var obj in userTitleTable.records) + { + userTitleRecords.Add(obj.id, obj); + } // Load and parse ArchiveEventStoryTable.json var archiveEventStoryTable = await LoadZip("ArchiveEventStoryTable.json", progress); diff --git a/EpinelPS/GameData/JsonStaticData.cs b/EpinelPS/GameData/JsonStaticData.cs index 95dee85..78521cc 100644 --- a/EpinelPS/GameData/JsonStaticData.cs +++ b/EpinelPS/GameData/JsonStaticData.cs @@ -389,5 +389,21 @@ { public List records; } + public class UserTitleRecord + { + public int id; + public int order; + public string user_title_production_type = ""; + public int user_title_production_id; + public string icon_resource_id = ""; + public string name_locale_key = ""; + public string desc_locale_key = ""; + public int reward_id; + public bool not_acquired_is_visible; + } + public class UserTitleTable + { + public List records; + } } diff --git a/EpinelPS/LobbyServer/LobbyHandler.cs b/EpinelPS/LobbyServer/LobbyHandler.cs index 17a6a15..f579784 100644 --- a/EpinelPS/LobbyServer/LobbyHandler.cs +++ b/EpinelPS/LobbyServer/LobbyHandler.cs @@ -138,6 +138,7 @@ namespace EpinelPS.LobbyServer Frame = user.ProfileFrame, Icon = user.ProfileIconId, IconPrism = user.ProfileIconIsPrism, + UserTitleId = user.TitleId, Nickname = user.Nickname, Usn = (long)user.ID, LastActionAt = DateTimeOffset.UtcNow.Ticks, diff --git a/EpinelPS/LobbyServer/Msgs/Event/GetJoinedEvent.cs b/EpinelPS/LobbyServer/Msgs/Event/GetJoinedEvent.cs index 7591555..fa5a93f 100644 --- a/EpinelPS/LobbyServer/Msgs/Event/GetJoinedEvent.cs +++ b/EpinelPS/LobbyServer/Msgs/Event/GetJoinedEvent.cs @@ -62,7 +62,8 @@ namespace EpinelPS.LobbyServer.Msgs.Event EventSystemType = 1 }, JoinAt = 0 - }); + }); + // cinderella banner response.EventWithJoinData.Add(new NetEventWithJoinData() { EventData = new NetEventData() @@ -75,6 +76,20 @@ namespace EpinelPS.LobbyServer.Msgs.Event EventDisableDate = DateTime.Now.AddDays(20).Ticks }, JoinAt = 0 + }); + //cinderella free pull + response.EventWithJoinData.Add(new NetEventWithJoinData() + { + EventData = new NetEventData() + { + Id = 80004, + EventSystemType = 21, + EventVisibleDate = DateTime.UtcNow.Subtract(TimeSpan.FromDays(7)).Ticks, + EventStartDate = DateTime.UtcNow.Subtract(TimeSpan.FromDays(1)).Ticks, + EventEndDate = DateTime.Now.AddDays(20).Ticks, + EventDisableDate = DateTime.Now.AddDays(20).Ticks + }, + JoinAt = 0 }); await WriteDataAsync(response); diff --git a/EpinelPS/LobbyServer/Msgs/Event/ListEvents.cs b/EpinelPS/LobbyServer/Msgs/Event/ListEvents.cs index be49f02..9a8215e 100644 --- a/EpinelPS/LobbyServer/Msgs/Event/ListEvents.cs +++ b/EpinelPS/LobbyServer/Msgs/Event/ListEvents.cs @@ -215,6 +215,16 @@ namespace EpinelPS.LobbyServer.Msgs.Event EventStartDate = DateTime.UtcNow.Subtract(TimeSpan.FromDays(1)).Ticks, EventEndDate = DateTime.Now.AddDays(20).Ticks, EventDisableDate = DateTime.Now.AddDays(20).Ticks, + }); + // free pull for cinderella + response.EventList.Add(new NetEventData() + { + Id = 80004, + EventSystemType = 21, + EventVisibleDate = DateTime.UtcNow.Subtract(TimeSpan.FromDays(7)).Ticks, + EventStartDate = DateTime.UtcNow.Subtract(TimeSpan.FromDays(1)).Ticks, + EventEndDate = DateTime.Now.AddDays(20).Ticks, + EventDisableDate = DateTime.Now.AddDays(20).Ticks, }); diff --git a/EpinelPS/LobbyServer/Msgs/User/GetUserTitle.cs b/EpinelPS/LobbyServer/Msgs/User/GetUserTitle.cs index 4386495..0dfcc88 100644 --- a/EpinelPS/LobbyServer/Msgs/User/GetUserTitle.cs +++ b/EpinelPS/LobbyServer/Msgs/User/GetUserTitle.cs @@ -1,4 +1,5 @@ using EpinelPS.Utils; +using EpinelPS.StaticInfo; // For GameData access namespace EpinelPS.LobbyServer.Msgs.User { @@ -8,9 +9,15 @@ namespace EpinelPS.LobbyServer.Msgs.User protected override async Task HandleAsync() { var req = await ReadData(); - var r = new ResGetUserTitleList(); - r.UserTitleList.Add(new NetUserTitle() { UserTitleId = 1 }); + + // Access GameData and get all UserTitle IDs + var userTitleRecords = GameData.Instance.userTitleRecords; + + foreach (var titleId in userTitleRecords.Keys) + { + r.UserTitleList.Add(new NetUserTitle() { UserTitleId = titleId }); + } await WriteDataAsync(r); } diff --git a/EpinelPS/LobbyServer/Msgs/User/SetUserTitle.cs b/EpinelPS/LobbyServer/Msgs/User/SetUserTitle.cs index 1669996..6e1f6bc 100644 --- a/EpinelPS/LobbyServer/Msgs/User/SetUserTitle.cs +++ b/EpinelPS/LobbyServer/Msgs/User/SetUserTitle.cs @@ -1,5 +1,5 @@ using EpinelPS.Utils; - +using EpinelPS.Database; namespace EpinelPS.LobbyServer.Msgs.User { [PacketPath("/lobby/usertitle/set")] @@ -8,7 +8,9 @@ namespace EpinelPS.LobbyServer.Msgs.User protected override async Task HandleAsync() { var req = await ReadData(); - + var user = GetUser(); + user.TitleId = req.UserTitleId; + JsonDb.Save(); var response = new ResSetUserTitle(); await WriteDataAsync(response);