From ac23eb3ce802507a6036ade3663124f965b09896 Mon Sep 17 00:00:00 2001 From: Somebody Date: Sat, 6 Apr 2024 14:07:54 +0800 Subject: [PATCH] fix some bug --- Common/Data/Config/FloorInfo.cs | 2 +- Common/Data/Config/GroupInfo.cs | 1 + Common/Data/Config/MissionInfo.cs | 1 + Common/Data/Config/PropInfo.cs | 2 +- Common/Data/Config/TaskInfo.cs | 2 +- Common/Data/Excel/AvatarConfigExcel.cs | 3 +- Common/Data/Excel/EquipmentConfigExcel.cs | 2 +- Common/Data/Excel/InteractConfigExcel.cs | 2 +- Common/Data/Excel/ItemConfigExcel.cs | 2 +- Common/Data/Excel/MazePlaneExcel.cs | 2 +- Common/Data/Excel/MazePropExcel.cs | 2 +- Common/Data/Excel/RelicConfigExcel.cs | 2 +- Common/Data/Excel/RogueBonusExcel.cs | 25 ++++ Common/Data/Excel/RogueBuffExcel.cs | 28 ++++ Common/Data/Excel/RogueBuffGroupExcel.cs | 73 +++++++++++ Common/Data/Excel/RogueHandBookEventExcel.cs | 28 ++++ .../Data/Excel/RogueHandbookMiracleExcel.cs | 27 ++++ Common/Data/Excel/RogueMazeBuffExcel.cs | 27 ++++ Common/Data/Excel/RogueMiracleDisplayExcel.cs | 25 ++++ Common/Data/Excel/RogueMiracleEffectExcel.cs | 32 +++++ Common/Data/Excel/SpecialAvatarExcel.cs | 2 +- Common/Data/GameData.cs | 55 +++++++- Common/Database/Scene/SceneData.cs | 2 +- Common/Enums/{ => Avatar}/DamageTypeEnum.cs | 2 +- Common/Enums/{ => Avatar}/RelicTypeEnum.cs | 2 +- .../{ => Avatar}/SpecialAvatarTypeEnum.cs | 2 +- Common/Enums/{ => Avatar}/TaskTypeEnum.cs | 2 +- Common/Enums/{ => Item}/ItemMainTypeEnum.cs | 2 +- Common/Enums/{ => Item}/ItemRarityEnum.cs | 2 +- Common/Enums/{ => Item}/ItemSubTypeEnum.cs | 2 +- Common/Enums/{ => Item}/ItemUseMethodEnum.cs | 2 +- Common/Enums/{ => Item}/RarityEnum.cs | 2 +- .../Enums/{ => Mission}/ConditionTypeEnum.cs | 0 .../{ => Mission}/FinishActionTypeEnum.cs | 0 .../{ => Mission}/MissionFinishTypeEnum.cs | 0 .../Enums/{ => Mission}/MissionPhaseEnum.cs | 0 .../{ => Mission}/MissionTakeTypeEnum.cs | 0 Common/Enums/{ => Mission}/MonsterRankEnum.cs | 0 .../Enums/Rogue/RogueMiracleEffectTypeEnum.cs | 64 +++++++++ Common/Enums/{ => Scene}/GroupLoadSideEnum.cs | 2 +- Common/Enums/{ => Scene}/PlaneTypeEnum.cs | 2 +- Common/Enums/{ => Scene}/PropStateEnum.cs | 2 +- Common/Enums/{ => Scene}/PropTypeEnum.cs | 2 +- Common/Enums/{ => Scene}/SaveTypeEnum.cs | 2 +- Common/Util/Extensions.cs | 20 +++ GameServer/Command/Cmd/CommandScene.cs | 7 +- GameServer/Game/Battle/Skill/MazeSkill.cs | 21 +-- GameServer/Game/Gacha/GachaManager.cs | 1 + GameServer/Game/Inventory/InventoryManager.cs | 2 +- .../Handler/MissionHandlerPropState.cs | 1 + GameServer/Game/Player/PlayerInstance.cs | 1 + .../Game/Rogue/Buff/RogueBuffInstance.cs | 21 +++ .../Rogue/Miracle/RogueMiracleInstance.cs | 21 +++ GameServer/Game/Rogue/RogueActionInstance.cs | 43 ++++++ GameServer/Game/Rogue/RogueInstance.cs | 123 ++++++++++++++++++ GameServer/Game/Rogue/RogueManager.cs | 54 ++++++-- GameServer/Game/Scene/Entity/EntityProp.cs | 2 +- GameServer/Game/Scene/SceneEntityLoader.cs | 2 +- GameServer/Game/Shop/ShopService.cs | 3 +- GameServer/Handbook/HandbookGenerator.cs | 28 ++++ .../Rogue/HandlerGetRogueHandbookDataCsReq.cs | 5 +- .../Recv/Rogue/HandlerGetRogueInfoCsReq.cs | 5 +- .../Send/Player/PacketPlayerSyncScNotify.cs | 2 +- .../Rogue/PacketGetRogueHandbookDataScRsp.cs | 59 +++++++++ .../Send/Rogue/PacketGetRogueInfoScRsp.cs | 23 ++++ .../Send/Scene/PacketGetSceneMapInfoScRsp.cs | 2 +- .../Scene/PacketGroupStateChangeScNotify.cs | 2 +- 67 files changed, 827 insertions(+), 60 deletions(-) create mode 100644 Common/Data/Excel/RogueBonusExcel.cs create mode 100644 Common/Data/Excel/RogueBuffExcel.cs create mode 100644 Common/Data/Excel/RogueBuffGroupExcel.cs create mode 100644 Common/Data/Excel/RogueHandBookEventExcel.cs create mode 100644 Common/Data/Excel/RogueHandbookMiracleExcel.cs create mode 100644 Common/Data/Excel/RogueMazeBuffExcel.cs create mode 100644 Common/Data/Excel/RogueMiracleDisplayExcel.cs create mode 100644 Common/Data/Excel/RogueMiracleEffectExcel.cs rename Common/Enums/{ => Avatar}/DamageTypeEnum.cs (88%) rename Common/Enums/{ => Avatar}/RelicTypeEnum.cs (78%) rename Common/Enums/{ => Avatar}/SpecialAvatarTypeEnum.cs (83%) rename Common/Enums/{ => Avatar}/TaskTypeEnum.cs (91%) rename Common/Enums/{ => Item}/ItemMainTypeEnum.cs (83%) rename Common/Enums/{ => Item}/ItemRarityEnum.cs (78%) rename Common/Enums/{ => Item}/ItemSubTypeEnum.cs (94%) rename Common/Enums/{ => Item}/ItemUseMethodEnum.cs (93%) rename Common/Enums/{ => Item}/RarityEnum.cs (89%) rename Common/Enums/{ => Mission}/ConditionTypeEnum.cs (100%) rename Common/Enums/{ => Mission}/FinishActionTypeEnum.cs (100%) rename Common/Enums/{ => Mission}/MissionFinishTypeEnum.cs (100%) rename Common/Enums/{ => Mission}/MissionPhaseEnum.cs (100%) rename Common/Enums/{ => Mission}/MissionTakeTypeEnum.cs (100%) rename Common/Enums/{ => Mission}/MonsterRankEnum.cs (100%) create mode 100644 Common/Enums/Rogue/RogueMiracleEffectTypeEnum.cs rename Common/Enums/{ => Scene}/GroupLoadSideEnum.cs (82%) rename Common/Enums/{ => Scene}/PlaneTypeEnum.cs (88%) rename Common/Enums/{ => Scene}/PropStateEnum.cs (95%) rename Common/Enums/{ => Scene}/PropTypeEnum.cs (95%) rename Common/Enums/{ => Scene}/SaveTypeEnum.cs (69%) create mode 100644 GameServer/Game/Rogue/Buff/RogueBuffInstance.cs create mode 100644 GameServer/Game/Rogue/Miracle/RogueMiracleInstance.cs create mode 100644 GameServer/Game/Rogue/RogueActionInstance.cs create mode 100644 GameServer/Game/Rogue/RogueInstance.cs create mode 100644 GameServer/Server/Packet/Send/Rogue/PacketGetRogueHandbookDataScRsp.cs create mode 100644 GameServer/Server/Packet/Send/Rogue/PacketGetRogueInfoScRsp.cs diff --git a/Common/Data/Config/FloorInfo.cs b/Common/Data/Config/FloorInfo.cs index ccaf9641..511c1dee 100644 --- a/Common/Data/Config/FloorInfo.cs +++ b/Common/Data/Config/FloorInfo.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Util; using Newtonsoft.Json; diff --git a/Common/Data/Config/GroupInfo.cs b/Common/Data/Config/GroupInfo.cs index 4efd55ab..45dabdfc 100644 --- a/Common/Data/Config/GroupInfo.cs +++ b/Common/Data/Config/GroupInfo.cs @@ -1,5 +1,6 @@ using EggLink.DanhengServer.Database.Mission; using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using static System.Formats.Asn1.AsnWriter; diff --git a/Common/Data/Config/MissionInfo.cs b/Common/Data/Config/MissionInfo.cs index fd31d969..7d931526 100644 --- a/Common/Data/Config/MissionInfo.cs +++ b/Common/Data/Config/MissionInfo.cs @@ -1,5 +1,6 @@ using EggLink.DanhengServer.Data.Excel; using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Util; using Newtonsoft.Json; using Newtonsoft.Json.Converters; diff --git a/Common/Data/Config/PropInfo.cs b/Common/Data/Config/PropInfo.cs index 53991d06..47e30665 100644 --- a/Common/Data/Config/PropInfo.cs +++ b/Common/Data/Config/PropInfo.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Util; using Newtonsoft.Json; using Newtonsoft.Json.Converters; diff --git a/Common/Data/Config/TaskInfo.cs b/Common/Data/Config/TaskInfo.cs index ee172129..a178ff8f 100644 --- a/Common/Data/Config/TaskInfo.cs +++ b/Common/Data/Config/TaskInfo.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Avatar; using EggLink.DanhengServer.Util; using Newtonsoft.Json; using Newtonsoft.Json.Converters; diff --git a/Common/Data/Excel/AvatarConfigExcel.cs b/Common/Data/Excel/AvatarConfigExcel.cs index 5fae96f8..a3cc8a32 100644 --- a/Common/Data/Excel/AvatarConfigExcel.cs +++ b/Common/Data/Excel/AvatarConfigExcel.cs @@ -1,5 +1,6 @@ using EggLink.DanhengServer.Data.Config; -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Avatar; +using EggLink.DanhengServer.Enums.Item; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System.Text.RegularExpressions; diff --git a/Common/Data/Excel/EquipmentConfigExcel.cs b/Common/Data/Excel/EquipmentConfigExcel.cs index cd424b90..39bb0223 100644 --- a/Common/Data/Excel/EquipmentConfigExcel.cs +++ b/Common/Data/Excel/EquipmentConfigExcel.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Item; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; diff --git a/Common/Data/Excel/InteractConfigExcel.cs b/Common/Data/Excel/InteractConfigExcel.cs index 71b66761..be4bcca5 100644 --- a/Common/Data/Excel/InteractConfigExcel.cs +++ b/Common/Data/Excel/InteractConfigExcel.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using Newtonsoft.Json.Converters; using System.Text.Json.Serialization; diff --git a/Common/Data/Excel/ItemConfigExcel.cs b/Common/Data/Excel/ItemConfigExcel.cs index 1485716b..918a9262 100644 --- a/Common/Data/Excel/ItemConfigExcel.cs +++ b/Common/Data/Excel/ItemConfigExcel.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Item; using Newtonsoft.Json; using Newtonsoft.Json.Converters; diff --git a/Common/Data/Excel/MazePlaneExcel.cs b/Common/Data/Excel/MazePlaneExcel.cs index cc2bae4b..744e1e8f 100644 --- a/Common/Data/Excel/MazePlaneExcel.cs +++ b/Common/Data/Excel/MazePlaneExcel.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; diff --git a/Common/Data/Excel/MazePropExcel.cs b/Common/Data/Excel/MazePropExcel.cs index c0abc2bc..a5c9fba4 100644 --- a/Common/Data/Excel/MazePropExcel.cs +++ b/Common/Data/Excel/MazePropExcel.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; diff --git a/Common/Data/Excel/RelicConfigExcel.cs b/Common/Data/Excel/RelicConfigExcel.cs index f2a63d85..8ec17602 100644 --- a/Common/Data/Excel/RelicConfigExcel.cs +++ b/Common/Data/Excel/RelicConfigExcel.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Avatar; namespace EggLink.DanhengServer.Data.Excel { diff --git a/Common/Data/Excel/RogueBonusExcel.cs b/Common/Data/Excel/RogueBonusExcel.cs new file mode 100644 index 00000000..7867aa65 --- /dev/null +++ b/Common/Data/Excel/RogueBonusExcel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Data.Excel +{ + [ResourceEntity("RogueBonus.json")] + public class RogueBonusExcel : ExcelResource + { + public int BonusID { get; set; } + public int BonusEvent { get; set; } + + public override int GetId() + { + return BonusID; + } + + public override void Loaded() + { + GameData.RogueBonusData.Add(GetId(), this); + } + } +} diff --git a/Common/Data/Excel/RogueBuffExcel.cs b/Common/Data/Excel/RogueBuffExcel.cs new file mode 100644 index 00000000..b0e34c05 --- /dev/null +++ b/Common/Data/Excel/RogueBuffExcel.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Data.Excel +{ + [ResourceEntity("RogueBuff.json")] + public class RogueBuffExcel : ExcelResource + { + public int MazeBuffID { get; set; } + public int MazeBuffLevel { get; set; } + public int RogueBuffType { get; set; } + public int RogueBuffRarity { get; set; } + public int RogueBuffTag { get; set; } + + public override int GetId() + { + return MazeBuffID * 100 + MazeBuffLevel; + } + + public override void Loaded() + { + GameData.RogueBuffData.Add(GetId(), this); + } + } +} diff --git a/Common/Data/Excel/RogueBuffGroupExcel.cs b/Common/Data/Excel/RogueBuffGroupExcel.cs new file mode 100644 index 00000000..aa221b3b --- /dev/null +++ b/Common/Data/Excel/RogueBuffGroupExcel.cs @@ -0,0 +1,73 @@ +using EggLink.DanhengServer.Util; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Data.Excel +{ + [ResourceEntity("RogueBuffGroup.json")] + public class RogueBuffGroupExcel : ExcelResource + { + [JsonProperty("EGDAIIJDDPA")] + public int GroupID { get; set; } + + [JsonProperty("AMGHNOBDGLM")] + public List BuffTagList { get; set; } = []; + + [JsonIgnore] + public List BuffList { get; set; } = []; + + [JsonIgnore] + public bool IsLoaded { get; set; } + + public override int GetId() + { + return GroupID; + } + + public override void Loaded() + { + GameData.RogueBuffGroupData.Add(GetId(), this); + LoadBuff(); + } + + public override void AfterAllDone() + { + LoadBuff(); + } + + public void LoadBuff() + { + if (IsLoaded) + { + return; + } + var count = 0; + foreach (var buffID in BuffTagList) + { + if (GameData.RogueBuffData.FirstOrDefault(x => x.Value.RogueBuffTag == buffID).Value is RogueBuffExcel buff) + { + BuffList.SafeAdd(buff); + count++; + } + else + { + // might is group id + if (GameData.RogueBuffGroupData.TryGetValue(buffID, out var group)) + { + group.LoadBuff(); + BuffList.SafeAddRange(group.BuffList); + count++; + } + } + } + if (count == BuffTagList.Count) + { + IsLoaded = true; + } + } + } +} diff --git a/Common/Data/Excel/RogueHandBookEventExcel.cs b/Common/Data/Excel/RogueHandBookEventExcel.cs new file mode 100644 index 00000000..21ed9b61 --- /dev/null +++ b/Common/Data/Excel/RogueHandBookEventExcel.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Data.Excel +{ + [ResourceEntity("RogueHandBookEvent.json")] + public class RogueHandBookEventExcel : ExcelResource + { + public int EventID { get; set; } + public HashName EventTitle { get; set; } = new(); + + public int EventReward { get; set; } + public List EventTypeList { get; set; } = []; + + public override int GetId() + { + return EventID; + } + + public override void Loaded() + { + GameData.RogueHandBookEventData.Add(GetId(), this); + } + } +} diff --git a/Common/Data/Excel/RogueHandbookMiracleExcel.cs b/Common/Data/Excel/RogueHandbookMiracleExcel.cs new file mode 100644 index 00000000..7503cf3f --- /dev/null +++ b/Common/Data/Excel/RogueHandbookMiracleExcel.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Data.Excel +{ + [ResourceEntity("RogueHandbookMiracle.json")] + public class RogueHandbookMiracleExcel : ExcelResource + { + public int MiracleHandbookID { get; set; } + public int MiracleReward { get; set; } + + public List MiracleTypeList { get; set; } = []; + + public override int GetId() + { + return MiracleHandbookID; + } + + public override void Loaded() + { + GameData.RogueHandbookMiracleData.Add(GetId(), this); + } + } +} diff --git a/Common/Data/Excel/RogueMazeBuffExcel.cs b/Common/Data/Excel/RogueMazeBuffExcel.cs new file mode 100644 index 00000000..b06d6d08 --- /dev/null +++ b/Common/Data/Excel/RogueMazeBuffExcel.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Data.Excel +{ + [ResourceEntity("RogueMazeBuff.json")] + public class RogueMazeBuffExcel : ExcelResource + { + public int ID { get; set; } + public int Lv { get; set; } + public int LvMax { get; set; } + public HashName BuffName { get; set; } = new(); + + public override int GetId() + { + return ID * 100 + Lv; + } + + public override void Loaded() + { + GameData.RogueMazeBuffData.Add(GetId(), this); + } + } +} diff --git a/Common/Data/Excel/RogueMiracleDisplayExcel.cs b/Common/Data/Excel/RogueMiracleDisplayExcel.cs new file mode 100644 index 00000000..766bd790 --- /dev/null +++ b/Common/Data/Excel/RogueMiracleDisplayExcel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Data.Excel +{ + [ResourceEntity("RogueMiracleDisplay.json")] + public class RogueMiracleDisplayExcel : ExcelResource + { + public int MiracleDisplayID { get; set; } + public HashName MiracleName { get; set; } = new(); + + public override int GetId() + { + return MiracleDisplayID; + } + + public override void Loaded() + { + GameData.RogueMiracleDisplayData.Add(GetId(), this); + } + } +} diff --git a/Common/Data/Excel/RogueMiracleEffectExcel.cs b/Common/Data/Excel/RogueMiracleEffectExcel.cs new file mode 100644 index 00000000..371a5d9d --- /dev/null +++ b/Common/Data/Excel/RogueMiracleEffectExcel.cs @@ -0,0 +1,32 @@ +using EggLink.DanhengServer.Enums.Rogue; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Data.Excel +{ + [ResourceEntity("RogueMiracleEffect.json")] + public class RogueMiracleEffectExcel : ExcelResource + { + public int MiracleEffectID { get; set; } + + [JsonConverter(typeof(StringEnumConverter))] + public RogueMiracleEffectTypeEnum MiracleEffectType { get; set; } + + public List ParamList { get; set; } = []; + + public override int GetId() + { + return MiracleEffectID; + } + + public override void Loaded() + { + GameData.RogueMiracleEffectData.Add(GetId(), this); + } + } +} diff --git a/Common/Data/Excel/SpecialAvatarExcel.cs b/Common/Data/Excel/SpecialAvatarExcel.cs index 7235adff..e3686042 100644 --- a/Common/Data/Excel/SpecialAvatarExcel.cs +++ b/Common/Data/Excel/SpecialAvatarExcel.cs @@ -1,7 +1,7 @@ using EggLink.DanhengServer.Database; using EggLink.DanhengServer.Database.Avatar; using EggLink.DanhengServer.Database.Player; -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Avatar; using EggLink.DanhengServer.Proto; using Newtonsoft.Json; using Newtonsoft.Json.Converters; diff --git a/Common/Data/GameData.cs b/Common/Data/GameData.cs index e819aed8..a8c4b466 100644 --- a/Common/Data/GameData.cs +++ b/Common/Data/GameData.cs @@ -7,12 +7,18 @@ namespace EggLink.DanhengServer.Data { public static class GameData { + #region Avatar + public static Dictionary AvatarConfigData { get; private set; } = []; public static Dictionary AvatarPromotionConfigData { get; private set; } = []; public static Dictionary AvatarExpItemConfigData { get; private set; } = []; public static Dictionary AvatarSkillTreeConfigData { get; private set; } = []; public static Dictionary ExpTypeData { get; private set; } = []; + #endregion + + #region Battle + public static Dictionary CocoonConfigData { get; private set; } = []; public static Dictionary StageConfigData { get; private set; } = []; public static Dictionary RaidConfigData { get; private set; } = []; @@ -21,16 +27,29 @@ namespace EggLink.DanhengServer.Data public static Dictionary NpcMonsterDataData { get; private set; } = []; public static Dictionary MonsterConfigData { get; private set; } = []; public static Dictionary MonsterDropData { get; private set; } = []; - public static Dictionary NpcDataData { get; private set; } = []; + + #endregion + + #region Player + public static Dictionary QuestDataData { get; private set; } = []; public static Dictionary PlayerLevelConfigData { get; private set; } = []; + #endregion + + #region Maze + + public static Dictionary NpcDataData { get; private set; } = []; public static Dictionary FloorInfoData { get; private set; } = []; public static Dictionary MapEntranceData { get; private set; } = []; public static Dictionary MazePlaneData { get; private set; } = []; public static Dictionary MazePropData { get; private set; } = []; public static Dictionary PlaneEventData { get; private set; } = []; + #endregion + + #region Items + public static Dictionary ItemConfigData { get; private set; } = []; public static Dictionary EquipmentConfigData { get; private set; } = []; public static Dictionary EquipmentExpTypeData { get; private set; } = []; @@ -40,9 +59,17 @@ namespace EggLink.DanhengServer.Data public static Dictionary> RelicSubAffixData { get; private set; } = []; // groupId, affixId public static Dictionary RelicConfigData { get; private set; } = []; + #endregion + + #region Special Avatar + public static Dictionary SpecialAvatarData { get; private set; } = []; public static Dictionary SpecialAvatarRelicData { get; private set; } = []; + #endregion + + #region Mission + public static Dictionary MainMissionData { get; private set; } = []; public static Dictionary SubMissionData { get; private set; } = []; public static Dictionary RewardDataData { get; private set; } = []; @@ -51,14 +78,38 @@ namespace EggLink.DanhengServer.Data public static Dictionary MessageContactsConfigData { get; private set; } = []; public static Dictionary MessageItemConfigData { get; private set; } = []; + #endregion + + #region Item Exchange + public static Dictionary ShopConfigData { get; private set; } = []; public static Dictionary ItemComposeConfigData { get; private set; } = []; + #endregion + + #region Rogue + public static Dictionary RogueAeonData { get; private set; } = []; + public static Dictionary RogueBonusData { get; private set; } = []; + public static Dictionary RogueBuffData { get; private set; } = []; + public static Dictionary RogueBuffGroupData { get; private set; } = []; + public static Dictionary RogueHandBookEventData { get; private set; } = []; + public static Dictionary RogueHandbookMiracleData { get; private set; } = []; public static Dictionary RogueManagerData { get; private set; } = []; + public static Dictionary RogueMazeBuffData { get; private set; } = []; + public static Dictionary RogueMiracleDisplayData { get; private set; } = []; + public static Dictionary RogueMiracleEffectData { get; private set; } = []; + + #endregion + + #region Banners public static BannersConfig BannersConfig { get; set; } = new(); + #endregion + + #region Actions + public static void GetFloorInfo(int planeId, int floorId, out FloorInfo outer) { FloorInfoData.TryGetValue("P" + planeId + "_F" + floorId, out outer!); @@ -121,5 +172,7 @@ namespace EggLink.DanhengServer.Data { return Math.Max(Math.Min((int)((level - 11) / 10D), 6), 0); } + + #endregion } } diff --git a/Common/Database/Scene/SceneData.cs b/Common/Database/Scene/SceneData.cs index 1521e2e5..04ee8519 100644 --- a/Common/Database/Scene/SceneData.cs +++ b/Common/Database/Scene/SceneData.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using SqlSugar; namespace EggLink.DanhengServer.Database.Scene diff --git a/Common/Enums/DamageTypeEnum.cs b/Common/Enums/Avatar/DamageTypeEnum.cs similarity index 88% rename from Common/Enums/DamageTypeEnum.cs rename to Common/Enums/Avatar/DamageTypeEnum.cs index 18fc3cec..2c046fe5 100644 --- a/Common/Enums/DamageTypeEnum.cs +++ b/Common/Enums/Avatar/DamageTypeEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Avatar { public enum DamageTypeEnum { diff --git a/Common/Enums/RelicTypeEnum.cs b/Common/Enums/Avatar/RelicTypeEnum.cs similarity index 78% rename from Common/Enums/RelicTypeEnum.cs rename to Common/Enums/Avatar/RelicTypeEnum.cs index 6290f822..8ffb5f95 100644 --- a/Common/Enums/RelicTypeEnum.cs +++ b/Common/Enums/Avatar/RelicTypeEnum.cs @@ -1,4 +1,4 @@ -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Avatar { public enum RelicTypeEnum { diff --git a/Common/Enums/SpecialAvatarTypeEnum.cs b/Common/Enums/Avatar/SpecialAvatarTypeEnum.cs similarity index 83% rename from Common/Enums/SpecialAvatarTypeEnum.cs rename to Common/Enums/Avatar/SpecialAvatarTypeEnum.cs index 2a8715a4..4ede68fd 100644 --- a/Common/Enums/SpecialAvatarTypeEnum.cs +++ b/Common/Enums/Avatar/SpecialAvatarTypeEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Avatar { public enum SpecialAvatarTypeEnum { diff --git a/Common/Enums/TaskTypeEnum.cs b/Common/Enums/Avatar/TaskTypeEnum.cs similarity index 91% rename from Common/Enums/TaskTypeEnum.cs rename to Common/Enums/Avatar/TaskTypeEnum.cs index 5ad37828..d836099f 100644 --- a/Common/Enums/TaskTypeEnum.cs +++ b/Common/Enums/Avatar/TaskTypeEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Avatar { public enum TaskTypeEnum { diff --git a/Common/Enums/ItemMainTypeEnum.cs b/Common/Enums/Item/ItemMainTypeEnum.cs similarity index 83% rename from Common/Enums/ItemMainTypeEnum.cs rename to Common/Enums/Item/ItemMainTypeEnum.cs index 02493ecc..2570810a 100644 --- a/Common/Enums/ItemMainTypeEnum.cs +++ b/Common/Enums/Item/ItemMainTypeEnum.cs @@ -1,4 +1,4 @@ -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Item { public enum ItemMainTypeEnum { diff --git a/Common/Enums/ItemRarityEnum.cs b/Common/Enums/Item/ItemRarityEnum.cs similarity index 78% rename from Common/Enums/ItemRarityEnum.cs rename to Common/Enums/Item/ItemRarityEnum.cs index f5920f29..82710a62 100644 --- a/Common/Enums/ItemRarityEnum.cs +++ b/Common/Enums/Item/ItemRarityEnum.cs @@ -1,4 +1,4 @@ -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Item { public enum ItemRarityEnum { diff --git a/Common/Enums/ItemSubTypeEnum.cs b/Common/Enums/Item/ItemSubTypeEnum.cs similarity index 94% rename from Common/Enums/ItemSubTypeEnum.cs rename to Common/Enums/Item/ItemSubTypeEnum.cs index dfbc9449..c0ca14d0 100644 --- a/Common/Enums/ItemSubTypeEnum.cs +++ b/Common/Enums/Item/ItemSubTypeEnum.cs @@ -1,4 +1,4 @@ -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Item { public enum ItemSubTypeEnum { diff --git a/Common/Enums/ItemUseMethodEnum.cs b/Common/Enums/Item/ItemUseMethodEnum.cs similarity index 93% rename from Common/Enums/ItemUseMethodEnum.cs rename to Common/Enums/Item/ItemUseMethodEnum.cs index 6d723810..b15ccbed 100644 --- a/Common/Enums/ItemUseMethodEnum.cs +++ b/Common/Enums/Item/ItemUseMethodEnum.cs @@ -1,4 +1,4 @@ -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Item { public enum ItemUseMethodEnum { diff --git a/Common/Enums/RarityEnum.cs b/Common/Enums/Item/RarityEnum.cs similarity index 89% rename from Common/Enums/RarityEnum.cs rename to Common/Enums/Item/RarityEnum.cs index ca3adf80..71345086 100644 --- a/Common/Enums/RarityEnum.cs +++ b/Common/Enums/Item/RarityEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Item { public enum RarityEnum { diff --git a/Common/Enums/ConditionTypeEnum.cs b/Common/Enums/Mission/ConditionTypeEnum.cs similarity index 100% rename from Common/Enums/ConditionTypeEnum.cs rename to Common/Enums/Mission/ConditionTypeEnum.cs diff --git a/Common/Enums/FinishActionTypeEnum.cs b/Common/Enums/Mission/FinishActionTypeEnum.cs similarity index 100% rename from Common/Enums/FinishActionTypeEnum.cs rename to Common/Enums/Mission/FinishActionTypeEnum.cs diff --git a/Common/Enums/MissionFinishTypeEnum.cs b/Common/Enums/Mission/MissionFinishTypeEnum.cs similarity index 100% rename from Common/Enums/MissionFinishTypeEnum.cs rename to Common/Enums/Mission/MissionFinishTypeEnum.cs diff --git a/Common/Enums/MissionPhaseEnum.cs b/Common/Enums/Mission/MissionPhaseEnum.cs similarity index 100% rename from Common/Enums/MissionPhaseEnum.cs rename to Common/Enums/Mission/MissionPhaseEnum.cs diff --git a/Common/Enums/MissionTakeTypeEnum.cs b/Common/Enums/Mission/MissionTakeTypeEnum.cs similarity index 100% rename from Common/Enums/MissionTakeTypeEnum.cs rename to Common/Enums/Mission/MissionTakeTypeEnum.cs diff --git a/Common/Enums/MonsterRankEnum.cs b/Common/Enums/Mission/MonsterRankEnum.cs similarity index 100% rename from Common/Enums/MonsterRankEnum.cs rename to Common/Enums/Mission/MonsterRankEnum.cs diff --git a/Common/Enums/Rogue/RogueMiracleEffectTypeEnum.cs b/Common/Enums/Rogue/RogueMiracleEffectTypeEnum.cs new file mode 100644 index 00000000..ec2e78ee --- /dev/null +++ b/Common/Enums/Rogue/RogueMiracleEffectTypeEnum.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Enums.Rogue +{ + public enum RogueMiracleEffectTypeEnum + { + None = 0, + ExtraBuffSelectReduceNumber = 1, + ExtraFreeBuffRoll = 2, + SetSelectBuffLevel = 3, + ReviveLineupAvatar = 4, + ExtraBuffRandomCount = 5, + AddMazeBuffAfterMonsterKill = 6, + SetSelectBuffGroupCount = 7, + AddMazeBuff = 8, + ChangeItemRatio = 9, + ChangeCostRatio = 10, + ChangeItemRatioOnNextRoom = 11, + AddRogueBuffGroupNumber = 12, + RepairRandomMiracle = 13, + UpgradeRandomBuff = 14, + ReplaceAllMiracles = 15, + SetBattleWinOnBattleFail = 16, + StartDestructPropExtraMiracle = 17, + ChangePropDestructNumber = 18, + StartDestructPropRecord = 19, + ChangeCurrentItemImmediately = 20, + ChangeAllRogueAvatarLineupDataByCurrent = 21, + ChangePropHitResultRatio = 22, + GetItemWithFullHpCountAfterMonsterKill = 23, + StartDestructPropExtraBuff = 24, + AddMiracleFromListOnBattleWin = 25, + SetIsBattleTriggerNoBuffSelect = 26, + MultipleItemRatio = 27, + GetOrRemoveItemOnEnterRoom = 28, + SetCountByConsumeItem = 29, + ReplaceAllBuffs = 30, + AddCurAeonBuffWithRandomCnt = 31, // minCount, maxCount, aeonId, buffGroup, aeonId, buffGroup, ... + SetSelectBuffRandomEnhance = 32, + SelectMazeBuffOnSelectAeon = 33, + GetItem = 34, + TurnBlockTypeToTarget = 35, + AddMazeBuffOnEnterCellWithBlockType = 36, + SetCountByEnterCellType = 37, + ChangeRogueShopDiscountRatio = 38, + GetDiceRollNum = 39, + ModifyBuffTypeCount = 40, + ModifyAdventureRoomTime = 41, + GetRogueCoinWithNotify = 42, + AccumulateCoinRecord = 43, + AdventureRoomExtraGroup = 44, + GetCoinByBlockType = 45, + SetDiceReRollNum = 46, + SetDiceReRollFree = 47, + RoomRepeatedSurfaceUseMiracle = 48, + RefreshBuffSelectGuaranteedAeonBuff = 49, + UseMiracleByEnterCellType = 50, + ModifyDiceSurfaceWeightByRarity = 51, + } +} diff --git a/Common/Enums/GroupLoadSideEnum.cs b/Common/Enums/Scene/GroupLoadSideEnum.cs similarity index 82% rename from Common/Enums/GroupLoadSideEnum.cs rename to Common/Enums/Scene/GroupLoadSideEnum.cs index 36cbb79d..0c10f7ec 100644 --- a/Common/Enums/GroupLoadSideEnum.cs +++ b/Common/Enums/Scene/GroupLoadSideEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Scene { public enum GroupLoadSideEnum { diff --git a/Common/Enums/PlaneTypeEnum.cs b/Common/Enums/Scene/PlaneTypeEnum.cs similarity index 88% rename from Common/Enums/PlaneTypeEnum.cs rename to Common/Enums/Scene/PlaneTypeEnum.cs index 9e6b84ea..54443e1f 100644 --- a/Common/Enums/PlaneTypeEnum.cs +++ b/Common/Enums/Scene/PlaneTypeEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Scene { public enum PlaneTypeEnum { diff --git a/Common/Enums/PropStateEnum.cs b/Common/Enums/Scene/PropStateEnum.cs similarity index 95% rename from Common/Enums/PropStateEnum.cs rename to Common/Enums/Scene/PropStateEnum.cs index d6c22da0..0aedd65c 100644 --- a/Common/Enums/PropStateEnum.cs +++ b/Common/Enums/Scene/PropStateEnum.cs @@ -1,4 +1,4 @@ -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Scene { public enum PropStateEnum { diff --git a/Common/Enums/PropTypeEnum.cs b/Common/Enums/Scene/PropTypeEnum.cs similarity index 95% rename from Common/Enums/PropTypeEnum.cs rename to Common/Enums/Scene/PropTypeEnum.cs index 6d11d1fe..7ad85ccf 100644 --- a/Common/Enums/PropTypeEnum.cs +++ b/Common/Enums/Scene/PropTypeEnum.cs @@ -1,4 +1,4 @@ -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Scene { public enum PropTypeEnum { diff --git a/Common/Enums/SaveTypeEnum.cs b/Common/Enums/Scene/SaveTypeEnum.cs similarity index 69% rename from Common/Enums/SaveTypeEnum.cs rename to Common/Enums/Scene/SaveTypeEnum.cs index af5bdf33..ca772e3c 100644 --- a/Common/Enums/SaveTypeEnum.cs +++ b/Common/Enums/Scene/SaveTypeEnum.cs @@ -1,4 +1,4 @@ -namespace EggLink.DanhengServer.Enums +namespace EggLink.DanhengServer.Enums.Scene { public enum SaveTypeEnum { diff --git a/Common/Util/Extensions.cs b/Common/Util/Extensions.cs index 2038d5bd..b5973af2 100644 --- a/Common/Util/Extensions.cs +++ b/Common/Util/Extensions.cs @@ -6,6 +6,8 @@ namespace EggLink.DanhengServer.Util; public static class Extensions { + #region Kcp Utils + public static string JoinFormat(this IEnumerable list, string separator, string formatString) { @@ -70,6 +72,8 @@ public static class Extensions bw.Write(data); } + #endregion + public static Position ToPosition(this Vector vector) { return new Position @@ -91,6 +95,22 @@ public static class Extensions return new Random().Next(from, to); } + public static void SafeAdd(this List list, T item) + { + if (!list.Contains(item)) + { + list.Add(item); + } + } + + public static void SafeAddRange(this List list, List item) + { + foreach (var i in item) + { + list.SafeAdd(i); + } + } + public static long GetUnixSec() { return DateTimeOffset.UtcNow.ToUnixTimeSeconds(); diff --git a/GameServer/Command/Cmd/CommandScene.cs b/GameServer/Command/Cmd/CommandScene.cs index 2e92bb97..98cc0345 100644 --- a/GameServer/Command/Cmd/CommandScene.cs +++ b/GameServer/Command/Cmd/CommandScene.cs @@ -1,4 +1,5 @@ -using EggLink.DanhengServer.Game.Scene.Entity; +using EggLink.DanhengServer.Enums.Scene; +using EggLink.DanhengServer.Game.Scene.Entity; using System; using System.Collections.Generic; using System.Linq; @@ -53,8 +54,8 @@ namespace EggLink.DanhengServer.Command.Cmd arg.SendMsg("Prop not found"); return; } - prop.SetState((Enums.PropStateEnum)arg.GetInt(2)); - arg.SendMsg($"Prop: {prop.EntityID} has been set to {(Enums.PropStateEnum)arg.GetInt(2)}"); + prop.SetState((PropStateEnum)arg.GetInt(2)); + arg.SendMsg($"Prop: {prop.EntityID} has been set to {(PropStateEnum)arg.GetInt(2)}"); } } } diff --git a/GameServer/Game/Battle/Skill/MazeSkill.cs b/GameServer/Game/Battle/Skill/MazeSkill.cs index e33fbb5a..b3b7d4dd 100644 --- a/GameServer/Game/Battle/Skill/MazeSkill.cs +++ b/GameServer/Game/Battle/Skill/MazeSkill.cs @@ -1,5 +1,6 @@ using EggLink.DanhengServer.Data.Config; using EggLink.DanhengServer.Data.Excel; +using EggLink.DanhengServer.Enums.Avatar; using EggLink.DanhengServer.Game.Battle.Skill.Action; using EggLink.DanhengServer.Game.Scene; using EggLink.DanhengServer.Game.Scene.Entity; @@ -33,30 +34,30 @@ namespace EggLink.DanhengServer.Game.Battle.Skill { switch (task.TaskType) { - case Enums.TaskTypeEnum.None: + case TaskTypeEnum.None: break; - case Enums.TaskTypeEnum.AddMazeBuff: + case TaskTypeEnum.AddMazeBuff: Actions.Add(new MazeAddMazeBuff(task.ID, task.LifeTime.GetLifeTime())); break; - case Enums.TaskTypeEnum.RemoveMazeBuff: + case TaskTypeEnum.RemoveMazeBuff: Actions.RemoveAll(a => a is MazeAddMazeBuff buff && buff.BuffId == task.ID); break; - case Enums.TaskTypeEnum.AdventureModifyTeamPlayerHP: + case TaskTypeEnum.AdventureModifyTeamPlayerHP: break; - case Enums.TaskTypeEnum.AdventureModifyTeamPlayerSP: + case TaskTypeEnum.AdventureModifyTeamPlayerSP: break; - case Enums.TaskTypeEnum.CreateSummonUnit: + case TaskTypeEnum.CreateSummonUnit: break; - case Enums.TaskTypeEnum.AdventureSetAttackTargetMonsterDie: + case TaskTypeEnum.AdventureSetAttackTargetMonsterDie: Actions.Add(new MazeSetTargetMonsterDie()); break; - case Enums.TaskTypeEnum.SuccessTaskList: + case TaskTypeEnum.SuccessTaskList: foreach (var t in task.SuccessTaskList) { AddAction(t); } break; - case Enums.TaskTypeEnum.AdventureTriggerAttack: + case TaskTypeEnum.AdventureTriggerAttack: if (IsMazeSkill) { TriggerBattle = task.TriggerBattle; @@ -67,7 +68,7 @@ namespace EggLink.DanhengServer.Game.Battle.Skill AddAction(t); } break; - case Enums.TaskTypeEnum.AdventureFireProjectile: + case TaskTypeEnum.AdventureFireProjectile: foreach (var t in task.OnProjectileHit) { AddAction(t); diff --git a/GameServer/Game/Gacha/GachaManager.cs b/GameServer/Game/Gacha/GachaManager.cs index 29094d3d..450581e1 100644 --- a/GameServer/Game/Gacha/GachaManager.cs +++ b/GameServer/Game/Gacha/GachaManager.cs @@ -4,6 +4,7 @@ using EggLink.DanhengServer.Database.Gacha; using EggLink.DanhengServer.Database.Inventory; using EggLink.DanhengServer.Database.Message; using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Item; using EggLink.DanhengServer.Game.Player; using EggLink.DanhengServer.Proto; using System.Numerics; diff --git a/GameServer/Game/Inventory/InventoryManager.cs b/GameServer/Game/Inventory/InventoryManager.cs index fff63e93..03feffc3 100644 --- a/GameServer/Game/Inventory/InventoryManager.cs +++ b/GameServer/Game/Inventory/InventoryManager.cs @@ -1,7 +1,7 @@ using EggLink.DanhengServer.Data; using EggLink.DanhengServer.Database; using EggLink.DanhengServer.Database.Inventory; -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Item; using EggLink.DanhengServer.Game.Player; using EggLink.DanhengServer.Proto; using EggLink.DanhengServer.Server.Packet.Send.Avatar; diff --git a/GameServer/Game/Mission/FinishType/Handler/MissionHandlerPropState.cs b/GameServer/Game/Mission/FinishType/Handler/MissionHandlerPropState.cs index 808ffebb..88c2ac10 100644 --- a/GameServer/Game/Mission/FinishType/Handler/MissionHandlerPropState.cs +++ b/GameServer/Game/Mission/FinishType/Handler/MissionHandlerPropState.cs @@ -1,5 +1,6 @@ using EggLink.DanhengServer.Data.Config; using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Game.Player; using EggLink.DanhengServer.Game.Scene.Entity; diff --git a/GameServer/Game/Player/PlayerInstance.cs b/GameServer/Game/Player/PlayerInstance.cs index af890b8c..4ed4888d 100644 --- a/GameServer/Game/Player/PlayerInstance.cs +++ b/GameServer/Game/Player/PlayerInstance.cs @@ -6,6 +6,7 @@ using EggLink.DanhengServer.Database.Player; using EggLink.DanhengServer.Database.Scene; using EggLink.DanhengServer.Database.Tutorial; using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Game.Avatar; using EggLink.DanhengServer.Game.Battle; using EggLink.DanhengServer.Game.Gacha; diff --git a/GameServer/Game/Rogue/Buff/RogueBuffInstance.cs b/GameServer/Game/Rogue/Buff/RogueBuffInstance.cs new file mode 100644 index 00000000..3fae0273 --- /dev/null +++ b/GameServer/Game/Rogue/Buff/RogueBuffInstance.cs @@ -0,0 +1,21 @@ +using EggLink.DanhengServer.Proto; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Game.Rogue.Buff +{ + public class RogueBuffInstance(int buffId, int buffLevel) + { + public int BuffId { get; set; } = buffId; + public int BuffLevel { get; set; } = buffLevel; + + public RogueBuff ToProto() => new() + { + BuffId = (uint)BuffId, + Level = (uint)BuffLevel + }; + } +} diff --git a/GameServer/Game/Rogue/Miracle/RogueMiracleInstance.cs b/GameServer/Game/Rogue/Miracle/RogueMiracleInstance.cs new file mode 100644 index 00000000..6cbdcb10 --- /dev/null +++ b/GameServer/Game/Rogue/Miracle/RogueMiracleInstance.cs @@ -0,0 +1,21 @@ +using EggLink.DanhengServer.Proto; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Game.Rogue.Miracle +{ + public class RogueMiracleInstance + { + + public RogueMiracle ToProto() // TODO: Implement + { + return new() + { + + }; + } + } +} diff --git a/GameServer/Game/Rogue/RogueActionInstance.cs b/GameServer/Game/Rogue/RogueActionInstance.cs new file mode 100644 index 00000000..c9c0edb4 --- /dev/null +++ b/GameServer/Game/Rogue/RogueActionInstance.cs @@ -0,0 +1,43 @@ +using EggLink.DanhengServer.Proto; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Game.Rogue +{ + public class RogueActionInstance + { + public int QueuePosition { get; set; } = 0; + public RogueCommonBuffSelectInfo? RogueCommonBuffSelectInfo { get; set; } + public RogueMiracleSelectInfo? RogueMiracleSelectInfo { get; set; } + public RogueBonusSelectInfo? RogueBonusSelectInfo { get; set; } + + public RogueCommonPendingAction ToProto() + { + var action = new RogueAction(); + + if (RogueCommonBuffSelectInfo != null) + { + action.BuffSelectInfo = RogueCommonBuffSelectInfo; + } + + if (RogueMiracleSelectInfo != null) + { + action.MiracleSelectInfo = RogueMiracleSelectInfo; + } + + if (RogueBonusSelectInfo != null) + { + action.BonusSelectInfo = RogueBonusSelectInfo; + } + + return new() + { + QueuePosition = (uint)QueuePosition, + RogueAction = action + }; + } + } +} diff --git a/GameServer/Game/Rogue/RogueInstance.cs b/GameServer/Game/Rogue/RogueInstance.cs new file mode 100644 index 00000000..c8cad8f1 --- /dev/null +++ b/GameServer/Game/Rogue/RogueInstance.cs @@ -0,0 +1,123 @@ +using EggLink.DanhengServer.Data.Excel; +using EggLink.DanhengServer.Game.Rogue.Buff; +using EggLink.DanhengServer.Game.Rogue.Miracle; +using EggLink.DanhengServer.Proto; +using EggLink.DanhengServer.Util; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Game.Rogue +{ + public class RogueInstance + { + #region Properties + + public int RogueVersionId { get; set; } = 101; + public RogueStatus Status { get; set; } = RogueStatus.Doing; + public Dictionary RogueMiracles { get; set; } = []; + public int AeonId { get; set; } = 0; + public Database.Lineup.LineupInfo CurLineup { get; set; } = new(); + public int CurReviveCost { get; set; } = 80; + public List RogueBuffs { get; set; } = []; + + public SortedDictionary RogueActions { get; set; } = []; // queue_position -> action + + #endregion + + #region Serialization + + public RogueCurrentInfo ToProto() + { + var proto = new RogueCurrentInfo() + { + Status = Status, + GameMiracleInfo = ToMiracleInfo(), + RogueAeonInfo = ToAeonInfo(), + RogueLineupInfo = ToLineupInfo(), + RogueBuffInfo = ToBuffInfo(), + RogueVirtualItem = ToVirtualItemInfo(), + MapInfo = ToMapInfo() + }; + + if (RogueActions.Count > 0) + { + proto.PendingAction = RogueActions.First().Value.ToProto(); + } + + return proto; + } + + public GameMiracleInfo ToMiracleInfo() + { + var proto = new GameMiracleInfo() + { + GameMiracleInfo_ = new() + }; + foreach (var miracle in RogueMiracles.Values) + { + proto.GameMiracleInfo_.MiracleList.Add(miracle.ToProto()); + } + return proto; + } + + public GameAeonInfo ToAeonInfo() + { + return new() + { + AeonId = (uint)AeonId, + IsUnlocked = AeonId != 0, + UnlockedAeonEnhanceNum = (uint)(AeonId != 0 ? 3 : 0) + }; + } + + public RogueLineupInfo ToLineupInfo() + { + var proto = new RogueLineupInfo(); + + foreach (var avatar in CurLineup.BaseAvatars!) + { + proto.BaseAvatarIdList.Add((uint)avatar.BaseAvatarId); + } + + proto.ReviveInfo = new() + { + // need to implement + }; + + return proto; + } + + public RogueBuffInfo ToBuffInfo() + { + var proto = new RogueBuffInfo(); + + foreach (var buff in RogueBuffs) + { + proto.MazeBuffList.Add(buff.ToProto()); + } + + return proto; + } + + public RogueVirtualItem ToVirtualItemInfo() + { + return new() + { + // need to implement + }; + } + + public RogueMapInfo ToMapInfo() + { + return new() + { + // need to implement + }; + } + + #endregion + } +} diff --git a/GameServer/Game/Rogue/RogueManager.cs b/GameServer/Game/Rogue/RogueManager.cs index 08c2037a..7a9228f1 100644 --- a/GameServer/Game/Rogue/RogueManager.cs +++ b/GameServer/Game/Rogue/RogueManager.cs @@ -13,12 +13,19 @@ namespace EggLink.DanhengServer.Game.Rogue { public class RogueManager(PlayerInstance player) : BasePlayerManager(player) { + #region Properties + + public RogueInstance? RogueInstances { get; set; } + + #endregion + + #region Information /// /// Get the begin time and end time /// /// - public (long, long) GetCurrentRogueTime() + public static (long, long) GetCurrentRogueTime() { // get the first day of the week var beginTime = DateTime.Now.AddDays(-(int)DateTime.Now.DayOfWeek).AddHours(4); @@ -28,7 +35,7 @@ namespace EggLink.DanhengServer.Game.Rogue public int GetRogueScore() => 0; // TODO: Implement - public RogueManagerExcel? GetCurrentManager() + public static RogueManagerExcel? GetCurrentManager() { foreach (var manager in GameData.RogueManagerData.Values) { @@ -40,17 +47,35 @@ namespace EggLink.DanhengServer.Game.Rogue return null; } - public RogueGetInfo ToProto() + #endregion + + #region Serialization + + public RogueInfo ToProto() { - var proto = new RogueGetInfo() + var proto = new RogueInfo() + { + RogueGetInfo = ToGetProto() + }; + + if (RogueInstances != null) + { + proto.RogueCurrentInfo = RogueInstances.ToProto(); + } + + return proto; + } + + public RogueGetInfo ToGetProto() + { + return new() { RogueScoreRewardInfo = ToRewardProto(), RogueAeonInfo = ToAeonInfo(), RogueSeasonInfo = ToSeasonProto(), RogueAreaInfo = ToAreaProto(), + RogueVirtualItemInfo = ToVirtualItemProto() }; - - return proto; } public RogueScoreRewardInfo ToRewardProto() @@ -68,7 +93,7 @@ namespace EggLink.DanhengServer.Game.Rogue }; } - public RogueAeonInfo ToAeonInfo() + public static RogueAeonInfo ToAeonInfo() { var proto = new RogueAeonInfo() { @@ -82,7 +107,7 @@ namespace EggLink.DanhengServer.Game.Rogue return proto; } - public RogueSeasonInfo ToSeasonProto() + public static RogueSeasonInfo ToSeasonProto() { var manager = GetCurrentManager(); if (manager == null) @@ -98,7 +123,7 @@ namespace EggLink.DanhengServer.Game.Rogue }; } - public RogueAreaInfo ToAreaProto() + public static RogueAreaInfo ToAreaProto() { var manager = GetCurrentManager(); if (manager == null) @@ -111,8 +136,19 @@ namespace EggLink.DanhengServer.Game.Rogue { AreaId = (uint)x, AreaStatus = RogueAreaStatus.FirstPass, + HasTakenReward = true })} }; } + + public RogueVirtualItemInfo ToVirtualItemProto() + { + return new() + { + // TODO: Implement + }; + } + + #endregion } } diff --git a/GameServer/Game/Scene/Entity/EntityProp.cs b/GameServer/Game/Scene/Entity/EntityProp.cs index bdcadde1..7d4ab0c9 100644 --- a/GameServer/Game/Scene/Entity/EntityProp.cs +++ b/GameServer/Game/Scene/Entity/EntityProp.cs @@ -1,6 +1,6 @@ using EggLink.DanhengServer.Data.Config; using EggLink.DanhengServer.Data.Excel; -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Game.Battle; using EggLink.DanhengServer.Proto; using EggLink.DanhengServer.Server.Packet.Send.Scene; diff --git a/GameServer/Game/Scene/SceneEntityLoader.cs b/GameServer/Game/Scene/SceneEntityLoader.cs index 5130a21b..e2630d18 100644 --- a/GameServer/Game/Scene/SceneEntityLoader.cs +++ b/GameServer/Game/Scene/SceneEntityLoader.cs @@ -1,6 +1,6 @@ using EggLink.DanhengServer.Data; using EggLink.DanhengServer.Data.Config; -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Game.Scene.Entity; using EggLink.DanhengServer.Server.Packet.Send.Scene; using EggLink.DanhengServer.Util; diff --git a/GameServer/Game/Shop/ShopService.cs b/GameServer/Game/Shop/ShopService.cs index 65fb5857..921b1c62 100644 --- a/GameServer/Game/Shop/ShopService.cs +++ b/GameServer/Game/Shop/ShopService.cs @@ -1,6 +1,7 @@ using EggLink.DanhengServer.Data; using EggLink.DanhengServer.Database; using EggLink.DanhengServer.Database.Inventory; +using EggLink.DanhengServer.Enums.Item; using EggLink.DanhengServer.Game.Player; using System; using System.Collections.Generic; @@ -26,7 +27,7 @@ namespace EggLink.DanhengServer.Game.Shop Player.InventoryManager!.RemoveItem(cost.Key, cost.Value * count); } var items = new List(); - if (itemConfig.ItemMainType == Enums.ItemMainTypeEnum.Equipment || itemConfig.ItemMainType == Enums.ItemMainTypeEnum.Relic) + if (itemConfig.ItemMainType == ItemMainTypeEnum.Equipment || itemConfig.ItemMainType == ItemMainTypeEnum.Relic) { for (int i = 0; i < count; i++) { diff --git a/GameServer/Handbook/HandbookGenerator.cs b/GameServer/Handbook/HandbookGenerator.cs index d3d6d8ec..8ffd7d01 100644 --- a/GameServer/Handbook/HandbookGenerator.cs +++ b/GameServer/Handbook/HandbookGenerator.cs @@ -55,6 +55,16 @@ namespace EggLink.DanhengServer.Handbook builder.AppendLine(); GenerateSubMissionId(builder, textMap); + builder.AppendLine(); + builder.AppendLine("#RogueBuff"); + builder.AppendLine(); + GenerateRogueBuff(builder, textMap); + + builder.AppendLine(); + builder.AppendLine("#RogueMiracle"); + builder.AppendLine(); + GenerateRogueMiracleDisplay(builder, textMap); + builder.AppendLine(); WriteToFile(builder.ToString()); @@ -108,6 +118,24 @@ namespace EggLink.DanhengServer.Handbook } } + public static void GenerateRogueBuff(StringBuilder builder, Dictionary map) + { + foreach (var buff in GameData.RogueMazeBuffData) + { + var name = map.TryGetValue(buff.Value.BuffName.Hash, out var value) ? value : $"[{buff.Value.BuffName.Hash}]"; + builder.AppendLine(buff.Key + ": " + name + " --- Level:" + buff.Value.Lv); + } + } + + public static void GenerateRogueMiracleDisplay(StringBuilder builder, Dictionary map) + { + foreach (var display in GameData.RogueMiracleDisplayData.Values) + { + var name = map.TryGetValue(display.MiracleName.Hash, out var value) ? value : $"[{display.MiracleName.Hash}]"; + builder.AppendLine(display.MiracleDisplayID + ": " + name); + } + } + public static void WriteToFile(string content) { File.WriteAllText(HandbookPath, content); diff --git a/GameServer/Server/Packet/Recv/Rogue/HandlerGetRogueHandbookDataCsReq.cs b/GameServer/Server/Packet/Recv/Rogue/HandlerGetRogueHandbookDataCsReq.cs index ce843636..0a1af01c 100644 --- a/GameServer/Server/Packet/Recv/Rogue/HandlerGetRogueHandbookDataCsReq.cs +++ b/GameServer/Server/Packet/Recv/Rogue/HandlerGetRogueHandbookDataCsReq.cs @@ -1,4 +1,5 @@ -using System; +using EggLink.DanhengServer.Server.Packet.Send.Rogue; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -11,7 +12,7 @@ namespace EggLink.DanhengServer.Server.Packet.Recv.Rogue { public override void OnHandle(Connection connection, byte[] header, byte[] data) { - connection.SendPacket(CmdIds.GetRogueHandbookDataScRsp); + connection.SendPacket(new PacketGetRogueHandbookDataScRsp()); } } } diff --git a/GameServer/Server/Packet/Recv/Rogue/HandlerGetRogueInfoCsReq.cs b/GameServer/Server/Packet/Recv/Rogue/HandlerGetRogueInfoCsReq.cs index 7af3af01..0ef97e1b 100644 --- a/GameServer/Server/Packet/Recv/Rogue/HandlerGetRogueInfoCsReq.cs +++ b/GameServer/Server/Packet/Recv/Rogue/HandlerGetRogueInfoCsReq.cs @@ -1,4 +1,5 @@ -using System; +using EggLink.DanhengServer.Server.Packet.Send.Rogue; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -11,7 +12,7 @@ namespace EggLink.DanhengServer.Server.Packet.Recv.Rogue { public override void OnHandle(Connection connection, byte[] header, byte[] data) { - connection.SendPacket(CmdIds.GetRogueInfoScRsp); + connection.SendPacket(new PacketGetRogueInfoScRsp(connection.Player!)); } } } diff --git a/GameServer/Server/Packet/Send/Player/PacketPlayerSyncScNotify.cs b/GameServer/Server/Packet/Send/Player/PacketPlayerSyncScNotify.cs index c1904e75..47855bc1 100644 --- a/GameServer/Server/Packet/Send/Player/PacketPlayerSyncScNotify.cs +++ b/GameServer/Server/Packet/Send/Player/PacketPlayerSyncScNotify.cs @@ -2,7 +2,7 @@ using EggLink.DanhengServer.Database.Avatar; using EggLink.DanhengServer.Database.Inventory; using EggLink.DanhengServer.Database.Message; -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Item; using EggLink.DanhengServer.Proto; using System; using System.Collections.Generic; diff --git a/GameServer/Server/Packet/Send/Rogue/PacketGetRogueHandbookDataScRsp.cs b/GameServer/Server/Packet/Send/Rogue/PacketGetRogueHandbookDataScRsp.cs new file mode 100644 index 00000000..9b3ca417 --- /dev/null +++ b/GameServer/Server/Packet/Send/Rogue/PacketGetRogueHandbookDataScRsp.cs @@ -0,0 +1,59 @@ +using EggLink.DanhengServer.Data; +using EggLink.DanhengServer.Proto; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Server.Packet.Send.Rogue +{ + public class PacketGetRogueHandbookDataScRsp : BasePacket + { + public PacketGetRogueHandbookDataScRsp() : base(CmdIds.GetRogueHandbookDataScRsp) + { + var proto = new GetRogueHandbookDataScRsp + { + HandbookInfo = new() + }; + + foreach (var item in GameData.RogueHandbookMiracleData) + { + proto.HandbookInfo.MiracleList.Add(new EHJPAIBFIPK() + { + HAGLJCEAMEK = (uint)item.Value.MiracleHandbookID, + HasTakenReward = true, + }); + } + + foreach (var item in GameData.RogueMazeBuffData) + { + if (item.Value.Lv != 1) + continue; + proto.HandbookInfo.BuffList.Add(new NIDCBKKJJMH() + { + MazeBuffId = (uint)item.Value.ID, + }); + } + + foreach (var item in GameData.RogueAeonData) + { + proto.HandbookInfo.RogueAeonList.Add(new DKNNNMJKPNO() + { + AeonId = (uint)item.Value.AeonID, + }); + } + + foreach (var item in GameData.RogueHandBookEventData) + { + proto.HandbookInfo.EventList.Add(new MMEGPGAAPDG() + { + BFHDEKMCJJA = (uint)item.Value.EventID, + HasTakenReward = true, + }); + } + + SetData(proto); + } + } +} diff --git a/GameServer/Server/Packet/Send/Rogue/PacketGetRogueInfoScRsp.cs b/GameServer/Server/Packet/Send/Rogue/PacketGetRogueInfoScRsp.cs new file mode 100644 index 00000000..fcda62b6 --- /dev/null +++ b/GameServer/Server/Packet/Send/Rogue/PacketGetRogueInfoScRsp.cs @@ -0,0 +1,23 @@ +using EggLink.DanhengServer.Game.Player; +using EggLink.DanhengServer.Proto; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EggLink.DanhengServer.Server.Packet.Send.Rogue +{ + public class PacketGetRogueInfoScRsp : BasePacket + { + public PacketGetRogueInfoScRsp(PlayerInstance player) : base(CmdIds.GetRogueInfoScRsp) + { + var proto = new GetRogueInfoScRsp() + { + RogueInfo = player.RogueManager!.ToProto(), + }; + + SetData(proto); + } + } +} diff --git a/GameServer/Server/Packet/Send/Scene/PacketGetSceneMapInfoScRsp.cs b/GameServer/Server/Packet/Send/Scene/PacketGetSceneMapInfoScRsp.cs index adc16f48..5b2b073f 100644 --- a/GameServer/Server/Packet/Send/Scene/PacketGetSceneMapInfoScRsp.cs +++ b/GameServer/Server/Packet/Send/Scene/PacketGetSceneMapInfoScRsp.cs @@ -1,6 +1,6 @@ using EggLink.DanhengServer.Data; using EggLink.DanhengServer.Data.Config; -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Game.Player; using EggLink.DanhengServer.Proto; diff --git a/GameServer/Server/Packet/Send/Scene/PacketGroupStateChangeScNotify.cs b/GameServer/Server/Packet/Send/Scene/PacketGroupStateChangeScNotify.cs index eed55770..fc8b31c7 100644 --- a/GameServer/Server/Packet/Send/Scene/PacketGroupStateChangeScNotify.cs +++ b/GameServer/Server/Packet/Send/Scene/PacketGroupStateChangeScNotify.cs @@ -1,4 +1,4 @@ -using EggLink.DanhengServer.Enums; +using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.Proto; namespace EggLink.DanhengServer.Server.Packet.Send.Scene