BUG修复,文本优化

This commit is contained in:
milimoe 2026-01-26 23:32:11 +08:00
parent d99bf28600
commit 3bc521531c
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
73 changed files with 494 additions and 267 deletions

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class AccelerationCoefficient : Effect public class AccelerationCoefficient : Effect
{ {
public override long Id => (long)EffectID.AccelerationCoefficient; public override long Id => (long)EffectID.AccelerationCoefficient;
public override string Name => "加速系数加成"; public override string Name { get; set; } = "加速系数加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 加速系数。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 加速系数。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExAGI : Effect public class ExAGI : Effect
{ {
public override long Id => (long)EffectID.ExAGI; public override long Id => (long)EffectID.ExAGI;
public override string Name => "敏捷加成"; public override string Name { get; set; } = "敏捷加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点敏捷。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点敏捷。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExAGI2 : Effect public class ExAGI2 : Effect
{ {
public override long Id => (long)EffectID.ExAGI2; public override long Id => (long)EffectID.ExAGI2;
public override string Name => "敏捷加成"; public override string Name { get; set; } = "敏捷加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点敏捷。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点敏捷。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExATK : Effect public class ExATK : Effect
{ {
public override long Id => (long)EffectID.ExATK; public override long Id => (long)EffectID.ExATK;
public override string Name => "攻击力加成"; public override string Name { get; set; } = "攻击力加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点攻击力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点攻击力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExATK2 : Effect public class ExATK2 : Effect
{ {
public override long Id => (long)EffectID.ExATK2; public override long Id => (long)EffectID.ExATK2;
public override string Name => "攻击力加成"; public override string Name { get; set; } = "攻击力加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点攻击力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点攻击力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExATR : Effect public class ExATR : Effect
{ {
public override long Id => (long)EffectID.ExATR; public override long Id => (long)EffectID.ExATR;
public override string Name => "攻击距离加成"; public override string Name { get; set; } = "攻击距离加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成)} 格攻击距离。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成)} 格攻击距离。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public int Value => ; public int Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExActionCoefficient : Effect public class ExActionCoefficient : Effect
{ {
public override long Id => (long)EffectID.ExActionCoefficient; public override long Id => (long)EffectID.ExActionCoefficient;
public override string Name => "行动系数加成"; public override string Name { get; set; } = "行动系数加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 行动系数。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 行动系数。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExCDR : Effect public class ExCDR : Effect
{ {
public override long Id => (long)EffectID.ExCDR; public override long Id => (long)EffectID.ExCDR;
public override string Name => "冷却缩减加成"; public override string Name { get; set; } = "冷却缩减加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 冷却缩减。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 冷却缩减。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExCritDMG : Effect public class ExCritDMG : Effect
{ {
public override long Id => (long)EffectID.ExCritDMG; public override long Id => (long)EffectID.ExCritDMG;
public override string Name => "暴击伤害加成"; public override string Name { get; set; } = "暴击伤害加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 暴击伤害。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 暴击伤害。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExCritRate : Effect public class ExCritRate : Effect
{ {
public override long Id => (long)EffectID.ExCritRate; public override long Id => (long)EffectID.ExCritRate;
public override string Name => "暴击率加成"; public override string Name { get; set; } = "暴击率加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 暴击率。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 暴击率。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExDEF : Effect public class ExDEF : Effect
{ {
public override long Id => (long)EffectID.ExDEF; public override long Id => (long)EffectID.ExDEF;
public override string Name => "物理护甲加成"; public override string Name { get; set; } = "物理护甲加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点物理护甲。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点物理护甲。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExDEF2 : Effect public class ExDEF2 : Effect
{ {
public override long Id => (long)EffectID.ExDEF2; public override long Id => (long)EffectID.ExDEF2;
public override string Name => "物理护甲加成"; public override string Name { get; set; } = "物理护甲加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点物理护甲。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点物理护甲。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExEvadeRate : Effect public class ExEvadeRate : Effect
{ {
public override long Id => (long)EffectID.ExEvadeRate; public override long Id => (long)EffectID.ExEvadeRate;
public override string Name => "闪避率加成"; public override string Name { get; set; } = "闪避率加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 闪避率。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 闪避率。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExHR : Effect public class ExHR : Effect
{ {
public override long Id => (long)EffectID.ExHR; public override long Id => (long)EffectID.ExHR;
public override string Name => "生命回复加成"; public override string Name { get; set; } = "生命回复加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点生命回复。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点生命回复。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExINT : Effect public class ExINT : Effect
{ {
public override long Id => (long)EffectID.ExINT; public override long Id => (long)EffectID.ExINT;
public override string Name => "智力加成"; public override string Name { get; set; } = "智力加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点智力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点智力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExINT2 : Effect public class ExINT2 : Effect
{ {
public override long Id => (long)EffectID.ExINT2; public override long Id => (long)EffectID.ExINT2;
public override string Name => "智力加成"; public override string Name { get; set; } = "智力加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点智力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点智力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExLifesteal : Effect public class ExLifesteal : Effect
{ {
public override long Id => (long)EffectID.ExLifesteal; public override long Id => (long)EffectID.ExLifesteal;
public override string Name => "生命偷取加成"; public override string Name { get; set; } = "生命偷取加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 生命偷取。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 生命偷取。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExMDF : Effect public class ExMDF : Effect
{ {
public override long Id => (long)EffectID.ExMDF; public override long Id => (long)EffectID.ExMDF;
public override string Name => "魔法抗性加成"; public override string Name { get; set; } = "魔法抗性加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% {CharacterSet.GetMagicResistanceName(魔法类型)}。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% {CharacterSet.GetMagicResistanceName(魔法类型)}。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExMOV : Effect public class ExMOV : Effect
{ {
public override long Id => (long)EffectID.ExMOV; public override long Id => (long)EffectID.ExMOV;
public override string Name => "移动距离加成"; public override string Name { get; set; } = "移动距离加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成)} 格移动距离。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成)} 格移动距离。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public int Value => ; public int Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExMR : Effect public class ExMR : Effect
{ {
public override long Id => (long)EffectID.ExMR; public override long Id => (long)EffectID.ExMR;
public override string Name => "魔法回复加成"; public override string Name { get; set; } = "魔法回复加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点魔法回复。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点魔法回复。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExMaxHP : Effect public class ExMaxHP : Effect
{ {
public override long Id => (long)EffectID.ExMaxHP; public override long Id => (long)EffectID.ExMaxHP;
public override string Name => "最大生命值加成"; public override string Name { get; set; } = "最大生命值加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点最大生命值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点最大生命值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExMaxHP2 : Effect public class ExMaxHP2 : Effect
{ {
public override long Id => (long)EffectID.ExMaxHP2; public override long Id => (long)EffectID.ExMaxHP2;
public override string Name => "最大生命值加成"; public override string Name { get; set; } = "最大生命值加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点最大生命值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点最大生命值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExMaxMP : Effect public class ExMaxMP : Effect
{ {
public override long Id => (long)EffectID.ExMaxMP; public override long Id => (long)EffectID.ExMaxMP;
public override string Name => "最大魔法值加成"; public override string Name { get; set; } = "最大魔法值加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点最大魔法值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点最大魔法值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExMaxMP2 : Effect public class ExMaxMP2 : Effect
{ {
public override long Id => (long)EffectID.ExMaxMP2; public override long Id => (long)EffectID.ExMaxMP2;
public override string Name => "最大魔法值加成"; public override string Name { get; set; } = "最大魔法值加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点最大魔法值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点最大魔法值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExPDR : Effect public class ExPDR : Effect
{ {
public override long Id => (long)EffectID.ExPDR; public override long Id => (long)EffectID.ExPDR;
public override string Name => "物理伤害减免加成"; public override string Name { get; set; } = "物理伤害减免加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 物理伤害减免。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 物理伤害减免。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExSPD : Effect public class ExSPD : Effect
{ {
public override long Id => (long)EffectID.ExSPD; public override long Id => (long)EffectID.ExSPD;
public override string Name => "行动速度加成"; public override string Name { get; set; } = "行动速度加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点行动速度。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点行动速度。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExSTR : Effect public class ExSTR : Effect
{ {
public override long Id => (long)EffectID.ExSTR; public override long Id => (long)EffectID.ExSTR;
public override string Name => "力量加成"; public override string Name { get; set; } = "力量加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点力量。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成):0.##} 点力量。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class ExSTR2 : Effect public class ExSTR2 : Effect
{ {
public override long Id => (long)EffectID.ExSTR2; public override long Id => (long)EffectID.ExSTR2;
public override string Name => "力量加成"; public override string Name { get; set; } = "力量加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点力量。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "" : $"{Math.Abs():0.##}")} ] 点力量。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class IgnoreEvade : Effect public class IgnoreEvade : Effect
{ {
public override long Id => (long)EffectID.IgnoreEvade; public override long Id => (long)EffectID.IgnoreEvade;
public override string Name => "无视闪避"; public override string Name { get; set; } = "无视闪避";
public override string Description => $"普通攻击有 {概率 * 100:0.##}% 概率无视闪避。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"普通攻击有 {概率 * 100:0.##}% 概率无视闪避。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class MagicalPenetration : Effect public class MagicalPenetration : Effect
{ {
public override long Id => (long)EffectID.MagicalPenetration; public override long Id => (long)EffectID.MagicalPenetration;
public override string Name => "魔法穿透加成"; public override string Name { get; set; } = "魔法穿透加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 魔法穿透。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 魔法穿透。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class NormalAttackHardTimeReduce : Effect public class NormalAttackHardTimeReduce : Effect
{ {
public override long Id => (long)EffectID.NormalAttackHardTimeReduce; public override long Id => (long)EffectID.NormalAttackHardTimeReduce;
public override string Name => Skill.Name; public override string Name { get; set; } = "普通攻击硬直减少";
public override string Description => $"{(实际硬直时间减少 < 0 ? "" : "")}角色的普通攻击 {实际硬直时间减少:0.##} {GameplayEquilibriumConstant.InGameTime}硬直时间。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际硬直时间减少 < 0 ? "" : "")}角色的普通攻击 {实际硬直时间减少:0.##} {GameplayEquilibriumConstant.InGameTime}硬直时间。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
private readonly double = 0; private readonly double = 0;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class NormalAttackHardTimeReduce2 : Effect public class NormalAttackHardTimeReduce2 : Effect
{ {
public override long Id => (long)EffectID.NormalAttackHardTimeReduce2; public override long Id => (long)EffectID.NormalAttackHardTimeReduce2;
public override string Name => Skill.Name; public override string Name { get; set; } = "普通攻击硬直减少";
public override string Description => $"{(减少比例 < 0 ? "" : "")}角色的普通攻击 {减少比例 * 100:0.##}% 硬直时间。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(减少比例 < 0 ? "" : "")}角色的普通攻击 {减少比例 * 100:0.##}% 硬直时间。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
private readonly double = 0; private readonly double = 0;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class PhysicalPenetration : Effect public class PhysicalPenetration : Effect
{ {
public override long Id => (long)EffectID.PhysicalPenetration; public override long Id => (long)EffectID.PhysicalPenetration;
public override string Name => "物理穿透加成"; public override string Name { get; set; } = "物理穿透加成";
public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 物理穿透。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"{(实际加成 >= 0 ? "" : "")}角色 {Math.Abs(实际加成) * 100:0.##}% 物理穿透。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
public double Value => ; public double Value => ;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class SkillHardTimeReduce : Effect public class SkillHardTimeReduce : Effect
{ {
public override long Id => (long)EffectID.SkillHardTimeReduce; public override long Id => (long)EffectID.SkillHardTimeReduce;
public override string Name => Skill.Name; public override string Name { get; set; } = "主动技能硬直减少";
public override string Description => $"减少角色的所有主动技能 {实际硬直时间减少:0.##} {GameplayEquilibriumConstant.InGameTime}硬直时间。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"减少角色的所有主动技能 {实际硬直时间减少:0.##} {GameplayEquilibriumConstant.InGameTime}硬直时间。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
private readonly double = 0; private readonly double = 0;

View File

@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
public class SkillHardTimeReduce2 : Effect public class SkillHardTimeReduce2 : Effect
{ {
public override long Id => (long)EffectID.SkillHardTimeReduce2; public override long Id => (long)EffectID.SkillHardTimeReduce2;
public override string Name => Skill.Name; public override string Name { get; set; } = "主动技能硬直减少";
public override string Description => $"减少角色的所有主动技能 {减少比例 * 100:0.##}% 硬直时间。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public override string Description => $"减少角色的所有主动技能 {减少比例 * 100:0.##}% 硬直时间。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : "");
private readonly double = 0; private readonly double = 0;

View File

@ -0,0 +1,53 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{
public class : Effect
{
public override long Id => (long)PassiveEffectID.;
public override string Name => "缴械";
public override string Description => $"此角色被缴械了,不能使用普通攻击。来自:[ {Source} ] 的 [ {Skill.Name} ]";
public override EffectType EffectType => EffectType.Disarm;
public override DispelledType DispelledType => DispelledType.Weak;
public override bool IsDebuff => true;
public override Character Source => _sourceCharacter;
public override bool Durative => _durative;
public override double Duration => _duration;
public override int DurationTurn => _durationTurn;
public override bool ExemptDuration => true;
private readonly Character _sourceCharacter;
private readonly bool _durative;
private readonly double _duration;
private readonly int _durationTurn;
public (Skill skill, Character sourceCharacter, bool durative = false, double duration = 0, int durationTurn = 1) : base(skill)
{
GamingQueue = skill.GamingQueue;
_sourceCharacter = sourceCharacter;
_durative = durative;
_duration = duration;
_durationTurn = durationTurn;
}
public override void OnEffectGained(Character character)
{
if (_durative && RemainDuration == 0)
{
RemainDuration = Duration;
}
else if (RemainDurationTurn == 0)
{
RemainDurationTurn = DurationTurn;
}
AddEffectStatesToCharacter(character, [CharacterState.AttackRestricted]);
}
public override void OnEffectLost(Character character)
{
RemoveEffectStatesFromCharacter(character);
}
}
}

View File

@ -8,7 +8,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
public class : Effect public class : Effect
{ {
public override long Id => (long)PassiveEffectID.; public override long Id => (long)PassiveEffectID.;
public override string Name => "迟滞"; public override string Name { get; set; } = "迟滞";
public override string Description => $"此角色处于迟滞状态,普通攻击和技能的硬直时间、当前行动等待时间延长 {_hardnessReductionPercent * 100:0.##}%。来自:[ {Source} ] 的 [ {Skill.Name} ]"; public override string Description => $"此角色处于迟滞状态,普通攻击和技能的硬直时间、当前行动等待时间延长 {_hardnessReductionPercent * 100:0.##}%。来自:[ {Source} ] 的 [ {Skill.Name} ]";
public override EffectType EffectType => EffectType.Slow; public override EffectType EffectType => EffectType.Slow;
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;

View File

@ -58,6 +58,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{ "p", 1 } { "p", 1 }
}, Source) }, Source)
{ {
Name = Name,
Durative = false, Durative = false,
DurationTurn = 3, DurationTurn = 3,
RemainDurationTurn = 3 RemainDurationTurn = 3

View File

@ -40,6 +40,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{ "exspd", SPD } { "exspd", SPD }
}, caster) }, caster)
{ {
Name = Name,
Durative = _durative, Durative = _durative,
Duration = _duration, Duration = _duration,
DurationTurn = _durationTurn DurationTurn = _durationTurn

View File

@ -145,6 +145,10 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
tip = $"[ {caster} ] 对 [ {target} ] 造成了战斗不能,禁止普通攻击和使用技能(魔法、战技和爆发技)!持续时间:{持续时间}"; tip = $"[ {caster} ] 对 [ {target} ] 造成了战斗不能,禁止普通攻击和使用技能(魔法、战技和爆发技)!持续时间:{持续时间}";
e = new (Skill, caster, _durative, duration, durationTurn); e = new (Skill, caster, _durative, duration, durationTurn);
break; break;
case EffectType.Disarm:
tip = $"[ {caster} ] 对 [ {target} ] 造成了缴械!持续时间:{持续时间}";
e = new (Skill, caster, _durative, duration, durationTurn);
break;
default: default:
break; break;
} }
@ -250,6 +254,10 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_dispelledType = DispelledType.Strong; _dispelledType = DispelledType.Strong;
_description = "战斗不能:无法普通攻击和使用技能(魔法、战技和爆发技)。"; _description = "战斗不能:无法普通攻击和使用技能(魔法、战技和爆发技)。";
break; break;
case EffectType.Disarm:
_dispelledType = DispelledType.Weak;
_description = "缴械:无法普通攻击。";
break;
default: default:
break; break;
} }

View File

@ -41,6 +41,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{ "exspd", SPD } { "exspd", SPD }
}, caster) }, caster)
{ {
Name = Name,
Durative = _durative, Durative = _durative,
Duration = _duration, Duration = _duration,
DurationTurn = _durationTurn DurationTurn = _durationTurn

View File

@ -1,11 +1,14 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Text; using System.Text;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
using Oshima.Core.Constant; using Oshima.Core.Constant;
using Oshima.FunGame.OshimaModules.Characters;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects; using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Items; using Oshima.FunGame.OshimaModules.Items;
using Oshima.FunGame.OshimaModules.Regions; using Oshima.FunGame.OshimaModules.Regions;
using Oshima.FunGame.OshimaModules.Skills;
namespace Oshima.FunGame.OshimaModules.Models namespace Oshima.FunGame.OshimaModules.Models
{ {
@ -56,6 +59,148 @@ namespace Oshima.FunGame.OshimaModules.Models
public static DateTime RankingUpdateTime { get; set; } = DateTime.Now; public static DateTime RankingUpdateTime { get; set; } = DateTime.Now;
public static char[] SplitChars => [',', ' ', '', '', ';']; public static char[] SplitChars => [',', ' ', '', '', ';'];
public static void InitFunGame()
{
Characters.Add(new OshimaShiya());
Characters.Add(new XinYin());
Characters.Add(new Yang());
Characters.Add(new NanGanYu());
Characters.Add(new NiuNan());
Characters.Add(new DokyoMayor());
Characters.Add(new MagicalGirl());
Characters.Add(new QingXiang());
Characters.Add(new QWQAQW());
Characters.Add(new ColdBlue());
Characters.Add(new dddovo());
Characters.Add(new Quduoduo());
Characters.Add(new ShiYu());
Characters.Add(new XReouni());
Characters.Add(new Neptune());
Characters.Add(new CHAOS());
Characters.Add(new Ryuko());
Characters.Add(new TheGodK());
Skills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new ()]);
SuperSkills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (),
new 宿(), new (), new (), new (), new (), new (), new (), new 宿(), new ()]);
PassiveSkills.AddRange([new META马(), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new ()]);
CommonPassiveSkills.AddRange([new (), new (), new (), new (), new (), new (), new ()]);
Magics.AddRange([new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new ()]);
Dictionary<string, Item> exItems = Factory.GetGameModuleInstances<Item>(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Item);
Equipment.AddRange(exItems.Values.Where(i => (int)i.ItemType >= 0 && (int)i.ItemType < 5));
Equipment.AddRange([new 10(), new 25(), new 40(), new 55(), new 70(), new 85(), new (),
new (), new (), new 1(), new 2()]);
Items.AddRange(exItems.Values.Where(i => (int)i.ItemType > 4));
Items.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new 1(), new 2(), new 3(), new 1(), new 2(), new 3(), new (), new (), new (), new (),
new 1(), new 2(), new 3(), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new ()
]);
UserDailyItems.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new 绿(), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new ()]);
NotForSaleItems.AddRange([new (), new (), new (), new (), new (), new (),
new 1(), new 2()]);
AllItems.AddRange(Equipment);
AllItems.AddRange(Items);
AllItems.AddRange(UserDailyItems);
AllItems.AddRange(NotForSaleItems);
foreach (OshimaRegion region in Regions)
{
List<Item> items = [.. region.Crops.Select(i => i.Copy())];
ExploreItems.Add(region, items);
}
long[] notDrawIds = [.. UserDailyItems.Union(NotForSaleItems).Select(i => i.Id)];
DrawCardItems.AddRange(AllItems.Where(i => !ItemCanNotDrawCard.Contains(i.ItemType) && !notDrawIds.Contains(i.Id)));
CharacterLevelBreakItems.AddRange([new (), new (), new (), new (), new ()]);
SkillLevelUpItems.AddRange([new (), new (), new (), new (), new ()]);
AllItems.AddRange(ExploreItems.Values.SelectMany(list => list));
foreach (OshimaRegion region in Regions)
{
RegionsName[region.Id] = region.Name;
RegionsDifficulty[region.Id] = region.Difficulty;
IEnumerable<Item> items = AllItems.Where(i => i.Others.TryGetValue("region", out object? value) && int.TryParse(value.ToString(), out int rid) && rid == region.Id).Select(i => i.Copy()).OrderByDescending(i => i.QualityType);
foreach (Item item in items)
{
region.Items.Add(item);
}
}
foreach (OshimaRegion region in PlayerRegions)
{
RegionsName[region.Id] = region.Name;
RegionsDifficulty[region.Id] = region.Difficulty;
IEnumerable<Item> items;
if (region.Id == 0)
{
items = Equipment.Where(i => !i.Others.ContainsKey("region")).Select(i => i.Copy()).OrderByDescending(i => i.QualityType);
}
else
{
items = AllItems.Where(i => i.Others.TryGetValue("region", out object? value) && int.TryParse(value.ToString(), out int rid) && rid == region.Id).Select(i => i.Copy()).OrderByDescending(i => i.QualityType);
}
foreach (Item item in items)
{
region.Items.Add(item);
}
}
Skill?[] activeSkills = [.. Equipment.Select(i => i.Skills.Active), .. Items.Select(i => i.Skills.Active)];
foreach (Skill? skill in activeSkills)
{
if (skill != null)
{
ItemSkills.Add(skill);
}
}
ItemSkills.AddRange([.. Equipment.SelectMany(i => i.Skills.Passives), .. Items.SelectMany(i => i.Skills.Passives)]);
AllSkills.AddRange(Magics);
AllSkills.AddRange(Skills);
AllSkills.AddRange(PassiveSkills);
AllSkills.AddRange(CommonPassiveSkills);
AllSkills.AddRange(ItemSkills);
AllSkills.AddRange(SuperSkills);
AllSkills.AddRange(CommonSuperSkills);
}
public static void Reload()
{
Characters.Clear();
Equipment.Clear();
Skills.Clear();
SuperSkills.Clear();
CommonSuperSkills.Clear();
PassiveSkills.Clear();
CommonPassiveSkills.Clear();
Magics.Clear();
DrawCardItems.Clear();
ExploreItems.Clear();
AllItems.Clear();
ItemSkills.Clear();
AllSkills.Clear();
InitFunGame();
}
public static Dictionary<int, Dictionary<string, int>> LevelBreakNeedyList { get; } = new() public static Dictionary<int, Dictionary<string, int>> LevelBreakNeedyList { get; } = new()
{ {
{ {
@ -633,12 +778,28 @@ namespace Oshima.FunGame.OshimaModules.Models
"堰揩越趁趋超揽堤提博揭喜彭揣插揪搜煮援搀裁搁搓搂搅壹握搔揉斯期欺联葫" + "堰揩越趁趋超揽堤提博揭喜彭揣插揪搜煮援搀裁搁搓搂搅壹握搔揉斯期欺联葫" +
"散惹葬募葛董葡敬葱蒋蒂落韩朝辜葵棒棱棋椰植森焚椅椒棵棍椎棉"; "散惹葬募葛董葡敬葱蒋蒂落韩朝辜葵棒棱棋椰植森焚椅椒棵棍椎棉";
public static string GenerateRandomChineseName()
{
// 随机生成名字长度2到5个字
int nameLength = Random.Shared.Next(2, 6);
StringBuilder name = new();
for (int i = 0; i < nameLength; i++)
{
// 从常用汉字集中随机选择一个汉字
char chineseCharacter = CommonChineseCharacters[Random.Shared.Next(CommonChineseCharacters.Length)];
name.Append(chineseCharacter);
}
return name.ToString();
}
public static string GenerateRandomChineseUserName() public static string GenerateRandomChineseUserName()
{ {
StringBuilder name = new(); StringBuilder name = new();
// 随机姓 // 随机姓
string lastname = FunGameConstant.CommonSurnames[Random.Shared.Next(FunGameConstant.CommonSurnames.Length)]; string lastname = CommonSurnames[Random.Shared.Next(CommonSurnames.Length)];
name.Append(lastname); name.Append(lastname);
// 随机生成名字长度2到5个字 // 随机生成名字长度2到5个字
@ -647,7 +808,7 @@ namespace Oshima.FunGame.OshimaModules.Models
for (int i = 0; i < nameLength; i++) for (int i = 0; i < nameLength; i++)
{ {
// 从常用汉字集中随机选择一个汉字 // 从常用汉字集中随机选择一个汉字
char chineseCharacter = FunGameConstant.CommonChineseCharacters[Random.Shared.Next(FunGameConstant.CommonChineseCharacters.Length)]; char chineseCharacter = CommonChineseCharacters[Random.Shared.Next(CommonChineseCharacters.Length)];
name.Append(chineseCharacter); name.Append(chineseCharacter);
} }

View File

@ -114,6 +114,7 @@ namespace Oshima.FunGame.OshimaModules
(long)SkillID. => new (), (long)SkillID. => new (),
(long)SkillID. => new (), (long)SkillID. => new (),
(long)SkillID. => new (), (long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (), (long)SkillID. => new (),
(long)SkillID. => new (), (long)SkillID. => new (),
(long)SuperSkillID. => new (), (long)SuperSkillID. => new (),
@ -157,6 +158,8 @@ namespace Oshima.FunGame.OshimaModules
(long)PassiveID. => new (), (long)PassiveID. => new (),
(long)PassiveID. => new (), (long)PassiveID. => new (),
(long)PassiveID. => new (), (long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)ItemPassiveID. => new (), (long)ItemPassiveID. => new (),
(long)ItemPassiveID. => new (), (long)ItemPassiveID. => new (),
(long)ItemPassiveID. => new (), (long)ItemPassiveID. => new (),

View File

@ -116,7 +116,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
return; return;
} }
if (character.Effects.FirstOrDefault(e => e is && e.Skill == Skill) is e) if (character.Effects.FirstOrDefault(e => e is && e.Skill.Character == Skill.Character) is e)
{ {
int count = e..Count; int count = e..Count;
= * count; = * count;

View File

@ -172,7 +172,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
* = () * = ()
* = * =
* = ++ * = ++
* = +(+) * = +()
* = (+) * = (+)
* = ()(+) * = ()(+)
* = ·(AI控制行动) * = ·(AI控制行动)
@ -337,7 +337,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
* = * =
* = * =
* = * =
* = * =
* = 3使 * = 3使
* = 3/ * = 3/
* = * =

View File

@ -45,11 +45,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
$"取得第一层「噬」后,同时获得「恒」效果:当总生命偷取超过 {生命偷取阈值 * 100:0.##}% 后,超出部分每 {生命偷取每单位 * 100:0.##}% 转化为 {生命偷取转化 * 100:0.##}% 攻击力。"; $"取得第一层「噬」后,同时获得「恒」效果:当总生命偷取超过 {生命偷取阈值 * 100:0.##}% 后,超出部分每 {生命偷取每单位 * 100:0.##}% 转化为 {生命偷取转化 * 100:0.##}% 攻击力。";
public static int => 8; public static int => 8;
public static double => 0.08; public static double => 0.06;
public static double => 0.04; public static double => 0.03;
public static double => 0.08; public static double => 0.06;
public static double => 0.05; public static double => 0.04;
public static double => 0.06; public static double => 0.05;
public static double => 0.3; public static double => 0.3;
public static double => 0.01; public static double => 0.01;
public static double => 0.005; public static double => 0.005;

View File

@ -28,13 +28,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override long Id => Skill.Id; public override long Id => Skill.Id;
public override string Name => Skill.Name; public override string Name => Skill.Name;
public override string Description => $"{Skill.SkillOwner()}短暂显现其「神」之本质,开启持续 4 回合的「神之领域」:在持续时间内,{Skill.SkillOwner()}对任意敌方目标造成的伤害,都将记录为「因果伤害值」。" + public override string Description => $"{Skill.SkillOwner()}短暂显现其「神」之本质,开启持续 4 回合的「神之领域」:在持续时间内,{Skill.SkillOwner()}对任意敌方目标造成的伤害,都将记录为「因果伤害值」。" +
$"在持续时间结束后,所有敌方角色都会受到 [ 基于总因果伤害值的 600% 除以当前在场敌方角色数量 ] 的真实伤害。在持续时间内,{Skill.SkillOwner()}可以对任何负面效果进行豁免。" + $"在持续时间结束后,所有敌方角色都会受到 [ 基于总因果伤害值的 {系数 * 100:0.##}% 除以当前在场敌方角色数量 ] 的真实伤害。在持续时间内,{Skill.SkillOwner()}可以对任何负面效果进行豁免。" +
( > 0 ? $"(当前累计因果:{因果伤害值:0.##} 点)" : ""); ( > 0 ? $"(当前累计因果:{因果伤害值:0.##} 点)" : "");
public override DispelledType DispelledType => DispelledType.CannotBeDispelled; public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
public override bool Durative => false; public override bool Durative => false;
public override int DurationTurn => 4; public override int DurationTurn => 4;
public double { get; set; } = 0; public double { get; set; } = 0;
public double => 1 + 0.2 * (Skill.Level - 1);
public override bool OnExemptionCheck(Character character, Character? source, Effect effect, bool isEvade, ref double throwingBonus) public override bool OnExemptionCheck(Character character, Character? source, Effect effect, bool isEvade, ref double throwingBonus)
{ {
@ -72,7 +73,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
WriteLine($"[ {character} ] 发动了神之因果!万象因果,命运既定!!!"); WriteLine($"[ {character} ] 发动了神之因果!万象因果,命运既定!!!");
List<Character> enemies = [.. GamingQueue.GetEnemies(character).Where(GamingQueue.Queue.Contains)]; List<Character> enemies = [.. GamingQueue.GetEnemies(character).Where(GamingQueue.Queue.Contains)];
double damage = * 2 / enemies.Count; double damage = * / enemies.Count;
foreach (Character enemy in enemies) foreach (Character enemy in enemies)
{ {
DamageToEnemy(character, enemy, DamageType.True, MagicType, damage, new(character) DamageToEnemy(character, enemy, DamageType.True, MagicType, damage, new(character)
@ -88,7 +89,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override void OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others) public override void OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{ {
RemainDuration = Duration; RemainDurationTurn = DurationTurn;
if (!caster.Effects.Contains(this)) if (!caster.Effects.Contains(this))
{ {
caster.Effects.Add(this); caster.Effects.Add(this);

View File

@ -98,7 +98,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "mdfvalue", } { "mdfvalue", }
}, Skill.Character) }, Skill.Character)
{ {
Name = "八卦阵·奇数效果", Name = "八卦阵·奇数",
Durative = false, Durative = false,
DurationTurn = 1, DurationTurn = 1,
RemainDurationTurn = 1 RemainDurationTurn = 1

View File

@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
public override long Id => Skill.Id; public override long Id => Skill.Id;
public override string Name => Skill.Name; public override string Name => Skill.Name;
public override string Description => $"普通攻击硬直时间减少 20%。每次使用普通攻击时,额外再发动一次普通攻击,伤害特效可叠加,但伤害折减一半,冷却 {基础冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}。" + public override string Description => $"普通攻击硬直时间减少 20%。每次使用普通攻击时,额外再发动一次普通攻击,伤害特效可叠加,但伤害折减一半,冷却 {基础冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}。额外普通攻击立即发动,不占用决策点配额。" +
( > 0 ? $"(正在冷却:剩余 {冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}" : ""); ( > 0 ? $"(正在冷却:剩余 {冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}" : "");
public double { get; set; } = 0; public double { get; set; } = 0;

View File

@ -72,7 +72,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
if ( && GamingQueue != null && GamingQueue.CharacterDecisionPoints.TryGetValue(character, out DecisionPoints? dp) && dp != null) if ( && GamingQueue != null && GamingQueue.CharacterDecisionPoints.TryGetValue(character, out DecisionPoints? dp) && dp != null)
{ {
= false; = false;
dp.AddTempActionQuota(CharacterActionType.NormalAttack, ); dp.AddTempActionQuota(this, CharacterActionType.NormalAttack, );
WriteLine($"[ {character} ] 发动了{nameof(咒怨洪流)}!本回合可额外发动 {额外攻击次数} 次普通攻击!"); WriteLine($"[ {character} ] 发动了{nameof(咒怨洪流)}!本回合可额外发动 {额外攻击次数} 次普通攻击!");
} }
} }

View File

@ -57,7 +57,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExATK2 e = new(Skill, new() ExATK2 e = new(Skill, new()
{ {
{ "exatk", ATK } { "exatk", ATK }
}, caster); }, caster)
{
Name = Name
};
target.Effects.Add(e); target.Effects.Add(e);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {

View File

@ -44,7 +44,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
if (GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null) if (GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null)
{ {
checkQuota = dp.CheckActionTypeQuota(CharacterActionType.NormalAttack); checkQuota = dp.CheckActionTypeQuota(CharacterActionType.NormalAttack);
dp.AddActionType(CharacterActionType.NormalAttack, false); dp.AddActionType(CharacterActionType.NormalAttack, null, false);
} }
caster.NormalAttack.Attack(GamingQueue, caster, null, targets); caster.NormalAttack.Attack(GamingQueue, caster, null, targets);
if (checkQuota) if (checkQuota)

View File

@ -74,7 +74,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
} }
if (GamingQueue != null && GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null) if (GamingQueue != null && GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null)
{ {
dp.AddTempActionQuota(CharacterActionType.CastSkill); dp.AddTempActionQuota(this, CharacterActionType.CastSkill);
} }
} }
} }

View File

@ -45,7 +45,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
} }
if (GamingQueue != null && GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null) if (GamingQueue != null && GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null)
{ {
dp.AddTempActionQuota(CharacterActionType.CastSkill); dp.AddTempActionQuota(this, CharacterActionType.CastSkill);
} }
} }
} }

View File

@ -0,0 +1,25 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)SkillID.;
public override string Name => "鲨鱼锚击";
public override string Description => string.Join("", Effects.Select(e => e.Description));
public override string DispelDescription => Effects.Count > 0 ? Effects.First(e => e is ).DispelDescription : "";
public override string ExemptionDescription => Effects.Count > 0 ? Effects.First(e => e is ).ExemptionDescription : "";
public override double EPCost => 55;
public override double CD => 20;
public override double HardnessTime { get; set; } = 8;
public (Character? character = null) : base(SkillType.Skill, character)
{
CastRange = 4;
Effects.Add(new _带基础伤害(this, 50, 40, 0.055, 0.04, DamageType.Physical));
Effects.Add(new (this, EffectType.Disarm, false, 0, 1, 0, 1, 0));
}
}
}

View File

@ -48,6 +48,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exspd", } { "exspd", }
}, character) }, character)
{ {
Name = Name + "·行动速度",
Durative = true, Durative = true,
Duration = Duration =
}; };
@ -67,6 +68,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exatk", } { "exatk", }
}, character) }, character)
{ {
Name = Name + "·额外攻击力",
Durative = true, Durative = true,
Duration = Duration =
}; };

View File

@ -0,0 +1,40 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "贪欲猎手";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{
return Effects;
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"造成伤害后,基于造成伤害值的 {生命回复系数 * 100:0.##}% 回复生命值。";
private double => Skill.Character != null ? 0.04 + Skill.Character.Level / 10 * 0.01 : 0.04;
public override void AfterDamageCalculation(Character character, Character enemy, double damage, double actualDamage, bool isNormalAttack, DamageType damageType, MagicType magicType, DamageResult damageResult)
{
if (Skill.Character != null && Skill.Character == character && isNormalAttack && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical))
{
HealToTarget(character, character, * actualDamage);
}
}
}
}

View File

@ -0,0 +1,63 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "迅捷步法";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{
return Effects;
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"每次造成伤害后,立即回复 {生命回复:0.##} 点生命值,随后在 {持续时间:0.##} {GameplayEquilibriumConstant.InGameTime}内,提升 {行动系数提升 * 100:0.##}% 行动系数和 {加速系数提升 * 100:0.##}% 加速系数、1 格移动距离,该效果最多可叠 3 层。";
private double => Skill.Character != null ? 0.02 + Skill.Character.Level / 10 * 0.005 : 0.02;
private double => Skill.Character != null ? 0.02 + Skill.Character.Level / 10 * 0.005 : 0.02;
private double => Skill.Character != null ? 20 + Skill.Character.Level * 6 : 20;
private double => Skill.Character != null ? 10 + Skill.Character.Level * 0.1 : 10;
public override void AfterDamageCalculation(Character character, Character enemy, double damage, double actualDamage, bool isNormalAttack, DamageType damageType, MagicType magicType, DamageResult damageResult)
{
if (Skill.Character != null && Skill.Character == character && isNormalAttack && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical))
{
HealToTarget(character, character, );
if (character.Effects.Count(e => e.Name == nameof()) < 3)
{
WriteLine($"[ {character} ] 发动了迅捷步法,提升了 {行动系数提升 * 100:0.##}% 行动系数和 {加速系数提升 * 100:0.##}% 加速系数、1 格移动距离!");
Effect e = new DynamicsEffect(Skill, new Dictionary<string, object>()
{
{ "exac", },
{ "exacc", },
{ "exmov", 1 }
}, character)
{
Name = nameof(),
Durative = true,
Duration =
};
character.Effects.Add(e);
e.OnEffectGained(character);
e.IsDebuff = false;
RecordCharacterApplyEffects(character, EffectType.Haste);
}
}
}
}
}

View File

@ -61,7 +61,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExATK2 e = new(Skill, new() ExATK2 e = new(Skill, new()
{ {
{ "exatk", ExATK } { "exatk", ExATK }
}, caster); }, caster)
{
Name = Name
};
target.Effects.Add(e); target.Effects.Add(e);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {

View File

@ -76,7 +76,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExATK2 e = new(Skill, new() ExATK2 e = new(Skill, new()
{ {
{ "exatk", ExATK } { "exatk", ExATK }
}, caster); }, caster)
{
Name = Name
};
target.Effects.Add(e); target.Effects.Add(e);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {

View File

@ -87,6 +87,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exspd", -ExSPD } { "exspd", -ExSPD }
}, caster) }, caster)
{ {
Name = Name + "·行动速度降低",
Durative = _durative, Durative = _durative,
Duration = , Duration = ,
DurationTurn = (int) DurationTurn = (int)
@ -104,6 +105,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exacc", -ExACC } { "exacc", -ExACC }
}, caster) }, caster)
{ {
Name = Name + "·加速系数降低",
Durative = _durative, Durative = _durative,
Duration = , Duration = ,
DurationTurn = (int) DurationTurn = (int)

View File

@ -71,6 +71,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exspd", -ExSPD } { "exspd", -ExSPD }
}, caster) }, caster)
{ {
Name = Name + "·行动速度降低",
Durative = _durative, Durative = _durative,
Duration = , Duration = ,
DurationTurn = (int) DurationTurn = (int)
@ -88,6 +89,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exacc", -ExACC } { "exacc", -ExACC }
}, caster) }, caster)
{ {
Name = Name + "·加速系数降低",
Durative = _durative, Durative = _durative,
Duration = , Duration = ,
DurationTurn = (int) DurationTurn = (int)

View File

@ -90,6 +90,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exspd", ExSPD } { "exspd", ExSPD }
}, caster) }, caster)
{ {
Name = Name + "·行动速度提升",
Durative = _durative, Durative = _durative,
Duration = , Duration = ,
DurationTurn = (int) DurationTurn = (int)
@ -103,6 +104,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exacc", ExACC } { "exacc", ExACC }
}, caster) }, caster)
{ {
Name = Name + "·加速系数提升",
Durative = _durative, Durative = _durative,
Duration = , Duration = ,
DurationTurn = (int) DurationTurn = (int)

View File

@ -74,6 +74,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exspd", ExSPD } { "exspd", ExSPD }
}, caster) }, caster)
{ {
Name = Name + "·行动速度提升",
Durative = _durative, Durative = _durative,
Duration = , Duration = ,
DurationTurn = (int) DurationTurn = (int)
@ -87,6 +88,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ "exacc", ExACC } { "exacc", ExACC }
}, caster) }, caster)
{ {
Name = Name + "·加速系数提升",
Durative = _durative, Durative = _durative,
Duration = , Duration = ,
DurationTurn = (int) DurationTurn = (int)

View File

@ -42,9 +42,9 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
return Level switch return Level switch
{ {
3 or 4 or 5 => 2, 3 or 4 or 5 => 3,
6 or 7 or 8 => 3, 6 or 7 or 8 => 4,
_ => 1 _ => 2
}; };
} }
} }
@ -60,7 +60,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
effect.OnSkillCasted(caster, targets, grids, others); effect.OnSkillCasted(caster, targets, grids, others);
if (Level > 4) if (Level > 4)
{ {
effect = new (Skill, ImmuneType.Skilled, false, 0, 1); effect = new (Skill, ImmuneType.Skilled, false, 0, 2);
effect.OnSkillCasted(caster, targets, grids, others); effect.OnSkillCasted(caster, targets, grids, others);
} }
} }

View File

@ -63,7 +63,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExATK2 e = new(Skill, new() ExATK2 e = new(Skill, new()
{ {
{ "exatk", ExATK } { "exatk", ExATK }
}, caster); }, caster)
{
Name = Name + "·攻击力提升"
};
target.Effects.Add(e); target.Effects.Add(e);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {
@ -83,7 +86,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExDEF2 e2 = new(Skill, new() ExDEF2 e2 = new(Skill, new()
{ {
{ "exdef", ExDEF } { "exdef", ExDEF }
}, caster); }, caster)
{
Name = Name + "·物理护甲提升"
};
target.Effects.Add(e2); target.Effects.Add(e2);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {
@ -104,7 +110,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
{ "mdftype", 0 }, { "mdftype", 0 },
{ "mdfvalue", ExMDF } { "mdfvalue", ExMDF }
}, caster); }, caster)
{
Name = Name + "·魔法抗性提升"
};
target.Effects.Add(e3); target.Effects.Add(e3);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {

View File

@ -78,7 +78,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExATK2 e = new(Skill, new() ExATK2 e = new(Skill, new()
{ {
{ "exatk", ExATK } { "exatk", ExATK }
}, caster); }, caster)
{
Name = Name + "·攻击力提升"
};
target.Effects.Add(e); target.Effects.Add(e);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {
@ -98,7 +101,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExDEF2 e2 = new(Skill, new() ExDEF2 e2 = new(Skill, new()
{ {
{ "exdef", ExDEF } { "exdef", ExDEF }
}, caster); }, caster)
{
Name = Name + "·物理护甲提升"
};
target.Effects.Add(e2); target.Effects.Add(e2);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {
@ -119,7 +125,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
{ "mdftype", 0 }, { "mdftype", 0 },
{ "mdfvalue", ExMDF } { "mdfvalue", ExMDF }
}, caster); }, caster)
{
Name = Name + "·魔法抗性提升"
};
target.Effects.Add(e3); target.Effects.Add(e3);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {

View File

@ -62,7 +62,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExCritRate e = new(Skill, new() ExCritRate e = new(Skill, new()
{ {
{ "excr", CritRate } { "excr", CritRate }
}, caster); }, caster)
{
Name = Name + "·暴击率加成"
};
target.Effects.Add(e); target.Effects.Add(e);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {
@ -82,7 +85,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExEvadeRate e2 = new(Skill, new() ExEvadeRate e2 = new(Skill, new()
{ {
{ "exer", EvadeRate } { "exer", EvadeRate }
}, caster); }, caster)
{
Name = Name + "·闪避率加成"
};
target.Effects.Add(e2); target.Effects.Add(e2);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {

View File

@ -77,7 +77,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExCritRate e = new(Skill, new() ExCritRate e = new(Skill, new()
{ {
{ "excr", CritRate } { "excr", CritRate }
}, caster); }, caster)
{
Name = Name + "·暴击率加成"
};
target.Effects.Add(e); target.Effects.Add(e);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {
@ -97,7 +100,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExEvadeRate e2 = new(Skill, new() ExEvadeRate e2 = new(Skill, new()
{ {
{ "exer", EvadeRate } { "exer", EvadeRate }
}, caster); }, caster)
{
Name = Name + "·闪避率加成"
};
target.Effects.Add(e2); target.Effects.Add(e2);
if (_durative && _duration > 0) if (_durative && _duration > 0)
{ {

View File

@ -4,6 +4,7 @@ using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
using Oshima.Core.Configs; using Oshima.Core.Configs;
using Oshima.Core.Constant; using Oshima.Core.Constant;
using Oshima.FunGame.OshimaModules.Models;
using Oshima.FunGame.OshimaServers.Service; using Oshima.FunGame.OshimaServers.Service;
using TaskScheduler = Milimoe.FunGame.Core.Api.Utility.TaskScheduler; using TaskScheduler = Milimoe.FunGame.Core.Api.Utility.TaskScheduler;
@ -108,7 +109,7 @@ namespace Oshima.FunGame.OshimaServers
} }
Controller.NewSQLHelper(); Controller.NewSQLHelper();
Controller.NewMailSender(); Controller.NewMailSender();
FunGameService.InitFunGame(); FunGameConstant.InitFunGame();
FunGameSimulation.InitFunGameSimulation(); FunGameSimulation.InitFunGameSimulation();
FunGameService.RefreshNotice(); FunGameService.RefreshNotice();
TaskScheduler.Shared.AddTask("重置每日运势", new TimeSpan(0, 0, 0), () => TaskScheduler.Shared.AddTask("重置每日运势", new TimeSpan(0, 0, 0), () =>

View File

@ -32,130 +32,6 @@ namespace Oshima.FunGame.OshimaServers.Service
public static WebAPIPluginLoader? WebAPIPluginLoader { get; set; } = null; public static WebAPIPluginLoader? WebAPIPluginLoader { get; set; } = null;
public static EntityModuleConfig<NoticeModel> Notices { get; } = new("notices", "notice"); public static EntityModuleConfig<NoticeModel> Notices { get; } = new("notices", "notice");
public static void InitFunGame()
{
FunGameConstant.Characters.Add(new OshimaShiya());
FunGameConstant.Characters.Add(new XinYin());
FunGameConstant.Characters.Add(new Yang());
FunGameConstant.Characters.Add(new NanGanYu());
FunGameConstant.Characters.Add(new NiuNan());
FunGameConstant.Characters.Add(new DokyoMayor());
FunGameConstant.Characters.Add(new MagicalGirl());
FunGameConstant.Characters.Add(new QingXiang());
FunGameConstant.Characters.Add(new QWQAQW());
FunGameConstant.Characters.Add(new ColdBlue());
FunGameConstant.Characters.Add(new dddovo());
FunGameConstant.Characters.Add(new Quduoduo());
FunGameConstant.Characters.Add(new ShiYu());
FunGameConstant.Characters.Add(new XReouni());
FunGameConstant.Characters.Add(new Neptune());
FunGameConstant.Characters.Add(new CHAOS());
FunGameConstant.Characters.Add(new Ryuko());
FunGameConstant.Characters.Add(new TheGodK());
FunGameConstant.Skills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new ()]);
FunGameConstant.SuperSkills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (),
new 宿(), new (), new (), new (), new (), new (), new (), new 宿(), new ()]);
FunGameConstant.PassiveSkills.AddRange([new META马(), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new ()]);
FunGameConstant.CommonPassiveSkills.AddRange([new (), new (), new (), new (), new ()]);
FunGameConstant.Magics.AddRange([new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new ()]);
Dictionary<string, Item> exItems = Factory.GetGameModuleInstances<Item>(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Item);
FunGameConstant.Equipment.AddRange(exItems.Values.Where(i => (int)i.ItemType >= 0 && (int)i.ItemType < 5));
FunGameConstant.Equipment.AddRange([new 10(), new 25(), new 40(), new 55(), new 70(), new 85(), new (),
new (), new (), new 1(), new 2()]);
FunGameConstant.Items.AddRange(exItems.Values.Where(i => (int)i.ItemType > 4));
FunGameConstant.Items.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new 1(), new 2(), new 3(), new 1(), new 2(), new 3(), new (), new (), new (), new (),
new 1(), new 2(), new 3(), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new ()
]);
FunGameConstant.UserDailyItems.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new 绿(), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new ()]);
FunGameConstant.NotForSaleItems.AddRange([new (), new (), new (), new (), new (), new (),
new 1(), new 2()]);
FunGameConstant.AllItems.AddRange(FunGameConstant.Equipment);
FunGameConstant.AllItems.AddRange(FunGameConstant.Items);
FunGameConstant.AllItems.AddRange(FunGameConstant.UserDailyItems);
FunGameConstant.AllItems.AddRange(FunGameConstant.NotForSaleItems);
foreach (OshimaRegion region in FunGameConstant.Regions)
{
List<Item> items = [.. region.Crops.Select(i => i.Copy())];
FunGameConstant.ExploreItems.Add(region, items);
}
long[] notDrawIds = [.. FunGameConstant.UserDailyItems.Union(FunGameConstant.NotForSaleItems).Select(i => i.Id)];
FunGameConstant.DrawCardItems.AddRange(FunGameConstant.AllItems.Where(i => !FunGameConstant.ItemCanNotDrawCard.Contains(i.ItemType) && !notDrawIds.Contains(i.Id)));
FunGameConstant.CharacterLevelBreakItems.AddRange([new (), new (), new (), new (), new ()]);
FunGameConstant.SkillLevelUpItems.AddRange([new (), new (), new (), new (), new ()]);
FunGameConstant.AllItems.AddRange(FunGameConstant.ExploreItems.Values.SelectMany(list => list));
foreach (OshimaRegion region in FunGameConstant.Regions)
{
FunGameConstant.RegionsName[region.Id] = region.Name;
FunGameConstant.RegionsDifficulty[region.Id] = region.Difficulty;
IEnumerable<Item> items = FunGameConstant.AllItems.Where(i => i.Others.TryGetValue("region", out object? value) && int.TryParse(value.ToString(), out int rid) && rid == region.Id).Select(i => i.Copy()).OrderByDescending(i => i.QualityType);
foreach (Item item in items)
{
region.Items.Add(item);
}
}
foreach (OshimaRegion region in FunGameConstant.PlayerRegions)
{
FunGameConstant.RegionsName[region.Id] = region.Name;
FunGameConstant.RegionsDifficulty[region.Id] = region.Difficulty;
IEnumerable<Item> items;
if (region.Id == 0)
{
items = FunGameConstant.Equipment.Where(i => !i.Others.ContainsKey("region")).Select(i => i.Copy()).OrderByDescending(i => i.QualityType);
}
else
{
items = FunGameConstant.AllItems.Where(i => i.Others.TryGetValue("region", out object? value) && int.TryParse(value.ToString(), out int rid) && rid == region.Id).Select(i => i.Copy()).OrderByDescending(i => i.QualityType);
}
foreach (Item item in items)
{
region.Items.Add(item);
}
}
Skill?[] activeSkills = [.. FunGameConstant.Equipment.Select(i => i.Skills.Active), .. FunGameConstant.Items.Select(i => i.Skills.Active)];
foreach (Skill? skill in activeSkills)
{
if (skill != null)
{
FunGameConstant.ItemSkills.Add(skill);
}
}
FunGameConstant.ItemSkills.AddRange([.. FunGameConstant.Equipment.SelectMany(i => i.Skills.Passives), .. FunGameConstant.Items.SelectMany(i => i.Skills.Passives)]);
FunGameConstant.AllSkills.AddRange(FunGameConstant.Magics);
FunGameConstant.AllSkills.AddRange(FunGameConstant.Skills);
FunGameConstant.AllSkills.AddRange(FunGameConstant.PassiveSkills);
FunGameConstant.AllSkills.AddRange(FunGameConstant.CommonPassiveSkills);
FunGameConstant.AllSkills.AddRange(FunGameConstant.ItemSkills);
FunGameConstant.AllSkills.AddRange(FunGameConstant.SuperSkills);
FunGameConstant.AllSkills.AddRange(FunGameConstant.CommonSuperSkills);
}
public static List<Item> GenerateMagicCards(int count, QualityType? qualityType = null, long[]? magicIds = null, (int str, int agi, int intelligence)[]? values = null) public static List<Item> GenerateMagicCards(int count, QualityType? qualityType = null, long[]? magicIds = null, (int str, int agi, int intelligence)[]? values = null)
{ {
List<Item> items = []; List<Item> items = [];
@ -181,7 +57,7 @@ namespace Oshima.FunGame.OshimaServers.Service
{ {
Item item = Factory.GetItem(); Item item = Factory.GetItem();
item.Id = Convert.ToInt64("16" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)); item.Id = Convert.ToInt64("16" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8));
item.Name = GenerateRandomChineseName(); item.Name = FunGameConstant.GenerateRandomChineseName();
item.ItemType = ItemType.MagicCard; item.ItemType = ItemType.MagicCard;
item.RemainUseTimes = 1; item.RemainUseTimes = 1;
@ -388,7 +264,7 @@ namespace Oshima.FunGame.OshimaServers.Service
List<Skill> passives = [.. magicCards.SelectMany(i => i.Skills.Passives)]; List<Skill> passives = [.. magicCards.SelectMany(i => i.Skills.Passives)];
Item item = Factory.GetItem(); Item item = Factory.GetItem();
item.Id = Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)); item.Id = Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8));
item.Name = GenerateRandomChineseName(); item.Name = FunGameConstant.GenerateRandomChineseName();
item.ItemType = ItemType.MagicCardPack; item.ItemType = ItemType.MagicCardPack;
double str = 0, agi = 0, intelligence = 0; double str = 0, agi = 0, intelligence = 0;
foreach (Skill skill in passives) foreach (Skill skill in passives)
@ -481,62 +357,6 @@ namespace Oshima.FunGame.OshimaServers.Service
return magicCardPack; return magicCardPack;
} }
public static void Reload()
{
FunGameConstant.Characters.Clear();
FunGameConstant.Equipment.Clear();
FunGameConstant.Skills.Clear();
FunGameConstant.SuperSkills.Clear();
FunGameConstant.CommonSuperSkills.Clear();
FunGameConstant.PassiveSkills.Clear();
FunGameConstant.CommonPassiveSkills.Clear();
FunGameConstant.Magics.Clear();
FunGameConstant.DrawCardItems.Clear();
FunGameConstant.ExploreItems.Clear();
FunGameConstant.AllItems.Clear();
FunGameConstant.ItemSkills.Clear();
FunGameConstant.AllSkills.Clear();
InitFunGame();
}
public static string GenerateRandomChineseName()
{
// 随机生成名字长度2到5个字
int nameLength = Random.Shared.Next(2, 6);
StringBuilder name = new();
for (int i = 0; i < nameLength; i++)
{
// 从常用汉字集中随机选择一个汉字
char chineseCharacter = FunGameConstant.CommonChineseCharacters[Random.Shared.Next(FunGameConstant.CommonChineseCharacters.Length)];
name.Append(chineseCharacter);
}
return name.ToString();
}
public static string GenerateRandomChineseUserName()
{
StringBuilder name = new();
// 随机姓
string lastname = FunGameConstant.CommonSurnames[Random.Shared.Next(FunGameConstant.CommonSurnames.Length)];
name.Append(lastname);
// 随机生成名字长度2到5个字
int nameLength = Random.Shared.Next(1, 2);
for (int i = 0; i < nameLength; i++)
{
// 从常用汉字集中随机选择一个汉字
char chineseCharacter = FunGameConstant.CommonChineseCharacters[Random.Shared.Next(FunGameConstant.CommonChineseCharacters.Length)];
name.Append(chineseCharacter);
}
return name.ToString();
}
public static User GetUser(PluginConfig pc) public static User GetUser(PluginConfig pc)
{ {
User user = pc.Get<User>("user") ?? Factory.GetUser(); User user = pc.Get<User>("user") ?? Factory.GetUser();
@ -2937,7 +2757,7 @@ namespace Oshima.FunGame.OshimaServers.Service
// 出现的NPC // 出现的NPC
int random = Random.Shared.Next(region.NPCs.Count + 1); int random = Random.Shared.Next(region.NPCs.Count + 1);
string npc = random == region.NPCs.Count ? GenerateRandomChineseUserName() : region.NPCs[random]; string npc = random == region.NPCs.Count ? FunGameConstant.GenerateRandomChineseUserName() : region.NPCs[random];
// 探索的子区域 // 探索的子区域
random = Random.Shared.Next(region.Areas.Count); random = Random.Shared.Next(region.Areas.Count);
@ -2999,7 +2819,7 @@ namespace Oshima.FunGame.OshimaServers.Service
{ {
if (!isUnit) if (!isUnit)
{ {
enemy = new RegionCharacter(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), GenerateRandomChineseUserName()); enemy = new RegionCharacter(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), FunGameConstant.GenerateRandomChineseUserName());
enemys.Add(enemy); enemys.Add(enemy);
} }
else else
@ -3008,23 +2828,23 @@ namespace Oshima.FunGame.OshimaServers.Service
{ {
case 1: case 1:
case 2: case 2:
enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), GenerateRandomChineseUserName()); enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), FunGameConstant.GenerateRandomChineseUserName());
enemys.Add(enemy); enemys.Add(enemy);
break; break;
case 3: case 3:
case 4: case 4:
enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), GenerateRandomChineseUserName()); enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), FunGameConstant.GenerateRandomChineseUserName());
enemys.Add(enemy); enemys.Add(enemy);
enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), GenerateRandomChineseUserName()); enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), FunGameConstant.GenerateRandomChineseUserName());
enemys.Add(enemy); enemys.Add(enemy);
break; break;
case 5: case 5:
default: default:
enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), GenerateRandomChineseUserName()); enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), FunGameConstant.GenerateRandomChineseUserName());
enemys.Add(enemy); enemys.Add(enemy);
enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), GenerateRandomChineseUserName()); enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), FunGameConstant.GenerateRandomChineseUserName());
enemys.Add(enemy); enemys.Add(enemy);
enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), GenerateRandomChineseUserName()); enemy = new RegionUnit(long.Parse(Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 8)), FunGameConstant.GenerateRandomChineseUserName());
enemys.Add(enemy); enemys.Add(enemy);
break; break;
} }

