forked from PGR/ascnet
character promote grade cost
This commit is contained in:
parent
d930e2e679
commit
c10a49b09a
|
@ -3,6 +3,7 @@ using AscNet.Common.MsgPack;
|
||||||
using AscNet.Common.Util;
|
using AscNet.Common.Util;
|
||||||
using AscNet.Table.V2.share.item;
|
using AscNet.Table.V2.share.item;
|
||||||
using AscNet.Table.V2.share.character;
|
using AscNet.Table.V2.share.character;
|
||||||
|
using AscNet.Table.V2.share.character.grade;
|
||||||
using MessagePack;
|
using MessagePack;
|
||||||
using AscNet.Common;
|
using AscNet.Common;
|
||||||
|
|
||||||
|
@ -111,15 +112,25 @@ namespace AscNet.GameServer.Handlers
|
||||||
{
|
{
|
||||||
CharacterPromoteGradeRequest req = packet.Deserialize<CharacterPromoteGradeRequest>();
|
CharacterPromoteGradeRequest req = packet.Deserialize<CharacterPromoteGradeRequest>();
|
||||||
var character = session.character.Characters.Find(c => c.Id == req.TemplateId);
|
var character = session.character.Characters.Find(c => c.Id == req.TemplateId);
|
||||||
|
var currentGrade = TableReaderV2.Parse<CharacterGradeTable>().Find(x => x.CharacterId == req.TemplateId && x.Grade == character?.Grade);
|
||||||
|
|
||||||
if (character is not null)
|
if (character is not null && currentGrade is not null)
|
||||||
{
|
{
|
||||||
const int MaxGrade = 14; // Can't find an instance of this anywhere in the tables sadly
|
var nextGrade = TableReaderV2.Parse<CharacterGradeTable>().Where(x => x.CharacterId == req.TemplateId && x.Grade > character.Grade).OrderBy(x => x.Grade).FirstOrDefault()?.Grade ?? character.Grade;
|
||||||
|
if (character.Grade == nextGrade)
|
||||||
|
{
|
||||||
|
// CharacterManagerMaxGrade
|
||||||
|
session.SendResponse(new CharacterPromoteGradeResponse() { Code = 20009019 }, packet.Id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (currentGrade.UseItemKey is not null)
|
||||||
|
{
|
||||||
|
NotifyItemDataList notifyItemData = new();
|
||||||
|
notifyItemData.ItemDataList.Add(session.inventory.Do(currentGrade.UseItemKey ?? 1, (currentGrade.UseItemCount ?? 0) * -1));
|
||||||
|
session.SendPush(notifyItemData);
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Remove Cogs
|
character.Grade = nextGrade;
|
||||||
|
|
||||||
if (character.Grade < MaxGrade)
|
|
||||||
character.Grade++;
|
|
||||||
|
|
||||||
session.SendPush(new NotifyCharacterDataList()
|
session.SendPush(new NotifyCharacterDataList()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue