非指向性技能测试和添加更多技能

This commit is contained in:
milimoe 2026-01-06 02:01:05 +08:00
parent 3119b3a4c5
commit 30c10595dd
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
82 changed files with 383 additions and 102 deletions

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -28,7 +29,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{
@ -37,8 +38,9 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
{
await base.OnSkillCasted(user, targets, others);
foreach (Character target in targets)
{
target.EP += ;

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -28,7 +29,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{
@ -37,8 +38,9 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
{
await base.OnSkillCasted(user, targets, others);
foreach (Character target in targets)
{
target.EXP += ;

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -34,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{
@ -42,8 +43,9 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
{
await base.OnSkillCasted(user, targets, others);
foreach (Character target in targets)
{
target.HP += ;

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -34,7 +35,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{
@ -42,8 +43,9 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
{
await base.OnSkillCasted(user, targets, others);
foreach (Character target in targets)
{
target.HP += * (target?.MaxHP ?? 0);

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -28,7 +29,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{
@ -37,8 +38,9 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
{
await base.OnSkillCasted(user, targets, others);
foreach (Character target in targets)
{
target.MP += ;

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -28,7 +29,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{
@ -38,8 +39,9 @@ namespace Oshima.FunGame.OshimaModules.Effects.ItemEffects
}
}
public override void OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(User user, List<Character> targets, Dictionary<string, object> others)
{
await base.OnSkillCasted(user, targets, others);
foreach (Character target in targets)
{
target.MP += * (target?.MaxHP ?? 0);

View File

@ -8,7 +8,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{
public override long Id => (long)PassiveEffectID.;
public override string Name => "持续性弱驱散";
public override string Description => $"此角色正在被持续性弱驱散。来自:[ {Source} ] 的 [ {Skill.Name} ]";
public override string Description => $"此角色正在被持续性弱驱散。无法保护吟唱动作。来自:[ {Source} ] 的 [ {Skill.Name} ]";
public override EffectType EffectType => EffectType.WeakDispelling;
public override DispelType DispelType => DispelType.DurativeWeak;
public override Character Source => _sourceCharacter;

View File

@ -8,7 +8,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{
public override long Id => (long)PassiveEffectID.;
public override string Name => "持续性强驱散";
public override string Description => $"此角色正在被持续性强驱散。来自:[ {Source} ] 的 [ {Skill.Name} ]";
public override string Description => $"此角色正在被持续性强驱散。无法保护吟唱动作。来自:[ {Source} ] 的 [ {Skill.Name} ]";
public override EffectType EffectType => EffectType.StrongDispelling;
public override DispelType DispelType => DispelType.DurativeStrong;
public override Character Source => _sourceCharacter;

View File

@ -1,5 +1,6 @@
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Oshima.FunGame.OshimaModules.Skills;
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
@ -26,7 +27,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
this. = Calculation.PercentageCheck();
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
double total = 0;
foreach (Character target in targets)

View File

@ -1,5 +1,6 @@
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Oshima.FunGame.OshimaModules.Skills;
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
@ -26,7 +27,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
this. = Calculation.PercentageCheck();
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
double total = 0;
foreach (Character target in targets)

View File

@ -1,5 +1,6 @@
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Oshima.FunGame.OshimaModules.Skills;
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
@ -26,7 +27,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
this. = Calculation.PercentageCheck();
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
double total = 0;
foreach (Character target in targets)

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -48,7 +49,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
MagicType = magicType;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -30,7 +31,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
MagicType = magicType;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -25,7 +26,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
MagicType = magicType;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -30,7 +31,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
MagicType = magicType;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -21,7 +22,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
this. = ;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -21,7 +22,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
this. = ;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -29,7 +30,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_durationTurn = durationTurn;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -21,7 +22,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
this. = ;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -29,7 +30,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_durationTurn = durationTurn;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -16,7 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
GamingQueue = skill.GamingQueue;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
Dictionary<Character, bool> isTeammateDictionary = GamingQueue?.GetIsTeammateDictionary(caster, targets) ?? [];
foreach (Character target in targets)

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -16,7 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
GamingQueue = skill.GamingQueue;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
Dictionary<Character, bool> isTeammateDictionary = GamingQueue?.GetIsTeammateDictionary(caster, targets) ?? [];
foreach (Character target in targets)

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{
@ -13,11 +14,11 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
GamingQueue = skill.GamingQueue;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{
GamingQueue?.InterruptCastingAsync(target, caster);
InterruptCasting(target, caster);
}
}
}

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -29,7 +30,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_durationTurn = durationTurn;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -37,7 +38,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
};
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -9,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"持续弱驱散{Skill.TargetDescription()}{(_durativeWithoutDuration ? _durationString : $" {}")}。\r\n持续性驱散是持续性临时驱散它会在持续时间结束之后恢复目标尚未结束的特效。";
public override string Description => $"持续弱驱散{Skill.TargetDescription()}{(_durativeWithoutDuration ? _durationString : $" {}")}。\r\n持续性驱散是持续性临时驱散它会在持续时间结束之后恢复目标尚未结束的特效。无法保护吟唱动作。";
public override DispelType DispelType => DispelType.DurativeWeak;
private string => _durative && _duration > 0 ? + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}");
@ -35,7 +36,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
Dictionary<Character, bool> isTeammateDictionary = GamingQueue?.GetIsTeammateDictionary(caster, targets) ?? [];
foreach (Character target in targets)

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -9,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"持续强驱散{Skill.TargetDescription()}{(_durativeWithoutDuration ? _durationString : $" {}")}。\r\n持续性驱散是持续性临时驱散它会在持续时间结束之后恢复目标尚未结束的特效。";
public override string Description => $"持续强驱散{Skill.TargetDescription()}{(_durativeWithoutDuration ? _durationString : $" {}")}。\r\n持续性驱散是持续性临时驱散它会在持续时间结束之后恢复目标尚未结束的特效。无法保护吟唱动作。";
public override DispelType DispelType => DispelType.DurativeStrong;
private string => _durative && _duration > 0 ? + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}");
@ -35,7 +36,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
Dictionary<Character, bool> isTeammateDictionary = GamingQueue?.GetIsTeammateDictionary(caster, targets) ?? [];
foreach (Character target in targets)

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -48,7 +49,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
SetDescription();
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Oshima.FunGame.OshimaModules.Skills;
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
@ -22,7 +23,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
CanRespawn = canRespawn;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Skills;
@ -24,7 +25,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
MagicType = magicType;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Oshima.FunGame.OshimaModules.Skills;
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
@ -22,7 +23,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
CanRespawn = canRespawn;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -26,7 +27,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
@ -36,7 +37,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_durationDamagePercent = durationDamagePercent;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -28,7 +29,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -51,7 +52,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_healingReductionPercentLevelGrowth = healingReductionPercentLevelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character enemy in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Skills;
@ -29,7 +30,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
_durationTurn = durationTurn;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -100,7 +100,6 @@ namespace Oshima.FunGame.OshimaModules
(long)MagicID. => new (),
(long)MagicID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
@ -110,6 +109,13 @@ namespace Oshima.FunGame.OshimaModules
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -51,7 +52,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -68,12 +69,12 @@ namespace Oshima.FunGame.OshimaModules.Skills
return false;
}
public override void OnSkillCasting(Character caster, List<Character> targets)
public override void OnSkillCasting(Character caster, List<Character> targets, List<Grid> grids)
{
= caster.EP;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -55,7 +56,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
character.PhysicalPenetration -= 穿;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -67,7 +68,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
= ;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -142,7 +143,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
IEnumerable<Effect> effects = caster.Effects.Where(e => e is );
if (effects.Any())

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -57,7 +58,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -71,7 +72,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
baseHardnessTime *= 0.3;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -42,7 +43,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
private double => * Skill.Character?.INT ?? 0;
private double => 1 * Level;
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character c in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -41,7 +42,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
@ -6,30 +7,92 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public static string TargetDescription(this Skill skill)
{
if (skill.IsNonDirectional)
{
return skill.RangeTargetDescription();
}
string str;
if (skill.SelectAllTeammates)
{
return "友方全体角色";
str = "友方全体角色";
}
else if (skill.SelectAllEnemies)
{
return "敌方全体角色";
str = "敌方全体角色";
}
if (skill.CanSelectTeammate && !skill.CanSelectEnemy)
{
return $"目标{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}友方角色{(!skill.CanSelectSelf ? "" : "")}";
str = $"目标{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}友方角色{(!skill.CanSelectSelf ? "" : "")}";
}
else if (!skill.CanSelectTeammate && skill.CanSelectEnemy)
{
return $"目标{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}敌方角色";
str = $"目标{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}敌方角色";
}
else if (!skill.CanSelectTeammate && !skill.CanSelectEnemy && skill.CanSelectSelf)
{
return $"自身";
str = $"自身";
}
else
{
return $"{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}目标";
str = $"{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}目标";
}
if (skill.CanSelectTargetRange > 0)
{
str += $"以及以{(skill.CanSelectTargetCount > 1 ? "" : "")}目标为中心,半径为 {skill.CanSelectTargetRange} 格的菱形区域中的等同阵营角色";
}
return str;
}
public static string RangeTargetDescription(this Skill skill)
{
string str = "";
int range = skill.CanSelectTargetRange;
if (range <= 0)
{
str = "目标地点";
}
else
{
switch (skill.SkillRangeType)
{
case SkillRangeType.Diamond:
str = "目标菱形区域";
break;
case SkillRangeType.Circle:
str = "目标圆形区域";
break;
case SkillRangeType.Square:
str = "目标正方形区域";
break;
case SkillRangeType.Line:
str = "与目标地点之间的直线区域";
break;
case SkillRangeType.LinePass:
str = "贯穿目标地点直至地图边缘的直线区域";
break;
case SkillRangeType.Sector:
str = "目标扇形区域";
break;
default:
break;
}
}
if (skill.SelectIncludeCharacterGrid)
{
str = "可包含被角色占据的" + str;
}
else
{
str = "不被角色占据的";
}
return str;
}
}
}

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
@ -83,7 +84,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
baseHardnessTime *= 0.8;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -65,7 +66,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
return 0;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -65,7 +66,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
character.Recovery(pastHP, pastMP, pastMaxHP, pastMaxMP);
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))

View File

@ -0,0 +1,25 @@
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)SkillID.;
public override string Name => "养命功";
public override string Description => string.Join("", Effects.Select(e => e.Description));
public override string DispelDescription => Effects.Count > 0 ? Effects.First(e => e is ).DispelDescription : "";
public override double EPCost => 55;
public override double CD => 45;
public override double HardnessTime { get; set; } = 10;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => false;
public (Character? character = null) : base(SkillType.Skill, character)
{
Effects.Add(new (this, durationTurn: 3));
}
}
}

View File

@ -0,0 +1,23 @@
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)SkillID.;
public override string Name => "剑风闪";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 70;
public override double CD => 28;
public override double HardnessTime { get; set; } = 10;
public override int CanSelectTargetRange => 2;
public (Character? character = null) : base(SkillType.Skill, character)
{
Effects.Add(new _带基础伤害(this, 55, 50, 0.1, 0.035, DamageType.Physical));
}
}
}

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -48,7 +49,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
GamingQueue = skill.GamingQueue;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
@ -35,7 +36,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
GamingQueue = skill.GamingQueue;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
if (GamingQueue != null)
{

View File

@ -0,0 +1,29 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)SkillID.;
public override string Name => "回复弹";
public override string Description => string.Join("", Effects.Select(e => e.Description));
public override string DispelDescription => Effects.Count > 0 ? Effects.First(e => e is ).DispelDescription : "";
public override double EPCost => 50;
public override double CD => 45;
public override double HardnessTime { get; set; } = 9;
public override bool CanSelectSelf => true;
public override bool CanSelectTeammate => true;
public override bool CanSelectEnemy => false;
public override int CanSelectTargetCount => 1;
public (Character? character = null) : base(SkillType.Skill, character)
{
CastRange = 4;
Effects.Add(new (this, 200, 150));
Effects.Add(new (this));
}
}
}

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)SkillID.;
public override string Name => "天堂之吻";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 60;
public override double CD => 40;
public override double HardnessTime { get; set; } = 10;
public override bool CanSelectSelf => true;
public override bool CanSelectTeammate => true;
public override bool CanSelectEnemy => false;
public override int CanSelectTargetCount => 2;
public (Character? character = null) : base(SkillType.Skill, character)
{
CastRange = 5;
Effects.Add(new (this, 120, 50, duration: 20));
}
}
}

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
@ -46,7 +47,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
GamingQueue = skill.GamingQueue;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
@ -61,7 +62,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
character.ExMOV -= ;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
= 0;
if (!caster.Effects.Contains(this))

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
@ -74,7 +75,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
return 0;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
if (!caster.Effects.Contains(this))
{

View File

@ -0,0 +1,25 @@
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)SkillID.;
public override string Name => "镜花水月";
public override string Description => string.Join("", Effects.Select(e => e.Description));
public override string DispelDescription => Effects.Count > 0 ? Effects.First(e => e is ).DispelDescription : "";
public override double EPCost => 70;
public override double CD => 40;
public override double HardnessTime { get; set; } = 10;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => false;
public (Character? character = null) : base(SkillType.Skill, character)
{
Effects.Add(new (this, ImmuneType.All, false, 0, 2));
}
}
}

