完善魔法效能

This commit is contained in:
milimoe 2026-01-20 01:56:44 +08:00
parent 86b86a19e2
commit b76b263913
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
55 changed files with 105 additions and 66 deletions

View File

@ -45,7 +45,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
return 0; return 0;
} }
List<Character> teammates = GamingQueue.GetTeammates(character); List<Character> teammates = GamingQueue.GetTeammates(character);
if ((character == Source || teammates.Contains(Source)) && enemy.Effects.Any(e => e is )) if ((character == Source || teammates.Contains(Source)) && character.Effects.Any(e => e is ) && enemy.Effects.Any(e => e is ))
{ {
double bonus = damage * 0.25; double bonus = damage * 0.25;
WriteLine($"[ {character} ] 受到了{nameof(时雨标记)}的影响,伤害提高了 {bonus:0.##} 点!"); WriteLine($"[ {character} ] 受到了{nameof(时雨标记)}的影响,伤害提高了 {bonus:0.##} 点!");

View File

@ -84,7 +84,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
Source.Effects.Add(e); Source.Effects.Add(e);
WriteLine($"[ {Source} ] 复制了 [ {killer} ] 的技能:{LastSkill.Name}"); WriteLine($"[ {Source} ] 复制了 [ {killer} ] 的技能:{LastSkill.Name}");
} }
if (killer.Effects.FirstOrDefault(e => e is ) is e2) if (killer.Effects.FirstOrDefault(e => e is && e.Source == Source) is e2)
{ {
e2.RemainDurationTurn = 3; e2.RemainDurationTurn = 3;
} }

View File

