From 9a1543f0a2295339c5c91c0ca018b13315d087d9 Mon Sep 17 00:00:00 2001 From: milimoe Date: Fri, 20 Dec 2024 01:38:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=87=E7=BA=A7=E5=92=8C?= =?UTF-8?q?=E7=AA=81=E7=A0=B4=E7=9A=84BUG=EF=BC=9B=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=99=BA=E5=8A=9B=E6=8F=90=E5=8D=87=E5=8A=A0=E9=80=9F=E7=B3=BB?= =?UTF-8?q?=E6=95=B0=EF=BC=9B=E6=B7=BB=E5=8A=A0=E7=AA=81=E7=A0=B4=E6=9D=90?= =?UTF-8?q?=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OshimaCore/Controllers/FunGameController.cs | 46 ++++++++++++------- OshimaCore/Utils/FunGameService.cs | 26 +++++++---- .../OpenEffects/AccelerationCoefficient.cs | 4 +- OshimaModules/Items/ItemID.cs | 2 + OshimaModules/Items/SpecialItem/升华之印.cs | 3 +- OshimaModules/Items/SpecialItem/永恒之印.cs | 13 ++++++ OshimaModules/Items/SpecialItem/流光之印.cs | 13 ++++++ OshimaModules/Modules/ItemModule.cs | 2 + 8 files changed, 80 insertions(+), 29 deletions(-) create mode 100644 OshimaModules/Items/SpecialItem/永恒之印.cs create mode 100644 OshimaModules/Items/SpecialItem/流光之印.cs diff --git a/OshimaCore/Controllers/FunGameController.cs b/OshimaCore/Controllers/FunGameController.cs index f1763d9..de59154 100644 --- a/OshimaCore/Controllers/FunGameController.cs +++ b/OshimaCore/Controllers/FunGameController.cs @@ -1484,7 +1484,7 @@ namespace Oshima.Core.Controllers if (items.Count() >= useCount) { - items = items.Reverse().Take(useCount); + items = items.TakeLast(useCount); List msgs = []; int successCount = 0; @@ -1529,7 +1529,7 @@ namespace Oshima.Core.Controllers pc.Add("user", user); pc.SaveConfig(); } - return NetworkUtility.JsonSerialize($"ʹϣʹ {useCount} Ʒɹ {successCount} \r\n" + string.Join("\r\n", msgs)); + return NetworkUtility.JsonSerialize($"ʹϣʹ {useCount} Ʒɹ {successCount} \r\n" + string.Join("\r\n", msgs.Count > 30 ? msgs.Take(30) : msgs)); } else { @@ -1584,7 +1584,7 @@ namespace Oshima.Core.Controllers string msg = $"ɣɫ [ {character} ] {character.Level - originalLevel} ǰȼ{character.Level} "; - if (General.GameplayEquilibriumConstant.EXPUpperLimit.TryGetValue(character.Level, out double need)) + if (character.Level != General.GameplayEquilibriumConstant.MaxLevel && General.GameplayEquilibriumConstant.EXPUpperLimit.TryGetValue(character.Level, out double need)) { if (character.EXP < need) { @@ -1595,6 +1595,10 @@ namespace Oshima.Core.Controllers msg += $"\r\nɫ [ {character} ] Ŀǰͻƽȣ{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}ҪСɫͻơܼ"; } } + else if (character.Level == General.GameplayEquilibriumConstant.MaxLevel) + { + msg += $"\r\nýɫϲ"; + } user.LastTime = DateTime.Now; pc.Add("user", user); @@ -1640,7 +1644,7 @@ namespace Oshima.Core.Controllers } return NetworkUtility.JsonSerialize($"ɫ [ {character} ] Ŀǰͻƽȣ{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}" + - $"\r\nýɫһȼͻƽ׶ {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak]} ϣ\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1)); + $"\r\nýɫһȼͻƽ׶ {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} ϣ\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1)); } else { @@ -1703,7 +1707,7 @@ namespace Oshima.Core.Controllers IEnumerable items = user.Inventory.Items.Where(i => i.Name == key); if (items.Count() >= needCount) { - items = items.Reverse().Take(needCount); + items = items.TakeLast(needCount); foreach (Item item in items) { user.Inventory.Items.Remove(item); @@ -1723,7 +1727,7 @@ namespace Oshima.Core.Controllers if (originalBreak == character.LevelBreak) { return NetworkUtility.JsonSerialize($"ͻʧܣɫ [ {character} ] Ŀǰͻƽȣ{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}" + - $"\r\nýɫһȼͻƽ׶ {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak]} ϣ\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1)); + $"\r\nýɫһȼͻƽ׶ {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} ϣ\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1)); } else { @@ -1733,7 +1737,7 @@ namespace Oshima.Core.Controllers return NetworkUtility.JsonSerialize($"ͻƳɹɫ [ {character} ] Ŀǰͻƽȣ{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}" + $"{(character.LevelBreak + 1 == General.GameplayEquilibriumConstant.LevelBreakList.Count ? "\r\nýɫȫͻƽ׶Σϲ" : - $"\r\nýɫһȼͻƽ׶ {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak]} ϣ\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1))}"); + $"\r\nýɫһȼͻƽ׶ {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} ϣ\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1))}"); } } else @@ -1765,31 +1769,41 @@ namespace Oshima.Core.Controllers string msg = ""; if (user.IsAdmin) { - if (FunGameService.AllItems.FirstOrDefault(i => i.Name == itemName) is Item item) + PluginConfig pc2 = new("saved", targetid.ToString()); + pc2.LoadConfig(); + if (pc2.Count > 0) { - PluginConfig pc2 = new("saved", targetid.ToString()); - pc2.LoadConfig(); - if (pc2.Count > 0) + User user2 = FunGameService.GetUser(pc2); + if (itemName == General.GameplayEquilibriumConstant.InGameCurrency) + { + user2.Inventory.Credits += itemCount; + msg = $"Ϊ [ {user2} ] {itemCount} {General.GameplayEquilibriumConstant.InGameCurrency}"; + } + else if (itemName == General.GameplayEquilibriumConstant.InGameMaterial) + { + user2.Inventory.Materials += itemCount; + msg = $"Ϊ [ {user2} ] {itemCount} {General.GameplayEquilibriumConstant.InGameMaterial}"; + } + else if (FunGameService.AllItems.FirstOrDefault(i => i.Name == itemName) is Item item) { - User user2 = FunGameService.GetUser(pc2); for (int i = 0; i < itemCount; i++) { Item newItem = item.Copy(); newItem.User = user2; user2.Inventory.Items.Add(newItem); } - pc2.Add("user", user2); - pc2.SaveConfig(); msg = $"Ϊ [ {user2} ] {itemCount} [{ItemSet.GetQualityTypeName(item.QualityType)}|{ItemSet.GetItemTypeName(item.ItemType)}] {item.Name}"; } else { - return NetworkUtility.JsonSerialize($"Ŀ UID ڣ"); + return NetworkUtility.JsonSerialize($"Ʒڣ"); } + pc2.Add("user", user2); + pc2.SaveConfig(); } else { - return NetworkUtility.JsonSerialize($"Ʒڣ"); + return NetworkUtility.JsonSerialize($"Ŀ UID ڣ"); } } else diff --git a/OshimaCore/Utils/FunGameService.cs b/OshimaCore/Utils/FunGameService.cs index 267be7a..f853127 100644 --- a/OshimaCore/Utils/FunGameService.cs +++ b/OshimaCore/Utils/FunGameService.cs @@ -38,35 +38,41 @@ namespace Oshima.Core.Utils 1, new() { { General.GameplayEquilibriumConstant.InGameMaterial, 400 }, - { nameof(升华之印), 40 } + { nameof(升华之印), 20 } } }, { 2, new() { - { General.GameplayEquilibriumConstant.InGameMaterial, 1040 }, - { nameof(升华之印), 75 } + { General.GameplayEquilibriumConstant.InGameMaterial, 960 }, + { nameof(升华之印), 30 }, + { nameof(流光之印), 10 } } }, { 3, new() { - { General.GameplayEquilibriumConstant.InGameMaterial, 2320 }, - { nameof(升华之印), 115 } + { General.GameplayEquilibriumConstant.InGameMaterial, 1760 }, + { nameof(升华之印), 40 }, + { nameof(流光之印), 20 } } }, { 4, new() { - { General.GameplayEquilibriumConstant.InGameMaterial, 4880 }, - { nameof(升华之印), 160 } + { General.GameplayEquilibriumConstant.InGameMaterial, 2800 }, + { nameof(升华之印), 50 }, + { nameof(流光之印), 30 }, + { nameof(永恒之印), 10 } } }, { 5, new() { - { General.GameplayEquilibriumConstant.InGameMaterial, 10000 }, - { nameof(升华之印), 210 } + { General.GameplayEquilibriumConstant.InGameMaterial, 4080 }, + { nameof(升华之印), 60 }, + { nameof(流光之印), 40 }, + { nameof(永恒之印), 20 } } }, }; @@ -98,7 +104,7 @@ namespace Oshima.Core.Utils Equipment.AddRange([new 攻击之爪5(), new 攻击之爪15(), new 攻击之爪25(), new 攻击之爪35()]); Items.AddRange(exItems.Values.Where(i => (int)i.ItemType > 4)); - Items.AddRange([new 小经验书(), new 中经验书(), new 大经验书(), new 升华之印()]); + Items.AddRange([new 小经验书(), new 中经验书(), new 大经验书(), new 升华之印(), new 流光之印(), new 永恒之印()]); AllItems.AddRange(Equipment); AllItems.AddRange(Items); diff --git a/OshimaModules/Effects/OpenEffects/AccelerationCoefficient.cs b/OshimaModules/Effects/OpenEffects/AccelerationCoefficient.cs index 4c968d5..e1e1e31 100644 --- a/OshimaModules/Effects/OpenEffects/AccelerationCoefficient.cs +++ b/OshimaModules/Effects/OpenEffects/AccelerationCoefficient.cs @@ -15,12 +15,12 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects public override void OnEffectGained(Character character) { - character.AccelerationCoefficient += 实际加成; + character.ExAccelerationCoefficient += 实际加成; } public override void OnEffectLost(Character character) { - character.AccelerationCoefficient -= 实际加成; + character.ExAccelerationCoefficient -= 实际加成; } public AccelerationCoefficient(Skill skill, Dictionary args, Character? source = null) : base(skill, args) diff --git a/OshimaModules/Items/ItemID.cs b/OshimaModules/Items/ItemID.cs index dd66cf4..530d60b 100644 --- a/OshimaModules/Items/ItemID.cs +++ b/OshimaModules/Items/ItemID.cs @@ -18,5 +18,7 @@ public enum SpecialItemID : long { 升华之印 = 18001, + 流光之印 = 18002, + 永恒之印 = 18003, } } diff --git a/OshimaModules/Items/SpecialItem/升华之印.cs b/OshimaModules/Items/SpecialItem/升华之印.cs index 4c790c2..ed84dde 100644 --- a/OshimaModules/Items/SpecialItem/升华之印.cs +++ b/OshimaModules/Items/SpecialItem/升华之印.cs @@ -7,6 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Items { public override long Id => (long)SpecialItemID.升华之印; public override string Name => "升华之印"; - public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : ""; + public override string Description => "角色突破等阶必备的初级材料。"; + public override QualityType QualityType => QualityType.White; } } diff --git a/OshimaModules/Items/SpecialItem/永恒之印.cs b/OshimaModules/Items/SpecialItem/永恒之印.cs new file mode 100644 index 0000000..83a87c5 --- /dev/null +++ b/OshimaModules/Items/SpecialItem/永恒之印.cs @@ -0,0 +1,13 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Items +{ + public class 永恒之印() : Item(ItemType.SpecialItem) + { + public override long Id => (long)SpecialItemID.永恒之印; + public override string Name => "永恒之印"; + public override string Description => "角色突破等阶必备的高级材料。"; + public override QualityType QualityType => QualityType.Blue; + } +} diff --git a/OshimaModules/Items/SpecialItem/流光之印.cs b/OshimaModules/Items/SpecialItem/流光之印.cs new file mode 100644 index 0000000..066c928 --- /dev/null +++ b/OshimaModules/Items/SpecialItem/流光之印.cs @@ -0,0 +1,13 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Items +{ + public class 流光之印() : Item(ItemType.SpecialItem) + { + public override long Id => (long)SpecialItemID.流光之印; + public override string Name => "流光之印"; + public override string Description => "角色突破等阶必备的中级材料。"; + public override QualityType QualityType => QualityType.Green; + } +} diff --git a/OshimaModules/Modules/ItemModule.cs b/OshimaModules/Modules/ItemModule.cs index 6327cc1..2e699f8 100644 --- a/OshimaModules/Modules/ItemModule.cs +++ b/OshimaModules/Modules/ItemModule.cs @@ -33,6 +33,8 @@ namespace Oshima.FunGame.OshimaModules (long)ConsumableID.中经验书 => new 中经验书(), (long)ConsumableID.大经验书 => new 大经验书(), (long)SpecialItemID.升华之印 => new 升华之印(), + (long)SpecialItemID.流光之印 => new 流光之印(), + (long)SpecialItemID.永恒之印 => new 永恒之印(), _ => null, }; };