View File

@ -1,9 +1,9 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
[Obsolete("非指向性技能测试,请勿使用")]
public class : Skill
{
public override long Id => (long)SkillID.;
@ -11,12 +11,18 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 25;
public override double CD => 25;
public override double CD => 35 - 1.5 * Level;
public override double HardnessTime { get; set; } = 3;
public override bool IsNonDirectional => true;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public override bool CanSelectTeammate => false;
public override int CanSelectTargetRange => 0;
public override bool SelectIncludeCharacterGrid => false;
public (Character? character = null) : base(SkillType.Skill, character)
{
CastRange = 7;
Effects.Add(new (this));
}
}
@ -28,9 +34,12 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => $"立即将角色传送到范围内的任意一个没有被角色占据的指定地点。";
public override string DispelDescription => "";
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
if (GamingQueue?.Map is GameMap map && grids.Count > 0)
{
map.CharacterMove(caster, map.GetCharacterCurrentGrid(caster), grids[0]);
}
}
}
}

View File

@ -12,7 +12,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string DispelDescription => Effects.FirstOrDefault(e => e is )?.DispelDescription ?? "";
public override double MPCost => Level > 0 ? 110 + (95 * (Level - 1)) : 110;
public override double CD => Level > 0 ? 110 - (2 * (Level - 1)) : 110;
public override double CastTime => 7;
public override double CastTime => 5;
public override double HardnessTime { get; set; } = 7;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
@ -111,7 +112,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
_targets = targets;
foreach (Character target in targets)

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -51,7 +52,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -66,7 +67,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -74,7 +75,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_accLevelGrowth = accLevelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -58,7 +59,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_accLevelGrowth = accLevelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -77,7 +78,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_accLevelGrowth = accLevelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -61,7 +62,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_accLevelGrowth = accLevelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
@ -40,12 +41,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
return Level switch
{
3 => 2,
4 => 2,
5 => 2,
6 => 3,
7 => 3,
8 => 3,
3 or 4 or 5 => 2,
6 or 7 or 8 => 3,
_ => 1
};
}
@ -56,12 +53,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
GamingQueue = skill.GamingQueue;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
new (Skill, ImmuneType.Magical, false, 0, ).OnSkillCasted(caster, targets, others);
Effect effect = new (Skill, ImmuneType.Magical, false, 0, );
await effect.OnSkillCasted(caster, targets, grids, others);
if (Level > 4)
{
new (Skill, ImmuneType.Skilled, false, 0, 1).OnSkillCasted(caster, targets, others);
effect = new (Skill, ImmuneType.Skilled, false, 0, 1);
await effect.OnSkillCasted(caster, targets, grids, others);
}
}
}

View File

@ -11,7 +11,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => string.Join("", Effects.Select(e => e.Description));
public override double MPCost => Level > 0 ? 80 + (85 * (Level - 1)) : 80;
public override double CD => Level > 0 ? 80 - (1 * (Level - 1)) : 80;
public override double CastTime => Level > 0 ? 5 + (0.25 * (Level - 1)) : 5;
public override double CastTime => Level > 0 ? 3 + (0.25 * (Level - 1)) : 3;
public override double HardnessTime { get; set; } = 6;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;

View File

@ -11,7 +11,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => string.Join("", Effects.Select(e => e.Description));
public override double MPCost => Level > 0 ? 85 + (90 * (Level - 1)) : 85;
public override double CD => Level > 0 ? 92 - (1 * (Level - 1)) : 92;
public override double CastTime => Level > 0 ? 6 + (0.25 * (Level - 1)) : 6;
public override double CastTime => Level > 0 ? 3 + (0.25 * (Level - 1)) : 3;
public override double HardnessTime { get; set; } = 7;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
@ -67,7 +68,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_MDFReductionPercentLevelGrowth = MDFReductionPercentLevelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -53,7 +54,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -68,7 +69,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -52,7 +53,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -67,7 +68,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
@ -69,7 +70,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_confusionProbabilityLevelGrowth = confusionProbabilityLevelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -52,7 +53,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -1,4 +1,5 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
@ -67,7 +68,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
_levelGrowth = levelGrowth;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
public override async Task OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
foreach (Character target in targets)
{

View File

@ -46,7 +46,8 @@ namespace Oshima.FunGame.OshimaServers.Service
FunGameConstant.Characters.Add(new dddovo());
FunGameConstant.Characters.Add(new Quduoduo());
FunGameConstant.Skills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new ()]);
FunGameConstant.Skills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new ()]);
FunGameConstant.SuperSkills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new (), new ()]);

View File

@ -2,7 +2,9 @@
using System.Text;
using System.Text.Json;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Controller;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Interface.Base;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;