From 8d7154e2128ce8e02dd556d6e6baf7bcc0a7681b Mon Sep 17 00:00:00 2001 From: milimoe Date: Mon, 23 Jun 2025 23:25:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=9A=84=E6=88=98=E6=8A=80=E9=AD=94?= =?UTF-8?q?=E6=B3=95=E8=B7=AF=E7=BA=BF=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OshimaModules/Effects/PassiveEffects/气绝.cs | 11 +- .../Effects/SkillEffects/造成气绝.cs | 2 +- OshimaModules/Skills/SkillID.cs | 192 ++++++++++++++++-- OshimaServers/Service/FunGameService.cs | 19 +- OshimaServers/Service/FunGameSimulation.cs | 2 +- 5 files changed, 196 insertions(+), 30 deletions(-) diff --git a/OshimaModules/Effects/PassiveEffects/气绝.cs b/OshimaModules/Effects/PassiveEffects/气绝.cs index 522f9a5..a3189c9 100644 --- a/OshimaModules/Effects/PassiveEffects/气绝.cs +++ b/OshimaModules/Effects/PassiveEffects/气绝.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects { public override long Id => 4109; public override string Name => "气绝"; - public override string Description => $"此角色处于气绝状态,行动受限并且每{GameplayEquilibriumConstant.InGameTime}持续流失 {(_isPercentage ? $"{_durationDamagePercent * 100:0.##}% [ {Damage:0.##} ]" : Damage.ToString("0.##"))} 点当前生命值。来自:[ {Source} ] 的 [ {Skill.Name} ]"; + public override string Description => $"此角色处于气绝状态,行动受限并且每{GameplayEquilibriumConstant.InGameTime}持续流失 {(_isPercentage ? $"{_durationDamagePercent * 100:0.##}% [ {Damage:0.##} ]" : Damage.ToString("0.##"))} 点当前生命值,此生命流失效果不会导致角色死亡。来自:[ {Source} ] 的 [ {Skill.Name} ]"; public override EffectType EffectType => EffectType.Bleed; public override DispelledType DispelledType => DispelledType.Strong; public override bool IsDebuff => true; @@ -73,8 +73,13 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects damage += GetDamage(hp, elapsed); } } - WriteLine($"[ {character} ] 因气绝而流失生命值!"); - DamageToEnemy(Source, character, DamageType.True, MagicType, damage); + character.HP -= damage; + if (character.HP <= 0) + { + character.HP = 1; + } + GamingQueue?.CalculateCharacterDamageStatistics(Source, character, damage, DamageType.True); + WriteLine($"[ {character} ] 因气绝而流失了 {damage:0.##} 点生命值!"); } } diff --git a/OshimaModules/Effects/SkillEffects/造成气绝.cs b/OshimaModules/Effects/SkillEffects/造成气绝.cs index 81a6fb4..01d7ecd 100644 --- a/OshimaModules/Effects/SkillEffects/造成气绝.cs +++ b/OshimaModules/Effects/SkillEffects/造成气绝.cs @@ -8,7 +8,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects { public override long Id => Skill.Id; public override string Name => Skill.Name; - public override string Description => $"对目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}敌人造成气绝 {气绝时间}。气绝期间,目标行动受限且持续{DamageString}。"; + public override string Description => $"对目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}敌人造成气绝 {气绝时间}。气绝期间,目标行动受限且每{GameplayEquilibriumConstant.InGameTime}持续{DamageString},此生命流失效果不会导致角色死亡。"; public override DispelledType DispelledType => DispelledType.Strong; private string 气绝时间 => _durative && _duration > 0 ? 实际气绝时间 + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? 实际气绝时间 + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}"); diff --git a/OshimaModules/Skills/SkillID.cs b/OshimaModules/Skills/SkillID.cs index 280a98b..102d978 100644 --- a/OshimaModules/Skills/SkillID.cs +++ b/OshimaModules/Skills/SkillID.cs @@ -1,4 +1,5 @@ -namespace Oshima.FunGame.OshimaModules.Skills +// 注:绝大多数技能名称来自《英雄传说 空之轨迹》 +namespace Oshima.FunGame.OshimaModules.Skills { /** * 冰霜攻击 = 单体伤害 @@ -7,28 +8,32 @@ * 石之锤 = 单体伤害 * 风之轮 = 单体伤害 * 心灵之霞 = 单体伤害 - * 次元上升 = 单体伤害+眩晕(时间型) + * 次元上升 = 单体伤害+眩晕(时间型),需强驱散 * 暗物质 = 单体伤害 * - * 回复术 = 我方·单体回复, - * 治愈术 = 我方·单体回复, - * 复苏术 = 我方·单体弱驱散+回复+复苏, - * 圣灵术 = 我方·全体弱驱散+回复+复苏, - * 时间加速 = 我方·单体速度提升(时间型), - * 时间减速 = 单体速度减少(时间型), - * 反魔法领域 = 多目标封技(技能受限,时间型)+施法解除, - * 沉默十字 = 多目标封技(技能受限,回合型)+施法解除, - * 虚弱领域 = 全体虚弱(伤害降低+护甲魔抗降低+重伤,时间型), - * 混沌烙印 = 单体气绝(行动受限+持续伤害,时间型), - * 凝胶稠絮 = 单体虚弱(伤害降低+护甲魔抗降低+重伤,回合型), + * 回复术 = 我方·单体回复 + * 治愈术 = 我方·单体回复 + * 复苏术 = 我方·单体弱驱散+回复+复苏 + * 圣灵术 = 我方·全体弱驱散+回复+复苏 + * 时间加速 = 我方·单体速度提升(时间型) + * 时间减速 = 单体速度减少(时间型) + * 反魔法领域 = 多目标封技(技能受限,时间型)+施法解除,可弱驱散 + * 沉默十字 = 多目标封技(技能受限,回合型)+施法解除,可弱驱散 + * 虚弱领域 = 全体虚弱(伤害降低+护甲魔抗降低+重伤,时间型),可弱驱散 + * 混沌烙印 = 单体气绝(行动受限+持续伤害,时间型),需强驱散 + * 凝胶稠絮 = 单体虚弱(伤害降低+护甲魔抗降低+重伤,回合型),可弱驱散 * - * 大地之墙 = 我方·多目标护盾+持续性弱驱散(时间型), - * 盖亚之盾 = 我方·全体物理+魔法护盾, - * 风之守护 = 我方·暴击率+闪避提升(回合型), - * 结晶防护 = 我方·护甲+魔抗提升(回合型), - * 强音之力 = 我方·攻击提升(回合型), + * 大地之墙 = 我方·多目标物理护盾+持续性弱驱散(时间型) + * 盖亚之盾 = 我方·全体物理+魔法护盾值 + * 风之守护 = 我方·暴击率+闪避提升(回合型) + * 结晶防护 = 我方·护甲+魔抗提升(回合型) + * 强音之力 = 我方·攻击提升(回合型) * 神圣祝福 = 我方·攻击+护甲+魔抗提升(回合型) - */ + * 根源屏障 = 我方·技能免疫+魔法免疫(回合型) + * + * 灾难冲击波 = 多目标伤害+魔抗降低(回合型),可弱驱散 + * 银色荆棘 = 多目标伤害,90%概率混乱(行动受限,如同AI控制行动),需强驱散 + */ public enum MagicID : long { 冰霜攻击 = 1001, @@ -57,12 +62,159 @@ 风之守护 = 1022, 结晶防护 = 1023, 强音之力 = 1024, - 神圣祝福 = 1025 + 神圣祝福 = 1025, + 根源屏障 = 1026, + + 灾难冲击波 = 1027, + 银色荆棘 = 1028 } + /** + * 疾风步 = 自身·速度/暴击提升(时间型)+不可选中+破隐一击 + * 助威 = 我方·多目标攻击力提升(回合型) + * 挑拨 = 多目标愤怒(嘲讽,回合型),需强驱散 + * 绞丝棍 = 单体伤害 + * 金刚击 = 单体伤害+施法解除 + * 旋风轮 = 多目标伤害 + * 樱花无双击 = 单体伤害+生命偷取 + * 双连击 = 单体2次普通攻击 + * 绝影 = 单体伤害+迟滞(硬直时间延长),可弱驱散 + * 胧 = 单体攻击,20%几率战斗不能(攻击不能+施法不能),需强驱散 + * 魔眼 = 单体迟滞(硬直时间延长)、30%概率混乱(行动受限,如同AI控制行动),需强驱散 + * 漆黑之牙 = 全体伤害 + * 风之鞭 = 多目标伤害 + * 拘束之鞭 = 单体伤害+施法解除 + * 天堂之吻 = 我方·硬直时间提前(时间型) + * 狐媚暗随 = 单体伤害 + * 女王之怒 = 单体伤害+虚弱(伤害降低+护甲魔抗降低+重伤,回合型),可弱驱散 + * 裁决塔罗 = 多目标伤害+以下状态之一:冻结(完全行动不能)/混乱(行动受限,如同AI控制行动)/战斗不能(攻击不能+施法不能),需强驱散 + * 快速狙击 = 随机单体目标伤害 + * 精准射击 = 单体伤害+施法解除 + * 欢乐激发 = 我方·多目标回复 + * 乱心安魂曲 = 多目标伤害 + * 斗魂 = 攻击力降低+物理护甲降低,可弱驱散 + * 岚 = 多目标伤害+施法解除 + * 光明之环 = 我方·全体强驱散+复苏,复苏的回复量为20%;起步消耗100能量,每10能量额外增加护甲魔抗 + * 圣星光旋 = 全体伤害 + * 公牛之怒 = 自身·扣除生命值+回复能量 + * 火焰碎击 = 单体伤害+战斗不能(时间型)+施法解除,需强驱散 + * 螺旋之刃 = 单体迟滞(硬直时间延长),可弱驱散 + * 霸王疾风 = 单体伤害 + * 炎龙倒海 = 全体伤害 + * 回复弹 = 我方·单体弱驱散+回复 + * 导力装甲 = 自身·封技+攻击力提升+护甲魔抗提升+硬直时间提前 + * 回复原状 = 自身·解除导力装甲 + * 卫星激光 = 多目标伤害 + * 强打 = 单体伤害,20%几率气绝(行动受限+持续伤害,时间型),需强驱散 + * 龙神功 = 自身·攻击力提升+护甲魔抗提升(回合型) + * 养命功 = 自身·持续性弱驱散+回复(回合型) + * 月华掌 = 单体伤害,50%几率混乱(行动受限,如同AI控制行动),需强驱散 + * 雷神脚 = 多目标伤害 + * 泰山玄武靠 = 多目标伤害 + * 弓刃交错 = 单体伤害+迟滞(硬直时间延长),可弱驱散 + * 神圣祈祷 = 我方·持续性强驱散+回复(时间型) + * 牺牲之箭 = 我方不含自身·能量回复 + * 石化之矢 = 单体伤害+石化(完全行动不能,时间型),需强驱散 + * 死亡制裁 = 多目标伤害 + * 星杯领域 = 我方·完全免疫,回合型;起步消耗100能量,每100能量额外回合 + * 魔枪洛亚 = 全体伤害 + * 八叶灭杀 = 单体伤害 + * 剑风闪 = 多目标伤害 + * 落叶 = 单体伤害+迟滞(硬直时间延长),可弱驱散 + * 风花阵 = 自身·攻击力提升+护甲降低 + * 陀螺舞 = 多目标愤怒(嘲讽,回合型),需强驱散 + * 光破斩 = 多目标伤害 + * 跳跃点射 = 单体伤害+护甲降低+施法解除,需强驱散 + * 鲨鱼锚击 = 单体伤害+气绝(行动受限+持续伤害,时间型),需强驱散 + * 光鬼斩 = 单体伤害,30%几率气绝(行动受限+持续伤害,时间型),需强驱散 + * 樱花残月 = 单体伤害 + * 雷索吸缚 = 单体愤怒(嘲讽,回合型)、30%几率气绝(行动受限+持续伤害,时间型),需强驱散 + * 狂刃剑舞 = 敌方·单体攻击,20%几率混乱(行动受限,如同AI控制行动),需强驱散 + * 无相飞刀 = 单体封技+施法解除,可弱驱散 + * 破邪显正 = 多目标伤害 + * 镜花水月 = 自身·完全免疫,回合型 + * 号令 = 我方不含自身·攻击力提升 + * 千剑之雨 = 多目标伤害 + * 无尽剑制 = 全体伤害 + * 圣洁祝福 = 我方不含自身·单体强驱散+回复+能量回复 + * 天堂阻灭 = 单体伤害 + * 灾难一掷 = 单体伤害,10%几率战斗不能 + * 血腥旋转 = 多目标伤害,10%几率战斗不能 + * 歼灭 = 全体伤害,50%几率战斗不能 + */ public enum SkillID : long { 疾风步 = 2001, + 助威 = 2002, + 挑拨 = 2003, + 绞丝棍 = 2004, + 金刚击 = 2005, + 旋风轮 = 2006, + 樱花无双击 = 2007, + 双连击 = 2008, + 绝影 = 2009, + 胧 = 2010, + 魔眼 = 2011, + 漆黑之牙 = 2012, + 风之鞭 = 2013, + 拘束之鞭 = 2014, + 天堂之吻 = 2015, + 狐媚暗随 = 2016, + 女王之怒 = 2017, + 裁决塔罗 = 2018, + 快速狙击 = 2019, + 精准射击 = 2020, + 欢乐激发 = 2021, + 乱心安魂曲 = 2022, + 斗魂 = 2023, + 岚 = 2024, + 光明之环 = 2025, + 圣星光旋 = 2026, + 公牛之怒 = 2027, + 火焰碎击 = 2028, + 螺旋之刃 = 2029, + 霸王疾风 = 2030, + 炎龙倒海 = 2031, + 回复弹 = 2032, + 导力装甲 = 2033, + 回复原状 = 2034, + 卫星激光 = 2035, + 强打 = 2036, + 龙神功 = 2037, + 养命功 = 2038, + 月华掌 = 2039, + 雷神脚 = 2040, + 泰山玄武靠 = 2041, + 弓刃交错 = 2042, + 神圣祈祷 = 2043, + 牺牲之箭 = 2044, + 石化之矢 = 2045, + 死亡制裁 = 2046, + 星杯领域 = 2047, + 魔枪洛亚 = 2048, + 八叶灭杀 = 2049, + 剑风闪 = 2050, + 落叶 = 2051, + 风花阵 = 2052, + 陀螺舞 = 2053, + 光破斩 = 2054, + 跳跃点射 = 2055, + 鲨鱼锚击 = 2056, + 光鬼斩 = 2057, + 樱花残月 = 2058, + 雷索吸缚 = 2059, + 狂刃剑舞 = 2060, + 无相飞刀 = 2061, + 破邪显正 = 2062, + 镜花水月 = 2063, + 号令 = 2064, + 千剑之雨 = 2065, + 无尽剑制 = 2066, + 圣洁祝福 = 2067, + 天堂阻灭 = 2068, + 灾难一掷 = 2069, + 血腥旋转 = 2070, + 歼灭 = 2071 } public enum SuperSkillID : long diff --git a/OshimaServers/Service/FunGameService.cs b/OshimaServers/Service/FunGameService.cs index b1d1b49..443fb66 100644 --- a/OshimaServers/Service/FunGameService.cs +++ b/OshimaServers/Service/FunGameService.cs @@ -1306,6 +1306,11 @@ namespace Oshima.FunGame.OshimaServers.Service { int genCount = 10 - Bosses.Count; + Item[] weapons = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("11") && (int)i.QualityType == 5)]; + Item[] armors = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("12") && (int)i.QualityType == 5)]; + Item[] shoes = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("13") && (int)i.QualityType == 5)]; + Item[] accessory = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("14") && (int)i.QualityType == 4)]; + Item[] consumables = [.. FunGameConstant.AllItems.Where(i => i.ItemType == ItemType.Consumable && i.IsInGameItem)]; for (int i = 0; i < genCount; i++) { int nowIndex = Bosses.Count > 0 ? Bosses.Keys.Max() + 1 : 1; @@ -1324,10 +1329,6 @@ namespace Oshima.FunGame.OshimaServers.Service boss.Level = cLevel; boss.NormalAttack.Level = naLevel; boss.NormalAttack.ExHardnessTime = -4; - Item[] weapons = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("11") && (int)i.QualityType == 4)]; - Item[] armors = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("12") && (int)i.QualityType == 1)]; - Item[] shoes = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("13") && (int)i.QualityType == 1)]; - Item[] accessory = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("14") && (int)i.QualityType == 3)]; Item? a = null, b = null, c = null, d = null, d2 = null; if (weapons.Length > 0) { @@ -1358,7 +1359,7 @@ namespace Oshima.FunGame.OshimaServers.Service Item? magicCardPack = GenerateMagicCardPack(5, (QualityType)4); if (magicCardPack != null) { - magicCardPack.QualityType = QualityType.Red; + magicCardPack.QualityType = QualityType.Gold; foreach (Skill magic in magicCardPack.Skills.Magics) { magic.Level = mLevel; @@ -1370,6 +1371,14 @@ namespace Oshima.FunGame.OshimaServers.Service Item realItem = item.Copy(); boss.Equip(realItem); } + if (consumables.Length > 0 && boss.Items.Count < 5) + { + for (int j = 0; j < 2; j++) + { + Item consumable = consumables[Random.Shared.Next(consumables.Length)].Copy(); + boss.Items.Add(consumable); + } + } Skill bossSkill = Factory.OpenFactory.GetInstance(0, "BOSS专属被动", []); bossSkill.Level = 1; bossSkill.Character = boss; diff --git a/OshimaServers/Service/FunGameSimulation.cs b/OshimaServers/Service/FunGameSimulation.cs index 9d80546..a376acc 100644 --- a/OshimaServers/Service/FunGameSimulation.cs +++ b/OshimaServers/Service/FunGameSimulation.cs @@ -1007,7 +1007,7 @@ namespace Oshima.FunGame.OshimaServers.Service Item[] shoes = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("13") && (int)i.QualityType == sQuality)]; Item[] accessories = [.. FunGameConstant.Equipment.Where(i => i.Id.ToString().StartsWith("14") && (int)i.QualityType == acQuality)]; Item[] consumables = [.. FunGameConstant.AllItems.Where(i => i.ItemType == ItemType.Consumable && i.IsInGameItem)]; - foreach (Character character in queue.HardnessTime.Keys) + foreach (Character character in queue.AllCharacters) { if (addLevel) {