添加封技和沉默技能

This commit is contained in:
milimoe 2024-11-24 21:16:40 +08:00
parent ae01f8db8c
commit 954144f5b9
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
8 changed files with 137 additions and 3 deletions

View File

@ -42,7 +42,7 @@ namespace Oshima.Core.Utils
Skills.AddRange([new ()]);
Magics.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new ()]);
new (), new (), new (), new ()]);
}
public static List<Item> GenerateMagicCards(int count, QualityType? qualityType = null)

View File

@ -0,0 +1,46 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{
public class : Effect
{
public override long Id => 4103;
public override string Name => "封技";
public override string Description => $"此角色被封技了,不能使用技能(魔法、战技和爆发技)。来自:[ {Source} ] 的 [ {Skill.Name} ]";
public override EffectType EffectType => EffectType.Silence;
public override Character Source => _sourceCharacter;
public override bool Durative => _durative;
public override double Duration => _duration;
public override int DurationTurn => _durationTurn;
private readonly Character _sourceCharacter;
private readonly bool _durative;
private readonly double _duration;
private readonly int _durationTurn;
public (Skill skill, Character sourceCharacter, bool durative = false, double duration = 0, int durationTurn = 1) : base(skill)
{
GamingQueue = skill.GamingQueue;
_sourceCharacter = sourceCharacter;
_durative = durative;
_duration = duration;
_durationTurn = durationTurn;
}
public override void OnEffectGained(Character character)
{
if (_durative) RemainDuration = Duration;
else RemainDurationTurn = DurationTurn;
character.CharacterEffectStates.Add(this, [CharacterState.SkillRestricted]);
character.UpdateCharacterState();
InterruptCasting(character, Source);
}
public override void OnEffectLost(Character character)
{
character.CharacterEffectStates.Remove(this);
character.UpdateCharacterState();
}
}
}

View File

@ -7,7 +7,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} " : "")}友方角色 {SPD:0.##} 点行动速度。";
public override string Description => $"提升目标{(Skill.CanSelectTargetCount > 1 ? $" {Skill.CanSelectTargetCount} " : "")}友方角色 {SPD:0.##} 点行动速度 {持续时间}。";
private double SPD => Level > 0 ? Math.Abs( + * (Level - 1)) : Math.Abs();
private double { get; set; } = 65;

View File

@ -0,0 +1,37 @@
using Milimoe.FunGame.Core.Entity;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{
public class : Effect
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"对目标{(Skill.CanSelectTargetCount > 1 ? $" {Skill.CanSelectTargetCount} " : "")}敌人造成封技 {封技时间},无法使用技能(魔法、战技和爆发技),并打断当前施法。";
private string => _durative && _duration > 0 ? _duration + " 时间" : (!_durative && _durationTurn > 0 ? _durationTurn + " 回合" : "0 时间");
private readonly bool _durative;
private readonly double _duration;
private readonly int _durationTurn;
public (Skill skill, bool durative = false, double duration = 0, int durationTurn = 1) : base(skill)
{
GamingQueue = skill.GamingQueue;
_durative = durative;
_duration = duration;
_durationTurn = durationTurn;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{
WriteLine($"[ {caster} ] 对 [ {enemy} ] 造成了封技和施法解除!持续时间:{封技时间}");
e = new(Skill, caster, false, 0, 1);
enemy.Effects.Add(e);
e.OnEffectGained(enemy);
GamingQueue?.LastRound.Effects.TryAdd(enemy, e.EffectType);
}
}
}
}

View File

@ -7,7 +7,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} " : "")}敌人 {Math.Abs(SPD):0.##} 点行动速度。";
public override string Description => $"降低目标{(Skill.CanSelectTargetCount > 1 ? $" {Skill.CanSelectTargetCount} " : "")}敌人 {Math.Abs(SPD):0.##} 点行动速度 {持续时间}。";
private double SPD => Level > 0 ? -Math.Abs( + * (Level - 1)) : -Math.Abs();
private double { get; set; } = 30;

View File

@ -40,6 +40,8 @@ namespace Oshima.FunGame.OshimaModules
(long)MagicID. => new (),
(long)MagicID. => new (),
(long)MagicID. => new (),
(long)MagicID. => new (),
(long)MagicID. => new (),
(long)SkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),

View File

@ -0,0 +1,27 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)MagicID.;
public override string Name => "反魔法领域";
public override string Description => Effects.Count > 0 ? string.Join("\r\n", Effects.Select(e => e.Description)) : "";
public override double MPCost => Level > 0 ? 85 + (80 * (Level - 1)) : 85;
public override double CD => Level > 0 ? 75 + (2 * (Level - 1)) : 75;
public override double CastTime => 15;
public override double HardnessTime { get; set; } = 10;
public override List<Character> SelectTargets(Character caster, List<Character> enemys, List<Character> teammates)
{
return [.. enemys];
}
public (Character? character = null) : base(SkillType.Magic, character)
{
Effects.Add(new (this, true, 15, 0));
}
}
}

View File

@ -0,0 +1,22 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)MagicID.;
public override string Name => "沉默十字";
public override string Description => Effects.Count > 0 ? string.Join("\r\n", Effects.Select(e => e.Description)) : "";
public override double MPCost => Level > 0 ? 65 + (65 * (Level - 1)) : 65;
public override double CD => Level > 0 ? 65 + (1.5 * (Level - 1)) : 65;
public override double CastTime => 10;
public override double HardnessTime { get; set; } = 10;
public (Character? character = null) : base(SkillType.Magic, character)
{
Effects.Add(new (this, false, 0, 2));
}
}
}