diff --git a/OshimaCore/Utils/FunGameUtil.cs b/OshimaCore/Utils/FunGameUtil.cs index 68a6798..a7e49a9 100644 --- a/OshimaCore/Utils/FunGameUtil.cs +++ b/OshimaCore/Utils/FunGameUtil.cs @@ -307,7 +307,7 @@ namespace Oshima.Core.Utils // 开始空投 Msg = ""; - 空投(actionQueue); + 空投(actionQueue, true); if (isWeb) result.Add("=== 空投 ===\r\n" + Msg); double 下一次空投 = 80; @@ -506,17 +506,22 @@ namespace Oshima.Core.Utils if (PrintOut) Console.WriteLine(str); } - public static void 空投(ActionQueue queue) + public static void 空投(ActionQueue queue, bool first = false) { Item a = Items[Random.Shared.Next(Items.Count)]; - a.SetGamingQueue(queue); + if (first) + { + a = Items.Where(row => row.Name == "魔能法袍").FirstOrDefault() ?? a; + } Item[] 这次发放的空投 = [a]; WriteLine($"社区送温暖了,现在向所有人发放 [ {a.Name} ]!!"); foreach (Character character in queue.Queue) { foreach (Item item in 这次发放的空投) { - queue.Equip(character, item.Copy(1)); + Item realItem = item.Copy(1); + realItem.SetGamingQueue(queue); + queue.Equip(character, realItem); } } WriteLine(""); diff --git a/OshimaModules/Effects/EffectID.cs b/OshimaModules/Effects/EffectID.cs index d1d749a..d3267c8 100644 --- a/OshimaModules/Effects/EffectID.cs +++ b/OshimaModules/Effects/EffectID.cs @@ -3,113 +3,161 @@ public enum EffectID : long { /// - /// exatk + /// 数值攻击力,参数:exatk /// ExATK = 8001, /// - /// exdef + /// 数值物理护甲,参数:exdef /// ExDEF = 8002, /// - /// exstr + /// 数值力量,参数:exstr /// ExSTR = 8003, /// - /// exagi + /// 数值敏捷,参数:exagi /// ExAGI = 8004, /// - /// exint + /// 数值智力,参数:exint /// ExINT = 8005, /// - /// shtr + /// 数值技能硬直时间减少,参数:shtr /// SkillHardTimeReduce = 8006, /// - /// nahtr + /// 数值普攻硬直时间减少,参数:nahtr /// NormalAttackHardTimeReduce = 8007, /// - /// exacc + /// 加速系数%,参数:exacc /// AccelerationCoefficient = 8008, /// - /// exspd + /// 数值行动速度,参数:exspd /// ExSPD = 8009, /// - /// exac + /// 行动系数%,参考:exac /// ExActionCoefficient = 8010, /// - /// excdr + /// 冷却缩减%,参数:excdr /// ExCDR = 8011, /// - /// exhp + /// 数值生命值,参数:exhp /// ExMaxHP = 8012, /// - /// exmp + /// 数值魔法值,参数:exmp /// ExMaxMP = 8013, /// - /// excr + /// 暴击率%,参数:excr /// ExCritRate = 8014, /// - /// excrd + /// 暴击伤害%,参数:excrd /// ExCritDMG = 8015, /// - /// exer + /// 闪避率%,参数:exer /// ExEvadeRate = 8016, /// - /// exppt + /// 物理穿透%,参数:exppt /// PhysicalPenetration = 8017, /// - /// exmpt + /// 魔法穿透%,参数:exmpt /// MagicalPenetration = 8018, /// - /// expdr + /// 物理伤害减免%,参数:expdr /// ExPDR = 8019, /// - /// mdftype, mdfvalue + /// 魔法抗性% + /// 参数: + /// 魔法类型(对应MagicType,0为所有):mdftype + /// 魔法抗性%:mdfvalue /// ExMDF = 8020, /// - /// exhr + /// 数值生命回复,参数:exhr /// ExHR = 8021, /// - /// exmr + /// 数值魔法回复,参数:exmr /// - ExMR = 8022 + ExMR = 8022, + + /// + /// 攻击力%,参数:exatk + /// + ExATK2 = 8023, + + /// + /// 物理护甲%,参数:exdef + /// + ExDEF2 = 8024, + + /// + /// 力量%,参数:exstr + /// + ExSTR2 = 8025, + + /// + /// 敏捷%,参数:exagi + /// + ExAGI2 = 8026, + + /// + /// 智力%,参数:exint + /// + ExINT2 = 8027, + + /// + /// 技能硬直时间减少%,参数:shtr + /// + SkillHardTimeReduce2 = 8028, + + /// + /// 普攻硬直时间减少%,参数:nahtr + /// + NormalAttackHardTimeReduce2 = 8029, + + /// + /// 最大生命值%,参数:exhp + /// + ExMaxHP2 = 8030, + + /// + /// 最大魔法值%,参数:exmp + /// + ExMaxMP2 = 8031, } } diff --git a/OshimaModules/Effects/OpenEffects/ExAGI2.cs b/OshimaModules/Effects/OpenEffects/ExAGI2.cs new file mode 100644 index 0000000..36edcb6 --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/ExAGI2.cs @@ -0,0 +1,45 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class ExAGI2 : Effect + { + public override long Id => (long)EffectID.ExAGI2; + public override string Name => "敏捷加成"; + public override string Description => $"增加角色 {加成比例 * 100:0.##}% [ {实际加成:0.##} ] 点敏捷。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 加成比例 = 0; + private double 实际加成 = 0; + + public override void OnEffectGained(Character character) + { + 实际加成 = character.BaseAGI * 加成比例; + character.ExAGI += 实际加成; + } + + public override void OnEffectLost(Character character) + { + character.ExAGI -= 实际加成; + 实际加成 = 0; + } + + public ExAGI2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("exagi", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double exAGI)) + { + 加成比例 = exAGI; + } + } + } + } +} diff --git a/OshimaModules/Effects/OpenEffects/ExATK2.cs b/OshimaModules/Effects/OpenEffects/ExATK2.cs new file mode 100644 index 0000000..f3f3c94 --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/ExATK2.cs @@ -0,0 +1,45 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class ExATK2 : Effect + { + public override long Id => (long)EffectID.ExATK2; + public override string Name => "攻击力加成"; + public override string Description => $"增加角色 {加成比例 * 100:0.##}% [ {实际加成:0.##} ] 点攻击力。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 加成比例 = 0; + private double 实际加成 = 0; + + public override void OnEffectGained(Character character) + { + 实际加成 = character.BaseATK * 加成比例; + character.ExATK2 += 实际加成; + } + + public override void OnEffectLost(Character character) + { + character.ExATK2 -= 实际加成; + 实际加成 = 0; + } + + public ExATK2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("exatk", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double exATK)) + { + 加成比例 = exATK; + } + } + } + } +} diff --git a/OshimaModules/Effects/OpenEffects/ExDEF2.cs b/OshimaModules/Effects/OpenEffects/ExDEF2.cs new file mode 100644 index 0000000..b15d092 --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/ExDEF2.cs @@ -0,0 +1,45 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class ExDEF2 : Effect + { + public override long Id => (long)EffectID.ExDEF2; + public override string Name => "物理护甲加成"; + public override string Description => $"增加角色 {加成比例 * 100:0.##}% [ {实际加成:0.##} ] 点物理护甲。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 加成比例 = 0; + private double 实际加成 = 0; + + public override void OnEffectGained(Character character) + { + 实际加成 = character.BaseDEF * 加成比例; + character.ExDEF2 += 实际加成; + } + + public override void OnEffectLost(Character character) + { + character.ExDEF2 -= 实际加成; + 实际加成 = 0; + } + + public ExDEF2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("exdef", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double exDEF)) + { + 加成比例 = exDEF; + } + } + } + } +} diff --git a/OshimaModules/Effects/OpenEffects/ExINT2.cs b/OshimaModules/Effects/OpenEffects/ExINT2.cs new file mode 100644 index 0000000..e874046 --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/ExINT2.cs @@ -0,0 +1,45 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class ExINT2 : Effect + { + public override long Id => (long)EffectID.ExINT2; + public override string Name => "智力加成"; + public override string Description => $"增加角色 {加成比例 * 100:0.##}% [ {实际加成:0.##} ] 点智力。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 加成比例 = 0; + private double 实际加成 = 0; + + public override void OnEffectGained(Character character) + { + 实际加成 = character.BaseINT * 加成比例; + character.ExINT += 实际加成; + } + + public override void OnEffectLost(Character character) + { + character.ExINT -= 实际加成; + 实际加成 = 0; + } + + public ExINT2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("exint", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double exINT)) + { + 加成比例 = exINT; + } + } + } + } +} diff --git a/OshimaModules/Effects/OpenEffects/ExMDF.cs b/OshimaModules/Effects/OpenEffects/ExMDF.cs index 9ac658b..2ba3eef 100644 --- a/OshimaModules/Effects/OpenEffects/ExMDF.cs +++ b/OshimaModules/Effects/OpenEffects/ExMDF.cs @@ -45,15 +45,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects break; case MagicType.None: default: - character.MDF.None += 实际加成; - character.MDF.Particle += 实际加成; - character.MDF.Fleabane += 实际加成; - character.MDF.Element += 实际加成; - character.MDF.Shadow += 实际加成; - character.MDF.Bright += 实际加成; - character.MDF.PurityContemporary += 实际加成; - character.MDF.PurityNatural += 实际加成; - character.MDF.Starmark += 实际加成; + character.MDF.SetAllValue(实际加成, false); break; } } @@ -88,15 +80,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects break; case MagicType.None: default: - character.MDF.None -= 实际加成; - character.MDF.Particle -= 实际加成; - character.MDF.Fleabane -= 实际加成; - character.MDF.Element -= 实际加成; - character.MDF.Shadow -= 实际加成; - character.MDF.Bright -= 实际加成; - character.MDF.PurityContemporary -= 实际加成; - character.MDF.PurityNatural -= 实际加成; - character.MDF.Starmark -= 实际加成; + character.MDF.SetAllValue(-实际加成, false); break; } } diff --git a/OshimaModules/Effects/OpenEffects/ExMaxHP2.cs b/OshimaModules/Effects/OpenEffects/ExMaxHP2.cs new file mode 100644 index 0000000..b1b5e89 --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/ExMaxHP2.cs @@ -0,0 +1,45 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class ExMaxHP2 : Effect + { + public override long Id => (long)EffectID.ExMaxHP2; + public override string Name => "最大生命值加成"; + public override string Description => $"增加角色 {加成比例 * 100:0.##}% [ {实际加成:0.##} ] 点最大生命值。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 加成比例 = 0; + private double 实际加成 = 0; + + public override void OnEffectGained(Character character) + { + 实际加成 = character.BaseHP * 加成比例; + character.ExHP2 += 实际加成; + } + + public override void OnEffectLost(Character character) + { + character.ExHP2 -= 实际加成; + 实际加成 = 0; + } + + public ExMaxHP2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("exhp", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double exHP)) + { + 加成比例 = exHP; + } + } + } + } +} diff --git a/OshimaModules/Effects/OpenEffects/ExMaxMP2.cs b/OshimaModules/Effects/OpenEffects/ExMaxMP2.cs new file mode 100644 index 0000000..aabb9aa --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/ExMaxMP2.cs @@ -0,0 +1,45 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class ExMaxMP2 : Effect + { + public override long Id => (long)EffectID.ExMaxMP2; + public override string Name => "最大魔法值加成"; + public override string Description => $"增加角色 {加成比例 * 100:0.##}% [ {实际加成:0.##} ] 点最大魔法值。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 加成比例 = 0; + private double 实际加成 = 0; + + public override void OnEffectGained(Character character) + { + 实际加成 = character.BaseMP * 加成比例; + character.ExMP2 += 实际加成; + } + + public override void OnEffectLost(Character character) + { + character.ExMP2 -= 实际加成; + 实际加成 = 0; + } + + public ExMaxMP2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("exmp", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double exMP)) + { + 加成比例 = exMP; + } + } + } + } +} diff --git a/OshimaModules/Effects/OpenEffects/ExSTR.cs b/OshimaModules/Effects/OpenEffects/ExSTR.cs index 6841151..90796a2 100644 --- a/OshimaModules/Effects/OpenEffects/ExSTR.cs +++ b/OshimaModules/Effects/OpenEffects/ExSTR.cs @@ -16,12 +16,12 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects public override void OnEffectGained(Character character) { - character.ExDEF2 += 实际加成; + character.ExSTR += 实际加成; } public override void OnEffectLost(Character character) { - character.ExDEF2 -= 实际加成; + character.ExSTR -= 实际加成; } public ExSTR(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) diff --git a/OshimaModules/Effects/OpenEffects/ExSTR2.cs b/OshimaModules/Effects/OpenEffects/ExSTR2.cs new file mode 100644 index 0000000..743083c --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/ExSTR2.cs @@ -0,0 +1,45 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class ExSTR2 : Effect + { + public override long Id => (long)EffectID.ExSTR2; + public override string Name => "力量加成"; + public override string Description => $"增加角色 {加成比例 * 100:0.##}% [ {实际加成:0.##} ] 点力量。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 加成比例 = 0; + private double 实际加成 = 0; + + public override void OnEffectGained(Character character) + { + 实际加成 = character.BaseSTR * 加成比例; + character.ExSTR += 实际加成; + } + + public override void OnEffectLost(Character character) + { + character.ExSTR -= 实际加成; + 实际加成 = 0; + } + + public ExSTR2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("exstr", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double exSTR)) + { + 加成比例 = exSTR; + } + } + } + } +} diff --git a/OshimaModules/Effects/OpenEffects/NormalAttackHardTimeReduce2.cs b/OshimaModules/Effects/OpenEffects/NormalAttackHardTimeReduce2.cs new file mode 100644 index 0000000..3c49c1a --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/NormalAttackHardTimeReduce2.cs @@ -0,0 +1,42 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class NormalAttackHardTimeReduce2 : Effect + { + public override long Id => (long)EffectID.NormalAttackHardTimeReduce2; + public override string Name => Skill.Name; + public override string Description => $"减少角色的普通攻击 {减少比例 * 100:0.##}% 硬直时间。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 减少比例 = 0; + + public override void OnEffectGained(Character character) + { + character.NormalAttack.HardnessTime -= character.NormalAttack.HardnessTime * 减少比例; + } + + public override void OnEffectLost(Character character) + { + character.NormalAttack.HardnessTime += character.NormalAttack.HardnessTime * 减少比例; + } + + public NormalAttackHardTimeReduce2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("nahtr", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double nahtr)) + { + 减少比例 = nahtr; + } + } + } + } +} diff --git a/OshimaModules/Effects/OpenEffects/SkillHardTimeReduce2.cs b/OshimaModules/Effects/OpenEffects/SkillHardTimeReduce2.cs new file mode 100644 index 0000000..a4b600e --- /dev/null +++ b/OshimaModules/Effects/OpenEffects/SkillHardTimeReduce2.cs @@ -0,0 +1,58 @@ +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects +{ + public class SkillHardTimeReduce2 : Effect + { + public override long Id => (long)EffectID.SkillHardTimeReduce2; + public override string Name => Skill.Name; + public override string Description => $"减少角色的所有主动技能 {减少比例 * 100:0.##}% 硬直时间。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : ""); + public override EffectType EffectType => EffectType.Item; + public override bool TargetSelf => true; + + public Item? Item { get; } + private readonly double 减少比例 = 0; + + public override void OnEffectGained(Character character) + { + foreach (Skill s in character.Skills) + { + s.HardnessTime -= s.HardnessTime * 减少比例; + } + foreach (Skill? s in character.Items.Select(i => i.Skills.Active)) + { + if (s != null) + s.HardnessTime -= s.HardnessTime * 减少比例; + } + } + + public override void OnEffectLost(Character character) + { + foreach (Skill s in character.Skills) + { + s.HardnessTime += s.HardnessTime * 减少比例; + } + foreach (Skill? s in character.Items.Select(i => i.Skills.Active)) + { + if (s != null) + s.HardnessTime += s.HardnessTime * 减少比例; + } + } + + public SkillHardTimeReduce2(Skill skill, Dictionary args, Character? source = null, Item? item = null) : base(skill, args) + { + GamingQueue = skill.GamingQueue; + Source = source; + Item = item; + if (Values.Count > 0) + { + string key = Values.Keys.FirstOrDefault(s => s.Equals("shtr", StringComparison.CurrentCultureIgnoreCase)) ?? ""; + if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double shtr)) + { + 减少比例 = shtr; + } + } + } + } +} diff --git a/OshimaModules/Items/Accessory/攻击之爪.cs b/OshimaModules/Items/Accessory/攻击之爪.cs index fb1f563..f81723e 100644 --- a/OshimaModules/Items/Accessory/攻击之爪.cs +++ b/OshimaModules/Items/Accessory/攻击之爪.cs @@ -11,7 +11,7 @@ namespace Oshima.FunGame.OshimaModules.Items public override string Name => "攻击之爪 +10"; public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : ""; - public 攻击之爪10(Character? character = null) : base(ItemType.Accessory, slot: EquipSlotType.Accessory) + public 攻击之爪10(Character? character = null) : base(ItemType.Accessory) { Skills.Passives.Add(new 攻击之爪技能(character, this, 10)); } @@ -23,7 +23,7 @@ namespace Oshima.FunGame.OshimaModules.Items public override string Name => "攻击之爪 +30"; public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : ""; - public 攻击之爪30(Character? character = null) : base(ItemType.Accessory, slot: EquipSlotType.Accessory) + public 攻击之爪30(Character? character = null) : base(ItemType.Accessory) { Skills.Passives.Add(new 攻击之爪技能(character, this, 30)); } @@ -35,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Items public override string Name => "攻击之爪 +50"; public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : ""; - public 攻击之爪50(Character? character = null) : base(ItemType.Accessory, slot: EquipSlotType.Accessory) + public 攻击之爪50(Character? character = null) : base(ItemType.Accessory) { Skills.Passives.Add(new 攻击之爪技能(character, this, 50)); } diff --git a/OshimaModules/Items/Weapon/独奏弓.cs b/OshimaModules/Items/Weapon/独奏弓.cs index 84ba2c8..05f8d69 100644 --- a/OshimaModules/Items/Weapon/独奏弓.cs +++ b/OshimaModules/Items/Weapon/独奏弓.cs @@ -11,7 +11,7 @@ namespace Oshima.FunGame.OshimaModules.Items public override string Name => "独奏弓"; public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : ""; - public 独奏弓(Character? character = null) : base(ItemType.Weapon, slot: EquipSlotType.Weapon) + public 独奏弓(Character? character = null) : base(ItemType.Weapon) { WeaponType = WeaponType.Bow; Skills.Passives.Add(new 独奏弓技能(character, this)); diff --git a/OshimaModules/Skills/NiuNan/智慧与力量.cs b/OshimaModules/Skills/NiuNan/智慧与力量.cs index f87e23c..764bedf 100644 --- a/OshimaModules/Skills/NiuNan/智慧与力量.cs +++ b/OshimaModules/Skills/NiuNan/智慧与力量.cs @@ -33,24 +33,26 @@ namespace Oshima.FunGame.OshimaModules.Skills private double 交换前的额外力量 = 0; private double 实际增加闪避率 = 0.3; private double 实际增加魔法抗性 = 0.25; - private bool 增加过了 = false; + private bool 已经加过 = false; public override void OnEffectGained(Character character) { - 增加过了 = true; ResetEffect(character, true); } public override void OnEffectLost(Character character) { - 增加过了 = false; - ResetEffect(character, false); + if (character.PrimaryAttribute == PrimaryAttribute.INT) + { + ResetEffect(character, false); + } } private void ResetEffect(Character character, bool isAdd) { if (isAdd) { + 已经加过 = true; character.ExEvadeRate += 实际增加闪避率; character.MDF.None += 实际增加魔法抗性; character.MDF.Particle += 实际增加魔法抗性; @@ -64,6 +66,7 @@ namespace Oshima.FunGame.OshimaModules.Skills } else { + 已经加过 = false; character.ExEvadeRate -= 实际增加闪避率; character.MDF.None -= 实际增加魔法抗性; character.MDF.Particle -= 实际增加魔法抗性; @@ -119,9 +122,9 @@ namespace Oshima.FunGame.OshimaModules.Skills c.ExINT = -c.BaseINT; c.ExSTR = 交换前的额外智力 + c.BaseINT + 交换前的额外力量; c.Recovery(pastHP, pastMP, pastMaxHP, pastMaxMP); - if (!增加过了) + if (已经加过) { - ResetEffect(character, true); + ResetEffect(character, false); } } } @@ -139,9 +142,9 @@ namespace Oshima.FunGame.OshimaModules.Skills c.ExINT = 交换前的额外力量 + c.BaseSTR + 交换前的额外智力; c.ExSTR = -c.BaseSTR; c.Recovery(pastHP, pastMP, pastMaxHP, pastMaxMP); - if (增加过了) + if (!已经加过) { - ResetEffect(character, false); + ResetEffect(character, true); } } } diff --git a/OshimaModules/Skills/Oshima/META马.cs b/OshimaModules/Skills/Oshima/META马.cs index 4674c3c..b13a0e3 100644 --- a/OshimaModules/Skills/Oshima/META马.cs +++ b/OshimaModules/Skills/Oshima/META马.cs @@ -26,7 +26,7 @@ namespace Oshima.FunGame.OshimaModules.Skills public override string Name => Skill.Name; public override string Description => $"META马专属被动:力量+5,力量成长+0.5;在受到伤害时,获得的能量提升50%,每回合开始还能获得额外的 [ {EP:0.##} ] 能量值。"; public override bool TargetSelf => true; - public static double EP => 10; + public static double EP => 7; public override void AlterEPAfterGetDamage(Character character, ref double baseEP) { diff --git a/OshimaModules/Skills/Oshima/力量爆发.cs b/OshimaModules/Skills/Oshima/力量爆发.cs index 278bde0..1dc50b8 100644 --- a/OshimaModules/Skills/Oshima/力量爆发.cs +++ b/OshimaModules/Skills/Oshima/力量爆发.cs @@ -22,12 +22,12 @@ namespace Oshima.FunGame.OshimaModules.Skills { public override long Id => Skill.Id; public override string Name => "力量爆发"; - public override string Description => $"获得 150% 力量 [ {攻击力加成:0.##} ] 的攻击力加成,但每次攻击都会损失 9% 当前生命值 [ {当前生命值:0.##} ],持续 {Duration:0.##} 时间。"; + public override string Description => $"获得 135% 力量 [ {攻击力加成:0.##} ] 的攻击力加成,但每次攻击都会损失 9% 当前生命值 [ {当前生命值:0.##} ],持续 {Duration:0.##} 时间。"; public override bool TargetSelf => true; public override bool Durative => true; public override double Duration => 10 + 1 * (Level - 1); - private double 攻击力加成 => Skill.Character?.STR * 1.5 ?? 0; + private double 攻击力加成 => Skill.Character?.STR * 1.35 ?? 0; private double 当前生命值 => Skill.Character?.HP * 0.09 ?? 0; private double 实际攻击力加成 = 0; diff --git a/OshimaModules/Skills/QWQAQW/迅捷之势.cs b/OshimaModules/Skills/QWQAQW/迅捷之势.cs index 1488691..62d3748 100644 --- a/OshimaModules/Skills/QWQAQW/迅捷之势.cs +++ b/OshimaModules/Skills/QWQAQW/迅捷之势.cs @@ -39,8 +39,8 @@ namespace Oshima.FunGame.OshimaModules.Skills character.NormalAttack.SetMagicType(true, character.MagicType); 实际物理伤害减免 = 物理伤害减免; 实际魔法抗性 = 魔法抗性; - character.PhysicalPenetration += 实际物理伤害减免; - character.MagicalPenetration += 实际魔法抗性; + character.ExPDR += 实际物理伤害减免; + character.MDF.SetAllValue(实际魔法抗性, false); WriteLine($"[ {character} ] 提升了 {实际物理伤害减免 * 100:0.##}% 物理伤害减免,{实际魔法抗性 * 100:0.##}% 魔法抗性!!"); } @@ -49,8 +49,8 @@ namespace Oshima.FunGame.OshimaModules.Skills character.NormalAttack.SetMagicType(false, character.MagicType); 实际物理伤害减免 = 0; 实际魔法抗性 = 0; - character.PhysicalPenetration -= 实际物理伤害减免; - character.MagicalPenetration -= 实际魔法抗性; + character.ExPDR -= 实际物理伤害减免; + character.MDF.SetAllValue(-实际魔法抗性, false); } public override void AlterExpectedDamageBeforeCalculation(Character character, Character enemy, ref double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType) diff --git a/OshimaModules/Skills/SkillID.cs b/OshimaModules/Skills/SkillID.cs index badeb82..85be3ef 100644 --- a/OshimaModules/Skills/SkillID.cs +++ b/OshimaModules/Skills/SkillID.cs @@ -3,6 +3,32 @@ public enum MagicID : long { 冰霜攻击 = 1001, + 火之矢 = 1002, + 水之矢 = 1003, + 石之锤 = 1004, + 风之轮 = 1005, + 心灵之霞 = 1006, + 次元上升 = 1007, + 暗物质 = 1008, + + 回复术 = 1009, + 治愈术 = 1010, + 复苏术 = 1011, + 圣灵术 = 1012, + 时间加速 = 1013, + 时间减速 = 1014, + 反魔法领域 = 1015, + 沉默十字 = 1016, + 虚弱领域 = 1017, + 混沌烙印 = 1018, + 凝胶稠絮 = 1019, + + 大地之墙 = 1020, + 盖亚之盾 = 1021, + 风之守护 = 1022, + 结晶防护 = 1023, + 强音之力 = 1024, + 神圣祝福 = 1025 } public enum SkillID : long diff --git a/OshimaServers/FastAutoServer.cs b/OshimaServers/FastAutoServer.cs index 9fbfec5..8257746 100644 --- a/OshimaServers/FastAutoServer.cs +++ b/OshimaServers/FastAutoServer.cs @@ -516,7 +516,7 @@ namespace Oshima.FunGame.OshimaServers 这次发放的空投 = [new 攻击之爪50()]; foreach (Item item in 这次发放的空投) { - queue.Equip(character, EquipItemToSlot.Accessory1, item); + queue.Equip(character, EquipSlotType.Accessory1, item); } } } diff --git a/configs/oshima-studios/oshima.fungame.items.json b/configs/oshima-studios/oshima.fungame.items.json new file mode 100644 index 0000000..4668e53 --- /dev/null +++ b/configs/oshima-studios/oshima.fungame.items.json @@ -0,0 +1,665 @@ +{ + "黑暗之刃": { + "Id": 11543, + "Name": "黑暗之刃", + "Description": "增加 20 点攻击力。", + "BackgroundStory": "传说中的黑暗之刃,蕴含邪恶力量。", + "ItemType": 1, + "WeaponType": 1, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7001, + "Name": "黑暗之刃", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 20 + } + ] + } + ] + } + }, + "烈焰长剑": { + "Id": 11544, + "Name": "烈焰长剑", + "Description": "增加 20 点攻击力。", + "BackgroundStory": "火焰中锻造的长剑,散发着炙热气息。", + "ItemType": 1, + "WeaponType": 2, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7002, + "Name": "烈焰长剑", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 20 + } + ] + } + ] + } + }, + "银月弓": { + "Id": 11545, + "Name": "银月弓", + "Description": "增加 20 点攻击力。", + "BackgroundStory": "由稀有银月材料制成,精准无比。", + "ItemType": 1, + "WeaponType": 3, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7003, + "Name": "银月弓", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 20 + } + ] + } + ] + } + }, + "风暴步枪": { + "Id": 11546, + "Name": "风暴步枪", + "Description": "增加 20 点攻击力。", + "BackgroundStory": "捕捉风暴之力的武器,射速惊人。", + "ItemType": 1, + "WeaponType": 5, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7004, + "Name": "风暴步枪", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 20 + } + ] + } + ] + } + }, + "幽灵拳套": { + "Id": 11547, + "Name": "幽灵拳套", + "Description": "增加 20 点攻击力。", + "BackgroundStory": "无形的力量增强拳套,适合迅捷攻击。", + "ItemType": 1, + "WeaponType": 11, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7005, + "Name": "幽灵拳套", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 20 + } + ] + } + ] + } + }, + "雷霆之刃": { + "Id": 11548, + "Name": "雷霆之刃", + "Description": "增加 40 点攻击力。", + "BackgroundStory": "蕴含雷霆之力的神秘之剑,斩击时带有雷电。", + "ItemType": 1, + "WeaponType": 1, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7006, + "Name": "雷霆之刃", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 40 + } + ] + } + ] + } + }, + "龙骨重剑": { + "Id": 11549, + "Name": "龙骨重剑", + "Description": "增加 40 点攻击力。", + "BackgroundStory": "由远古龙骨锻造而成的巨剑,威力无比。", + "ItemType": 1, + "WeaponType": 2, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7007, + "Name": "龙骨重剑", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 40 + } + ] + } + ] + } + }, + "暗影弓": { + "Id": 11550, + "Name": "暗影弓", + "Description": "增加 40 点攻击力。", + "BackgroundStory": "能够穿透黑暗的弓,适合隐匿射击。", + "ItemType": 1, + "WeaponType": 3, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7008, + "Name": "暗影弓", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 40 + } + ] + } + ] + } + }, + "赤焰手枪": { + "Id": 11551, + "Name": "赤焰手枪", + "Description": "增加 40 点攻击力。", + "BackgroundStory": "能够发射赤焰的手枪,近距离威力极大。", + "ItemType": 1, + "WeaponType": 4, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7009, + "Name": "赤焰手枪", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 40 + } + ] + } + ] + } + }, + "苍穹法杖": { + "Id": 11552, + "Name": "苍穹法杖", + "Description": "增加 40 点攻击力。", + "BackgroundStory": "据说能够召唤天空之力的法杖,拥有强大魔力。", + "ItemType": 1, + "WeaponType": 8, + "Price": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7010, + "Name": "苍穹法杖", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 40 + } + ] + } + ] + } + }, + "炽炎剑": { + "Id": 11553, + "Name": "炽炎剑", + "Description": "增加 60 点攻击力。", + "BackgroundStory": "这把剑燃烧着永恒的火焰,传说可以焚尽一切。", + "ItemType": 1, + "WeaponType": 1, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7011, + "Name": "炽炎剑", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 60 + } + ] + } + ] + } + }, + "狂风弓": { + "Id": 11554, + "Name": "狂风弓", + "Description": "增加 60 点攻击力。", + "BackgroundStory": "每次射击都能引发狂风,传说它由风神亲手打造。", + "ItemType": 1, + "WeaponType": 3, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7012, + "Name": "狂风弓", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 60 + } + ] + } + ] + } + }, + "破晓枪": { + "Id": 11555, + "Name": "破晓枪", + "Description": "增加 60 点攻击力。", + "BackgroundStory": "在破晓时分,这把长枪能够穿透任何黑暗。", + "ItemType": 1, + "WeaponType": 9, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7013, + "Name": "破晓枪", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 60 + } + ] + } + ] + } + }, + "幽冥匕首": { + "Id": 11556, + "Name": "幽冥匕首", + "Description": "增加 60 点攻击力。", + "BackgroundStory": "这对匕首闪烁着死亡的光芒,专为刺客所用。", + "ItemType": 1, + "WeaponType": 6, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7014, + "Name": "幽冥匕首", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 60 + } + ] + } + ] + } + }, + "天雷杖": { + "Id": 11557, + "Name": "天雷杖", + "Description": "增加 60 点攻击力。", + "BackgroundStory": "召唤天雷的法杖,拥有毁天灭地的力量。", + "ItemType": 1, + "WeaponType": 8, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7015, + "Name": "天雷杖", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 60 + } + ] + } + ] + } + }, + "飞雷剑": { + "Id": 11558, + "Name": "飞雷剑", + "Description": "增加 80 点攻击力。", + "BackgroundStory": "此剑驾驭飞雷之力,能引发猛烈的雷击。", + "ItemType": 1, + "WeaponType": 1, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7016, + "Name": "雷霆之刃", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 80 + } + ] + } + ] + } + }, + "烈焰法杖": { + "Id": 11559, + "Name": "烈焰法杖", + "Description": "增加 80 点攻击力。", + "BackgroundStory": "法杖中燃烧着不灭的火焰,象征着无尽的力量。", + "ItemType": 1, + "WeaponType": 8, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7017, + "Name": "烈焰法杖", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 80 + } + ] + } + ] + } + }, + "龙骨枪": { + "Id": 11560, + "Name": "龙骨枪", + "Description": "增加 80 点攻击力。", + "BackgroundStory": "由远古龙骨制成的长柄武器,坚不可摧。", + "ItemType": 1, + "WeaponType": 9, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7018, + "Name": "龙骨枪", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 80 + } + ] + } + ] + } + }, + "疾风双刀": { + "Id": 11561, + "Name": "疾风双刀", + "Description": "增加 80 点攻击力。", + "BackgroundStory": "双持短刀,速度如疾风般迅捷。", + "ItemType": 1, + "WeaponType": 6, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7019, + "Name": "疾风双刀", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 80 + } + ] + } + ] + } + }, + "冰晶手枪": { + "Id": 11562, + "Name": "冰晶手枪", + "Description": "增加 80 点攻击力。", + "BackgroundStory": "由冰晶打造的手枪,子弹带有极寒之力。", + "ItemType": 1, + "WeaponType": 4, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7020, + "Name": "冰晶手枪", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 80 + } + ] + } + ] + } + }, + "影刃": { + "Id": 11563, + "Description": "增加 105 点攻击力。", + "Name": "影刃", + "BackgroundStory": "藏于黑暗中的锋利刀刃,只在敌人未察觉时现身。", + "ItemType": 1, + "WeaponType": 11, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7021, + "Name": "影刃", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 105 + } + ] + } + ] + } + }, + "寒霜之弓": { + "Id": 11564, + "Name": "寒霜之弓", + "Description": "增加 105 点攻击力。", + "BackgroundStory": "弓弦上凝聚寒霜,箭矢能冻结一切。", + "ItemType": 1, + "WeaponType": 3, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7022, + "Name": "寒霜之弓", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 105 + } + ] + } + ] + } + }, + "雷鸣战斧": { + "Id": 11565, + "Name": "雷鸣战斧", + "Description": "增加 105 点攻击力。", + "BackgroundStory": "携带雷电之力的巨斧,一击之下,雷声轰鸣。", + "ItemType": 1, + "WeaponType": 2, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7023, + "Name": "雷鸣战斧", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 105 + } + ] + } + ] + } + }, + "狂怒拳套": { + "Id": 11566, + "Name": "狂怒拳套", + "Description": "增加 105 点攻击力。", + "BackgroundStory": "拳套内的力量能激发佩戴者的狂怒,造成大量伤害。", + "ItemType": 1, + "WeaponType": 10, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7024, + "Name": "狂怒拳套", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 105 + } + ] + } + ] + } + }, + "星辰法器": { + "Id": 11567, + "Name": "星辰法器", + "Description": "增加 105 点攻击力。", + "BackgroundStory": "法器中蕴含着星辰之力,每一次攻击都如天外陨石降临。", + "ItemType": 1, + "WeaponType": 7, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7025, + "Name": "星辰法器", + "SkillType": 3, + "Effects": [ + { + "Id": 8001, + "exatk": 105 + } + ] + } + ] + } + }, + "圣洁之盾": { + "Id": 20001, + "Name": "圣洁之盾", + "Description": "受到的物理伤害减少 25%。", + "BackgroundStory": "传说中由圣光祝福的盾牌,能够抵挡邪恶的力量。", + "ItemType": 2, + "WeaponType": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7100, + "Name": "圣光护佑", + "SkillType": 3, + "Effects": [ + { + "Id": 8019, + "expdr": 0.25 + } + ] + } + ] + } + }, + "魔能法袍": { + "Id": 20005, + "Name": "魔能法袍", + "Description": "提高 20% 魔抗,增加 15 点智力。", + "BackgroundStory": "法袍蕴含着神秘的魔力,穿戴者能增强魔法威力。", + "ItemType": 2, + "WeaponType": 0, + "Skills": { + "Active": null, + "Passives": [ + { + "Id": 7104, + "Name": "魔力增幅", + "SkillType": 3, + "Effects": [ + { + "Id": 8005, + "exint": 15 + }, + { + "Id": 8020, + "mdftype": 0, + "mdfvalue": 0.2 + } + ] + } + ] + } + } +} \ No newline at end of file