@ -15,7 +15,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
private ImmuneType ImmuneType { get; set; } = ImmuneType.None; private ImmuneType ImmuneType { get; set; } = ImmuneType.None;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private DispelledType _dispelledType = DispelledType.Weak; private DispelledType _dispelledType = DispelledType.Weak;
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
public override DispelType DispelType => DispelType.DurativeWeak; public override DispelType DispelType => DispelType.DurativeWeak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durativeWithoutDuration; private readonly bool _durativeWithoutDuration;
private readonly string _durationString; private readonly string _durationString;
private readonly bool _durative; private readonly bool _durative;
@ -51,7 +51,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{ {
isDebuff = false; isDebuff = false;
} }
if (target.Effects.FirstOrDefault(e => e is ) is e && e.DurativeWithoutDuration == _durativeWithoutDuration && e.Durative == _durative && e.IsDebuff == isDebuff) if (target.Effects.FirstOrDefault(e => e is && e.Source == Source) is e && e.DurativeWithoutDuration == _durativeWithoutDuration && e.Durative == _durative && e.IsDebuff == isDebuff)
{ {
if (_duration > e.Duration) e.Duration = _duration; if (_duration > e.Duration) e.Duration = _duration;
if (_durationTurn > e.DurationTurn) e.DurationTurn = _durationTurn; if (_durationTurn > e.DurationTurn) e.DurationTurn = _durationTurn;

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
public override DispelType DispelType => DispelType.DurativeStrong; public override DispelType DispelType => DispelType.DurativeStrong;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durativeWithoutDuration; private readonly bool _durativeWithoutDuration;
private readonly string _durationString; private readonly string _durationString;
private readonly bool _durative; private readonly bool _durative;
@ -51,7 +51,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{ {
isDebuff = false; isDebuff = false;
} }
if (target.Effects.FirstOrDefault(e => e is ) is e && e.DurativeWithoutDuration == _durativeWithoutDuration && e.Durative == _durative && e.IsDebuff == isDebuff) if (target.Effects.FirstOrDefault(e => e is && e.Source == Source) is e && e.DurativeWithoutDuration == _durativeWithoutDuration && e.Durative == _durative && e.IsDebuff == isDebuff)
{ {
if (_duration > e.Duration) e.Duration = _duration; if (_duration > e.Duration) e.Duration = _duration;
if (_durationTurn > e.DurationTurn) e.DurationTurn = _durationTurn; if (_durationTurn > e.DurationTurn) e.DurationTurn = _durationTurn;

View File

@ -1,5 +1,4 @@
using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon; using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects; using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
@ -23,9 +22,9 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
public override DispelledType DispelledType => _dispelledType; public override DispelledType DispelledType => _dispelledType;
public override bool ExemptDuration => true; public override bool ExemptDuration => true;
private double ActualProbability => Level > 0 ? _probability + _probabilityLevelGrowth * (Level - 1) : _probability; private double ActualProbability => Level > 0 ? (_probability + _probabilityLevelGrowth * (Level - 1) * MagicEfficacy) : _probability;
private string => _durative && _duration > 0 ? $"{实际持续时间:0.##}" + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}"); private string => _durative && _duration > 0 ? $"{实际持续时间:0.##}" + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly EffectType _effectType; private readonly EffectType _effectType;
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -68,7 +68,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
caster.Effects.Add(this); caster.Effects.Add(this);
OnEffectGained(caster); OnEffectGained(caster);
} }
if (caster.Effects.FirstOrDefault(e => e is ) is e) if (caster.Effects.FirstOrDefault(e => e is && e.Skill == Skill) is e)
{ {
e.Skill.CurrentCD = 0; e.Skill.CurrentCD = 0;
e.Skill.Enable = true; e.Skill.Enable = true;
@ -116,7 +116,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
return; return;
} }
if (character.Effects.FirstOrDefault(e => e is ) is e) if (character.Effects.FirstOrDefault(e => e is && e.Skill == Skill) is e)
{ {
int count = e..Count; int count = e..Count;
= * count; = * count;

View File

@ -1,5 +1,4 @@
using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon; using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Models; using Oshima.FunGame.OshimaModules.Models;
@ -39,6 +38,20 @@ namespace Oshima.FunGame.OshimaModules.Skills
public const double = 0.6; public const double = 0.6;
public const double = 0.09; public const double = 0.09;
private bool = false;
public override void OnGameStart()
{
if (!)
{
= true;
if (Skill.Character != null)
{
(Skill.Character);
}
}
}
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 (death is gyb) if (death is gyb)
@ -63,11 +76,6 @@ namespace Oshima.FunGame.OshimaModules.Skills
} }
} }
public override void OnTurnStart(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items)
{
(character);
}
public override void OnTimeElapsed(Character character, double elapsed) public override void OnTimeElapsed(Character character, double elapsed)
{ {
if (character == Skill.Character) if (character == Skill.Character)
@ -104,6 +112,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public void (Character character) public void (Character character)
{ {
if (!) return;
int count = .Count; int count = .Count;
if (count < && Skill.Enable) if (count < && Skill.Enable)
{ {

View File

@ -50,7 +50,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override void OnEffectGained(Character character) public override void OnEffectGained(Character character)
{ {
IEnumerable<Effect> effects = character.Effects.Where(e => e is ); IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e) if (effects.Any() && effects.First() is e && e.Skill == Skill)
{ {
e. = true; e. = true;
e. = 3; e. = 3;
@ -61,7 +61,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override void OnEffectLost(Character character) public override void OnEffectLost(Character character)
{ {
IEnumerable<Effect> effects = character.Effects.Where(e => e is ); IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e) if (effects.Any() && effects.First() is e && e.Skill == Skill)
{ {
e. = false; e. = false;
e. = 2; e. = 2;

View File

@ -49,7 +49,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
} }
WriteLine($"[ {character} ] 发动了灵能反射!额外获得了 {实际获得能量值:0.##} 能量,并消除了 2 {GameplayEquilibriumConstant.InGameTime}冷却时间!"); WriteLine($"[ {character} ] 发动了灵能反射!额外获得了 {实际获得能量值:0.##} 能量,并消除了 2 {GameplayEquilibriumConstant.InGameTime}冷却时间!");
IEnumerable<Effect> effects = character.Effects.Where(e => e is ); IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e) if (effects.Any() && effects.First() is e && e.Skill == Skill)
{ {
double = * 3; double = * 3;
character.MP += ; character.MP += ;
@ -92,7 +92,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
= 0; = 0;
IEnumerable<Effect> effects = character.Effects.Where(e => e is ); IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e) if (effects.Any() && effects.First() is e && e.Skill == Skill)
{ {
baseHardnessTime = 0; baseHardnessTime = 0;
isCheckProtected = false; isCheckProtected = false;

View File

@ -77,7 +77,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
} }
} }
if (character == Skill.Character && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical) && enemy.Effects.FirstOrDefault(e => e is ) is e) if (character == Skill.Character && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical) && enemy.Effects.FirstOrDefault(e => e is && e.Skill == Skill) is e)
{ {
(character, enemy, actualDamage, damageType, magicType); (character, enemy, actualDamage, damageType, magicType);
} }
@ -124,7 +124,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
if (GamingQueue != null) if (GamingQueue != null)
{ {
allEnemys = [.. GamingQueue.GetEnemies(character).Where(c => c != character && c != enemy && !targets.Contains(c) && c.HP > 0)]; allEnemys = [.. GamingQueue.GetEnemies(character).Where(c => c != character && c != enemy && !targets.Contains(c) && c.HP > 0)];
targets.AddRange(allEnemys.Where(c => c.Effects.Any(e => e is )).Take(count)); targets.AddRange(allEnemys.Where(c => c.Effects.Any(e => e is && e.Source == character)).Take(count));
if (targets.Count < 3) if (targets.Count < 3)
{ {
count = 3 - targets.Count; count = 3 - targets.Count;

View File

@ -54,7 +54,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override void AfterDamageCalculation(Character character, Character enemy, double damage, double actualDamage, bool isNormalAttack, DamageType damageType, MagicType magicType, DamageResult damageResult) public override void AfterDamageCalculation(Character character, Character enemy, double damage, double actualDamage, bool isNormalAttack, DamageType damageType, MagicType magicType, DamageResult damageResult)
{ {
if (character == Skill.Character && != null && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical) && enemy.Effects.FirstOrDefault(e => e is ) is e) if (character == Skill.Character && != null && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical) && enemy.Effects.FirstOrDefault(e => e is && e.Skill == Skill) is e)
{ {
.(character, enemy, actualDamage, damageType, magicType); .(character, enemy, actualDamage, damageType, magicType);
} }

View File

@ -145,7 +145,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)
{ {
IEnumerable<Effect> effects = caster.Effects.Where(e => e is ); IEnumerable<Effect> effects = caster.Effects.Where(e => e is && e.Skill.Character == Skill.Character);
if (effects.Any()) if (effects.Any())
{ {
if (caster.Effects.Contains(this)) if (caster.Effects.Contains(this))

View File

@ -1,6 +1,5 @@
using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects; using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
namespace Oshima.FunGame.OshimaModules.Skills namespace Oshima.FunGame.OshimaModules.Skills
@ -26,13 +25,13 @@ 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()}在其首个可行动回合的开始阶段进入 [ {nameof(长期监视)} ] 状态,时刻监视着场上的一举一动。当场上有角色死亡时,如果该角色死于技能,则{Skill.SkillOwner()}复制该技能获得使用权,持续 3 回合;如果该角色死于普通攻击,则{Skill.SkillOwner()}的普通攻击将转为魔法伤害并且无视闪避,持续 3 回合。" + public override string Description => $"{Skill.SkillOwner()}在游戏开始时进入 [ {nameof(长期监视)} ] 状态,时刻监视着场上的一举一动。当场上有角色死亡时,如果该角色死于技能,则{Skill.SkillOwner()}复制该技能获得使用权,持续 3 回合;如果该角色死于普通攻击,则{Skill.SkillOwner()}的普通攻击将转为魔法伤害并且无视闪避,持续 3 回合。" +
$"接着,{Skill.SkillOwner()}给予击杀者 [ {nameof(时雨标记)} ]。{Skill.SkillOwner()}在造成魔法伤害时,会基于伤害值的 15% 治疗持有标记的友方角色;{Skill.SkillOwner()}与所有持有标记的友方角色对持有标记的敌方角色的伤害加成提升 25%,并且使持有标记的敌方角色在持续时间内的回合开始阶段,有 65% 概率陷入混乱。" + $"接着,{Skill.SkillOwner()}给予击杀者 [ {nameof(时雨标记)} ]。{Skill.SkillOwner()}在造成魔法伤害时,会基于伤害值的 15% 治疗持有标记的友方角色;{Skill.SkillOwner()}与所有持有标记的友方角色对持有标记的敌方角色的伤害加成提升 25%,并且使持有标记的敌方角色在持续时间内的回合开始阶段,有 65% 概率陷入混乱。" +
$"混乱:进入行动受限状态,失控并随机行动,且在进行攻击指令时,可能会选取友方角色为目标。时雨标记持续 3 回合。"; $"混乱:进入行动受限状态,失控并随机行动,且在进行攻击指令时,可能会选取友方角色为目标。时雨标记持续 3 回合。";
private bool = false; private bool = false;
public override void OnTurnStart(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items) public override void OnGameStart()
{ {
if (!) if (!)
{ {
@ -55,11 +54,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
return; return;
} }
Character[] characters = [.. GamingQueue.GetTeammates(character).Where(c => c.Effects.Any(e => e is ))]; Character[] characters = [.. GamingQueue.GetTeammates(character).Where(c => c.Effects.Any(e => e is && e.Source == character))];
if (characters.Length > 0) if (characters.Length > 0)
{ {
WriteLine($"[ {character} ] 发动了开宫!"); WriteLine($"[ {character} ] 发动了开宫!");
double heal = actualDamage * 0.5; double heal = actualDamage * 0.15;
foreach (Character target in characters) foreach (Character target in characters)
{ {
HealToTarget(character, target, heal); HealToTarget(character, target, heal);
@ -79,7 +78,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
continue; continue;
} }
if (!character.Effects.Any(e => e is )) if (!character.Effects.Any(e => e is && e.Source == Skill.Character))
{ {
Effect e = new (Skill, Skill.Character, character); Effect e = new (Skill, Skill.Character, character);
character.Effects.Add(e); character.Effects.Add(e);

View File

@ -41,7 +41,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool BeforeSkillCasted(Character caster, Skill skill, List<Character> targets, List<Grid> grids, Dictionary<string, object> others) public override bool BeforeSkillCasted(Character caster, Skill skill, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{ {
if (Skill.Character != null && caster.Effects.FirstOrDefault(e => e is ) is effect) if (Skill.Character != null && caster.Effects.FirstOrDefault(e => e is && e.Source == Source) is effect)
{ {
WriteLine($"[ {Skill.Character} ] 高声呼喊:“宫监手,放监!”"); WriteLine($"[ {Skill.Character} ] 高声呼喊:“宫监手,放监!”");
e = new(Skill, Skill.Character, skill) e = new(Skill, Skill.Character, skill)
@ -100,7 +100,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
List<Character> enemies = GamingQueue.GetEnemies(caster); List<Character> enemies = GamingQueue.GetEnemies(caster);
foreach (Character character in GamingQueue.Queue) foreach (Character character in GamingQueue.Queue)
{ {
if (character.Effects.FirstOrDefault(e => e is ) is e) if (character.Effects.FirstOrDefault(e => e is && e.Source == caster) is e)
{ {
e.DispelledType = DispelledType.CannotBeDispelled; e.DispelledType = DispelledType.CannotBeDispelled;
e.RemainDurationTurn = 3; e.RemainDurationTurn = 3;

View File

@ -35,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative = false; private readonly bool _durative = false;
private readonly double _duration = 0; private readonly double _duration = 0;

View File

@ -36,7 +36,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool ExemptDuration => true; public override bool ExemptDuration => true;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative = false; private readonly bool _durative = false;
private readonly double _duration = 0; private readonly double _duration = 0;

View File

@ -19,7 +19,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
CastRange = 4; CastRange = 4;
Effects.Add(new _带基础伤害(this, 60, 45, 0.065, 0.035, DamageType.Physical)); Effects.Add(new _带基础伤害(this, 60, 45, 0.065, 0.035, DamageType.Physical));
Effects.Add(new (this, EffectType.Cripple, false, 0, 1, 0, 0.45, 0.05)); Effects.Add(new (this, EffectType.Cripple, false, 0, 1, 0, 0.2, 0.03));
} }
} }
} }

View File

@ -19,7 +19,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
ExemptionDescription = $"迟滞{SkillSet.GetExemptionDescription(EffectType.Delay)}\r\n混乱{SkillSet.GetExemptionDescription(EffectType.Confusion)}"; ExemptionDescription = $"迟滞{SkillSet.GetExemptionDescription(EffectType.Delay)}\r\n混乱{SkillSet.GetExemptionDescription(EffectType.Confusion)}";
CastRange = 4; CastRange = 4;
Effects.Add(new (this, EffectType.Delay, false, 0, 3, 0, 1, 0, 0.5)); Effects.Add(new (this, EffectType.Delay, false, 0, 3, 0, 1, 0, 0.5));
Effects.Add(new (this, EffectType.Confusion, false, 0, 2, 0, 0.45, 0.05)); Effects.Add(new (this, EffectType.Confusion, false, 0, 2, 0, 0.2, 0.03));
} }
} }
} }

View File

@ -51,6 +51,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 => 13 + 14 * (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 CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 11 + 12 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -32,6 +32,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 13 + 14 * (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 CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 14 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -19,6 +19,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override bool SelectAllTeammates => true; public override bool SelectAllTeammates => true;
public override bool AllowSelectDead => true; public override bool AllowSelectDead => true;
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

@ -38,7 +38,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
Effects.Add(new (this, 75, 15, DamageType.Magical)); Effects.Add(new (this, 75, 15, DamageType.Magical));
Effects.Add(new (this, EffectType.Bleed, true, 3, 0, 0.5, 0.45, 0.05, false, 85.0)); Effects.Add(new (this, EffectType.Bleed, true, 3, 0, 0.5, 0.2, 0.03, false, 85.0));
} }
} }
} }

View File

@ -19,6 +19,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override bool AllowSelectDead => true; public override bool AllowSelectDead => true;
public override double MagicBottleneck => 14 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -71,6 +71,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 => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -21,7 +21,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
Effects.Add(new (this, 45, 20, DamageType.Magical)); Effects.Add(new (this, 45, 20, DamageType.Magical));
Effects.Add(new (this, EffectType.Silence, true, 8, 0, 1.2, 0.45, 0.05)); Effects.Add(new (this, EffectType.Silence, true, 8, 0, 1.2, 0.2, 0.03));
} }
} }
} }

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 => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -18,6 +18,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -34,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -33,6 +33,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 14 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -49,7 +50,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -14,6 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => Level > 0 ? 28 - (1 * (Level - 1)) : 28; public override double CD => Level > 0 ? 28 - (1 * (Level - 1)) : 28;
public override double CastTime => Level > 0 ? 2 + (2 * (Level - 1)) : 2; public override double CastTime => Level > 0 ? 2 + (2 * (Level - 1)) : 2;
public override double HardnessTime { get; set; } = 5; public override double HardnessTime { get; set; } = 5;
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

@ -31,6 +31,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 14 + 14 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -50,7 +51,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsDebuff => true; public override bool IsDebuff => true;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -15,6 +15,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override double CD => Level > 0 ? 38 - (1 * (Level - 1)) : 38; public override double CD => Level > 0 ? 38 - (1 * (Level - 1)) : 38;
public override double CastTime => Level > 0 ? 4 + (0.5 * (Level - 1)) : 4; public override double CastTime => Level > 0 ? 4 + (0.5 * (Level - 1)) : 4;
public override double HardnessTime { get; set; } = 4; public override double HardnessTime { get; set; } = 4;
public override double MagicBottleneck => 15 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -34,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsDebuff => true; public override bool IsDebuff => true;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -17,6 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
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

@ -33,6 +33,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 14 + 14 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -51,7 +52,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsDebuff => false; public override bool IsDebuff => false;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -17,6 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override double MagicBottleneck => 15 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -35,7 +36,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool IsDebuff => false; public override bool IsDebuff => false;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -19,6 +19,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 11 + 12 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -35,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
Effects.Add(new (this, 70, 30, DamageType.Magical)); Effects.Add(new (this, 70, 30, DamageType.Magical));
Effects.Add(new (this, EffectType.Cripple, true, 3, 0, 1, 0.45, 0.05)); Effects.Add(new (this, EffectType.Cripple, true, 3, 0, 1, 0.2, 0.03));
} }
} }
} }

