levelup, item and synchro device fixes

This commit is contained in:
Mikhail
2024-07-07 14:45:00 -04:00
parent 1fac57b254
commit e9ff2caba2
11 changed files with 216 additions and 9 deletions

View File

@@ -13,15 +13,27 @@ namespace nksrv.LobbyServer.Msgs.Character
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetSynchroData>();
var user = GetUser();
var response = new ReqGetSynchroData();
var highestLevelCharacters = user.Characters.OrderByDescending(x => x.Level).Take(5).ToList();
var response = new ResGetSynchroData();
response.Synchro = new NetUserSynchroData();
response.Synchro.SynchroLv = 1;
foreach (var item in highestLevelCharacters)
{
response.Synchro.StandardCharacters.Add(new NetUserCharacterData() { Default = new() { Csn = item.Csn, Skill1Lv = item.Skill1Lvl, Skill2Lv = item.Skill2Lvl, CostumeId = item.CostumeId, Lv = item.Level, Grade = item.Grade, Tid = item.Tid, UltiSkillLv = item.UltimateLevel } });
}
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 1 });
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 2 });
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 3 });
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 4 });
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 5 });
response.Synchro.SynchroMaxLv = highestLevelCharacters.First().Level;
response.Synchro.SynchroLv = highestLevelCharacters.Last().Level;
// TODO: Validate response from real server and pull info from user info
WriteData(response);
}

View File

@@ -0,0 +1,56 @@
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.Character
{
[PacketPath("/character/levelup")]
public class LevelUp : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqCharacterLevelUp>();
var user = GetUser();
var response = new ResCharacterLevelUp();
foreach (var item in user.Characters.ToArray())
{
if (item.Csn == req.Csn)
{
item.Level = req.Level;
// TODO: subtract currency
response.Character = new() {
CostumeId = item.CostumeId,
Csn = item.Csn,
Lv = item.Level,
Skill1Lv = item.Skill1Lvl,
Skill2Lv = item.Skill2Lvl,
UltiSkillLv = item.UltimateLevel,
Grade = item.Grade,
Tid = item.Tid
};
var highestLevelCharacters = user.Characters.OrderByDescending(x => x.Level).Take(5).ToList();
response.SynchroLv = highestLevelCharacters.Last().Level;
foreach (var c in highestLevelCharacters)
{
response.SynchroStandardCharacters.Add(c.Tid);
}
break;
}
}
JsonDb.Save();
WriteData(response);
}
}
}