View File

@ -226,7 +226,7 @@ namespace Oshima.FunGame.OshimaServers.Service
{ {
// 创建角色的用户,用于绑定金币 // 创建角色的用户,用于绑定金币
User user = Factory.GetUser(); User user = Factory.GetUser();
user.Username = FunGameService.GenerateRandomChineseUserName(); user.Username = FunGameConstant.GenerateRandomChineseUserName();
user.Inventory.Credits = 20; user.Inventory.Credits = 20;
Character thisCharacter = shuffledCharacters[cid]; Character thisCharacter = shuffledCharacters[cid];
//thisCharacter.User = user; //thisCharacter.User = user;

View File

@ -699,7 +699,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
string name = ""; string name = "";
do do
{ {
name = FunGameService.GenerateRandomChineseUserName(); name = FunGameConstant.GenerateRandomChineseUserName();
} while (FunGameConstant.UserIdAndUsername.Any(kv => kv.Value.Username == name)); } while (FunGameConstant.UserIdAndUsername.Any(kv => kv.Value.Username == name));
user.Username = name; user.Username = name;
@ -4864,7 +4864,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
{ {
Id = clubid, Id = clubid,
Guid = Guid.NewGuid(), Guid = Guid.NewGuid(),
Name = FunGameService.GenerateRandomChineseName(), Name = FunGameConstant.GenerateRandomChineseName(),
Master = user, Master = user,
Prefix = clubPrefix, Prefix = clubPrefix,
Members = new() Members = new()
@ -9347,7 +9347,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
{ {
if (master != null && master == GeneralSettings.Master) if (master != null && master == GeneralSettings.Master)
{ {
FunGameService.Reload(); FunGameConstant.Reload();
FunGameSimulation.InitFunGameSimulation(); FunGameSimulation.InitFunGameSimulation();
return "FunGame已重新加载。"; return "FunGame已重新加载。";
} }