diff --git a/Common/Data/Excel/GridFightForgeExcel.cs b/Common/Data/Excel/GridFightForgeExcel.cs new file mode 100644 index 00000000..bd8de290 --- /dev/null +++ b/Common/Data/Excel/GridFightForgeExcel.cs @@ -0,0 +1,26 @@ +using EggLink.DanhengServer.Enums.GridFight; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace EggLink.DanhengServer.Data.Excel; + +[ResourceEntity("GridFightForge.json")] +public class GridFightForgeExcel : ExcelResource +{ + public uint ID { get; set; } + public uint EquipNum { get; set; } + public List ParamList { get; set; } = []; + + [JsonConverter(typeof(StringEnumConverter))] + public GridFightForgeFuncTypeEnum FuncType { get; set; } + + public override int GetId() + { + return (int)ID; + } + + public override void Loaded() + { + GameData.GridFightForgeData.TryAdd(ID, this); + } +} \ No newline at end of file diff --git a/Common/Data/Excel/GridFightTraitBonusAddRuleExcel.cs b/Common/Data/Excel/GridFightTraitBonusAddRuleExcel.cs new file mode 100644 index 00000000..a710a69f --- /dev/null +++ b/Common/Data/Excel/GridFightTraitBonusAddRuleExcel.cs @@ -0,0 +1,25 @@ +using EggLink.DanhengServer.Enums.GridFight; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace EggLink.DanhengServer.Data.Excel; + +[ResourceEntity("GridFightTraitBonusAddRule.json")] +public class GridFightTraitBonusAddRuleExcel : ExcelResource +{ + public uint ID { get; set; } + public List ParamList { get; set; } = []; + + [JsonConverter(typeof(StringEnumConverter))] + public GridFightTraitBonusAddTypeEnum TraitBonusType { get; set; } + + public override int GetId() + { + return (int)ID; + } + + public override void Loaded() + { + GameData.GridFightTraitBonusAddRuleData.TryAdd(ID, this); + } +} \ No newline at end of file diff --git a/Common/Data/Excel/GridFightTraitBonusExcel.cs b/Common/Data/Excel/GridFightTraitBonusExcel.cs new file mode 100644 index 00000000..061bc5bb --- /dev/null +++ b/Common/Data/Excel/GridFightTraitBonusExcel.cs @@ -0,0 +1,27 @@ +using EggLink.DanhengServer.Enums.GridFight; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace EggLink.DanhengServer.Data.Excel; + +[ResourceEntity("GridFightTraitBonus.json")] +public class GridFightTraitBonusExcel : ExcelResource +{ + public uint ID { get; set; } + public uint BonusThreshold { get; set; } + public List BonusParamList { get; set; } = []; + + [JsonConverter(typeof(StringEnumConverter))] + public GridFightTraitBonusTypeEnum BonusType { get; set; } + + public override int GetId() + { + return (int)ID; + } + + public override void Loaded() + { + GameData.GridFightTraitBonusData.TryAdd(ID, []); + GameData.GridFightTraitBonusData[ID].TryAdd(BonusThreshold, this); + } +} \ No newline at end of file diff --git a/Common/Data/GameData.cs b/Common/Data/GameData.cs index 23d8676b..7863ff39 100644 --- a/Common/Data/GameData.cs +++ b/Common/Data/GameData.cs @@ -130,7 +130,13 @@ public static class GameData public static Dictionary GridFightDivisionInfoData { get; private set; } = []; public static Dictionary GridFightDivisionStageData { get; private set; } = []; public static Dictionary GridFightEquipmentData { get; private set; } = []; + public static Dictionary GridFightForgeData { get; private set; } = []; public static Dictionary GridFightTraitEffectData { get; private set; } = []; + + public static Dictionary + GridFightTraitBonusAddRuleData { get; private set; } = []; + + public static Dictionary> GridFightTraitBonusData{ get; private set; } = []; public static Dictionary GridFightEquipUpgradeData { get; private set; } = []; public static Dictionary GridFightConsumablesData { get; private set; } = []; public static Dictionary GridFightCampData { get; private set; } = []; diff --git a/Common/Enums/GridFight/GridFightForgeFuncTypeEnum.cs b/Common/Enums/GridFight/GridFightForgeFuncTypeEnum.cs new file mode 100644 index 00000000..1ae9d647 --- /dev/null +++ b/Common/Enums/GridFight/GridFightForgeFuncTypeEnum.cs @@ -0,0 +1,8 @@ +namespace EggLink.DanhengServer.Enums.GridFight; + +public enum GridFightForgeFuncTypeEnum +{ + None = 0, + Equip = 1, + Role = 2 +} \ No newline at end of file diff --git a/Common/Enums/GridFight/GridFightTraitBonusAddTypeEnum.cs b/Common/Enums/GridFight/GridFightTraitBonusAddTypeEnum.cs new file mode 100644 index 00000000..edf40f12 --- /dev/null +++ b/Common/Enums/GridFight/GridFightTraitBonusAddTypeEnum.cs @@ -0,0 +1,8 @@ +namespace EggLink.DanhengServer.Enums.GridFight; + +public enum GridFightTraitBonusAddTypeEnum +{ + ByGameplay = 0, + ByEquipNum = 1, + ByConstWithPerfectPass = 2 +} \ No newline at end of file diff --git a/Common/Enums/GridFight/GridFightTraitBonusTypeEnum.cs b/Common/Enums/GridFight/GridFightTraitBonusTypeEnum.cs new file mode 100644 index 00000000..7c201000 --- /dev/null +++ b/Common/Enums/GridFight/GridFightTraitBonusTypeEnum.cs @@ -0,0 +1,10 @@ +namespace EggLink.DanhengServer.Enums.GridFight; + +public enum GridFightTraitBonusTypeEnum +{ + None = 0, + Bonus = 1, + Enhance = 2, + TraitMemberPropertyRatio = 3, + AllMemberPropertyRatio = 4 +} \ No newline at end of file diff --git a/GameServer/Game/Battle/Custom/BattleGridFightOptions.cs b/GameServer/Game/Battle/Custom/BattleGridFightOptions.cs index aaaf1a1d..e2e7f029 100644 --- a/GameServer/Game/Battle/Custom/BattleGridFightOptions.cs +++ b/GameServer/Game/Battle/Custom/BattleGridFightOptions.cs @@ -33,9 +33,15 @@ public class BattleGridFightOptions(GridFightGameSectionInfo curSection, GridFig BaseAvatars = avatars.Concat(backAvatars).Select(y => new LineupAvatarInfo { BaseAvatarId = y.BaseAvatarId - }).ToList() + }).ToList(), + LineupType = (int)ExtraLineupType.LineupGridFight }; + foreach (var baseAvatarInfo in avatars.Concat(backAvatars)) + { + baseAvatarInfo.SetCurHp(10000, true); + } + var formatted = avatars.Select(x => x.ToBattleProto( new PlayerDataCollection(Player.Data, Player.InventoryManager!.Data, tempLineup), @@ -118,7 +124,8 @@ public class BattleGridFightOptions(GridFightGameSectionInfo curSection, GridFig PenaltyBonusRuleId = ruleId, GridFightAugmentInfo = { AugmentComponent.Data.Augments.Select(x => x.ToBattleInfo()) }, GridFightPortalBuffList = { LevelComponent.PortalBuffs.Select(x => x.ToBattleInfo()) }, - GridFightTraitInfo = { TraitComponent.Data.Traits.Select(x => x.ToBattleInfo(RoleComponent)) } + GridFightTraitInfo = { TraitComponent.Data.Traits.Select(x => x.ToBattleInfo(RoleComponent)) }, + GridGameNpcList = { RoleComponent.Data.Npcs.Select(x => x.ToBattleInfo(ItemsComponent.Data)) } }; } } \ No newline at end of file diff --git a/GameServer/Game/GridFight/Component/GridFightBasicComponent.cs b/GameServer/Game/GridFight/Component/GridFightBasicComponent.cs index 45ebdd1f..ec44219f 100644 --- a/GameServer/Game/GridFight/Component/GridFightBasicComponent.cs +++ b/GameServer/Game/GridFight/Component/GridFightBasicComponent.cs @@ -19,7 +19,8 @@ public class GridFightBasicComponent(GridFightInstance inst) : BaseGridFightComp MaxAvatarNum = 3, BuyLevelCost = 4, CurGold = 0, - MaxInterest = 5 + MaxInterest = 5, + MaxLevel = 10 }; #endregion @@ -182,7 +183,7 @@ public class GridFightBasicComponent(GridFightInstance inst) : BaseGridFightComp GridFightTargetGuideCode = Data.GuideCode, TrackTraitIdList = { Data.TrackingTraits }, RoleTrackEquipmentList = { Data.TrackingEquipments.Select(x => x.ToProto(roleComp, itemsComp)) }, - GridFightMaxLevel = 10 + GridFightMaxLevel = Data.MaxLevel } }; } diff --git a/GameServer/Game/GridFight/Component/GridFightItemsComponent.cs b/GameServer/Game/GridFight/Component/GridFightItemsComponent.cs index 339f5170..a5e466a8 100644 --- a/GameServer/Game/GridFight/Component/GridFightItemsComponent.cs +++ b/GameServer/Game/GridFight/Component/GridFightItemsComponent.cs @@ -198,10 +198,11 @@ public class GridFightItemsComponent(GridFightInstance inst) : BaseGridFightComp } case GridFightDropType.Item: { - // consumable or equipment + // consumable or equipment or forge if (GameData.GridFightConsumablesData.ContainsKey(item.DropItemId)) { - syncs.AddRange(await UpdateConsumable(item.DropItemId, (int)item.Num, src, false, 0, param)); + syncs.AddRange(await UpdateConsumable(item.DropItemId, (int)item.Num, src, false, groupId, + param)); } else if (GameData.GridFightEquipmentData.ContainsKey(item.DropItemId)) { @@ -210,6 +211,13 @@ public class GridFightItemsComponent(GridFightInstance inst) : BaseGridFightComp syncs.AddRange((await AddEquipment(item.DropItemId, src, false, groupId, param)).Item2); } } + else if (GameData.GridFightForgeData.ContainsKey(item.DropItemId)) + { + for (uint i = 0; i < item.Num; i++) + { + syncs.AddRange(await roleComp.AddForgeItem(item.DropItemId, false, src, groupId, 0, param)); + } + } break; } @@ -328,7 +336,7 @@ public class GridFightItemsComponent(GridFightInstance inst) : BaseGridFightComp DropType = GridFightDropType.Item }); - // check if consumable or equipment + // check if consumable or equipment or forge if (GameData.GridFightEquipmentData.ContainsKey(itemId)) { syncs.AddRange((await AddEquipment(itemId, src, false, groupId)).Item2); @@ -338,6 +346,10 @@ public class GridFightItemsComponent(GridFightInstance inst) : BaseGridFightComp { syncs.AddRange(await UpdateConsumable(itemId, 1, src, false, groupId)); } + else if (GameData.GridFightForgeData.ContainsKey(itemId)) + { + syncs.AddRange(await roleComp.AddForgeItem(itemId, false, src, groupId)); + } break; } @@ -490,7 +502,7 @@ public class GridFightItemsComponent(GridFightInstance inst) : BaseGridFightComp // unequip old equipment foreach (var equipmentUid in role.EquipmentIds) { - syncs.AddRange(await RemoveEquipment(equipmentUid, GridFightSrc.KGridFightSrcUseConsumable, false)); + syncs.AddRange(await RollEquipment(equipmentUid)); } role.EquipmentIds.Clear(); diff --git a/GameServer/Game/GridFight/Component/GridFightLevelComponent.cs b/GameServer/Game/GridFight/Component/GridFightLevelComponent.cs index 1ef46246..c67a7d06 100644 --- a/GameServer/Game/GridFight/Component/GridFightLevelComponent.cs +++ b/GameServer/Game/GridFight/Component/GridFightLevelComponent.cs @@ -612,10 +612,10 @@ public class GridFightGameMonsterWaveInfo { DropType = GridFightDropType.Orb, Num = 1, - DropItemId = Random.Shared.Next(10) switch + DropItemId = Random.Shared.Next(30) switch { - > 5 and < 9 => OrbList[1].RandomElement(), - 9 => OrbList[2].RandomElement(), + > 23 and < 29 => OrbList[1].RandomElement(), + 29 => OrbList[2].RandomElement(), _ => OrbList[0].RandomElement() } }); diff --git a/GameServer/Game/GridFight/Component/GridFightOrbComponent.cs b/GameServer/Game/GridFight/Component/GridFightOrbComponent.cs index d2fa9472..42999040 100644 --- a/GameServer/Game/GridFight/Component/GridFightOrbComponent.cs +++ b/GameServer/Game/GridFight/Component/GridFightOrbComponent.cs @@ -6,11 +6,39 @@ using EggLink.DanhengServer.GameServer.Server.Packet.Send.GridFight; using EggLink.DanhengServer.Proto; using EggLink.DanhengServer.Proto.ServerSide; using EggLink.DanhengServer.Util; +using System.Collections.Generic; namespace EggLink.DanhengServer.GameServer.Game.GridFight.Component; public class GridFightOrbComponent(GridFightInstance inst) : BaseGridFightComponent(inst) { + public static List ExtractCombinationBonus(uint combineBonusId) + { + List bonusPools = []; + + if (!GameData.GridFightCombinationBonusData.TryGetValue(combineBonusId, out var comboBonusInfo)) + return bonusPools; + + for (var i = 0; i < comboBonusInfo.CombinationBonusList.Count; i++) + { + var bonusId = comboBonusInfo.CombinationBonusList[i]; + var bonusNum = comboBonusInfo.BonusNumberList[i]; + + if (bonusId == 1) + bonusPools.Add(new GridFightBasicBonusPoolV2Excel + { + BonusType = GridFightBonusTypeEnum.Gold, + Value = bonusNum / 10000 + }); + else if (GameData.GridFightBasicBonusPoolV2Data.TryGetValue(bonusId, out var bonusPool)) + { + bonusPools.AddRange(Enumerable.Repeat(bonusPool, (int)(bonusNum / 10000))); + } + } + + return bonusPools; + } + public GridFightOrbInfoPb Data { get; set; } = new(); public async ValueTask> AddOrb(uint orbItemId, GridFightSrc src = GridFightSrc.KGridFightSrcNone, bool sendPacket = true, uint groupId = 0, params uint[] param) @@ -73,24 +101,9 @@ public class GridFightOrbComponent(GridFightInstance inst) : BaseGridFightCompon } // check combination bonus - if (bonusPools.Count == 0 && GameData.GridFightCombinationBonusData.TryGetValue(excel.BonusID, out var comboBonusInfo)) + if (bonusPools.Count == 0) { - for (var i = 0; i < comboBonusInfo.CombinationBonusList.Count; i++) - { - var bonusId = comboBonusInfo.CombinationBonusList[i]; - var bonusNum = comboBonusInfo.BonusNumberList[i]; - - if (bonusId == 1) - bonusPools.Add(new GridFightBasicBonusPoolV2Excel - { - BonusType = GridFightBonusTypeEnum.Gold, - Value = bonusNum / 10000 - }); - else if (GameData.GridFightBasicBonusPoolV2Data.TryGetValue(bonusId, out var bonusPool)) - { - bonusPools.AddRange(Enumerable.Repeat(bonusPool, (int)(bonusNum / 10000))); - } - } + bonusPools.AddRange(ExtractCombinationBonus(excel.BonusID)); } // check basic bonus diff --git a/GameServer/Game/GridFight/Component/GridFightRoleComponent.cs b/GameServer/Game/GridFight/Component/GridFightRoleComponent.cs index c1ecf51c..753061c6 100644 --- a/GameServer/Game/GridFight/Component/GridFightRoleComponent.cs +++ b/GameServer/Game/GridFight/Component/GridFightRoleComponent.cs @@ -1,26 +1,20 @@ using EggLink.DanhengServer.Data; using EggLink.DanhengServer.Database.Avatar; +using EggLink.DanhengServer.Enums.GridFight; using EggLink.DanhengServer.GameServer.Game.GridFight.Sync; using EggLink.DanhengServer.GameServer.Server.Packet.Send.GridFight; using EggLink.DanhengServer.Proto; using EggLink.DanhengServer.Proto.ServerSide; +using EggLink.DanhengServer.Util; namespace EggLink.DanhengServer.GameServer.Game.GridFight.Component; public class GridFightRoleComponent(GridFightInstance inst) : BaseGridFightComponent(inst) { public const uint PrepareAreaPos = 13; - public GridFightAvatarInfoPb Data { get; set; } = new(); + public GridFightTeamInfoPb Data { get; set; } = new(); - public bool HasAnyEmptyPos() - { - return Data.Roles.Where(x => x.Pos > PrepareAreaPos).ToList().Count < 9; - } - - public uint GetEmptyPosCount() - { - return (uint)(9 - Data.Roles.Where(x => x.Pos > PrepareAreaPos).ToList().Count); - } + #region Role public async ValueTask> AddAvatar(uint roleId, uint tier = 1, bool sendPacket = true, bool checkMerge = true, GridFightSrc src = GridFightSrc.KGridFightSrcBuyGoods, uint syncGroup = 0, uint targetPos = 0, params uint[] param) @@ -31,7 +25,9 @@ public class GridFightRoleComponent(GridFightInstance inst) : BaseGridFightCompo var initialPos = targetPos > 0 ? targetPos : PrepareAreaPos + 1; // get first empty pos - var usedPos = Data.Roles.Select(x => x.Pos).ToHashSet(); + var usedPos = Data.Roles.Select(x => x.Pos).Concat(Data.Forges.Select(x => x.Pos)) + .Concat(Data.Npcs.Select(x => x.Pos)).ToHashSet(); + for (var i = initialPos; i <= PrepareAreaPos + 999; i++) // temp store area { if (usedPos.Contains(i)) continue; @@ -251,6 +247,149 @@ public class GridFightRoleComponent(GridFightInstance inst) : BaseGridFightCompo return res; } + #endregion + + #region Forge + + public async ValueTask> AddForgeItem(uint forgeItemId, bool sendPacket = true, + GridFightSrc src = GridFightSrc.KGridFightSrcNone, uint syncGroup = 0, uint targetPos = 0, params uint[] param) + { + if (!GameData.GridFightForgeData.TryGetValue(forgeItemId, out var forgeExcel)) return []; + + var pos = 0u; + var initialPos = targetPos > 0 ? targetPos : PrepareAreaPos + 1; + + // get first empty pos + var usedPos = Data.Roles.Select(x => x.Pos).Concat(Data.Forges.Select(x => x.Pos)) + .Concat(Data.Npcs.Select(x => x.Pos)).ToHashSet(); + for (var i = initialPos; i <= PrepareAreaPos + 999; i++) // temp store area + { + if (usedPos.Contains(i)) continue; + pos = i; + break; + } + + // check if any empty + if (pos == 0) + { + return []; + } + + var info = new GridFightForgeInfoPb + { + ForgeItemId = forgeItemId, + UniqueId = ++Data.CurUniqueId, + Pos = pos + }; + + // generate goods + if (forgeExcel.FuncType == GridFightForgeFuncTypeEnum.Role) + { + var roleRarity = forgeExcel.ParamList[0]; + var tier = forgeExcel.ParamList[1]; + + var candidateRoles = GameData.GridFightRoleBasicInfoData.Values + .Where(x => x.Rarity == roleRarity) + .ToList(); // filter + + if (candidateRoles.Count == 0) return []; // no candidate roles (should not happen) + + for (var i = 0; i < forgeExcel.EquipNum; i++) + { + var role = candidateRoles.RandomElement(); + + info.Goods.Add(new GridFightForgeGoodsInfoPb + { + RoleInfo = new GridFightForgeRoleGoodsInfoPb + { + RoleId = role.ID, + Tier = tier + } + }); + } + } + else if (forgeExcel.FuncType == GridFightForgeFuncTypeEnum.Equip) + { + var equipCategory = forgeExcel.ParamList[0]; + var candidateEquips = GameData.GridFightEquipmentData.Values + .Where(x => (uint)x.EquipCategory == equipCategory) + .ToList(); // filter + + if (candidateEquips.Count == 0) return []; // no candidate equips (should not happen) + + for (var i = 0; i < forgeExcel.EquipNum; i++) + { + var equip = candidateEquips.RandomElement(); + info.Goods.Add(new GridFightForgeGoodsInfoPb + { + ItemId = equip.ID + }); + } + } + + Data.Forges.Add(info); + + List syncs = [new GridFightAddForgeSyncData(src, info, syncGroup, param)]; + + if (sendPacket) + { + await Inst.Player.SendPacket(new PacketGridFightSyncUpdateResultScNotify(syncs)); + } + + return syncs; + } + + public async ValueTask> UseForgeItem(uint uniqueId, uint targetIndex) + { + var forge = Data.Forges.FirstOrDefault(x => x.UniqueId == uniqueId); + if (forge == null) + { + return []; + } + + List syncs = []; + + var good = forge.Goods[(int)targetIndex]; + if (good.HasItemId) + { + // equipment + var addEquipSyncs = await Inst.GetComponent() + .AddEquipment(good.ItemId, GridFightSrc.KGridFightSrcUseForge, false, uniqueId); + + syncs.AddRange(addEquipSyncs.Item2); + } + else + { + // role + var addRoleSyncs = await AddAvatar(good.RoleInfo.RoleId, good.RoleInfo.Tier, true, + false, GridFightSrc.KGridFightSrcUseForge, uniqueId); + + syncs.AddRange(addRoleSyncs); + } + + // remove used forge item + Data.Forges.Remove(forge); + syncs.Add(new GridFightRemoveForgeSyncData(GridFightSrc.KGridFightSrcUseForge, forge, uniqueId, uniqueId, + forge.ForgeItemId)); + + await Inst.Player.SendPacket(new PacketGridFightSyncUpdateResultScNotify(syncs)); + return syncs; + } + + #endregion + + #region Metadata + + public bool HasAnyEmptyPos() + { + return Data.Roles.Where(x => x.Pos > PrepareAreaPos).ToList().Count < 9; + } + + public uint GetEmptyPosCount() + { + return (uint)(9 - Data.Roles.Where(x => x.Pos > PrepareAreaPos).ToList().Count); + } + public async ValueTask UpdatePos(List posList) { foreach (var pos in posList.Where(x => x.Pos <= PrepareAreaPos)) @@ -260,17 +399,32 @@ public class GridFightRoleComponent(GridFightInstance inst) : BaseGridFightCompo if (Data.Roles.Where(x => x.UniqueId != pos.UniqueId && x.Pos <= PrepareAreaPos).Any(x => x.RoleId == role.RoleId)) return Retcode.RetGridFightSameRoleInBattle; - } + } // only check role List syncs = []; foreach (var pos in posList) { var role = Data.Roles.FirstOrDefault(x => x.UniqueId == pos.UniqueId); + var forge = Data.Forges.FirstOrDefault(x => x.UniqueId == pos.UniqueId); + var npc = Data.Npcs.FirstOrDefault(x => x.UniqueId == pos.UniqueId); + if (role != null) { role.Pos = pos.Pos; syncs.Add(new GridFightRoleUpdateSyncData(GridFightSrc.KGridFightSrcNone, role)); } + + if (forge != null) + { + forge.Pos = pos.Pos; + syncs.Add(new GridFightForgeUpdateSyncData(GridFightSrc.KGridFightSrcNone, forge)); + } + + if (npc != null) + { + npc.Pos = pos.Pos; + syncs.Add(new GridFightNpcUpdateSyncData(GridFightSrc.KGridFightSrcNone, npc)); + } } if (syncs.Count > 0) @@ -283,13 +437,17 @@ public class GridFightRoleComponent(GridFightInstance inst) : BaseGridFightCompo return Retcode.RetSucc; } + #endregion + public override GridFightGameInfo ToProto() { return new GridFightGameInfo { GridTeamGameInfo = new GridFightGameTeamInfo { - GridGameRoleList = { Data.Roles.Select(x => x.ToProto()) } + GridGameRoleList = { Data.Roles.Select(x => x.ToProto()) }, + GridGameForgeItemList = { Data.Forges.Select(x => x.ToProto()) }, + GridGameNpcList = { Data.Npcs.Select(x => x.ToProto()) } } }; } @@ -310,6 +468,51 @@ public static class GridFightRoleInfoPbExtensions }; } + public static GridGameNpcInfo ToProto(this GridFightNpcInfoPb info) + { + return new GridGameNpcInfo + { + Id = info.NpcId, + UniqueId = info.UniqueId, + Pos = info.Pos, + EquipUniqueIdList = { info.EquipmentIds } + }; + } + + public static GridGameForgeItemInfo ToProto(this GridFightForgeInfoPb info) + { + return new GridGameForgeItemInfo + { + ForgeItemId = info.ForgeItemId, + UniqueId = info.UniqueId, + Pos = info.Pos, + ForgeGoodsList = { info.Goods.Select(x => x.ToProto()) } + }; + } + + public static GridFightForgeGoodsInfo ToProto(this GridFightForgeGoodsInfoPb info) + { + var proto = new GridFightForgeGoodsInfo(); + + if (info.HasItemId) + { + proto.EquipmentGoodsInfo = new GridFightForgeEquipmentInfo + { + GridFightEquipmentId = info.ItemId + }; + } + else + { + proto.RoleGoodsInfo = new GridFightForgeRoleInfo + { + RoleBasicId = info.RoleInfo.RoleId, + ForgeRoleTier = info.RoleInfo.Tier + }; + } + + return proto; + } + public static BattleGridFightRoleInfo ToBattleInfo(this GridFightRoleInfoPb info, GridFightItemsInfoPb item) { return new BattleGridFightRoleInfo @@ -326,4 +529,18 @@ public static class GridFightRoleInfoPbExtensions GameSavedValueMap = { info.SavedValues } }; } + + public static BattleGridFightNpcInfo ToBattleInfo(this GridFightNpcInfoPb info, GridFightItemsInfoPb item) + { + return new BattleGridFightNpcInfo + { + NpcId = info.NpcId, + UniqueId = info.UniqueId, + Pos = info.Pos, + GridFightEquipmentList = + { + item.EquipmentItems.Where(x => info.EquipmentIds.Contains(x.UniqueId)).Select(x => x.ToBattleInfo()) + } + }; + } } \ No newline at end of file diff --git a/GameServer/Game/GridFight/Component/GridFightTraitComponent.cs b/GameServer/Game/GridFight/Component/GridFightTraitComponent.cs index 7894f201..253e50c5 100644 --- a/GameServer/Game/GridFight/Component/GridFightTraitComponent.cs +++ b/GameServer/Game/GridFight/Component/GridFightTraitComponent.cs @@ -5,6 +5,8 @@ using EggLink.DanhengServer.GameServer.Game.GridFight.Sync; using EggLink.DanhengServer.GameServer.Server.Packet.Send.GridFight; using EggLink.DanhengServer.Proto; using EggLink.DanhengServer.Proto.ServerSide; +using System.Data.OscarClient; +using EggLink.DanhengServer.Data.Excel; namespace EggLink.DanhengServer.GameServer.Game.GridFight.Component; @@ -12,6 +14,47 @@ public class GridFightTraitComponent(GridFightInstance inst) : BaseGridFightComp { public GridFightTraitInfoPb Data { get; set; } = new(); + public List GetTraitRoles(uint traitId) + { + var roleComp = Inst.GetComponent(); + + var onGroundRoles = roleComp.Data.Roles.Where(x => x.Pos <= GridFightRoleComponent.PrepareAreaPos).ToList(); + + var traitRoles = onGroundRoles.Where(x => GameData.GridFightRoleBasicInfoData + .GetValueOrDefault(x.RoleId)?.TraitList.Contains(traitId) == true).ToList(); + + // check equipment traits + foreach (var role in onGroundRoles.Except(traitRoles)) + { + var roleExcel = GameData.GridFightRoleBasicInfoData.GetValueOrDefault(role.RoleId); + if (roleExcel == null) continue; + + foreach (var equipmentUid in role.EquipmentIds) + { + // get item + var equipmentItem = roleComp.Inst.GetComponent().Data.EquipmentItems + .FirstOrDefault(x => x.UniqueId == equipmentUid); + if (equipmentItem == null) continue; + + // get conf + var equipmentExcel = GameData.GridFightEquipmentData.GetValueOrDefault(equipmentItem.ItemId); + if (equipmentExcel == null) continue; + + // category (emblem) + if (equipmentExcel.EquipCategory != GridFightEquipCategoryEnum.Emblem) continue; + + if (equipmentExcel.EquipFuncParamList.Contains(traitId)) + { + // we can add this role directly becuz foreach has Except option + traitRoles.Add(role); + } + } + } + + + return traitRoles; + } + public async ValueTask CheckTrait() { var itemsComp = Inst.GetComponent(); @@ -139,7 +182,6 @@ public class GridFightTraitComponent(GridFightInstance inst) : BaseGridFightComp effectLayerPas.TryGetValue(prevLayer, out var prevEffectParam); effectLayerPas.TryGetValue(nextLayer, out var nextEffectParam); - // Handle different effect types switch (traitConf.TraitEffectType) { @@ -174,15 +216,17 @@ public class GridFightTraitComponent(GridFightInstance inst) : BaseGridFightComp } case GridFightTraitEffectTypeEnum.TraitBonus: { - effect.Threshold = 0; // initialize + if (!effect.HasThreshold) + effect.Threshold = 0; // initialize break; } case GridFightTraitEffectTypeEnum.CoreRoleChoose: { // create pending action - syncList.AddRange(await Inst.CreatePendingAction( - GridFightSrc.KGridFightSrcTraitEffectUpdate, - false, effect)); + if (nextLayer != 0) + syncList.AddRange(await Inst.CreatePendingAction( + GridFightSrc.KGridFightSrcTraitEffectUpdate, + false, effect)); break; } case GridFightTraitEffectTypeEnum.CoreRoleByEquipNum: @@ -207,6 +251,93 @@ public class GridFightTraitComponent(GridFightInstance inst) : BaseGridFightComp return syncList; } + public async ValueTask HandleBattleEnd(PVEBattleResultCsReq req, bool success) + { + var itemsComp = Inst.GetComponent(); + + List syncDatas = []; + + foreach (var traitInfo in Data.Traits.Where(x => x.TraitLayer > 0)) + { + foreach (var effectInfo in traitInfo.Effects) + { + if (!GameData.GridFightTraitEffectData.TryGetValue(effectInfo.EffectId, out var effectConf) || + !GameData.GridFightTraitEffectLayerPaData.TryGetValue(effectInfo.EffectId, + out var effectLayerPas) || + !effectLayerPas.TryGetValue(traitInfo.TraitLayer, out var layerEffectPa)) continue; + + if (effectConf.TraitEffectType != GridFightTraitEffectTypeEnum.TraitBonus) continue; + + if (!GameData.GridFightTraitBonusAddRuleData.TryGetValue(effectInfo.EffectId, + out var bonusAddRuleExcel)) continue; + + // add bonus + var baseBonusValue = req.Stt.GridFightBattleStt.TraitBattleStt + .FirstOrDefault(x => x.TraitId == traitInfo.TraitId)?.TraitEffectInfoList + .FirstOrDefault(x => x.EffectId == effectConf.ID)?.SwitchList + .FirstOrDefault() ?? + effectInfo.Threshold; + + // base value + var addValue = bonusAddRuleExcel.TraitBonusType switch + { + GridFightTraitBonusAddTypeEnum.ByEquipNum => 10u + + (uint)GetTraitRoles(traitInfo.TraitId) + .Sum(x => x.EquipmentIds.Count), + GridFightTraitBonusAddTypeEnum.ByConstWithPerfectPass => (uint)(layerEffectPa.EffectParamList + .FirstOrDefault()?.Value ?? 0), + _ => 0u + }; + + // rate + addValue *= bonusAddRuleExcel.TraitBonusType switch + { + GridFightTraitBonusAddTypeEnum.ByEquipNum => (uint)(layerEffectPa.EffectParamList.FirstOrDefault() + ?.Value ?? 0), + GridFightTraitBonusAddTypeEnum.ByConstWithPerfectPass => success + ? bonusAddRuleExcel.ParamList[1] + : bonusAddRuleExcel.ParamList[0], + _ => 1 + }; + + baseBonusValue += addValue; + + // set + var prev = effectInfo.Threshold; + effectInfo.Threshold = baseBonusValue; + + // sync + syncDatas.Add(new GridFightTraitSyncData(GridFightSrc.KGridFightSrcTraitEffectUpdate, effectInfo, + effectInfo.EffectId, traitInfo.TraitId, effectInfo.EffectId)); + + var addBonuses = GameData.GridFightTraitBonusData + .GetValueOrDefault(effectInfo.EffectId)?.Values.Where(x => + x.BonusThreshold > prev && x.BonusThreshold <= baseBonusValue && + x.BonusType == GridFightTraitBonusTypeEnum.Bonus).ToList() ?? []; + + // take bonus effect + var bonusIdList = addBonuses.SelectMany(x => x.BonusParamList).ToList(); + + List bonusPool = []; + foreach (var id in bonusIdList) + { + bonusPool.AddRange(GridFightOrbComponent.ExtractCombinationBonus(id)); + } + + // take effect + var res = await itemsComp.TakeBasicBonusItems(bonusPool, GridFightSrc.KGridFightSrcTraitEffectUpdate, + effectInfo.EffectId, false); + + syncDatas.AddRange(res.Item1); + } + } + + if (syncDatas.Count > 0) + { + await Inst.Player.SendPacket(new PacketGridFightSyncUpdateResultScNotify(syncDatas)); + } + } + public override GridFightGameInfo ToProto() { var roleComp = Inst.GetComponent(); @@ -314,12 +445,20 @@ public static class GridFightTraitInfoPbExtensions public static GridFightTraitEffectInfo ToProto(this GridFightGameTraitEffectPb info) { - return new GridFightTraitEffectInfo + var proto = new GridFightTraitEffectInfo { EffectId = info.EffectId, TraitEffectLevelExp = info.Threshold, TraitCoreRole = info.CoreRoleUniqueId }; + + if (info.HasThreshold) + proto.TraitEffectLevelExp = info.Threshold; + + if (info.HasCoreRoleUniqueId) + proto.TraitCoreRole = info.CoreRoleUniqueId; + + return proto; } public static BattleGridFightTraitEffectInfo ToBattleInfo(this GridFightGameTraitEffectPb info, GridFightRoleComponent roleComp) diff --git a/GameServer/Game/GridFight/GridFightInstance.cs b/GameServer/Game/GridFight/GridFightInstance.cs index d5683b8c..73bcf376 100644 --- a/GameServer/Game/GridFight/GridFightInstance.cs +++ b/GameServer/Game/GridFight/GridFightInstance.cs @@ -34,6 +34,7 @@ public class GridFightInstance(PlayerInstance player, uint season, uint division var basicComp = GetComponent(); var levelComp = GetComponent(); + var traitComp = GetComponent(); var itemsComponent = GetComponent(); var prevData = basicComp.Data.Clone(); var curEncounter = levelComp.CurrentSection.Encounters[(int)(levelComp.CurrentSection.BranchId - 1)]; @@ -107,6 +108,9 @@ public class GridFightInstance(PlayerInstance player, uint season, uint division await Player.SendPacket(new PacketGridFightSyncUpdateResultScNotify(syncs)); + // trait + await traitComp.HandleBattleEnd(req, progress == 100); + if (end) { // settle diff --git a/GameServer/Game/GridFight/Sync/GridFightAddForgeSyncData.cs b/GameServer/Game/GridFight/Sync/GridFightAddForgeSyncData.cs new file mode 100644 index 00000000..c8930503 --- /dev/null +++ b/GameServer/Game/GridFight/Sync/GridFightAddForgeSyncData.cs @@ -0,0 +1,16 @@ +using EggLink.DanhengServer.GameServer.Game.GridFight.Component; +using EggLink.DanhengServer.Proto; +using EggLink.DanhengServer.Proto.ServerSide; + +namespace EggLink.DanhengServer.GameServer.Game.GridFight.Sync; + +public class GridFightAddForgeSyncData(GridFightSrc src, GridFightForgeInfoPb info, uint groupId = 0, params uint[] syncParams) : BaseGridFightSyncData(src, groupId, syncParams) +{ + public override GridFightSyncData ToProto() + { + return new GridFightSyncData + { + AddForgeInfo = info.ToProto() + }; + } +} \ No newline at end of file diff --git a/GameServer/Game/GridFight/Sync/GridFightForgeUpdateSyncData.cs b/GameServer/Game/GridFight/Sync/GridFightForgeUpdateSyncData.cs new file mode 100644 index 00000000..026c0227 --- /dev/null +++ b/GameServer/Game/GridFight/Sync/GridFightForgeUpdateSyncData.cs @@ -0,0 +1,16 @@ +using EggLink.DanhengServer.GameServer.Game.GridFight.Component; +using EggLink.DanhengServer.Proto; +using EggLink.DanhengServer.Proto.ServerSide; + +namespace EggLink.DanhengServer.GameServer.Game.GridFight.Sync; + +public class GridFightForgeUpdateSyncData(GridFightSrc src, GridFightForgeInfoPb forge, uint groupId = 0, params uint[] syncParams) : BaseGridFightSyncData(src, groupId, syncParams) +{ + public override GridFightSyncData ToProto() + { + return new GridFightSyncData + { + UpdateForgeInfo = forge.ToProto() + }; + } +} \ No newline at end of file diff --git a/GameServer/Game/GridFight/Sync/GridFightNpcUpdateSyncData.cs b/GameServer/Game/GridFight/Sync/GridFightNpcUpdateSyncData.cs new file mode 100644 index 00000000..69ddf42c --- /dev/null +++ b/GameServer/Game/GridFight/Sync/GridFightNpcUpdateSyncData.cs @@ -0,0 +1,16 @@ +using EggLink.DanhengServer.GameServer.Game.GridFight.Component; +using EggLink.DanhengServer.Proto; +using EggLink.DanhengServer.Proto.ServerSide; + +namespace EggLink.DanhengServer.GameServer.Game.GridFight.Sync; + +public class GridFightNpcUpdateSyncData(GridFightSrc src, GridFightNpcInfoPb npc, uint groupId = 0, params uint[] syncParams) : BaseGridFightSyncData(src, groupId, syncParams) +{ + public override GridFightSyncData ToProto() + { + return new GridFightSyncData + { + UpdateNpcInfo = npc.ToProto() + }; + } +} \ No newline at end of file diff --git a/GameServer/Game/GridFight/Sync/GridFightPlayerLevelSyncData.cs b/GameServer/Game/GridFight/Sync/GridFightPlayerLevelSyncData.cs index 64da47c2..e1c3b75f 100644 --- a/GameServer/Game/GridFight/Sync/GridFightPlayerLevelSyncData.cs +++ b/GameServer/Game/GridFight/Sync/GridFightPlayerLevelSyncData.cs @@ -12,7 +12,8 @@ public class GridFightPlayerLevelSyncData(GridFightSrc src, GridFightBasicInfoPb PlayerLevel = new GridFightPlayerLevelSyncInfo { Exp = info.LevelExp, - Level = info.CurLevel + Level = info.CurLevel, + MaxLevel = info.MaxLevel } }; } diff --git a/GameServer/Game/GridFight/Sync/GridFightRemoveForgeSyncData.cs b/GameServer/Game/GridFight/Sync/GridFightRemoveForgeSyncData.cs new file mode 100644 index 00000000..b75c8181 --- /dev/null +++ b/GameServer/Game/GridFight/Sync/GridFightRemoveForgeSyncData.cs @@ -0,0 +1,15 @@ +using EggLink.DanhengServer.Proto; +using EggLink.DanhengServer.Proto.ServerSide; + +namespace EggLink.DanhengServer.GameServer.Game.GridFight.Sync; + +public class GridFightRemoveForgeSyncData(GridFightSrc src, GridFightForgeInfoPb info, uint groupId = 0, params uint[] syncParams) : BaseGridFightSyncData(src, groupId, syncParams) +{ + public override GridFightSyncData ToProto() + { + return new GridFightSyncData + { + RemoveForgeUniqueId = info.UniqueId + }; + } +} \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/GridFight/HandlerGridFightUseForgeCsReq.cs b/GameServer/Server/Packet/Recv/GridFight/HandlerGridFightUseForgeCsReq.cs new file mode 100644 index 00000000..b0a8168c --- /dev/null +++ b/GameServer/Server/Packet/Recv/GridFight/HandlerGridFightUseForgeCsReq.cs @@ -0,0 +1,26 @@ +using EggLink.DanhengServer.GameServer.Game.GridFight.Component; +using EggLink.DanhengServer.Kcp; +using EggLink.DanhengServer.Proto; + +namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.GridFight; + +[Opcode(CmdIds.GridFightUseForgeCsReq)] +public class HandlerGridFightUseForgeCsReq : Handler +{ + public override async Task OnHandle(Connection connection, byte[] header, byte[] data) + { + var req = GridFightUseForgeCsReq.Parser.ParseFrom(data); + + var inst = connection.Player!.GridFightManager!.GridFightInstance; + if (inst == null) + { + await connection.SendPacket(CmdIds.GridFightUseForgeScRsp); + return; + } + + var component = inst.GetComponent(); + await component.UseForgeItem(req.UniqueId, req.ForgeTargetIndex); + + await connection.SendPacket(CmdIds.GridFightUseForgeScRsp); + } +} \ No newline at end of file diff --git a/ServerSideProto/GridFightData.cs b/ServerSideProto/GridFightData.cs index 932fa018..30635ff6 100644 --- a/ServerSideProto/GridFightData.cs +++ b/ServerSideProto/GridFightData.cs @@ -34,51 +34,62 @@ namespace EggLink.DanhengServer.Proto.ServerSide { "cEl0ZW1QYiKKAQoTR3JpZEZpZ2h0R2FtZUluZm9QYhIQCghVbmlxdWVJZBgB", "IAEoDRISCgpEaXZpc2lvbklkGAIgASgNEhIKCklzT3ZlckxvY2sYAyABKAgS", "DgoGU2Vhc29uGAQgASgNEikKCkNvbXBvbmVudHMYBSADKAsyFS5HcmlkRmln", - "aHRDb21wb25lbnRQYiK6AgoUR3JpZEZpZ2h0QmFzaWNJbmZvUGISDwoHQ3Vy", + "aHRDb21wb25lbnRQYiLMAgoUR3JpZEZpZ2h0QmFzaWNJbmZvUGISDwoHQ3Vy", "R29sZBgBIAEoDRIQCghDdXJMZXZlbBgCIAEoDRIQCghMZXZlbEV4cBgDIAEo", "DRIUCgxCdXlMZXZlbENvc3QYBCABKA0SDQoFQ3VySHAYBSABKA0SFAoMTWF4", "QXZhdGFyTnVtGAYgASgNEhAKCENvbWJvTnVtGAcgASgNEhAKCExvY2tUeXBl", "GAggASgNEhIKCkxvY2tSZWFzb24YCSABKA0SEwoLTWF4SW50ZXJlc3QYCiAB", "KA0SFgoOVHJhY2tpbmdUcmFpdHMYCyADKA0SOgoSVHJhY2tpbmdFcXVpcG1l", "bnRzGAwgAygLMh4uR3JpZEZpZ2h0RXF1aXBtZW50VHJhY2tJbmZvUGISEQoJ", - "R3VpZGVDb2RlGA0gASgJIlcKHUdyaWRGaWdodEVxdWlwbWVudFRyYWNrSW5m", - "b1BiEhAKCFByaW9yaXR5GAEgASgNEg4KBlJvbGVJZBgCIAEoDRIUCgxFcXVp", - "cG1lbnRJZHMYAyADKA0i2AEKE0dyaWRGaWdodFJvbGVJbmZvUGISDgoGUm9s", - "ZUlkGAEgASgNEgwKBFRpZXIYAiABKA0SCwoDUG9zGAMgASgNEhAKCFVuaXF1", - "ZUlkGAQgASgNEjoKC1NhdmVkVmFsdWVzGAUgAygLMiUuR3JpZEZpZ2h0Um9s", - "ZUluZm9QYi5TYXZlZFZhbHVlc0VudHJ5EhQKDEVxdWlwbWVudElkcxgGIAMo", - "DRoyChBTYXZlZFZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgC", - "IAEoDToCOAEiUQoVR3JpZEZpZ2h0QXZhdGFySW5mb1BiEiMKBVJvbGVzGAEg", - "AygLMhQuR3JpZEZpZ2h0Um9sZUluZm9QYhITCgtDdXJVbmlxdWVJZBgCIAEo", - "DSI5ChJHcmlkRmlnaHRHYW1lT3JiUGISEQoJT3JiSXRlbUlkGAEgASgNEhAK", - "CFVuaXF1ZUlkGAIgASgNIjcKEkdyaWRGaWdodE9yYkluZm9QYhIhCgRPcmJz", - "GAEgAygLMhMuR3JpZEZpZ2h0R2FtZU9yYlBiIp4BChZHcmlkRmlnaHRHYW1l", - "QXVnbWVudFBiEhEKCUF1Z21lbnRJZBgBIAEoDRI9CgtTYXZlZFZhbHVlcxgC", - "IAMoCzIoLkdyaWRGaWdodEdhbWVBdWdtZW50UGIuU2F2ZWRWYWx1ZXNFbnRy", - "eRoyChBTYXZlZFZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgC", - "IAEoDToCOAEiQwoWR3JpZEZpZ2h0QXVnbWVudEluZm9QYhIpCghBdWdtZW50", - "cxgBIAMoCzIXLkdyaWRGaWdodEdhbWVBdWdtZW50UGIifwoaR3JpZEZpZ2h0", - "R2FtZVRyYWl0RWZmZWN0UGISDwoHVHJhaXRJZBgBIAEoDRIQCghFZmZlY3RJ", - "ZBgCIAEoDRITCglUaHJlc2hvbGQYAyABKA1IABIaChBDb3JlUm9sZVVuaXF1", - "ZUlkGAQgASgNSABCDQoLRWZmZWN0UGFyYW0iaQoUR3JpZEZpZ2h0R2FtZVRy", - "YWl0UGISDwoHVHJhaXRJZBgBIAEoDRIsCgdFZmZlY3RzGAIgAygLMhsuR3Jp", - "ZEZpZ2h0R2FtZVRyYWl0RWZmZWN0UGISEgoKVHJhaXRMYXllchgDIAEoDSI9", - "ChRHcmlkRmlnaHRUcmFpdEluZm9QYhIlCgZUcmFpdHMYASADKAsyFS5Hcmlk", - "RmlnaHRHYW1lVHJhaXRQYiI8ChhHcmlkRmlnaHRFcXVpcG1lbnRJdGVtUGIS", - "DgoGSXRlbUlkGAEgASgNEhAKCFVuaXF1ZUlkGAIgASgNIjoKGUdyaWRGaWdo", - "dENvbnN1bWFibGVJdGVtUGISDgoGSXRlbUlkGAEgASgNEg0KBUNvdW50GAIg", - "ASgNIn4KFEdyaWRGaWdodEl0ZW1zSW5mb1BiEjEKDkVxdWlwbWVudEl0ZW1z", - "GAEgAygLMhkuR3JpZEZpZ2h0RXF1aXBtZW50SXRlbVBiEjMKD0NvbnN1bWFi", - "bGVJdGVtcxgCIAMoCzIaLkdyaWRGaWdodENvbnN1bWFibGVJdGVtUGIi2wIK", - "FEdyaWRGaWdodENvbXBvbmVudFBiEigKCFNob3BJbmZvGAEgASgLMhQuR3Jp", - "ZEZpZ2h0U2hvcEluZm9QYkgAEioKCUJhc2ljSW5mbxgCIAEoCzIVLkdyaWRG", - "aWdodEJhc2ljSW5mb1BiSAASLAoKQXZhdGFySW5mbxgDIAEoCzIWLkdyaWRG", - "aWdodEF2YXRhckluZm9QYkgAEiYKB09yYkluZm8YBCABKAsyEy5HcmlkRmln", - "aHRPcmJJbmZvUGJIABIuCgtBdWdtZW50SW5mbxgFIAEoCzIXLkdyaWRGaWdo", - "dEF1Z21lbnRJbmZvUGJIABIqCglUcmFpdEluZm8YBiABKAsyFS5HcmlkRmln", - "aHRUcmFpdEluZm9QYkgAEioKCUl0ZW1zSW5mbxgHIAEoCzIVLkdyaWRGaWdo", - "dEl0ZW1zSW5mb1BiSABCDwoNQ29tcG9uZW50VHlwZUIpqgImRWdnTGluay5E", - "YW5oZW5nU2VydmVyLlByb3RvLlNlcnZlclNpZGViBnByb3RvMw==")); + "R3VpZGVDb2RlGA0gASgJEhAKCE1heExldmVsGA4gASgNIlcKHUdyaWRGaWdo", + "dEVxdWlwbWVudFRyYWNrSW5mb1BiEhAKCFByaW9yaXR5GAEgASgNEg4KBlJv", + "bGVJZBgCIAEoDRIUCgxFcXVpcG1lbnRJZHMYAyADKA0i2AEKE0dyaWRGaWdo", + "dFJvbGVJbmZvUGISDgoGUm9sZUlkGAEgASgNEgwKBFRpZXIYAiABKA0SCwoD", + "UG9zGAMgASgNEhAKCFVuaXF1ZUlkGAQgASgNEjoKC1NhdmVkVmFsdWVzGAUg", + "AygLMiUuR3JpZEZpZ2h0Um9sZUluZm9QYi5TYXZlZFZhbHVlc0VudHJ5EhQK", + "DEVxdWlwbWVudElkcxgGIAMoDRoyChBTYXZlZFZhbHVlc0VudHJ5EgsKA2tl", + "eRgBIAEoCRINCgV2YWx1ZRgCIAEoDToCOAEiWAoSR3JpZEZpZ2h0TnBjSW5m", + "b1BiEg0KBU5wY0lkGAEgASgNEgsKA1BvcxgCIAEoDRIQCghVbmlxdWVJZBgD", + "IAEoDRIUCgxFcXVpcG1lbnRJZHMYBCADKA0idQoUR3JpZEZpZ2h0Rm9yZ2VJ", + "bmZvUGISEwoLRm9yZ2VJdGVtSWQYASABKA0SCwoDUG9zGAIgASgNEhAKCFVu", + "aXF1ZUlkGAMgASgNEikKBUdvb2RzGAQgAygLMhouR3JpZEZpZ2h0Rm9yZ2VH", + "b29kc0luZm9QYiJuChlHcmlkRmlnaHRGb3JnZUdvb2RzSW5mb1BiEhAKBkl0", + "ZW1JZBgBIAEoDUgAEjIKCFJvbGVJbmZvGAIgASgLMh4uR3JpZEZpZ2h0Rm9y", + "Z2VSb2xlR29vZHNJbmZvUGJIAEILCglHb29kc1R5cGUiPQodR3JpZEZpZ2h0", + "Rm9yZ2VSb2xlR29vZHNJbmZvUGISDgoGUm9sZUlkGAEgASgNEgwKBFRpZXIY", + "AiABKA0imQEKE0dyaWRGaWdodFRlYW1JbmZvUGISIwoFUm9sZXMYASADKAsy", + "FC5HcmlkRmlnaHRSb2xlSW5mb1BiEiEKBE5wY3MYAiADKAsyEy5HcmlkRmln", + "aHROcGNJbmZvUGISJQoGRm9yZ2VzGAMgAygLMhUuR3JpZEZpZ2h0Rm9yZ2VJ", + "bmZvUGISEwoLQ3VyVW5pcXVlSWQYBCABKA0iOQoSR3JpZEZpZ2h0R2FtZU9y", + "YlBiEhEKCU9yYkl0ZW1JZBgBIAEoDRIQCghVbmlxdWVJZBgCIAEoDSI3ChJH", + "cmlkRmlnaHRPcmJJbmZvUGISIQoET3JicxgBIAMoCzITLkdyaWRGaWdodEdh", + "bWVPcmJQYiKeAQoWR3JpZEZpZ2h0R2FtZUF1Z21lbnRQYhIRCglBdWdtZW50", + "SWQYASABKA0SPQoLU2F2ZWRWYWx1ZXMYAiADKAsyKC5HcmlkRmlnaHRHYW1l", + "QXVnbWVudFBiLlNhdmVkVmFsdWVzRW50cnkaMgoQU2F2ZWRWYWx1ZXNFbnRy", + "eRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKA06AjgBIkMKFkdyaWRGaWdo", + "dEF1Z21lbnRJbmZvUGISKQoIQXVnbWVudHMYASADKAsyFy5HcmlkRmlnaHRH", + "YW1lQXVnbWVudFBiIn8KGkdyaWRGaWdodEdhbWVUcmFpdEVmZmVjdFBiEg8K", + "B1RyYWl0SWQYASABKA0SEAoIRWZmZWN0SWQYAiABKA0SEwoJVGhyZXNob2xk", + "GAMgASgNSAASGgoQQ29yZVJvbGVVbmlxdWVJZBgEIAEoDUgAQg0KC0VmZmVj", + "dFBhcmFtImkKFEdyaWRGaWdodEdhbWVUcmFpdFBiEg8KB1RyYWl0SWQYASAB", + "KA0SLAoHRWZmZWN0cxgCIAMoCzIbLkdyaWRGaWdodEdhbWVUcmFpdEVmZmVj", + "dFBiEhIKClRyYWl0TGF5ZXIYAyABKA0iPQoUR3JpZEZpZ2h0VHJhaXRJbmZv", + "UGISJQoGVHJhaXRzGAEgAygLMhUuR3JpZEZpZ2h0R2FtZVRyYWl0UGIiPAoY", + "R3JpZEZpZ2h0RXF1aXBtZW50SXRlbVBiEg4KBkl0ZW1JZBgBIAEoDRIQCghV", + "bmlxdWVJZBgCIAEoDSI6ChlHcmlkRmlnaHRDb25zdW1hYmxlSXRlbVBiEg4K", + "Bkl0ZW1JZBgBIAEoDRINCgVDb3VudBgCIAEoDSJ+ChRHcmlkRmlnaHRJdGVt", + "c0luZm9QYhIxCg5FcXVpcG1lbnRJdGVtcxgBIAMoCzIZLkdyaWRGaWdodEVx", + "dWlwbWVudEl0ZW1QYhIzCg9Db25zdW1hYmxlSXRlbXMYAiADKAsyGi5Hcmlk", + "RmlnaHRDb25zdW1hYmxlSXRlbVBiItcCChRHcmlkRmlnaHRDb21wb25lbnRQ", + "YhIoCghTaG9wSW5mbxgBIAEoCzIULkdyaWRGaWdodFNob3BJbmZvUGJIABIq", + "CglCYXNpY0luZm8YAiABKAsyFS5HcmlkRmlnaHRCYXNpY0luZm9QYkgAEigK", + "CFRlYW1JbmZvGAMgASgLMhQuR3JpZEZpZ2h0VGVhbUluZm9QYkgAEiYKB09y", + "YkluZm8YBCABKAsyEy5HcmlkRmlnaHRPcmJJbmZvUGJIABIuCgtBdWdtZW50", + "SW5mbxgFIAEoCzIXLkdyaWRGaWdodEF1Z21lbnRJbmZvUGJIABIqCglUcmFp", + "dEluZm8YBiABKAsyFS5HcmlkRmlnaHRUcmFpdEluZm9QYkgAEioKCUl0ZW1z", + "SW5mbxgHIAEoCzIVLkdyaWRGaWdodEl0ZW1zSW5mb1BiSABCDwoNQ29tcG9u", + "ZW50VHlwZUIpqgImRWdnTGluay5EYW5oZW5nU2VydmVyLlByb3RvLlNlcnZl", + "clNpZGViBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { @@ -86,10 +97,14 @@ namespace EggLink.DanhengServer.Proto.ServerSide { new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightShopItemPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightShopItemPb.Parser, new[]{ "RoleItem", "Cost", "SoldOut" }, new[]{ "ItemType" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightShopInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightShopInfoPb.Parser, new[]{ "ShopLocked", "FreeRefreshCount", "RefreshCost", "ShopItems" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightGameInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightGameInfoPb.Parser, new[]{ "UniqueId", "DivisionId", "IsOverLock", "Season", "Components" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightBasicInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightBasicInfoPb.Parser, new[]{ "CurGold", "CurLevel", "LevelExp", "BuyLevelCost", "CurHp", "MaxAvatarNum", "ComboNum", "LockType", "LockReason", "MaxInterest", "TrackingTraits", "TrackingEquipments", "GuideCode" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightBasicInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightBasicInfoPb.Parser, new[]{ "CurGold", "CurLevel", "LevelExp", "BuyLevelCost", "CurHp", "MaxAvatarNum", "ComboNum", "LockType", "LockReason", "MaxInterest", "TrackingTraits", "TrackingEquipments", "GuideCode", "MaxLevel" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightEquipmentTrackInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightEquipmentTrackInfoPb.Parser, new[]{ "Priority", "RoleId", "EquipmentIds" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightRoleInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightRoleInfoPb.Parser, new[]{ "RoleId", "Tier", "Pos", "UniqueId", "SavedValues", "EquipmentIds" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb.Parser, new[]{ "Roles", "CurUniqueId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightNpcInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightNpcInfoPb.Parser, new[]{ "NpcId", "Pos", "UniqueId", "EquipmentIds" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeInfoPb.Parser, new[]{ "ForgeItemId", "Pos", "UniqueId", "Goods" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeGoodsInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeGoodsInfoPb.Parser, new[]{ "ItemId", "RoleInfo" }, new[]{ "GoodsType" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb.Parser, new[]{ "RoleId", "Tier" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb.Parser, new[]{ "Roles", "Npcs", "Forges", "CurUniqueId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightGameOrbPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightGameOrbPb.Parser, new[]{ "OrbItemId", "UniqueId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightOrbInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightOrbInfoPb.Parser, new[]{ "Orbs" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightGameAugmentPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightGameAugmentPb.Parser, new[]{ "AugmentId", "SavedValues" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), @@ -100,7 +115,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightEquipmentItemPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightEquipmentItemPb.Parser, new[]{ "ItemId", "UniqueId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightConsumableItemPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightConsumableItemPb.Parser, new[]{ "ItemId", "Count" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightItemsInfoPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightItemsInfoPb.Parser, new[]{ "EquipmentItems", "ConsumableItems" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightComponentPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightComponentPb.Parser, new[]{ "ShopInfo", "BasicInfo", "AvatarInfo", "OrbInfo", "AugmentInfo", "TraitInfo", "ItemsInfo" }, new[]{ "ComponentType" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::EggLink.DanhengServer.Proto.ServerSide.GridFightComponentPb), global::EggLink.DanhengServer.Proto.ServerSide.GridFightComponentPb.Parser, new[]{ "ShopInfo", "BasicInfo", "TeamInfo", "OrbInfo", "AugmentInfo", "TraitInfo", "ItemsInfo" }, new[]{ "ComponentType" }, null, null, null) })); } #endregion @@ -1306,6 +1321,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { trackingTraits_ = other.trackingTraits_.Clone(); trackingEquipments_ = other.trackingEquipments_.Clone(); guideCode_ = other.guideCode_; + maxLevel_ = other.maxLevel_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -1469,6 +1485,18 @@ namespace EggLink.DanhengServer.Proto.ServerSide { } } + /// Field number for the "MaxLevel" field. + public const int MaxLevelFieldNumber = 14; + private uint maxLevel_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint MaxLevel { + get { return maxLevel_; } + set { + maxLevel_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -1497,6 +1525,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { if(!trackingTraits_.Equals(other.trackingTraits_)) return false; if(!trackingEquipments_.Equals(other.trackingEquipments_)) return false; if (GuideCode != other.GuideCode) return false; + if (MaxLevel != other.MaxLevel) return false; return Equals(_unknownFields, other._unknownFields); } @@ -1517,6 +1546,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { hash ^= trackingTraits_.GetHashCode(); hash ^= trackingEquipments_.GetHashCode(); if (GuideCode.Length != 0) hash ^= GuideCode.GetHashCode(); + if (MaxLevel != 0) hash ^= MaxLevel.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -1581,6 +1611,10 @@ namespace EggLink.DanhengServer.Proto.ServerSide { output.WriteRawTag(106); output.WriteString(GuideCode); } + if (MaxLevel != 0) { + output.WriteRawTag(112); + output.WriteUInt32(MaxLevel); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -1637,6 +1671,10 @@ namespace EggLink.DanhengServer.Proto.ServerSide { output.WriteRawTag(106); output.WriteString(GuideCode); } + if (MaxLevel != 0) { + output.WriteRawTag(112); + output.WriteUInt32(MaxLevel); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -1682,6 +1720,9 @@ namespace EggLink.DanhengServer.Proto.ServerSide { if (GuideCode.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(GuideCode); } + if (MaxLevel != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MaxLevel); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -1729,6 +1770,9 @@ namespace EggLink.DanhengServer.Proto.ServerSide { if (other.GuideCode.Length != 0) { GuideCode = other.GuideCode; } + if (other.MaxLevel != 0) { + MaxLevel = other.MaxLevel; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -1797,6 +1841,10 @@ namespace EggLink.DanhengServer.Proto.ServerSide { GuideCode = input.ReadString(); break; } + case 112: { + MaxLevel = input.ReadUInt32(); + break; + } } } #endif @@ -1865,6 +1913,10 @@ namespace EggLink.DanhengServer.Proto.ServerSide { GuideCode = input.ReadString(); break; } + case 112: { + MaxLevel = input.ReadUInt32(); + break; + } } } } @@ -2483,16 +2535,16 @@ namespace EggLink.DanhengServer.Proto.ServerSide { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class GridFightAvatarInfoPb : pb::IMessage + public sealed partial class GridFightNpcInfoPb : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GridFightAvatarInfoPb()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GridFightNpcInfoPb()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -2508,7 +2560,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GridFightAvatarInfoPb() { + public GridFightNpcInfoPb() { OnConstruction(); } @@ -2516,16 +2568,1114 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GridFightAvatarInfoPb(GridFightAvatarInfoPb other) : this() { + public GridFightNpcInfoPb(GridFightNpcInfoPb other) : this() { + npcId_ = other.npcId_; + pos_ = other.pos_; + uniqueId_ = other.uniqueId_; + equipmentIds_ = other.equipmentIds_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightNpcInfoPb Clone() { + return new GridFightNpcInfoPb(this); + } + + /// Field number for the "NpcId" field. + public const int NpcIdFieldNumber = 1; + private uint npcId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint NpcId { + get { return npcId_; } + set { + npcId_ = value; + } + } + + /// Field number for the "Pos" field. + public const int PosFieldNumber = 2; + private uint pos_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Pos { + get { return pos_; } + set { + pos_ = value; + } + } + + /// Field number for the "UniqueId" field. + public const int UniqueIdFieldNumber = 3; + private uint uniqueId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint UniqueId { + get { return uniqueId_; } + set { + uniqueId_ = value; + } + } + + /// Field number for the "EquipmentIds" field. + public const int EquipmentIdsFieldNumber = 4; + private static readonly pb::FieldCodec _repeated_equipmentIds_codec + = pb::FieldCodec.ForUInt32(34); + private readonly pbc::RepeatedField equipmentIds_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField EquipmentIds { + get { return equipmentIds_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as GridFightNpcInfoPb); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(GridFightNpcInfoPb other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (NpcId != other.NpcId) return false; + if (Pos != other.Pos) return false; + if (UniqueId != other.UniqueId) return false; + if(!equipmentIds_.Equals(other.equipmentIds_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (NpcId != 0) hash ^= NpcId.GetHashCode(); + if (Pos != 0) hash ^= Pos.GetHashCode(); + if (UniqueId != 0) hash ^= UniqueId.GetHashCode(); + hash ^= equipmentIds_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (NpcId != 0) { + output.WriteRawTag(8); + output.WriteUInt32(NpcId); + } + if (Pos != 0) { + output.WriteRawTag(16); + output.WriteUInt32(Pos); + } + if (UniqueId != 0) { + output.WriteRawTag(24); + output.WriteUInt32(UniqueId); + } + equipmentIds_.WriteTo(output, _repeated_equipmentIds_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (NpcId != 0) { + output.WriteRawTag(8); + output.WriteUInt32(NpcId); + } + if (Pos != 0) { + output.WriteRawTag(16); + output.WriteUInt32(Pos); + } + if (UniqueId != 0) { + output.WriteRawTag(24); + output.WriteUInt32(UniqueId); + } + equipmentIds_.WriteTo(ref output, _repeated_equipmentIds_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (NpcId != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NpcId); + } + if (Pos != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Pos); + } + if (UniqueId != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UniqueId); + } + size += equipmentIds_.CalculateSize(_repeated_equipmentIds_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(GridFightNpcInfoPb other) { + if (other == null) { + return; + } + if (other.NpcId != 0) { + NpcId = other.NpcId; + } + if (other.Pos != 0) { + Pos = other.Pos; + } + if (other.UniqueId != 0) { + UniqueId = other.UniqueId; + } + equipmentIds_.Add(other.equipmentIds_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + NpcId = input.ReadUInt32(); + break; + } + case 16: { + Pos = input.ReadUInt32(); + break; + } + case 24: { + UniqueId = input.ReadUInt32(); + break; + } + case 34: + case 32: { + equipmentIds_.AddEntriesFrom(input, _repeated_equipmentIds_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + NpcId = input.ReadUInt32(); + break; + } + case 16: { + Pos = input.ReadUInt32(); + break; + } + case 24: { + UniqueId = input.ReadUInt32(); + break; + } + case 34: + case 32: { + equipmentIds_.AddEntriesFrom(ref input, _repeated_equipmentIds_codec); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class GridFightForgeInfoPb : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GridFightForgeInfoPb()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[8]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeInfoPb() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeInfoPb(GridFightForgeInfoPb other) : this() { + forgeItemId_ = other.forgeItemId_; + pos_ = other.pos_; + uniqueId_ = other.uniqueId_; + goods_ = other.goods_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeInfoPb Clone() { + return new GridFightForgeInfoPb(this); + } + + /// Field number for the "ForgeItemId" field. + public const int ForgeItemIdFieldNumber = 1; + private uint forgeItemId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint ForgeItemId { + get { return forgeItemId_; } + set { + forgeItemId_ = value; + } + } + + /// Field number for the "Pos" field. + public const int PosFieldNumber = 2; + private uint pos_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Pos { + get { return pos_; } + set { + pos_ = value; + } + } + + /// Field number for the "UniqueId" field. + public const int UniqueIdFieldNumber = 3; + private uint uniqueId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint UniqueId { + get { return uniqueId_; } + set { + uniqueId_ = value; + } + } + + /// Field number for the "Goods" field. + public const int GoodsFieldNumber = 4; + private static readonly pb::FieldCodec _repeated_goods_codec + = pb::FieldCodec.ForMessage(34, global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeGoodsInfoPb.Parser); + private readonly pbc::RepeatedField goods_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Goods { + get { return goods_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as GridFightForgeInfoPb); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(GridFightForgeInfoPb other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ForgeItemId != other.ForgeItemId) return false; + if (Pos != other.Pos) return false; + if (UniqueId != other.UniqueId) return false; + if(!goods_.Equals(other.goods_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (ForgeItemId != 0) hash ^= ForgeItemId.GetHashCode(); + if (Pos != 0) hash ^= Pos.GetHashCode(); + if (UniqueId != 0) hash ^= UniqueId.GetHashCode(); + hash ^= goods_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (ForgeItemId != 0) { + output.WriteRawTag(8); + output.WriteUInt32(ForgeItemId); + } + if (Pos != 0) { + output.WriteRawTag(16); + output.WriteUInt32(Pos); + } + if (UniqueId != 0) { + output.WriteRawTag(24); + output.WriteUInt32(UniqueId); + } + goods_.WriteTo(output, _repeated_goods_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (ForgeItemId != 0) { + output.WriteRawTag(8); + output.WriteUInt32(ForgeItemId); + } + if (Pos != 0) { + output.WriteRawTag(16); + output.WriteUInt32(Pos); + } + if (UniqueId != 0) { + output.WriteRawTag(24); + output.WriteUInt32(UniqueId); + } + goods_.WriteTo(ref output, _repeated_goods_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (ForgeItemId != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ForgeItemId); + } + if (Pos != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Pos); + } + if (UniqueId != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UniqueId); + } + size += goods_.CalculateSize(_repeated_goods_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(GridFightForgeInfoPb other) { + if (other == null) { + return; + } + if (other.ForgeItemId != 0) { + ForgeItemId = other.ForgeItemId; + } + if (other.Pos != 0) { + Pos = other.Pos; + } + if (other.UniqueId != 0) { + UniqueId = other.UniqueId; + } + goods_.Add(other.goods_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ForgeItemId = input.ReadUInt32(); + break; + } + case 16: { + Pos = input.ReadUInt32(); + break; + } + case 24: { + UniqueId = input.ReadUInt32(); + break; + } + case 34: { + goods_.AddEntriesFrom(input, _repeated_goods_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ForgeItemId = input.ReadUInt32(); + break; + } + case 16: { + Pos = input.ReadUInt32(); + break; + } + case 24: { + UniqueId = input.ReadUInt32(); + break; + } + case 34: { + goods_.AddEntriesFrom(ref input, _repeated_goods_codec); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class GridFightForgeGoodsInfoPb : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GridFightForgeGoodsInfoPb()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[9]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeGoodsInfoPb() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeGoodsInfoPb(GridFightForgeGoodsInfoPb other) : this() { + switch (other.GoodsTypeCase) { + case GoodsTypeOneofCase.ItemId: + ItemId = other.ItemId; + break; + case GoodsTypeOneofCase.RoleInfo: + RoleInfo = other.RoleInfo.Clone(); + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeGoodsInfoPb Clone() { + return new GridFightForgeGoodsInfoPb(this); + } + + /// Field number for the "ItemId" field. + public const int ItemIdFieldNumber = 1; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint ItemId { + get { return HasItemId ? (uint) goodsType_ : 0; } + set { + goodsType_ = value; + goodsTypeCase_ = GoodsTypeOneofCase.ItemId; + } + } + /// Gets whether the "ItemId" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasItemId { + get { return goodsTypeCase_ == GoodsTypeOneofCase.ItemId; } + } + /// Clears the value of the oneof if it's currently set to "ItemId" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearItemId() { + if (HasItemId) { + ClearGoodsType(); + } + } + + /// Field number for the "RoleInfo" field. + public const int RoleInfoFieldNumber = 2; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb RoleInfo { + get { return goodsTypeCase_ == GoodsTypeOneofCase.RoleInfo ? (global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb) goodsType_ : null; } + set { + goodsType_ = value; + goodsTypeCase_ = value == null ? GoodsTypeOneofCase.None : GoodsTypeOneofCase.RoleInfo; + } + } + + private object goodsType_; + /// Enum of possible cases for the "GoodsType" oneof. + public enum GoodsTypeOneofCase { + None = 0, + ItemId = 1, + RoleInfo = 2, + } + private GoodsTypeOneofCase goodsTypeCase_ = GoodsTypeOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GoodsTypeOneofCase GoodsTypeCase { + get { return goodsTypeCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGoodsType() { + goodsTypeCase_ = GoodsTypeOneofCase.None; + goodsType_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as GridFightForgeGoodsInfoPb); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(GridFightForgeGoodsInfoPb other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ItemId != other.ItemId) return false; + if (!object.Equals(RoleInfo, other.RoleInfo)) return false; + if (GoodsTypeCase != other.GoodsTypeCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasItemId) hash ^= ItemId.GetHashCode(); + if (goodsTypeCase_ == GoodsTypeOneofCase.RoleInfo) hash ^= RoleInfo.GetHashCode(); + hash ^= (int) goodsTypeCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasItemId) { + output.WriteRawTag(8); + output.WriteUInt32(ItemId); + } + if (goodsTypeCase_ == GoodsTypeOneofCase.RoleInfo) { + output.WriteRawTag(18); + output.WriteMessage(RoleInfo); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasItemId) { + output.WriteRawTag(8); + output.WriteUInt32(ItemId); + } + if (goodsTypeCase_ == GoodsTypeOneofCase.RoleInfo) { + output.WriteRawTag(18); + output.WriteMessage(RoleInfo); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasItemId) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ItemId); + } + if (goodsTypeCase_ == GoodsTypeOneofCase.RoleInfo) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(RoleInfo); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(GridFightForgeGoodsInfoPb other) { + if (other == null) { + return; + } + switch (other.GoodsTypeCase) { + case GoodsTypeOneofCase.ItemId: + ItemId = other.ItemId; + break; + case GoodsTypeOneofCase.RoleInfo: + if (RoleInfo == null) { + RoleInfo = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb(); + } + RoleInfo.MergeFrom(other.RoleInfo); + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ItemId = input.ReadUInt32(); + break; + } + case 18: { + global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb subBuilder = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb(); + if (goodsTypeCase_ == GoodsTypeOneofCase.RoleInfo) { + subBuilder.MergeFrom(RoleInfo); + } + input.ReadMessage(subBuilder); + RoleInfo = subBuilder; + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ItemId = input.ReadUInt32(); + break; + } + case 18: { + global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb subBuilder = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeRoleGoodsInfoPb(); + if (goodsTypeCase_ == GoodsTypeOneofCase.RoleInfo) { + subBuilder.MergeFrom(RoleInfo); + } + input.ReadMessage(subBuilder); + RoleInfo = subBuilder; + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class GridFightForgeRoleGoodsInfoPb : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GridFightForgeRoleGoodsInfoPb()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[10]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeRoleGoodsInfoPb() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeRoleGoodsInfoPb(GridFightForgeRoleGoodsInfoPb other) : this() { + roleId_ = other.roleId_; + tier_ = other.tier_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightForgeRoleGoodsInfoPb Clone() { + return new GridFightForgeRoleGoodsInfoPb(this); + } + + /// Field number for the "RoleId" field. + public const int RoleIdFieldNumber = 1; + private uint roleId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint RoleId { + get { return roleId_; } + set { + roleId_ = value; + } + } + + /// Field number for the "Tier" field. + public const int TierFieldNumber = 2; + private uint tier_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Tier { + get { return tier_; } + set { + tier_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as GridFightForgeRoleGoodsInfoPb); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(GridFightForgeRoleGoodsInfoPb other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (RoleId != other.RoleId) return false; + if (Tier != other.Tier) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (RoleId != 0) hash ^= RoleId.GetHashCode(); + if (Tier != 0) hash ^= Tier.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (RoleId != 0) { + output.WriteRawTag(8); + output.WriteUInt32(RoleId); + } + if (Tier != 0) { + output.WriteRawTag(16); + output.WriteUInt32(Tier); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (RoleId != 0) { + output.WriteRawTag(8); + output.WriteUInt32(RoleId); + } + if (Tier != 0) { + output.WriteRawTag(16); + output.WriteUInt32(Tier); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (RoleId != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(RoleId); + } + if (Tier != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Tier); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(GridFightForgeRoleGoodsInfoPb other) { + if (other == null) { + return; + } + if (other.RoleId != 0) { + RoleId = other.RoleId; + } + if (other.Tier != 0) { + Tier = other.Tier; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + RoleId = input.ReadUInt32(); + break; + } + case 16: { + Tier = input.ReadUInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + RoleId = input.ReadUInt32(); + break; + } + case 16: { + Tier = input.ReadUInt32(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class GridFightTeamInfoPb : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GridFightTeamInfoPb()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[11]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightTeamInfoPb() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GridFightTeamInfoPb(GridFightTeamInfoPb other) : this() { roles_ = other.roles_.Clone(); + npcs_ = other.npcs_.Clone(); + forges_ = other.forges_.Clone(); curUniqueId_ = other.curUniqueId_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GridFightAvatarInfoPb Clone() { - return new GridFightAvatarInfoPb(this); + public GridFightTeamInfoPb Clone() { + return new GridFightTeamInfoPb(this); } /// Field number for the "Roles" field. @@ -2539,8 +3689,30 @@ namespace EggLink.DanhengServer.Proto.ServerSide { get { return roles_; } } + /// Field number for the "Npcs" field. + public const int NpcsFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_npcs_codec + = pb::FieldCodec.ForMessage(18, global::EggLink.DanhengServer.Proto.ServerSide.GridFightNpcInfoPb.Parser); + private readonly pbc::RepeatedField npcs_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Npcs { + get { return npcs_; } + } + + /// Field number for the "Forges" field. + public const int ForgesFieldNumber = 3; + private static readonly pb::FieldCodec _repeated_forges_codec + = pb::FieldCodec.ForMessage(26, global::EggLink.DanhengServer.Proto.ServerSide.GridFightForgeInfoPb.Parser); + private readonly pbc::RepeatedField forges_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Forges { + get { return forges_; } + } + /// Field number for the "CurUniqueId" field. - public const int CurUniqueIdFieldNumber = 2; + public const int CurUniqueIdFieldNumber = 4; private uint curUniqueId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -2554,12 +3726,12 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as GridFightAvatarInfoPb); + return Equals(other as GridFightTeamInfoPb); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(GridFightAvatarInfoPb other) { + public bool Equals(GridFightTeamInfoPb other) { if (ReferenceEquals(other, null)) { return false; } @@ -2567,6 +3739,8 @@ namespace EggLink.DanhengServer.Proto.ServerSide { return true; } if(!roles_.Equals(other.roles_)) return false; + if(!npcs_.Equals(other.npcs_)) return false; + if(!forges_.Equals(other.forges_)) return false; if (CurUniqueId != other.CurUniqueId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -2576,6 +3750,8 @@ namespace EggLink.DanhengServer.Proto.ServerSide { public override int GetHashCode() { int hash = 1; hash ^= roles_.GetHashCode(); + hash ^= npcs_.GetHashCode(); + hash ^= forges_.GetHashCode(); if (CurUniqueId != 0) hash ^= CurUniqueId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -2596,8 +3772,10 @@ namespace EggLink.DanhengServer.Proto.ServerSide { output.WriteRawMessage(this); #else roles_.WriteTo(output, _repeated_roles_codec); + npcs_.WriteTo(output, _repeated_npcs_codec); + forges_.WriteTo(output, _repeated_forges_codec); if (CurUniqueId != 0) { - output.WriteRawTag(16); + output.WriteRawTag(32); output.WriteUInt32(CurUniqueId); } if (_unknownFields != null) { @@ -2611,8 +3789,10 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { roles_.WriteTo(ref output, _repeated_roles_codec); + npcs_.WriteTo(ref output, _repeated_npcs_codec); + forges_.WriteTo(ref output, _repeated_forges_codec); if (CurUniqueId != 0) { - output.WriteRawTag(16); + output.WriteRawTag(32); output.WriteUInt32(CurUniqueId); } if (_unknownFields != null) { @@ -2626,6 +3806,8 @@ namespace EggLink.DanhengServer.Proto.ServerSide { public int CalculateSize() { int size = 0; size += roles_.CalculateSize(_repeated_roles_codec); + size += npcs_.CalculateSize(_repeated_npcs_codec); + size += forges_.CalculateSize(_repeated_forges_codec); if (CurUniqueId != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(CurUniqueId); } @@ -2637,11 +3819,13 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(GridFightAvatarInfoPb other) { + public void MergeFrom(GridFightTeamInfoPb other) { if (other == null) { return; } roles_.Add(other.roles_); + npcs_.Add(other.npcs_); + forges_.Add(other.forges_); if (other.CurUniqueId != 0) { CurUniqueId = other.CurUniqueId; } @@ -2664,7 +3848,15 @@ namespace EggLink.DanhengServer.Proto.ServerSide { roles_.AddEntriesFrom(input, _repeated_roles_codec); break; } - case 16: { + case 18: { + npcs_.AddEntriesFrom(input, _repeated_npcs_codec); + break; + } + case 26: { + forges_.AddEntriesFrom(input, _repeated_forges_codec); + break; + } + case 32: { CurUniqueId = input.ReadUInt32(); break; } @@ -2687,7 +3879,15 @@ namespace EggLink.DanhengServer.Proto.ServerSide { roles_.AddEntriesFrom(ref input, _repeated_roles_codec); break; } - case 16: { + case 18: { + npcs_.AddEntriesFrom(ref input, _repeated_npcs_codec); + break; + } + case 26: { + forges_.AddEntriesFrom(ref input, _repeated_forges_codec); + break; + } + case 32: { CurUniqueId = input.ReadUInt32(); break; } @@ -2713,7 +3913,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[8]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[12]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2940,7 +4140,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[9]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3119,7 +4319,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[10]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3335,7 +4535,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[11]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3514,7 +4714,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[12]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3876,7 +5076,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[13]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[17]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4129,7 +5329,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[14]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4308,7 +5508,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[15]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[19]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4535,7 +5735,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[16]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[20]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4762,7 +5962,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[17]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[21]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4967,7 +6167,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[18]; } + get { return global::EggLink.DanhengServer.Proto.ServerSide.GridFightDataReflection.Descriptor.MessageTypes[22]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4994,8 +6194,8 @@ namespace EggLink.DanhengServer.Proto.ServerSide { case ComponentTypeOneofCase.BasicInfo: BasicInfo = other.BasicInfo.Clone(); break; - case ComponentTypeOneofCase.AvatarInfo: - AvatarInfo = other.AvatarInfo.Clone(); + case ComponentTypeOneofCase.TeamInfo: + TeamInfo = other.TeamInfo.Clone(); break; case ComponentTypeOneofCase.OrbInfo: OrbInfo = other.OrbInfo.Clone(); @@ -5044,15 +6244,15 @@ namespace EggLink.DanhengServer.Proto.ServerSide { } } - /// Field number for the "AvatarInfo" field. - public const int AvatarInfoFieldNumber = 3; + /// Field number for the "TeamInfo" field. + public const int TeamInfoFieldNumber = 3; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb AvatarInfo { - get { return componentTypeCase_ == ComponentTypeOneofCase.AvatarInfo ? (global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb) componentType_ : null; } + public global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb TeamInfo { + get { return componentTypeCase_ == ComponentTypeOneofCase.TeamInfo ? (global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb) componentType_ : null; } set { componentType_ = value; - componentTypeCase_ = value == null ? ComponentTypeOneofCase.None : ComponentTypeOneofCase.AvatarInfo; + componentTypeCase_ = value == null ? ComponentTypeOneofCase.None : ComponentTypeOneofCase.TeamInfo; } } @@ -5110,7 +6310,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { None = 0, ShopInfo = 1, BasicInfo = 2, - AvatarInfo = 3, + TeamInfo = 3, OrbInfo = 4, AugmentInfo = 5, TraitInfo = 6, @@ -5147,7 +6347,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { } if (!object.Equals(ShopInfo, other.ShopInfo)) return false; if (!object.Equals(BasicInfo, other.BasicInfo)) return false; - if (!object.Equals(AvatarInfo, other.AvatarInfo)) return false; + if (!object.Equals(TeamInfo, other.TeamInfo)) return false; if (!object.Equals(OrbInfo, other.OrbInfo)) return false; if (!object.Equals(AugmentInfo, other.AugmentInfo)) return false; if (!object.Equals(TraitInfo, other.TraitInfo)) return false; @@ -5162,7 +6362,7 @@ namespace EggLink.DanhengServer.Proto.ServerSide { int hash = 1; if (componentTypeCase_ == ComponentTypeOneofCase.ShopInfo) hash ^= ShopInfo.GetHashCode(); if (componentTypeCase_ == ComponentTypeOneofCase.BasicInfo) hash ^= BasicInfo.GetHashCode(); - if (componentTypeCase_ == ComponentTypeOneofCase.AvatarInfo) hash ^= AvatarInfo.GetHashCode(); + if (componentTypeCase_ == ComponentTypeOneofCase.TeamInfo) hash ^= TeamInfo.GetHashCode(); if (componentTypeCase_ == ComponentTypeOneofCase.OrbInfo) hash ^= OrbInfo.GetHashCode(); if (componentTypeCase_ == ComponentTypeOneofCase.AugmentInfo) hash ^= AugmentInfo.GetHashCode(); if (componentTypeCase_ == ComponentTypeOneofCase.TraitInfo) hash ^= TraitInfo.GetHashCode(); @@ -5194,9 +6394,9 @@ namespace EggLink.DanhengServer.Proto.ServerSide { output.WriteRawTag(18); output.WriteMessage(BasicInfo); } - if (componentTypeCase_ == ComponentTypeOneofCase.AvatarInfo) { + if (componentTypeCase_ == ComponentTypeOneofCase.TeamInfo) { output.WriteRawTag(26); - output.WriteMessage(AvatarInfo); + output.WriteMessage(TeamInfo); } if (componentTypeCase_ == ComponentTypeOneofCase.OrbInfo) { output.WriteRawTag(34); @@ -5232,9 +6432,9 @@ namespace EggLink.DanhengServer.Proto.ServerSide { output.WriteRawTag(18); output.WriteMessage(BasicInfo); } - if (componentTypeCase_ == ComponentTypeOneofCase.AvatarInfo) { + if (componentTypeCase_ == ComponentTypeOneofCase.TeamInfo) { output.WriteRawTag(26); - output.WriteMessage(AvatarInfo); + output.WriteMessage(TeamInfo); } if (componentTypeCase_ == ComponentTypeOneofCase.OrbInfo) { output.WriteRawTag(34); @@ -5268,8 +6468,8 @@ namespace EggLink.DanhengServer.Proto.ServerSide { if (componentTypeCase_ == ComponentTypeOneofCase.BasicInfo) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(BasicInfo); } - if (componentTypeCase_ == ComponentTypeOneofCase.AvatarInfo) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(AvatarInfo); + if (componentTypeCase_ == ComponentTypeOneofCase.TeamInfo) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(TeamInfo); } if (componentTypeCase_ == ComponentTypeOneofCase.OrbInfo) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(OrbInfo); @@ -5308,11 +6508,11 @@ namespace EggLink.DanhengServer.Proto.ServerSide { } BasicInfo.MergeFrom(other.BasicInfo); break; - case ComponentTypeOneofCase.AvatarInfo: - if (AvatarInfo == null) { - AvatarInfo = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb(); + case ComponentTypeOneofCase.TeamInfo: + if (TeamInfo == null) { + TeamInfo = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb(); } - AvatarInfo.MergeFrom(other.AvatarInfo); + TeamInfo.MergeFrom(other.TeamInfo); break; case ComponentTypeOneofCase.OrbInfo: if (OrbInfo == null) { @@ -5374,12 +6574,12 @@ namespace EggLink.DanhengServer.Proto.ServerSide { break; } case 26: { - global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb subBuilder = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb(); - if (componentTypeCase_ == ComponentTypeOneofCase.AvatarInfo) { - subBuilder.MergeFrom(AvatarInfo); + global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb subBuilder = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb(); + if (componentTypeCase_ == ComponentTypeOneofCase.TeamInfo) { + subBuilder.MergeFrom(TeamInfo); } input.ReadMessage(subBuilder); - AvatarInfo = subBuilder; + TeamInfo = subBuilder; break; } case 34: { @@ -5452,12 +6652,12 @@ namespace EggLink.DanhengServer.Proto.ServerSide { break; } case 26: { - global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb subBuilder = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightAvatarInfoPb(); - if (componentTypeCase_ == ComponentTypeOneofCase.AvatarInfo) { - subBuilder.MergeFrom(AvatarInfo); + global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb subBuilder = new global::EggLink.DanhengServer.Proto.ServerSide.GridFightTeamInfoPb(); + if (componentTypeCase_ == ComponentTypeOneofCase.TeamInfo) { + subBuilder.MergeFrom(TeamInfo); } input.ReadMessage(subBuilder); - AvatarInfo = subBuilder; + TeamInfo = subBuilder; break; } case 34: { diff --git a/ServerSideProto/ProtoFile/GridFightData.proto b/ServerSideProto/ProtoFile/GridFightData.proto index f7234c0a..0fa38a77 100644 --- a/ServerSideProto/ProtoFile/GridFightData.proto +++ b/ServerSideProto/ProtoFile/GridFightData.proto @@ -44,6 +44,7 @@ message GridFightBasicInfoPb { repeated uint32 TrackingTraits = 11; repeated GridFightEquipmentTrackInfoPb TrackingEquipments = 12; string GuideCode = 13; + uint32 MaxLevel = 14; } message GridFightEquipmentTrackInfoPb { @@ -61,9 +62,37 @@ message GridFightRoleInfoPb { repeated uint32 EquipmentIds = 6; } -message GridFightAvatarInfoPb { +message GridFightNpcInfoPb { + uint32 NpcId = 1; + uint32 Pos = 2; + uint32 UniqueId = 3; + repeated uint32 EquipmentIds = 4; +} + +message GridFightForgeInfoPb { + uint32 ForgeItemId = 1; + uint32 Pos = 2; + uint32 UniqueId = 3; + repeated GridFightForgeGoodsInfoPb Goods = 4; +} + +message GridFightForgeGoodsInfoPb { + oneof GoodsType { + uint32 ItemId = 1; + GridFightForgeRoleGoodsInfoPb RoleInfo = 2; + } +} + +message GridFightForgeRoleGoodsInfoPb { + uint32 RoleId = 1; + uint32 Tier = 2; +} + +message GridFightTeamInfoPb { repeated GridFightRoleInfoPb Roles = 1; - uint32 CurUniqueId = 2; + repeated GridFightNpcInfoPb Npcs = 2; + repeated GridFightForgeInfoPb Forges = 3; + uint32 CurUniqueId = 4; } message GridFightGameOrbPb { @@ -122,7 +151,7 @@ message GridFightComponentPb { oneof ComponentType { GridFightShopInfoPb ShopInfo = 1; GridFightBasicInfoPb BasicInfo = 2; - GridFightAvatarInfoPb AvatarInfo = 3; + GridFightTeamInfoPb TeamInfo = 3; GridFightOrbInfoPb OrbInfo = 4; GridFightAugmentInfoPb AugmentInfo = 5; GridFightTraitInfoPb TraitInfo = 6;