From 5824edbf4f63d1933b553e7b85dfb78bbfbde861 Mon Sep 17 00:00:00 2001 From: rfi Date: Thu, 7 Dec 2023 18:37:38 +0700 Subject: [PATCH] multi clearing reward handling --- AscNet.GameServer/Game/Fight.cs | 19 ++++ AscNet.GameServer/Handlers/FightModule.cs | 105 ++++++++++++---------- AscNet.GameServer/Session.cs | 2 + 3 files changed, 79 insertions(+), 47 deletions(-) create mode 100644 AscNet.GameServer/Game/Fight.cs diff --git a/AscNet.GameServer/Game/Fight.cs b/AscNet.GameServer/Game/Fight.cs new file mode 100644 index 0000000..d44c74c --- /dev/null +++ b/AscNet.GameServer/Game/Fight.cs @@ -0,0 +1,19 @@ +using AscNet.Common.MsgPack; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AscNet.GameServer.Game +{ + public class Fight + { + public PreFightRequest PreFight { get; set; } + + public Fight(PreFightRequest preFight) + { + PreFight = preFight; + } + } +} diff --git a/AscNet.GameServer/Handlers/FightModule.cs b/AscNet.GameServer/Handlers/FightModule.cs index 3a1f828..3672e98 100644 --- a/AscNet.GameServer/Handlers/FightModule.cs +++ b/AscNet.GameServer/Handlers/FightModule.cs @@ -188,6 +188,7 @@ namespace AscNet.GameServer.Handlers } } + session.fight = new(req); session.SendResponse(rsp, packet.Id); } @@ -227,7 +228,12 @@ namespace AscNet.GameServer.Handlers return; } + int challengeCount = session.fight?.PreFight.PreFightData.ChallengeCount ?? 1; + stageTable.CardExp *= challengeCount; + stageTable.TeamExp *= challengeCount; + List rewards = new(); + List> multiRewards = new(); List rewardTables = TableReaderV2.Parse().Where(x => session.stage.Stages.ContainsKey(req.Result.StageId) ? x.Id == stageTable.FinishDropId : (x.Id == stageTable.FinishDropId || x.Id == stageTable.FirstRewardId)).ToList(); if (rewardTables.Count == 0) { @@ -237,57 +243,63 @@ namespace AscNet.GameServer.Handlers NotifyItemDataList notifyItemData = new(); notifyItemData.ItemDataList.Add(session.inventory.Do(Inventory.TeamExp, stageTable.TeamExp ?? 0)); - foreach (var rewardGoodsId in rewardTables.SelectMany(x => x.SubIds)) + for (int i = 0; i < challengeCount; i++) { - RewardGoodsTable? rewardGood = TableReaderV2.Parse().FirstOrDefault(x => x.Id == rewardGoodsId); - if (rewardGood is not null) + foreach (var rewardGoodsId in rewardTables.SelectMany(x => x.SubIds)) { - // Item type formula - int rewardTypeVal = (int)MathF.Floor((rewardGood.TemplateId > 0 ? rewardGood.TemplateId : rewardGood.Id) / 1000000) + 1; - RewardType rewardType = RewardType.Item; - try + RewardGoodsTable? rewardGood = TableReaderV2.Parse().FirstOrDefault(x => x.Id == rewardGoodsId); + if (rewardGood is not null) { - rewardType = (RewardType)Enum.ToObject(typeof(RewardType), rewardTypeVal); - } - catch (Exception) - { - session.log.Error($"Failed to convert {rewardTypeVal} to {nameof(RewardType)} enum object!"); - } - - // TODO: Implement other types. Other types are behaving weirdly - if (rewardType == RewardType.Item) - { - ItemTable? itemData = TableReaderV2.Parse().Find(x => x.Id == rewardGood.TemplateId); - if (itemData is not null) + // Item type formula + int rewardTypeVal = (int)MathF.Floor((rewardGood.TemplateId > 0 ? rewardGood.TemplateId : rewardGood.Id) / 1000000) + 1; + RewardType rewardType = RewardType.Item; + try { - // Custom handler for some items that aren't meant to be in the inventory. - DropHandlerDelegate? dropHandler = DropsHandlerFactory.GetDropHandler(itemData.Id); - if (itemData.IsHidden() && dropHandler is not null) - { - rewards.AddRange(dropHandler.Invoke(session, rewardGood.Count).Select(x => new RewardGoods() - { - Id = rewardGood.Id, - TemplateId = x.TemplateId, - Count = x.Count, - Level = x.Level, - RewardType = (int)x.Type, - Quality = x.Quality - })); - continue; - } + rewardType = (RewardType)Enum.ToObject(typeof(RewardType), rewardTypeVal); + } + catch (Exception) + { + session.log.Error($"Failed to convert {rewardTypeVal} to {nameof(RewardType)} enum object!"); } - notifyItemData.ItemDataList.Add(session.inventory.Do(rewardGood.TemplateId, rewardGood.Count)); - - rewards.Add(new() + // TODO: Implement other types. Other types are behaving weirdly + if (rewardType == RewardType.Item) { - Id = rewardGood.Id, - TemplateId = rewardGood.TemplateId, - Count = rewardGood.Count, - RewardType = rewardTypeVal - }); + ItemTable? itemData = TableReaderV2.Parse().Find(x => x.Id == rewardGood.TemplateId); + if (itemData is not null) + { + // Custom handler for some items that aren't meant to be in the inventory. + DropHandlerDelegate? dropHandler = DropsHandlerFactory.GetDropHandler(itemData.Id); + if (itemData.IsHidden() && dropHandler is not null) + { + rewards.AddRange(dropHandler.Invoke(session, rewardGood.Count).Select(x => new RewardGoods() + { + Id = rewardGood.Id, + TemplateId = x.TemplateId, + Count = x.Count, + Level = x.Level, + RewardType = (int)x.Type, + Quality = x.Quality + })); + continue; + } + } + + notifyItemData.ItemDataList.Add(session.inventory.Do(rewardGood.TemplateId, rewardGood.Count)); + + rewards.Add(new() + { + Id = rewardGood.Id, + TemplateId = rewardGood.TemplateId, + Count = rewardGood.Count, + RewardType = rewardTypeVal + }); + } } } + + multiRewards.Add(new List(rewards)); + rewards.Clear(); } session.SendPush(notifyItemData); @@ -337,16 +349,15 @@ namespace AscNet.GameServer.Handlers IsWin = true, StageId = (uint)stageData.StageId, StarsMark = (int)stageData.StarsMark, - RewardGoodsList = rewards, - MultiRewardGoodsList = { rewards }, + RewardGoodsList = multiRewards.Count > 0 ? multiRewards.First() : rewards, + MultiRewardGoodsList = multiRewards, NpcHpInfo = req.Result.NpcHpInfo, - ChallengeCount = 1 + ChallengeCount = challengeCount } }; - + session.fight = null; session.SendPush(new NotifyStageData() { StageList = new() { stageData } }); - // session.SendResponse(MessagePackSerializer.Deserialize(MessagePackSerializer.ConvertFromJson($"{{\"Code\": 0, \"Settle\": {{\"IsWin\": true, \"StageId\": {req.Result.StageId}, \"StarsMark\": 7, \"RewardGoodsList\": [{{\"RewardType\": 1, \"TemplateId\": 1, \"Count\": 1947, \"Level\": 0, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}, {{\"RewardType\": 1, \"TemplateId\": 30011, \"Count\": 1, \"Level\": 0, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}, {{\"RewardType\": 1, \"TemplateId\": 30011, \"Count\": 1, \"Level\": 0, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}, {{\"RewardType\": 3, \"TemplateId\": 3052001, \"Count\": 1, \"Level\": 1, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}, {{\"RewardType\": 3, \"TemplateId\": 3034002, \"Count\": 1, \"Level\": 1, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}], \"LeftTime\": 282, \"NpcHpInfo\": {{\"9\": {{\"CharacterId\": 0, \"NpcId\": 91030, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9003, 900007, 900050, 701022, 900011, 900051, 910300, 715531, 700053, 715075, 700007, 900080, 700045, 100062, 700030, 700029, 710076, 700027, 700215, 700028], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 751}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 84, \"MaxValue\": 84}}, \"4\": {{\"Value\": 84, \"MaxValue\": 84}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"10\": {{\"CharacterId\": 0, \"NpcId\": 92090, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9009, 900007, 900050, 900055, 900011, 900051, 900072, 715531, 700053, 715075, 700007, 900080, 700028, 700045, 100062, 700030, 700029, 701022, 710076, 700027, 700215], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 301}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 84, \"MaxValue\": 84}}, \"4\": {{\"Value\": 84, \"MaxValue\": 84}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"11\": {{\"CharacterId\": 0, \"NpcId\": 92090, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9009, 900007, 900050, 900072, 900011, 900051, 700028, 715531, 700053, 715075, 700007, 900080, 100063, 100068, 700030, 700045, 700029, 701022, 710076, 700027, 700215], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 301}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 84, \"MaxValue\": 84}}, \"4\": {{\"Value\": 84, \"MaxValue\": 84}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"12\": {{\"CharacterId\": 0, \"NpcId\": 91100, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9010, 900007, 900050, 900055, 900011, 900051, 900082, 715531, 700053, 715075, 700007, 900080, 700030, 700029, 700045, 700028, 701022, 710076, 700027, 700215], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 844}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 199, \"MaxValue\": 199}}, \"4\": {{\"Value\": 99, \"MaxValue\": 99}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 38, \"MaxValue\": 38}}, \"12\": {{\"Value\": 38, \"MaxValue\": 38}}, \"13\": {{\"Value\": 38, \"MaxValue\": 38}}, \"14\": {{\"Value\": 38, \"MaxValue\": 38}}, \"15\": {{\"Value\": 38, \"MaxValue\": 38}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 18, \"MaxValue\": 18}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"14\": {{\"CharacterId\": 0, \"NpcId\": 91090, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9009, 900007, 900050, 900055, 900011, 900051, 900082, 715531, 700053, 715075, 700007, 900080, 100062, 100063, 100068, 700030, 700029, 700045, 700028, 701022, 710076, 700027, 700215], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 751}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 84, \"MaxValue\": 84}}, \"4\": {{\"Value\": 84, \"MaxValue\": 84}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"13\": {{\"CharacterId\": 0, \"NpcId\": 91090, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9009, 900007, 900050, 900082, 900011, 900051, 700030, 715531, 700053, 715075, 700007, 900080, 100063, 100068, 700029, 700045, 700028, 701022, 710076, 700027, 700215], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 751}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 84, \"MaxValue\": 84}}, \"4\": {{\"Value\": 84, \"MaxValue\": 84}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"16\": {{\"CharacterId\": 0, \"NpcId\": 91120, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9012, 900007, 900050, 700030, 900011, 900051, 700029, 715531, 700933, 715075, 700053, 700007, 900080, 700045, 700028, 701022, 710076, 700027, 700215, 700008, 900052], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 751}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 99, \"MaxValue\": 99}}, \"4\": {{\"Value\": 99, \"MaxValue\": 99}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"15\": {{\"CharacterId\": 0, \"NpcId\": 91120, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9012, 900007, 900050, 900055, 900011, 900051, 900082, 715531, 700030, 715075, 700053, 700007, 900080, 700029, 700045, 700028, 701022, 710076, 700027, 700215], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 751}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 99, \"MaxValue\": 99}}, \"4\": {{\"Value\": 99, \"MaxValue\": 99}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"1\": {{\"CharacterId\": 1021001, \"NpcId\": 10210012, \"Type\": 1, \"Level\": 50, \"BuffIds\": [100054, 1002, 100050, 100051, 100074, 100085, 100201, 715587, 100219, 100243, 502101, 620701, 620705, 620801, 100055, 100056, 100057, 100058, 900081, 199931, 100052, 100053, 100204, 100294, 100295, 100296, 100297, 100001, 105535, 410011, 410012, 731103, 100016, 100007, 100093, 100091, 100000, 100021, 100076], \"AttrTable\": {{\"1\": {{\"Value\": 5211, \"MaxValue\": 5211}}, \"2\": {{\"Value\": 42, \"MaxValue\": 120}}, \"3\": {{\"Value\": 249, \"MaxValue\": 249}}, \"4\": {{\"Value\": 249, \"MaxValue\": 249}}, \"5\": {{\"Value\": 610, \"MaxValue\": 610}}, \"6\": {{\"Value\": 20019980, \"MaxValue\": 20019980}}, \"11\": {{\"Value\": 1076, \"MaxValue\": 1076}}, \"12\": {{\"Value\": 1076, \"MaxValue\": 1076}}, \"13\": {{\"Value\": 1076, \"MaxValue\": 1076}}, \"14\": {{\"Value\": 1076, \"MaxValue\": 1076}}, \"15\": {{\"Value\": 1076, \"MaxValue\": 1076}}, \"23\": {{\"Value\": 676, \"MaxValue\": 676}}, \"25\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 527, \"MaxValue\": 527}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"55\": {{\"Value\": 0, \"MaxValue\": 1000}}, \"56\": {{\"Value\": -96, \"MaxValue\": -96}}, \"57\": {{\"Value\": 0, \"MaxValue\": 100}}, \"68\": {{\"Value\": 199, \"MaxValue\": 199}}, \"74\": {{\"Value\": 699, \"MaxValue\": 699}}}}}}, \"2\": {{\"CharacterId\": 1031003, \"NpcId\": 10310033, \"Type\": 1, \"Level\": 45, \"BuffIds\": [100054, 102389, 1023, 100050, 100051, 100074, 100088, 102339, 102340, 102348, 410011, 503101, 620201, 620202, 620217, 620301, 620302, 620304, 620307, 100055, 100056, 100057, 100058, 199931, 100052, 100053, 105535, 410012], \"AttrTable\": {{\"1\": {{\"Value\": 2271, \"MaxValue\": 2271}}, \"2\": {{\"Value\": 0, \"MaxValue\": 120}}, \"3\": {{\"Value\": 249, \"MaxValue\": 249}}, \"4\": {{\"Value\": 249, \"MaxValue\": 249}}, \"5\": {{\"Value\": 610, \"MaxValue\": 610}}, \"6\": {{\"Value\": 20019980, \"MaxValue\": 20019980}}, \"11\": {{\"Value\": 470, \"MaxValue\": 470}}, \"12\": {{\"Value\": 470, \"MaxValue\": 470}}, \"13\": {{\"Value\": 470, \"MaxValue\": 470}}, \"14\": {{\"Value\": 470, \"MaxValue\": 470}}, \"15\": {{\"Value\": 470, \"MaxValue\": 470}}, \"23\": {{\"Value\": 302, \"MaxValue\": 302}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 263, \"MaxValue\": 263}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"51\": {{\"Value\": 2471, \"MaxValue\": 2471}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"55\": {{\"Value\": 800, \"MaxValue\": 800}}, \"56\": {{\"Value\": 4, \"MaxValue\": 4}}, \"57\": {{\"Value\": 0, \"MaxValue\": 4}}, \"68\": {{\"Value\": 199, \"MaxValue\": 199}}, \"74\": {{\"Value\": 699, \"MaxValue\": 699}}}}}}, \"3\": {{\"CharacterId\": 1051001, \"NpcId\": 10510012, \"Type\": 1, \"Level\": 45, \"BuffIds\": [100054, 1005, 100050, 100051, 100074, 100086, 100541, 410011, 505101, 620401, 620413, 620501, 620503, 620506, 100055, 100056, 100057, 100058, 199931, 100052, 100053, 105535, 410012], \"AttrTable\": {{\"1\": {{\"Value\": 2678, \"MaxValue\": 2678}}, \"2\": {{\"Value\": 0, \"MaxValue\": 120}}, \"3\": {{\"Value\": 249, \"MaxValue\": 249}}, \"4\": {{\"Value\": 249, \"MaxValue\": 249}}, \"5\": {{\"Value\": 610, \"MaxValue\": 610}}, \"6\": {{\"Value\": 20019980, \"MaxValue\": 20019980}}, \"11\": {{\"Value\": 544, \"MaxValue\": 544}}, \"12\": {{\"Value\": 544, \"MaxValue\": 544}}, \"13\": {{\"Value\": 544, \"MaxValue\": 544}}, \"14\": {{\"Value\": 544, \"MaxValue\": 544}}, \"15\": {{\"Value\": 544, \"MaxValue\": 544}}, \"23\": {{\"Value\": 303, \"MaxValue\": 303}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 314, \"MaxValue\": 314}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 7500, \"MaxValue\": 7500}}, \"55\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"56\": {{\"Value\": 4, \"MaxValue\": 4}}, \"57\": {{\"Value\": 0, \"MaxValue\": 100}}, \"68\": {{\"Value\": 199, \"MaxValue\": 199}}, \"74\": {{\"Value\": 699, \"MaxValue\": 699}}}}}}, \"4\": {{\"CharacterId\": 0, \"NpcId\": 2006, \"Type\": 5, \"Level\": 99999, \"BuffIds\": [900064, 900065, 900056, 905068, 710193, 710195, 715587, 710301, 700230, 700007, 701022, 710076, 700017, 715707, 715678, 700501, 700053], \"AttrTable\": {{\"1\": {{\"Value\": 499990010, \"MaxValue\": 499990010}}, \"2\": {{\"Value\": 0, \"MaxValue\": 500}}, \"3\": {{\"Value\": 249, \"MaxValue\": 249}}, \"4\": {{\"Value\": 249, \"MaxValue\": 249}}, \"5\": {{\"Value\": 209, \"MaxValue\": 209}}, \"6\": {{\"Value\": 19999980, \"MaxValue\": 19999980}}, \"11\": {{\"Value\": 15, \"MaxValue\": 15}}, \"12\": {{\"Value\": 499990, \"MaxValue\": 499990}}, \"13\": {{\"Value\": 499990, \"MaxValue\": 499990}}, \"14\": {{\"Value\": 499990, \"MaxValue\": 499990}}, \"15\": {{\"Value\": 499990, \"MaxValue\": 499990}}, \"24\": {{\"Value\": 249994, \"MaxValue\": 249994}}, \"25\": {{\"Value\": 149996, \"MaxValue\": 149996}}, \"34\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"35\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"36\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"37\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 249994, \"MaxValue\": 249994}}, \"53\": {{\"Value\": 3300034, \"MaxValue\": 3300034}}, \"54\": {{\"Value\": -19000, \"MaxValue\": -19000}}, \"55\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"56\": {{\"Value\": 4, \"MaxValue\": 4}}, \"57\": {{\"Value\": 0, \"MaxValue\": 100}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}, \"75\": {{\"Value\": 0, \"MaxValue\": 100}}, \"76\": {{\"Value\": 0, \"MaxValue\": 100}}, \"77\": {{\"Value\": 0, \"MaxValue\": 100}}, \"78\": {{\"Value\": 0, \"MaxValue\": 100}}}}}}, \"5\": {{\"CharacterId\": 0, \"NpcId\": 2006, \"Type\": 5, \"Level\": 21, \"BuffIds\": [900064, 900065, 900056, 905068, 710193, 710195], \"AttrTable\": {{\"1\": {{\"Value\": 100010, \"MaxValue\": 100010}}, \"2\": {{\"Value\": 0, \"MaxValue\": 500}}, \"3\": {{\"Value\": 249, \"MaxValue\": 249}}, \"4\": {{\"Value\": 249, \"MaxValue\": 249}}, \"5\": {{\"Value\": 209, \"MaxValue\": 209}}, \"6\": {{\"Value\": 19999980, \"MaxValue\": 19999980}}, \"11\": {{\"Value\": 15, \"MaxValue\": 15}}, \"12\": {{\"Value\": 100, \"MaxValue\": 100}}, \"13\": {{\"Value\": 100, \"MaxValue\": 100}}, \"14\": {{\"Value\": 100, \"MaxValue\": 100}}, \"15\": {{\"Value\": 100, \"MaxValue\": 100}}, \"24\": {{\"Value\": 49, \"MaxValue\": 49}}, \"25\": {{\"Value\": 29, \"MaxValue\": 29}}, \"34\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"35\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"36\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"37\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 49, \"MaxValue\": 49}}, \"53\": {{\"Value\": 760, \"MaxValue\": 760}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"55\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"56\": {{\"Value\": 4, \"MaxValue\": 4}}, \"57\": {{\"Value\": 0, \"MaxValue\": 100}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}, \"75\": {{\"Value\": 0, \"MaxValue\": 100}}, \"76\": {{\"Value\": 0, \"MaxValue\": 100}}, \"77\": {{\"Value\": 0, \"MaxValue\": 100}}, \"78\": {{\"Value\": 0, \"MaxValue\": 100}}}}}}, \"6\": {{\"CharacterId\": 0, \"NpcId\": 2006, \"Type\": 5, \"Level\": 1, \"BuffIds\": [900064, 900065, 900056, 905068, 710193, 710195], \"AttrTable\": {{\"1\": {{\"Value\": 10, \"MaxValue\": 10}}, \"2\": {{\"Value\": 0, \"MaxValue\": 500}}, \"3\": {{\"Value\": 249, \"MaxValue\": 249}}, \"4\": {{\"Value\": 249, \"MaxValue\": 249}}, \"5\": {{\"Value\": 209, \"MaxValue\": 209}}, \"6\": {{\"Value\": 19999980, \"MaxValue\": 19999980}}, \"11\": {{\"Value\": 15, \"MaxValue\": 15}}, \"34\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"35\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"36\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"37\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"53\": {{\"Value\": 100, \"MaxValue\": 100}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"55\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"56\": {{\"Value\": 4, \"MaxValue\": 4}}, \"57\": {{\"Value\": 0, \"MaxValue\": 100}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}, \"75\": {{\"Value\": 0, \"MaxValue\": 100}}, \"76\": {{\"Value\": 0, \"MaxValue\": 100}}, \"77\": {{\"Value\": 0, \"MaxValue\": 100}}, \"78\": {{\"Value\": 0, \"MaxValue\": 100}}}}}}, \"7\": {{\"CharacterId\": 0, \"NpcId\": 2006, \"Type\": 5, \"Level\": 1, \"BuffIds\": [900064, 900065, 900056, 905068, 710193, 710195, 709001], \"AttrTable\": {{\"1\": {{\"Value\": 10, \"MaxValue\": 10}}, \"2\": {{\"Value\": 0, \"MaxValue\": 500}}, \"3\": {{\"Value\": 249, \"MaxValue\": 249}}, \"4\": {{\"Value\": 249, \"MaxValue\": 249}}, \"5\": {{\"Value\": 209, \"MaxValue\": 209}}, \"6\": {{\"Value\": 19999980, \"MaxValue\": 19999980}}, \"11\": {{\"Value\": 15, \"MaxValue\": 15}}, \"34\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"35\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"36\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"37\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"53\": {{\"Value\": 100, \"MaxValue\": 100}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"55\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"56\": {{\"Value\": 4, \"MaxValue\": 4}}, \"57\": {{\"Value\": 0, \"MaxValue\": 100}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}, \"75\": {{\"Value\": 0, \"MaxValue\": 100}}, \"76\": {{\"Value\": 0, \"MaxValue\": 100}}, \"77\": {{\"Value\": 0, \"MaxValue\": 100}}, \"78\": {{\"Value\": 0, \"MaxValue\": 100}}}}}}, \"8\": {{\"CharacterId\": 0, \"NpcId\": 2006, \"Type\": 5, \"Level\": 1, \"BuffIds\": [900064, 900065, 900056, 905068, 710193, 710195, 709003], \"AttrTable\": {{\"1\": {{\"Value\": 10, \"MaxValue\": 10}}, \"2\": {{\"Value\": 0, \"MaxValue\": 500}}, \"3\": {{\"Value\": 249, \"MaxValue\": 249}}, \"4\": {{\"Value\": 249, \"MaxValue\": 249}}, \"5\": {{\"Value\": 209, \"MaxValue\": 209}}, \"6\": {{\"Value\": 19999980, \"MaxValue\": 19999980}}, \"11\": {{\"Value\": 15, \"MaxValue\": 15}}, \"34\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"35\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"36\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"37\": {{\"Value\": 2000, \"MaxValue\": 2000}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"53\": {{\"Value\": 100, \"MaxValue\": 100}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"55\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"56\": {{\"Value\": 4, \"MaxValue\": 4}}, \"57\": {{\"Value\": 0, \"MaxValue\": 100}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}, \"75\": {{\"Value\": 0, \"MaxValue\": 100}}, \"76\": {{\"Value\": 0, \"MaxValue\": 100}}, \"77\": {{\"Value\": 0, \"MaxValue\": 100}}, \"78\": {{\"Value\": 0, \"MaxValue\": 100}}}}}}}}, \"UrgentEnventId\": 0, \"ClientAssistInfo\": null, \"FlopRewardList\": [], \"ArenaResult\": null, \"MultiRewardGoodsList\": [], \"ChallengeCount\": 0, \"UnionKillResult\": null, \"InfestorBossFightResult\": null, \"GuildBossFightResult\": null, \"WorldBossFightResult\": null, \"BossSingleFightResult\": null, \"NieRBossFightResult\": null, \"TRPGBossFightResult\": null, \"ExpeditionFightResult\": null, \"ChessPursuitResult\": [], \"StrongholdFightResult\": null, \"AreaWarFightResult\": null, \"GuildWarFightResult\": null, \"ReformFightResult\": null, \"KillZoneStageResult\": null, \"EpisodeFightResult\": {{}}, \"StTargetStageFightResult\": null, \"StMapTierDataOperation\": null, \"SimulateTrainFightResult\": null, \"SuperSmashBrosBattleResult\": null, \"SpecialTrainRankFightResult\": null, \"DoubleTowerFightResult\": null, \"TaikoMasterSettleResult\": null, \"MultiDimFightResult\": null, \"MoewarParkourSettleResult\": null, \"SpecialTrainBreakthroughResult\": null}}}}")), packet.Id); session.SendResponse(fightSettleResponse, packet.Id); } } diff --git a/AscNet.GameServer/Session.cs b/AscNet.GameServer/Session.cs index f679714..72d0f38 100644 --- a/AscNet.GameServer/Session.cs +++ b/AscNet.GameServer/Session.cs @@ -3,6 +3,7 @@ using System.Net.Sockets; using AscNet.Common; using AscNet.Common.Database; using AscNet.Common.Util; +using AscNet.GameServer.Game; using AscNet.Logging; using MessagePack; using Newtonsoft.Json; @@ -17,6 +18,7 @@ namespace AscNet.GameServer public Player player = default!; public Character character = default!; public Stage stage = default!; + public Fight? fight; public Inventory inventory = default!; public readonly Logger log; private long lastPacketTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();