View File

@ -44,6 +44,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 12 + 13 * (Level - 1);
private double { get; set; } = 65; private double { get; set; } = 65;
private double { get; set; } = 65; private double { get; set; } = 65;

View File

@ -17,6 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
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

@ -35,6 +35,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 => 14 + 14 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -52,7 +52,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool ExemptDuration => true; public override bool ExemptDuration => true;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;
private readonly int _durationTurn; private readonly int _durationTurn;

View File

@ -19,6 +19,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override bool SelectAllTeammates => true; public override bool SelectAllTeammates => true;
public override double MagicBottleneck => 14 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {

View File

@ -18,6 +18,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -34,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -33,6 +33,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 14 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -49,7 +50,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -35,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
Effects.Add(new (this, 60, 20, DamageType.Magical)); Effects.Add(new (this, 60, 20, DamageType.Magical));
Effects.Add(new (this, EffectType.Silence, false, 0, 2, 0, 0.45, 0.05)); Effects.Add(new (this, EffectType.Silence, false, 0, 2, 0, 0.2, 0.03));
} }
} }
} }

View File

@ -18,6 +18,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 12 + 13 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -34,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -33,6 +33,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 14 + 15 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -49,7 +50,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -35,8 +35,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
ExemptionDescription = $"冻结{SkillSet.GetExemptionDescription(EffectType.Freeze)}\r\n易伤{SkillSet.GetExemptionDescription(EffectType.Vulnerable)}"; ExemptionDescription = $"冻结{SkillSet.GetExemptionDescription(EffectType.Freeze)}\r\n易伤{SkillSet.GetExemptionDescription(EffectType.Vulnerable)}";
Effects.Add(new (this, 60, 30, DamageType.Magical)); Effects.Add(new (this, 60, 30, DamageType.Magical));
Effects.Add(new (this, EffectType.Freeze, false, 0, 1, 0, 0.45, 0.05)); Effects.Add(new (this, EffectType.Freeze, false, 0, 1, 0, 0.2, 0.03));
Effects.Add(new (this, EffectType.Vulnerable, false, 0, 3, 0, 0.45, 0.05, DamageType.Magical, 0.3)); Effects.Add(new (this, EffectType.Vulnerable, false, 0, 3, 0, 0.2, 0.03, DamageType.Magical, 0.3));
} }
} }
} }

