新的战技魔法路线图

This commit is contained in:
milimoe 2025-06-23 23:25:26 +08:00
parent 4737780742
commit 8d7154e212
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
5 changed files with 196 additions and 30 deletions

View File

@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{ {
public override long Id => 4109; public override long Id => 4109;
public override string Name => "气绝"; 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 EffectType EffectType => EffectType.Bleed;
public override DispelledType DispelledType => DispelledType.Strong; public override DispelledType DispelledType => DispelledType.Strong;
public override bool IsDebuff => true; public override bool IsDebuff => true;
@ -73,8 +73,13 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
damage += GetDamage(hp, elapsed); damage += GetDamage(hp, elapsed);
} }
} }
WriteLine($"[ {character} ] 因气绝而流失生命值!"); character.HP -= damage;
DamageToEnemy(Source, character, DamageType.True, MagicType, damage); if (character.HP <= 0)
{
character.HP = 1;
}
GamingQueue?.CalculateCharacterDamageStatistics(Source, character, damage, DamageType.True);
WriteLine($"[ {character} ] 因气绝而流失了 {damage:0.##} 点生命值!");
} }
} }

View File

@ -8,7 +8,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{ {
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.CanSelectTargetCount > 1 ? $" {Skill.CanSelectTargetCount} " : "")}敌人造成气绝 {气绝时间}。气绝期间,目标行动受限且持续{DamageString}。"; public override string Description => $"对目标{(Skill.CanSelectTargetCount > 1 ? $" {Skill.CanSelectTargetCount} " : "")}敌人造成气绝 {气绝时间}。气绝期间,目标行动受限且每{GameplayEquilibriumConstant.InGameTime}持续{DamageString},此生命流失效果不会导致角色死亡。";
public override DispelledType DispelledType => DispelledType.Strong; public override DispelledType DispelledType => DispelledType.Strong;
private string => _durative && _duration > 0 ? + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}"); private string => _durative && _duration > 0 ? + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}");

View File

@ -1,4 +1,5 @@
namespace Oshima.FunGame.OshimaModules.Skills // 注:绝大多数技能名称来自《英雄传说 空之轨迹》
namespace Oshima.FunGame.OshimaModules.Skills
{ {
/** /**
* = * =
@ -7,27 +8,31 @@
* = * =
* = * =
* = * =
* = +() * = +()
* = * =
* *
* = ·, * = ·
* = ·, * = ·
* = ·++, * = ·++
* = ·++, * = ·++
* = ·(), * = ·()
* = (), * = ()
* = ()+ * = ()+
* = ()+ * = ()+
* = (++), * = (++)
* = (+), * = (+)
* = (++), * = (++)
* *
* = ·+(), * = ·+()
* = ·+, * = ·+
* = ·+(), * = ·+()
* = ·+(), * = ·+()
* = ·(), * = ·()
* = ·++() * = ·++()
* = ·+()
*
* = +()
* = 90%(AI控制行动)
*/ */
public enum MagicID : long public enum MagicID : long
{ {
@ -57,12 +62,159 @@
= 1022, = 1022,
= 1023, = 1023,
= 1024, = 1024,
= 1025 = 1025,
= 1026,
= 1027,
= 1028
} }
/**
* = ·/()++
* = ·()
* = ()
* =
* = +
* =
* = +
* = 2
* = +()
* = 20%(+)
* = ()30%(AI控制行动)
* =
* =
* = +
* = ·()
* =
* = +(++)
* = +()/(AI控制行动)/(+)
* =
* = +
* = ·
* =
* = +
* = +
* = ·+20%10010
* =
* = ·+
* = +()+
* = ()
* =
* =
* = ·+
* = ·+++
* = ·
* =
* = 20%(+)
* = ·+()
* = ·+()
* = 50%(AI控制行动)
* =
* =
* = +()
* = ·+()
* = ·
* = +()
* =
* = ·100100
* =
* =
* =
* = +()
* = ·+
* = ()
* =
* = ++
* = +(+)
* = 30%(+)
* =
* = ()30%(+)
* = ·20%(AI控制行动)
* = +
* =
* = ·
* = ·
* =
* =
* = ·++
* =
* = 10%
* = 10%
* = 50%
*/
public enum SkillID : long public enum SkillID : long
{ {
= 2001, = 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 public enum SuperSkillID : long

View File

@ -1306,6 +1306,11 @@ namespace Oshima.FunGame.OshimaServers.Service
{ {
int genCount = 10 - Bosses.Count; 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++) for (int i = 0; i < genCount; i++)
{ {
int nowIndex = Bosses.Count > 0 ? Bosses.Keys.Max() + 1 : 1; int nowIndex = Bosses.Count > 0 ? Bosses.Keys.Max() + 1 : 1;
@ -1324,10 +1329,6 @@ namespace Oshima.FunGame.OshimaServers.Service
boss.Level = cLevel; boss.Level = cLevel;
boss.NormalAttack.Level = naLevel; boss.NormalAttack.Level = naLevel;
boss.NormalAttack.ExHardnessTime = -4; 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; Item? a = null, b = null, c = null, d = null, d2 = null;
if (weapons.Length > 0) if (weapons.Length > 0)
{ {
@ -1358,7 +1359,7 @@ namespace Oshima.FunGame.OshimaServers.Service
Item? magicCardPack = GenerateMagicCardPack(5, (QualityType)4); Item? magicCardPack = GenerateMagicCardPack(5, (QualityType)4);
if (magicCardPack != null) if (magicCardPack != null)
{ {
magicCardPack.QualityType = QualityType.Red; magicCardPack.QualityType = QualityType.Gold;
foreach (Skill magic in magicCardPack.Skills.Magics) foreach (Skill magic in magicCardPack.Skills.Magics)
{ {
magic.Level = mLevel; magic.Level = mLevel;
@ -1370,6 +1371,14 @@ namespace Oshima.FunGame.OshimaServers.Service
Item realItem = item.Copy(); Item realItem = item.Copy();
boss.Equip(realItem); 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<Skill>(0, "BOSS专属被动", []); Skill bossSkill = Factory.OpenFactory.GetInstance<Skill>(0, "BOSS专属被动", []);
bossSkill.Level = 1; bossSkill.Level = 1;
bossSkill.Character = boss; bossSkill.Character = boss;

View File

@ -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[] 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[] 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)]; 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) if (addLevel)
{ {