修复升级和突破的BUG;添加智力提升加速系数;添加突破材料

This commit is contained in:
milimoe 2024-12-20 01:38:05 +08:00
parent 3c1cb897af
commit 9a1543f0a2
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
8 changed files with 80 additions and 29 deletions

View File

@ -1484,7 +1484,7 @@ namespace Oshima.Core.Controllers
if (items.Count() >= useCount)
{
items = items.Reverse().Take(useCount);
items = items.TakeLast(useCount);
List<string> 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<Item> 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
@ -1764,32 +1768,42 @@ 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)
{
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)
{
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

View File

@ -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);

View File

@ -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<string, object> args, Character? source = null) : base(skill, args)

View File

@ -18,5 +18,7 @@
public enum SpecialItemID : long
{
= 18001,
= 18002,
= 18003,
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -33,6 +33,8 @@ namespace Oshima.FunGame.OshimaModules
(long)ConsumableID. => new (),
(long)ConsumableID. => new (),
(long)SpecialItemID. => new (),
(long)SpecialItemID. => new (),
(long)SpecialItemID. => new (),
_ => null,
};
};