View File

@ -35,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
Effects.Add(new (this, false, 0, 2, 0, 0.45, 0.05)); Effects.Add(new (this, false, 0, 2, 0, 0.2, 0.03));
} }
} }
@ -50,11 +50,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool ExemptDuration => true; public override bool ExemptDuration => true;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private double Damage => Skill.Level > 0 ? + * (Skill.Level - 1) : ; private double Damage => Skill.Level > 0 ? + * (Skill.Level - 1) : ;
private double { get; set; } = 50; private double { get; set; } = 50;
private double { get; set; } = 40; private double { get; set; } = 40;
private double ActualConfusionProbability => Level > 0 ? _confusionProbability + _confusionProbabilityLevelGrowth * (Level - 1) : _confusionProbability; private double ActualConfusionProbability => Level > 0 ? (_confusionProbability + _confusionProbabilityLevelGrowth * (Level - 1) * MagicEfficacy) : _confusionProbability;
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;
private readonly int _durationTurn; private readonly int _durationTurn;

View File

@ -18,6 +18,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => true; public override bool CanSelectTeammate => true;
public override int CanSelectTargetCount => 1; public override int CanSelectTargetCount => 1;
public override double MagicBottleneck => 13 + 14 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -34,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -33,6 +33,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}; };
} }
} }
public override double MagicBottleneck => 15 + 16 * (Level - 1);
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
@ -49,7 +50,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override DispelledType DispelledType => DispelledType.Weak; public override DispelledType DispelledType => DispelledType.Weak;
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}");
private double => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0); private double => _durative && _duration > 0 ? (_duration + _levelGrowth * (Level - 1) * MagicEfficacy) : (!_durative && _durationTurn > 0 ? ((int)Math.Round(_durationTurn + _levelGrowth * (Level - 1) * MagicEfficacy, 0, MidpointRounding.ToPositiveInfinity)) : 0);
private readonly bool _durative; private readonly bool _durative;
private readonly double _duration; private readonly double _duration;

View File

@ -35,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
Effects.Add(new (this, 65, 35, DamageType.Magical)); Effects.Add(new (this, 65, 35, DamageType.Magical));
Effects.Add(new (this, EffectType.Stun, true, 6, 0, 0.7, 0.45, 0.05)); Effects.Add(new (this, EffectType.Stun, true, 6, 0, 0.7, 0.2, 0.03));
} }
} }
} }

View File

@ -591,13 +591,18 @@ namespace Oshima.FunGame.OshimaServers.Service
realCharacter.EP += recoveryEP; realCharacter.EP += recoveryEP;
} }
// 减少所有技能的冷却时间 // 减少所有技能的冷却时间
foreach (Skill skill in realCharacter.Skills) List<Skill> skills = [.. realCharacter.Skills.Union(realCharacter.Items.Where(i => i.Skills.Active != null).Select(i => i.Skills.Active!))];
Milimoe.FunGame.Core.Model.GamingQueue.AddCharacterEquipSlotSkills(realCharacter, skills);
foreach (Skill skill in skills)
{ {
skill.CurrentCD -= seconds; if (skill.CurrentCD > 0)
if (skill.CurrentCD <= 0)
{ {
skill.CurrentCD = 0; skill.CurrentCD -= seconds;
skill.Enable = true; if (skill.CurrentCD <= 0)
{
skill.CurrentCD = 0;
skill.Enable = true;
}
} }
} }
// 移除到时间的特效 // 移除到时间的特效