完善瓶颈和效能;修复装备主动技能无法触发的问题

This commit is contained in:
milimoe 2026-01-19 01:34:30 +08:00
parent e8af2eb243
commit 86b86a19e2
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
31 changed files with 33 additions and 7 deletions

View File

@ -135,7 +135,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
damage *= ; damage *= ;
foreach (Character target in targets) foreach (Character target in targets)
{ {
DamageToEnemy(character, target, damageType, magicType, damage, new() DamageToEnemy(character, target, damageType, magicType, damage, new(character)
{ {
CalculateCritical = false, CalculateCritical = false,
CalculateReduction = true, CalculateReduction = true,

View File

@ -80,7 +80,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
double = actualDamage * ; double = actualDamage * ;
foreach (Character target in targets) foreach (Character target in targets)
{ {
DamageToEnemy(character, target, damageType, magicType, , new() DamageToEnemy(character, target, damageType, magicType, , new(character)
{ {
CalculateCritical = false, CalculateCritical = false,
CalculateReduction = true, CalculateReduction = true,

View File

@ -79,7 +79,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override void AfterDeathCalculation(Character death, bool hasMaster, Character? killer, Dictionary<Character, int> continuousKilling, Dictionary<Character, int> earnedMoney, Character[] assists) public override void AfterDeathCalculation(Character death, bool hasMaster, Character? killer, Dictionary<Character, int> continuousKilling, Dictionary<Character, int> earnedMoney, Character[] assists)
{ {
if (Skill.Character != null && death != Skill.Character && (killer == Skill.Character || assists.Contains(Skill.Character)) && Skill is skill) if (Skill.Character != null && death != Skill.Character && !hasMaster && (killer == Skill.Character || assists.Contains(Skill.Character)) && Skill is skill)
{ {
WriteLine($"[ {Skill.Character} ] 进行概念投掷:“此乃,神之概念。”"); WriteLine($"[ {Skill.Character} ] 进行概念投掷:“此乃,神之概念。”");
bool result = false; bool result = false;

View File

@ -75,7 +75,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
double damage = * 2 / enemies.Count; double damage = * 2 / enemies.Count;
foreach (Character enemy in enemies) foreach (Character enemy in enemies)
{ {
DamageToEnemy(character, enemy, DamageType.True, MagicType, damage, new() DamageToEnemy(character, enemy, DamageType.True, MagicType, damage, new(character)
{ {
CalculateShield = false, CalculateShield = false,
IgnoreImmune = true, IgnoreImmune = true,

View File

@ -48,7 +48,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
= true; = true;
= true; = true;
WriteLine($"[ {character} ] 发动了征服者的满层效果!"); WriteLine($"[ {character} ] 发动了征服者的满层效果!");
DamageToEnemy(character, enemy, DamageType.True, magicType, , new() DamageToEnemy(character, enemy, DamageType.True, magicType, , new(character)
{ {
TriggerEffects = false TriggerEffects = false
}); });
@ -82,7 +82,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
= true; = true;
WriteLine($"[ {character} ] 发动了征服者!"); WriteLine($"[ {character} ] 发动了征服者!");
DamageToEnemy(character, enemy, DamageType.True, magicType, * , new() DamageToEnemy(character, enemy, DamageType.True, magicType, * , new(character)
{ {
TriggerEffects = false TriggerEffects = false
}); });

View File

@ -14,6 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CastTime => 10; public override double CastTime => 10;
public override double HardnessTime { get; set; } = 5; public override double HardnessTime { get; set; } = 5;
public override int CanSelectTargetCount => 3; public override int CanSelectTargetCount => 3;
public override double MagicBottleneck => 20 + 22 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -11,8 +11,9 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => Effects.Count > 0 ? Effects.First().Description : ""; public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double MPCost => Level > 0 ? 50 + (50 * (Level - 1)) : 50; public override double MPCost => Level > 0 ? 50 + (50 * (Level - 1)) : 50;
public override double CD => 25; public override double CD => 25;
public override double CastTime => 8; public override double CastTime => 5;
public override double HardnessTime { get; set; } = 3; public override double HardnessTime { get; set; } = 3;
public override double MagicBottleneck => 20 + 22 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -16,6 +16,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CastTime => 11; public override double CastTime => 11;
public override double HardnessTime { get; set; } = 4; public override double HardnessTime { get; set; } = 4;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 15 + 16 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -33,6 +33,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsNonDirectional => true; public override bool IsNonDirectional => true;
public override SkillRangeType SkillRangeType => SkillRangeType.Sector; public override SkillRangeType SkillRangeType => SkillRangeType.Sector;
public override int CanSelectTargetRange => 4; public override int CanSelectTargetRange => 4;
public override double MagicBottleneck => 15 + 20 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -16,6 +16,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CastTime => Level > 0 ? 3 + (0.5 * (Level - 1)) : 3; public override double CastTime => Level > 0 ? 3 + (0.5 * (Level - 1)) : 3;
public override double HardnessTime { get; set; } = 8; public override double HardnessTime { get; set; } = 8;
public override bool SelectAllEnemies => true; public override bool SelectAllEnemies => true;
public override double MagicBottleneck => 28 + 24 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -17,6 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsNonDirectional => true; public override bool IsNonDirectional => true;
public override SkillRangeType SkillRangeType => SkillRangeType.LinePass; public override SkillRangeType SkillRangeType => SkillRangeType.LinePass;
public override int CanSelectTargetRange => 2; public override int CanSelectTargetRange => 2;
public override double MagicBottleneck => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -14,6 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CastTime => 8; public override double CastTime => 8;
public override double HardnessTime { get; set; } = 6; public override double HardnessTime { get; set; } = 6;
public override int CanSelectTargetCount => 3; public override int CanSelectTargetCount => 3;
public override double MagicBottleneck => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -13,6 +13,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => 30; public override double CD => 30;
public override double CastTime => 6; public override double CastTime => 6;
public override double HardnessTime { get; set; } = 3; public override double HardnessTime { get; set; } = 3;
public override double MagicBottleneck => 25 + 22 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -13,6 +13,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => 40; public override double CD => 40;
public override double CastTime => 10; public override double CastTime => 10;
public override double HardnessTime { get; set; } = 4; public override double HardnessTime { get; set; } = 4;
public override double MagicBottleneck => 16 + 17 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -15,6 +15,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => Level > 0 ? 35 - (1.5 * (Level - 1)) : 35; public override double CD => Level > 0 ? 35 - (1.5 * (Level - 1)) : 35;
public override double CastTime => 12; public override double CastTime => 12;
public override double HardnessTime { get; set; } = 5; public override double HardnessTime { get; set; } = 5;
public override double MagicBottleneck => 15 + 21 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -30,6 +30,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 20 + 24 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -13,6 +13,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => 20; public override double CD => 20;
public override double CastTime => 6; public override double CastTime => 6;
public override double HardnessTime { get; set; } = 3; public override double HardnessTime { get; set; } = 3;
public override double MagicBottleneck => 16 + 17 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -17,6 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsNonDirectional => true; public override bool IsNonDirectional => true;
public override SkillRangeType SkillRangeType => SkillRangeType.Circle; public override SkillRangeType SkillRangeType => SkillRangeType.Circle;
public override int CanSelectTargetRange => 3; public override int CanSelectTargetRange => 3;
public override double MagicBottleneck => 16 + 17 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -16,6 +16,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CastTime => 4; public override double CastTime => 4;
public override double HardnessTime { get; set; } = 5; public override double HardnessTime { get; set; } = 5;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 15 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -13,6 +13,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => 20; public override double CD => 20;
public override double CastTime => 6; public override double CastTime => 6;
public override double HardnessTime { get; set; } = 3; public override double HardnessTime { get; set; } = 3;
public override double MagicBottleneck => 16 + 17 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -17,6 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsNonDirectional => true; public override bool IsNonDirectional => true;
public override SkillRangeType SkillRangeType => SkillRangeType.Circle; public override SkillRangeType SkillRangeType => SkillRangeType.Circle;
public override int CanSelectTargetRange => 3; public override int CanSelectTargetRange => 3;
public override double MagicBottleneck => 16 + 17 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -33,6 +33,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 15 + 20 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -13,6 +13,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => 22; public override double CD => 22;
public override double CastTime => 6; public override double CastTime => 6;
public override double HardnessTime { get; set; } = 4; public override double HardnessTime { get; set; } = 4;
public override double MagicBottleneck => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -14,6 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CastTime => 10; public override double CastTime => 10;
public override double HardnessTime { get; set; } = 6; public override double HardnessTime { get; set; } = 6;
public override int CanSelectTargetCount => 3; public override int CanSelectTargetCount => 3;
public override double MagicBottleneck => 16 + 17 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -30,6 +30,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 20 + 22 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -14,6 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CastTime => 9; public override double CastTime => 9;
public override double HardnessTime { get; set; } = 3; public override double HardnessTime { get; set; } = 3;
public override int CanSelectTargetCount => 3; public override int CanSelectTargetCount => 3;
public override double MagicBottleneck => 15 + 22 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -16,6 +16,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CastTime => 8; public override double CastTime => 8;
public override double HardnessTime { get; set; } = 3; public override double HardnessTime { get; set; } = 3;
public override bool SelectAllEnemies => true; public override bool SelectAllEnemies => true;
public override double MagicBottleneck => 15 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -29,6 +29,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsNonDirectional => true; public override bool IsNonDirectional => true;
public override SkillRangeType SkillRangeType => SkillRangeType.Circle; public override SkillRangeType SkillRangeType => SkillRangeType.Circle;
public override int CanSelectTargetRange => 2; public override int CanSelectTargetRange => 2;
public override double MagicBottleneck => 35 + 24 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -31,6 +31,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 20 + 24 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -13,6 +13,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => 30; public override double CD => 30;
public override double CastTime => 10; public override double CastTime => 10;
public override double HardnessTime { get; set; } = 4; public override double HardnessTime { get; set; } = 4;
public override double MagicBottleneck => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -30,6 +30,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 20 + 24 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {