mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-04-22 03:49:35 +08:00
添加了伤害类特效和回复生命特效;为伤害类技能统一了特效
This commit is contained in:
parent
91196ff656
commit
200cee9e84
@ -752,7 +752,7 @@ namespace Oshima.Core.Utils
|
||||
|
||||
Skills.AddRange([new 疾风步()]);
|
||||
|
||||
Magics.AddRange([new 冰霜攻击(), new 火之矢(), new 水之矢(), new 风之轮(), new 石之锤(), new 心灵之霞(), new 次元上升(), new 暗物质()]);
|
||||
Magics.AddRange([new 冰霜攻击(), new 火之矢(), new 水之矢(), new 风之轮(), new 石之锤(), new 心灵之霞(), new 次元上升(), new 暗物质(), new 回复术(), new 治愈术()]);
|
||||
}
|
||||
|
||||
public static void UpdateStatistics(CharacterStatistics totalStats, CharacterStatistics stats)
|
||||
|
61
OshimaModules/Effects/SkillEffects/基于属性的伤害.cs
Normal file
61
OshimaModules/Effects/SkillEffects/基于属性的伤害.cs
Normal file
@ -0,0 +1,61 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
|
||||
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 => $"对目标{(TargetCount > 1 ? $"至多 {TargetCount} 个" : "")}敌人造成 {BaseDamage:0.##} + {AttributeCoefficient * 100:0.##}% {CharacterSet.GetPrimaryAttributeName(基于属性)} [ {Damage:0.##} ] 点{(IsMagic ? CharacterSet.GetMagicDamageName(MagicType) : "物理伤害")}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount { get; set; } = 1;
|
||||
private double BaseDamage => Skill.Level > 0 ? 基础数值伤害 + 基础伤害等级成长 * (Skill.Level - 1) : 基础数值伤害;
|
||||
private double AttributeCoefficient => Skill.Level > 0 ? 基础属性系数 + 基础系数等级成长 * (Skill.Level - 1) : 基础属性系数;
|
||||
private double Damage
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Skill.Character != null)
|
||||
{
|
||||
double paValue = 基于属性 switch
|
||||
{
|
||||
PrimaryAttribute.STR => Skill.Character.STR,
|
||||
PrimaryAttribute.AGI => Skill.Character.AGI,
|
||||
_ => Skill.Character.INT,
|
||||
};
|
||||
return BaseDamage + AttributeCoefficient * paValue;
|
||||
}
|
||||
return BaseDamage;
|
||||
}
|
||||
}
|
||||
|
||||
private PrimaryAttribute 基于属性 { get; set; } = PrimaryAttribute.INT;
|
||||
private double 基础数值伤害 { get; set; } = 100;
|
||||
private double 基础伤害等级成长 { get; set; } = 50;
|
||||
private double 基础属性系数 { get; set; } = 0.4;
|
||||
private double 基础系数等级成长 { get; set; } = 0.4;
|
||||
private bool IsMagic { get; set; } = true;
|
||||
|
||||
public 基于属性的伤害(Skill skill, PrimaryAttribute 基于属性, double 基础数值伤害, double 基础伤害等级成长, double 基础属性系数, double 基础系数等级成长, bool isMagic = true, MagicType magicType = MagicType.None, int targetCount = 1) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
this.基于属性 = 基于属性;
|
||||
this.基础数值伤害 = 基础数值伤害;
|
||||
this.基础伤害等级成长 = 基础伤害等级成长;
|
||||
this.基础属性系数 = 基础属性系数;
|
||||
this.基础系数等级成长 = 基础系数等级成长;
|
||||
IsMagic = isMagic;
|
||||
MagicType = magicType;
|
||||
TargetCount = targetCount;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character enemy in targets)
|
||||
{
|
||||
DamageToEnemy(caster, enemy, IsMagic, MagicType, Damage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
43
OshimaModules/Effects/SkillEffects/基于攻击力的伤害_带基础伤害.cs
Normal file
43
OshimaModules/Effects/SkillEffects/基于攻击力的伤害_带基础伤害.cs
Normal file
@ -0,0 +1,43 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
|
||||
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 => $"对目标{(TargetCount > 1 ? $"至多 {TargetCount} 个" : "")}敌人造成 {BaseDamage:0.##} + {ATKCoefficient * 100:0.##}% 攻击力 [ {Damage:0.##} ] 点{(IsMagic ? CharacterSet.GetMagicDamageName(MagicType) : "物理伤害")}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount { get; set; } = 1;
|
||||
private double BaseDamage => Skill.Level > 0 ? 基础数值伤害 + 基础伤害等级成长 * (Skill.Level - 1) : 基础数值伤害;
|
||||
private double ATKCoefficient => Skill.Level > 0 ? 基础攻击力系数 + 基础系数等级成长 * (Skill.Level - 1) : 基础攻击力系数;
|
||||
private double Damage => BaseDamage + (ATKCoefficient * Skill.Character?.ATK ?? 0);
|
||||
|
||||
private double 基础数值伤害 { get; set; } = 100;
|
||||
private double 基础伤害等级成长 { get; set; } = 50;
|
||||
private double 基础攻击力系数 { get; set; } = 0.2;
|
||||
private double 基础系数等级成长 { get; set; } = 0.2;
|
||||
private bool IsMagic { get; set; } = true;
|
||||
|
||||
public 基于攻击力的伤害_带基础伤害(Skill skill, double 基础数值伤害, double 基础伤害等级成长, double 基础攻击力系数, double 基础系数等级成长, bool isMagic = true, MagicType magicType = MagicType.None, int targetCount = 1) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
this.基础数值伤害 = 基础数值伤害;
|
||||
this.基础伤害等级成长 = 基础伤害等级成长;
|
||||
this.基础攻击力系数 = 基础攻击力系数;
|
||||
this.基础系数等级成长 = 基础系数等级成长;
|
||||
IsMagic = isMagic;
|
||||
MagicType = magicType;
|
||||
TargetCount = targetCount;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character enemy in targets)
|
||||
{
|
||||
DamageToEnemy(caster, enemy, IsMagic, MagicType, Damage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
38
OshimaModules/Effects/SkillEffects/基于攻击力的伤害_无基础伤害.cs
Normal file
38
OshimaModules/Effects/SkillEffects/基于攻击力的伤害_无基础伤害.cs
Normal file
@ -0,0 +1,38 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
|
||||
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 => $"对目标{(TargetCount > 1 ? $"至多 {TargetCount} 个" : "")}敌人造成 {ATKCoefficient * 100:0.##}% 攻击力 [ {Damage:0.##} ] 点{(IsMagic ? CharacterSet.GetMagicDamageName(MagicType) : "物理伤害")}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount { get; set; } = 1;
|
||||
private double ATKCoefficient => Skill.Level > 0 ? 基础攻击力系数 + 基础系数等级成长 * (Skill.Level - 1) : 基础攻击力系数;
|
||||
private double Damage => ATKCoefficient * Skill.Character?.ATK ?? 0;
|
||||
|
||||
private double 基础攻击力系数 { get; set; } = 1.5;
|
||||
private double 基础系数等级成长 { get; set; } = 0.25;
|
||||
private bool IsMagic { get; set; } = true;
|
||||
|
||||
public 基于攻击力的伤害_无基础伤害(Skill skill, double 基础攻击力系数, double 基础系数等级成长, bool isMagic = true, MagicType magicType = MagicType.None, int targetCount = 1) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
this.基础攻击力系数 = 基础攻击力系数;
|
||||
this.基础系数等级成长 = 基础系数等级成长;
|
||||
IsMagic = isMagic;
|
||||
MagicType = magicType;
|
||||
TargetCount = targetCount;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character enemy in targets)
|
||||
{
|
||||
DamageToEnemy(caster, enemy, IsMagic, MagicType, Damage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
43
OshimaModules/Effects/SkillEffects/基于核心属性的伤害.cs
Normal file
43
OshimaModules/Effects/SkillEffects/基于核心属性的伤害.cs
Normal file
@ -0,0 +1,43 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
|
||||
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 => $"对目标{(TargetCount > 1 ? $"至多 {TargetCount} 个" : "")}敌人造成 {BaseDamage:0.##} + {AttributeCoefficient * 100:0.##}% {CharacterSet.GetPrimaryAttributeName(Skill.Character?.PrimaryAttribute ?? PrimaryAttribute.INT)} [ {Damage:0.##} ] 点{(IsMagic ? CharacterSet.GetMagicDamageName(MagicType) : "物理伤害")}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount { get; set; } = 1;
|
||||
private double BaseDamage => Skill.Level > 0 ? 基础数值伤害 + 基础伤害等级成长 * (Skill.Level - 1) : 基础数值伤害;
|
||||
private double AttributeCoefficient => Skill.Level > 0 ? 基础属性系数 + 基础系数等级成长 * (Skill.Level - 1) : 基础属性系数;
|
||||
private double Damage => BaseDamage + (AttributeCoefficient * Skill.Character?.PrimaryAttributeValue ?? 0);
|
||||
|
||||
private double 基础数值伤害 { get; set; } = 100;
|
||||
private double 基础伤害等级成长 { get; set; } = 50;
|
||||
private double 基础属性系数 { get; set; } = 0.4;
|
||||
private double 基础系数等级成长 { get; set; } = 0.4;
|
||||
private bool IsMagic { get; set; } = true;
|
||||
|
||||
public 基于核心属性的伤害(Skill skill, double 基础数值伤害, double 基础伤害等级成长, double 基础属性系数, double 基础系数等级成长, bool isMagic = true, MagicType magicType = MagicType.None, int targetCount = 1) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
this.基础数值伤害 = 基础数值伤害;
|
||||
this.基础伤害等级成长 = 基础伤害等级成长;
|
||||
this.基础属性系数 = 基础属性系数;
|
||||
this.基础系数等级成长 = 基础系数等级成长;
|
||||
IsMagic = isMagic;
|
||||
MagicType = magicType;
|
||||
TargetCount = targetCount;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character enemy in targets)
|
||||
{
|
||||
DamageToEnemy(caster, enemy, IsMagic, MagicType, Damage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
36
OshimaModules/Effects/SkillEffects/百分比回复生命值.cs
Normal file
36
OshimaModules/Effects/SkillEffects/百分比回复生命值.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
|
||||
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 => $"为{(TargetCount > 1 ? $"至多 {TargetCount} 个" : "")}目标回复其最大生命值 {百分比 * 100:0.##}% [ {Heal:0.##} ] 点生命值。";
|
||||
public override bool TargetSelf => true;
|
||||
public override int TargetCount { get; set; } = 1;
|
||||
|
||||
private double Heal => Skill.Level > 0 ? 百分比 * (Skill.Character?.MaxHP ?? 0) : 0;
|
||||
private double 基础回复 { get; set; } = 0.03;
|
||||
private double 回复成长 { get; set; } = 0.03;
|
||||
private double 百分比 => Skill.Level > 0 ? 基础回复 + 回复成长 * (Skill.Level - 1) : 基础回复;
|
||||
private bool CanRespawn { get; set; } = false;
|
||||
|
||||
public 百分比回复生命值(Skill skill, double 基础回复, double 回复成长, int targetCount = 1, bool canRespawn = false) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
this.基础回复 = 基础回复;
|
||||
this.回复成长 = 回复成长;
|
||||
TargetCount = targetCount;
|
||||
CanRespawn = canRespawn;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character target in targets)
|
||||
{
|
||||
HealToTarget(caster, target, Heal, CanRespawn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
37
OshimaModules/Effects/SkillEffects/纯数值伤害.cs
Normal file
37
OshimaModules/Effects/SkillEffects/纯数值伤害.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
|
||||
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 => $"对目标{(TargetCount > 1 ? $"至多 {TargetCount} 个" : "")}敌人造成 {Damage:0.##} 点{(IsMagic ? CharacterSet.GetMagicDamageName(MagicType) : "物理伤害")}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount { get; set; } = 1;
|
||||
private double Damage => Skill.Level > 0 ? 基础数值伤害 + 基础伤害等级成长 * (Skill.Level - 1) : 基础数值伤害;
|
||||
|
||||
private double 基础数值伤害 { get; set; } = 200;
|
||||
private double 基础伤害等级成长 { get; set; } = 100;
|
||||
private bool IsMagic { get; set; } = true;
|
||||
|
||||
public 纯数值伤害(Skill skill, double 基础数值伤害, double 基础伤害等级成长, bool isMagic = true, MagicType magicType = MagicType.None, int targetCount = 1) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
this.基础数值伤害 = 基础数值伤害;
|
||||
this.基础伤害等级成长 = 基础伤害等级成长;
|
||||
IsMagic = isMagic;
|
||||
MagicType = magicType;
|
||||
TargetCount = targetCount;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character enemy in targets)
|
||||
{
|
||||
DamageToEnemy(caster, enemy, IsMagic, MagicType, Damage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
35
OshimaModules/Effects/SkillEffects/纯数值回复生命值.cs
Normal file
35
OshimaModules/Effects/SkillEffects/纯数值回复生命值.cs
Normal file
@ -0,0 +1,35 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
|
||||
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 => $"为{(TargetCount > 1 ? $"至多 {TargetCount} 个" : "")}目标回复 {Heal:0.##} 点生命值。";
|
||||
public override bool TargetSelf => true;
|
||||
public override int TargetCount { get; set; } = 1;
|
||||
|
||||
private double Heal => Skill.Level > 0 ? 基础回复 + 回复成长 * (Skill.Level - 1) : 基础回复;
|
||||
private double 基础回复 { get; set; } = 100;
|
||||
private double 回复成长 { get; set; } = 30;
|
||||
private bool CanRespawn { get; set; } = false;
|
||||
|
||||
public 纯数值回复生命(Skill skill, double 基础回复, double 回复成长, int targetCount = 1, bool canRespawn = false) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
this.基础回复 = 基础回复;
|
||||
this.回复成长 = 回复成长;
|
||||
TargetCount = targetCount;
|
||||
CanRespawn = canRespawn;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character target in targets)
|
||||
{
|
||||
HealToTarget(caster, target, Heal, CanRespawn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -35,6 +35,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 天赐之力(),
|
||||
|
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -8,37 +9,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.冰霜攻击;
|
||||
public override string Name => "冰霜攻击";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => 30 + (50 * (Level - 1));
|
||||
public override double MPCost => Level > 0 ? 50 + (50 * (Level - 1)) : 50;
|
||||
public override double CD => 25;
|
||||
public override double CastTime => 8;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
|
||||
public 冰霜攻击(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
Effects.Add(new 冰霜攻击特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 冰霜攻击特效(Skill skill) : Effect(skill)
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标敌人造成 {基础伤害:0.##} + {系数 * 100:0.##}% 智力 {(Skill.Level == 0 ? $"(+{等级系数 * 100:0.##}%/Lv)" : "")} [ {Damage:0.##} ] 点{CharacterSet.GetMagicDamageName(MagicType)}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount => 1;
|
||||
|
||||
private static double 等级系数 => 0.4;
|
||||
private double 基础伤害 => Skill.Level != 0 ? 90 + 60 * (Skill.Level - 1) : 90;
|
||||
private double 系数 => Skill.Level != 0 ? 0.35 + 等级系数 * (Skill.Level - 1) : 0.35;
|
||||
private double Damage => 基础伤害 + 系数 * Skill.Character?.INT ?? 0;
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (targets.Count > 0)
|
||||
{
|
||||
Character enemy = targets[0];
|
||||
DamageToEnemy(caster, enemy, true, MagicType, Damage);
|
||||
}
|
||||
Effects.Add(new 基于属性的伤害(this, PrimaryAttribute.INT, 90, 60, 0.35, 0.4));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
27
OshimaModules/Skills/魔法/回复术.cs
Normal file
27
OshimaModules/Skills/魔法/回复术.cs
Normal 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 ? Effects.First().Description : "";
|
||||
public override double MPCost => Level > 0 ? 40 + (60 * (Level - 1)) : 40;
|
||||
public override double CD => 35;
|
||||
public override double CastTime => 3;
|
||||
public override double HardnessTime { get; set; } = 5;
|
||||
public override bool CanSelectSelf => true;
|
||||
public override bool CanSelectEnemy => false;
|
||||
public override bool CanSelectTeammate => true;
|
||||
public override int CanSelectTargetCount => 1;
|
||||
|
||||
public 回复术(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
SelectTargetPredicates.Add(c => c.HP > 0 && c.HP < c.MaxHP);
|
||||
Effects.Add(new 纯数值回复生命(this, 70, 120));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -8,37 +9,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.心灵之霞;
|
||||
public override string Name => "心灵之霞";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => 30 + (50 * (Level - 1));
|
||||
public override double CD => 25;
|
||||
public override double MPCost => Level > 0 ? 35 + (50 * (Level - 1)) : 35;
|
||||
public override double CD => 30;
|
||||
public override double CastTime => 6;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
|
||||
public 心灵之霞(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
Effects.Add(new 心灵之霞特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 心灵之霞特效(Skill skill) : Effect(skill)
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标敌人造成 {基础伤害:0.##} + {系数 * 100:0.##}% 智力 {(Skill.Level == 0 ? $"(+{等级系数 * 100:0.##}%/Lv)" : "")} [ {Damage:0.##} ] 点{CharacterSet.GetMagicDamageName(MagicType)}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount => 1;
|
||||
|
||||
private static double 等级系数 => 0.6;
|
||||
private double 基础伤害 => Skill.Level != 0 ? 90 + 60 * (Skill.Level - 1) : 90;
|
||||
private double 系数 => Skill.Level != 0 ? 0.5 + 等级系数 * (Skill.Level - 1) : 0.5;
|
||||
private double Damage => 基础伤害 + 系数 * Skill.Character?.INT ?? 0;
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (targets.Count > 0)
|
||||
{
|
||||
Character enemy = targets[0];
|
||||
DamageToEnemy(caster, enemy, true, MagicType, Damage);
|
||||
}
|
||||
Effects.Add(new 基于属性的伤害(this, PrimaryAttribute.INT, 80, 55, 0.5, 0.6));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -8,37 +9,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.暗物质;
|
||||
public override string Name => "暗物质";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => 30 + (50 * (Level - 1));
|
||||
public override double CD => 25;
|
||||
public override double CastTime => 6;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
public override double MPCost => Level > 0 ? 65 + (80 * (Level - 1)) : 65;
|
||||
public override double CD => 35;
|
||||
public override double CastTime => 10;
|
||||
public override double HardnessTime { get; set; } = 4;
|
||||
|
||||
public 暗物质(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
Effects.Add(new 暗物质特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 暗物质特效(Skill skill) : Effect(skill)
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标敌人造成 {基础伤害:0.##} + {系数 * 100:0.##}% 智力 {(Skill.Level == 0 ? $"(+{等级系数 * 100:0.##}%/Lv)" : "")} [ {Damage:0.##} ] 点{CharacterSet.GetMagicDamageName(MagicType)}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount => 1;
|
||||
|
||||
private static double 等级系数 => 0.6;
|
||||
private double 基础伤害 => Skill.Level != 0 ? 90 + 60 * (Skill.Level - 1) : 90;
|
||||
private double 系数 => Skill.Level != 0 ? 0.5 + 等级系数 * (Skill.Level - 1) : 0.5;
|
||||
private double Damage => 基础伤害 + 系数 * Skill.Character?.INT ?? 0;
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (targets.Count > 0)
|
||||
{
|
||||
Character enemy = targets[0];
|
||||
DamageToEnemy(caster, enemy, true, MagicType, Damage);
|
||||
}
|
||||
Effects.Add(new 基于攻击力的伤害_无基础伤害(this, 1.5, 0.35, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -8,37 +9,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.次元上升;
|
||||
public override string Name => "次元上升";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => 30 + (50 * (Level - 1));
|
||||
public override double CD => 25;
|
||||
public override double CastTime => 6;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
public override double MPCost => Level > 0 ? 60 + (45 * (Level - 1)) : 60;
|
||||
public override double CD => 30;
|
||||
public override double CastTime => 10;
|
||||
public override double HardnessTime { get; set; } = 5;
|
||||
|
||||
public 次元上升(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
Effects.Add(new 次元上升特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 次元上升特效(Skill skill) : Effect(skill)
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标敌人造成 {基础伤害:0.##} + {系数 * 100:0.##}% 智力 {(Skill.Level == 0 ? $"(+{等级系数 * 100:0.##}%/Lv)" : "")} [ {Damage:0.##} ] 点{CharacterSet.GetMagicDamageName(MagicType)}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount => 1;
|
||||
|
||||
private static double 等级系数 => 0.6;
|
||||
private double 基础伤害 => Skill.Level != 0 ? 90 + 60 * (Skill.Level - 1) : 90;
|
||||
private double 系数 => Skill.Level != 0 ? 0.5 + 等级系数 * (Skill.Level - 1) : 0.5;
|
||||
private double Damage => 基础伤害 + 系数 * Skill.Character?.INT ?? 0;
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (targets.Count > 0)
|
||||
{
|
||||
Character enemy = targets[0];
|
||||
DamageToEnemy(caster, enemy, true, MagicType, Damage);
|
||||
}
|
||||
Effects.Add(new 基于攻击力的伤害_带基础伤害(this, 90, 110, 0.5, 0.3));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -8,37 +9,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.水之矢;
|
||||
public override string Name => "水之矢";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => 30 + (40 * (Level - 1));
|
||||
public override double MPCost => Level > 0 ? 30 + (40 * (Level - 1)) : 30;
|
||||
public override double CD => 20;
|
||||
public override double CastTime => 6;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
|
||||
public 水之矢(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
Effects.Add(new 水之矢特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 水之矢特效(Skill skill) : Effect(skill)
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标敌人造成 {基础伤害:0.##} + {系数 * 100:0.##}% {CharacterSet.GetPrimaryAttributeName(Skill.Character?.PrimaryAttribute ?? PrimaryAttribute.INT)} {(Skill.Level == 0 ? $"(+{等级系数 * 100:0.##}%/Lv)" : "")} [ {Damage:0.##} ] 点{CharacterSet.GetMagicDamageName(MagicType)}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount => 1;
|
||||
|
||||
private static double 等级系数 => 0.45;
|
||||
private double 基础伤害 => Skill.Level != 0 ? 85 + 65 * (Skill.Level - 1) : 85;
|
||||
private double 系数 => Skill.Level != 0 ? 0.35 + 等级系数 * (Skill.Level - 1) : 0.35;
|
||||
private double Damage => 基础伤害 + 系数 * Skill.Character?.PrimaryAttributeValue ?? 0;
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (targets.Count > 0)
|
||||
{
|
||||
Character enemy = targets[0];
|
||||
DamageToEnemy(caster, enemy, true, MagicType, Damage);
|
||||
}
|
||||
Effects.Add(new 基于核心属性的伤害(this, 85, 65, 0.35, 0.45));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
27
OshimaModules/Skills/魔法/治愈术.cs
Normal file
27
OshimaModules/Skills/魔法/治愈术.cs
Normal 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 ? Effects.First().Description : "";
|
||||
public override double MPCost => Level > 0 ? 60 + (65 * (Level - 1)) : 60;
|
||||
public override double CD => 40;
|
||||
public override double CastTime => 5;
|
||||
public override double HardnessTime { get; set; } = 7;
|
||||
public override bool CanSelectSelf => true;
|
||||
public override bool CanSelectEnemy => false;
|
||||
public override bool CanSelectTeammate => true;
|
||||
public override int CanSelectTargetCount => 1;
|
||||
|
||||
public 治愈术(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
SelectTargetPredicates.Add(c => c.HP > 0 && c.HP < c.MaxHP);
|
||||
Effects.Add(new 百分比回复生命值(this, 0.3, 0.3));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -8,37 +9,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.火之矢;
|
||||
public override string Name => "火之矢";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => 30 + (40 * (Level - 1));
|
||||
public override double MPCost => Level > 0 ? 30 + (40 * (Level - 1)) : 30;
|
||||
public override double CD => 20;
|
||||
public override double CastTime => 6;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
|
||||
public 火之矢(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
Effects.Add(new 火之矢特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 火之矢特效(Skill skill) : Effect(skill)
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标敌人造成 {基础伤害:0.##} + {系数 * 100:0.##}% {CharacterSet.GetPrimaryAttributeName(Skill.Character?.PrimaryAttribute ?? PrimaryAttribute.INT)} {(Skill.Level == 0 ? $"(+{等级系数 * 100:0.##}%/Lv)" : "")} [ {Damage:0.##} ] 点{CharacterSet.GetMagicDamageName(MagicType)}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount => 1;
|
||||
|
||||
private static double 等级系数 => 0.35;
|
||||
private double 基础伤害 => Skill.Level != 0 ? 80 + 65 * (Skill.Level - 1) : 80;
|
||||
private double 系数 => Skill.Level != 0 ? 0.45 + 等级系数 * (Skill.Level - 1) : 0.45;
|
||||
private double Damage => 基础伤害 + 系数 * Skill.Character?.PrimaryAttributeValue ?? 0;
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (targets.Count > 0)
|
||||
{
|
||||
Character enemy = targets[0];
|
||||
DamageToEnemy(caster, enemy, true, MagicType, Damage);
|
||||
}
|
||||
Effects.Add(new 基于核心属性的伤害(this, 80, 65, 0.45, 0.35));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -8,37 +9,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.石之锤;
|
||||
public override string Name => "石之锤";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => 30 + (30 * (Level - 1));
|
||||
public override double MPCost => Level > 0 ? 35 + (30 * (Level - 1)) : 35;
|
||||
public override double CD => 22;
|
||||
public override double CastTime => 6;
|
||||
public override double HardnessTime { get; set; } = 4;
|
||||
|
||||
public 石之锤(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
Effects.Add(new 石之锤特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 石之锤特效(Skill skill) : Effect(skill)
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标敌人造成 {基础伤害:0.##} + {系数 * 100:0.##}% 力量 {(Skill.Level == 0 ? $"(+{等级系数 * 100:0.##}%/Lv)" : "")} [ {Damage:0.##} ] 点{CharacterSet.GetMagicDamageName(MagicType)}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount => 1;
|
||||
|
||||
private static double 等级系数 => 0.4;
|
||||
private double 基础伤害 => Skill.Level != 0 ? 100 + 50 * (Skill.Level - 1) : 100;
|
||||
private double 系数 => Skill.Level != 0 ? 0.7 + 等级系数 * (Skill.Level - 1) : 0.7;
|
||||
private double Damage => 基础伤害 + 系数 * Skill.Character?.STR ?? 0;
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (targets.Count > 0)
|
||||
{
|
||||
Character enemy = targets[0];
|
||||
DamageToEnemy(caster, enemy, true, MagicType, Damage);
|
||||
}
|
||||
Effects.Add(new 基于属性的伤害(this, PrimaryAttribute.STR, 100, 50, 0.55, 0.4));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -8,37 +9,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.风之轮;
|
||||
public override string Name => "风之轮";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => 50 + (60 * (Level - 1));
|
||||
public override double MPCost => Level > 0 ? 50 + (60 * (Level - 1)) : 50;
|
||||
public override double CD => 30;
|
||||
public override double CastTime => 10;
|
||||
public override double HardnessTime { get; set; } = 4;
|
||||
|
||||
public 风之轮(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
Effects.Add(new 风之轮特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 风之轮特效(Skill skill) : Effect(skill)
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标敌人造成 {基础伤害:0.##} + {系数 * 100:0.##}% 敏捷 {(Skill.Level == 0 ? $"(+{等级系数 * 100:0.##}%/Lv)" : "")} [ {Damage:0.##} ] 点{CharacterSet.GetMagicDamageName(MagicType)}。";
|
||||
public override bool TargetSelf => false;
|
||||
public override int TargetCount => 1;
|
||||
|
||||
private static double 等级系数 => 0.4;
|
||||
private double 基础伤害 => Skill.Level != 0 ? 120 + 80 * (Skill.Level - 1) : 120;
|
||||
private double 系数 => Skill.Level != 0 ? 0.4 + 等级系数 * (Skill.Level - 1) : 0.4;
|
||||
private double Damage => 基础伤害 + 系数 * Skill.Character?.AGI ?? 0;
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (targets.Count > 0)
|
||||
{
|
||||
Character enemy = targets[0];
|
||||
DamageToEnemy(caster, enemy, true, MagicType, Damage);
|
||||
}
|
||||
Effects.Add(new 基于属性的伤害(this, PrimaryAttribute.AGI, 120, 80, 0.4, 0.4));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user