mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2026-01-19 14:08:23 +00:00
添加更多的技能和特效
This commit is contained in:
parent
72b8b52171
commit
326449345b
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Milimoe.FunGame.Core.Model;
|
||||
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
||||
@ -49,7 +50,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
||||
}
|
||||
}
|
||||
|
||||
public override CharacterActionType AlterActionTypeBeforeAction(Character character, CharacterState state, ref bool canUseItem, ref bool canCastSkill, ref double pUseItem, ref double pCastSkill, ref double pNormalAttack, ref bool forceAction)
|
||||
public override CharacterActionType AlterActionTypeBeforeAction(Character character, DecisionPoints dp, CharacterState state, ref bool canUseItem, ref bool canCastSkill, ref double pUseItem, ref double pCastSkill, ref double pNormalAttack, ref bool forceAction)
|
||||
{
|
||||
forceAction = true;
|
||||
if (_targetCharacter.HP > 0)
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Milimoe.FunGame.Core.Model;
|
||||
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
||||
@ -43,10 +44,10 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
||||
teammates.AddRange(enemys);
|
||||
}
|
||||
|
||||
public override CharacterActionType AlterActionTypeBeforeAction(Character character, CharacterState state, ref bool canUseItem, ref bool canCastSkill, ref double pUseItem, ref double pCastSkill, ref double pNormalAttack, ref bool forceAction)
|
||||
public override CharacterActionType AlterActionTypeBeforeAction(Character character, DecisionPoints dp, CharacterState state, ref bool canUseItem, ref bool canCastSkill, ref double pUseItem, ref double pCastSkill, ref double pNormalAttack, ref bool forceAction)
|
||||
{
|
||||
forceAction = true;
|
||||
return Milimoe.FunGame.Core.Model.GamingQueue.GetActionType(pUseItem, pCastSkill, pNormalAttack);
|
||||
return Milimoe.FunGame.Core.Model.GamingQueue.GetActionType(dp, pUseItem, pCastSkill, pNormalAttack);
|
||||
}
|
||||
|
||||
public override void OnTurnEnd(Character character)
|
||||
|
||||
24
OshimaModules/Effects/SkillEffects/打断施法.cs
Normal file
24
OshimaModules/Effects/SkillEffects/打断施法.cs
Normal file
@ -0,0 +1,24 @@
|
||||
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 => $"打断施法:中断目标正在进行的吟唱。";
|
||||
|
||||
public 打断施法(Skill skill) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character target in targets)
|
||||
{
|
||||
GamingQueue?.InterruptCastingAsync(target, caster);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -100,6 +100,13 @@ 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 绞丝棍(),
|
||||
(long)SkillID.金刚击 => new 金刚击(),
|
||||
(long)SkillID.旋风轮 => new 旋风轮(),
|
||||
(long)SkillID.双连击 => new 双连击(),
|
||||
(long)SuperSkillID.力量爆发 => new 力量爆发(),
|
||||
(long)SuperSkillID.天赐之力 => new 天赐之力(),
|
||||
(long)SuperSkillID.魔法涌流 => new 魔法涌流(),
|
||||
|
||||
@ -41,7 +41,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override void AlterSelectListBeforeAction(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, Dictionary<Character, int> continuousKilling, Dictionary<Character, int> earnedMoney)
|
||||
{
|
||||
猎手标记.Clear();
|
||||
IEnumerable<Character> list = [.. enemys.OrderBy(e => e.HP / e.MaxHP)];
|
||||
IEnumerable<Character> list = [.. enemys.Where(e => e.HP > 0).OrderBy(e => e.HP / e.MaxHP)];
|
||||
if (list.Any())
|
||||
{
|
||||
Character first = list.First();
|
||||
@ -61,7 +61,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
foreach (Character enemy in enemys)
|
||||
{
|
||||
if (Skill.Character != null && ((enemy.HP / enemy.MaxHP) < (Skill.Character.HP / Skill.Character.MaxHP)))
|
||||
if (Skill.Character != null && enemy.HP > 0 && (enemy.HP / enemy.MaxHP) < (Skill.Character.HP / Skill.Character.MaxHP))
|
||||
{
|
||||
猎手标记.Add(enemy);
|
||||
}
|
||||
|
||||
@ -137,7 +137,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
* 旋风轮 = 多目标伤害
|
||||
* 双连击 = 单体2次普通攻击
|
||||
* 绝影 = 单体伤害+迟滞(硬直时间延长),可弱驱散
|
||||
* 胧 = 单体攻击,概率战斗不能(攻击不能+施法不能),需强驱散
|
||||
* 胧 = 单体攻击,概率战斗不能(攻击受限+施法不能),需强驱散
|
||||
* 魔眼 = 单体迟滞(硬直时间延长)、概率混乱(行动受限,如同AI控制行动,回合型),需强驱散
|
||||
* 风之鞭 = 多目标伤害
|
||||
* 拘束之鞭 = 单体伤害+施法解除
|
||||
@ -184,6 +184,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
* 无尽剑制 = 全体伤害
|
||||
* 灾难一掷 = 单体伤害,概率战斗不能
|
||||
* 血腥旋转 = 多目标伤害,概率战斗不能
|
||||
* 疾走 = 提升移动距离
|
||||
* 闪现 = 传送到指定位置
|
||||
*/
|
||||
public enum SkillID : long
|
||||
{
|
||||
@ -241,7 +243,9 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
千剑之雨 = 2052,
|
||||
无尽剑制 = 2053,
|
||||
灾难一掷 = 2054,
|
||||
血腥旋转 = 2055
|
||||
血腥旋转 = 2055,
|
||||
疾走 = 2056,
|
||||
闪现 = 2057
|
||||
}
|
||||
|
||||
/**
|
||||
@ -260,7 +264,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
* 樱花无双击 = 单体伤害+生命偷取
|
||||
* 漆黑之牙 = 全体伤害,此技能击杀敌人时,永久提升该技能伤害
|
||||
* 女王之怒 = 单体伤害+虚弱(伤害降低+护甲魔抗降低+重伤,回合型),可弱驱散
|
||||
* 裁决塔罗 = 多目标伤害+以下状态之一:冻结(完全行动不能+魔法易伤)/混乱(行动受限,如同AI控制行动,回合型)/战斗不能(攻击不能+施法不能),需强驱散
|
||||
* 裁决塔罗 = 多目标伤害+以下状态之一:冻结(完全行动不能+魔法易伤)/混乱(行动受限,如同AI控制行动,回合型)/战斗不能(攻击受限+施法不能),需强驱散
|
||||
* 光明之环 = 我方·全体强驱散+复苏,复苏的回复量为20%;起步消耗100能量,每10能量额外增加护甲魔抗
|
||||
* 圣星光旋 = 全体伤害,概率眩晕(时间型),需强驱散
|
||||
* 炎龙倒海 = 全体伤害,削减能量,减少行动速度和加速系数,推迟当前硬直
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Milimoe.FunGame.Core.Model;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
@ -62,7 +63,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
}
|
||||
}
|
||||
|
||||
public override CharacterActionType AlterActionTypeBeforeAction(Character character, CharacterState state, ref bool canUseItem, ref bool canCastSkill, ref double pUseItem, ref double pCastSkill, ref double pNormalAttack, ref bool forceAction)
|
||||
public override CharacterActionType AlterActionTypeBeforeAction(Character character, DecisionPoints dp, CharacterState state, ref bool canUseItem, ref bool canCastSkill, ref double pUseItem, ref double pCastSkill, ref double pNormalAttack, ref bool forceAction)
|
||||
{
|
||||
pNormalAttack += 0.1;
|
||||
return CharacterActionType.None;
|
||||
|
||||
80
OshimaModules/Skills/战技/助威.cs
Normal file
80
OshimaModules/Skills/战技/助威.cs
Normal file
@ -0,0 +1,80 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
|
||||
|
||||
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 => 75;
|
||||
public override double CD => 35;
|
||||
public override double HardnessTime { get; set; } = 7;
|
||||
public override bool CanSelectSelf => true;
|
||||
public override bool CanSelectTeammate => true;
|
||||
public override bool CanSelectEnemy => false;
|
||||
public override int CanSelectTargetCount => 3;
|
||||
|
||||
public 助威(Character? character = null) : base(SkillType.Skill, character)
|
||||
{
|
||||
CastRange = 5;
|
||||
Effects.Add(new 助威特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 助威特效 : Effect
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"提升目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}友方角色 {ATK * 100:0.##}% 攻击力,持续 {持续时间}。";
|
||||
public override EffectType EffectType => EffectType.DamageBoost;
|
||||
public override DispelledType DispelledType => DispelledType.Weak;
|
||||
|
||||
private string 持续时间 => _durative && _duration > 0 ? 实际持续时间 + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? 实际持续时间 + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}");
|
||||
private double 实际持续时间 => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0);
|
||||
|
||||
private readonly bool _durative = false;
|
||||
private readonly double _duration = 0;
|
||||
private readonly int _durationTurn = 3;
|
||||
private readonly double _levelGrowth = 0;
|
||||
|
||||
private double ATK => Level > 0 ? 0.07 + 0.03 * (Level - 1) : 0.03;
|
||||
|
||||
public 助威特效(Skill skill) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character target in targets)
|
||||
{
|
||||
WriteLine($"[ {target} ] 的攻击力提升了 {ATK * 100:0.##}% [ {target.BaseATK * ATK:0.##} ] 点!持续时间:{持续时间}!");
|
||||
ExATK2 e = new(Skill, new()
|
||||
{
|
||||
{ "exatk", ATK }
|
||||
}, caster);
|
||||
target.Effects.Add(e);
|
||||
if (_durative && _duration > 0)
|
||||
{
|
||||
e.Durative = true;
|
||||
e.Duration = 实际持续时间;
|
||||
e.RemainDuration = 实际持续时间;
|
||||
}
|
||||
else if (!_durative && _durationTurn > 0)
|
||||
{
|
||||
e.Durative = false;
|
||||
e.DurationTurn = (int)实际持续时间;
|
||||
e.RemainDurationTurn = (int)实际持续时间;
|
||||
}
|
||||
e.EffectType = EffectType;
|
||||
e.Source = caster;
|
||||
e.OnEffectGained(target);
|
||||
GamingQueue?.LastRound.AddApplyEffects(target, EffectType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
56
OshimaModules/Skills/战技/双连击.cs
Normal file
56
OshimaModules/Skills/战技/双连击.cs
Normal file
@ -0,0 +1,56 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Milimoe.FunGame.Core.Model;
|
||||
|
||||
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 => 30;
|
||||
public override double HardnessTime { get; set; } = 10;
|
||||
public override bool CanSelectSelf => Character?.NormalAttack.CanSelectSelf ?? false;
|
||||
public override bool CanSelectTeammate => Character?.NormalAttack.CanSelectTeammate ?? false;
|
||||
public override bool CanSelectEnemy => Character?.NormalAttack.CanSelectEnemy ?? true;
|
||||
public override int CanSelectTargetCount => Character?.NormalAttack.CanSelectTargetCount ?? 1;
|
||||
|
||||
public 双连击(Character? character = null) : base(SkillType.Skill, character)
|
||||
{
|
||||
Effects.Add(new 双连击特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 双连击特效 : Effect
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"基于普通攻击的目标选择器对目标发起 2 次普通攻击。若该回合已使用过普通攻击,则只会发起 1 次普通攻击;使用该技能后,该回合不再允许普通攻击。伤害特效可叠加;不受 [ 攻击受限 ] 状态的限制。";
|
||||
|
||||
public 双连击特效(Skill skill) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (GamingQueue != null)
|
||||
{
|
||||
bool hasAttacked = false;
|
||||
if (GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null)
|
||||
{
|
||||
hasAttacked = dp.ActionTypes.Contains(CharacterActionType.NormalAttack);
|
||||
dp.ActionTypes.Add(CharacterActionType.NormalAttack);
|
||||
}
|
||||
caster.NormalAttack.Attack(GamingQueue, caster, targets);
|
||||
if (!hasAttacked)
|
||||
{
|
||||
caster.NormalAttack.Attack(GamingQueue, caster, targets);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
73
OshimaModules/Skills/战技/挑拨.cs
Normal file
73
OshimaModules/Skills/战技/挑拨.cs
Normal file
@ -0,0 +1,73 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
|
||||
|
||||
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 => 65;
|
||||
public override double CD => 55;
|
||||
public override double HardnessTime { get; set; } = 10;
|
||||
public override bool CanSelectSelf => false;
|
||||
public override bool CanSelectTeammate => false;
|
||||
public override bool CanSelectEnemy => true;
|
||||
public override int CanSelectTargetCount => 3;
|
||||
|
||||
public 挑拨(Character? character = null) : base(SkillType.Skill, character)
|
||||
{
|
||||
CastRange = 4;
|
||||
Effects.Add(new 挑拨特效(this));
|
||||
}
|
||||
}
|
||||
|
||||
public class 挑拨特效 : Effect
|
||||
{
|
||||
public override long Id => Skill.Id;
|
||||
public override string Name => Skill.Name;
|
||||
public override string Description => $"对目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}敌方角色施加愤怒状态。愤怒:行动受限且失控,行动回合中无法自主行动,仅能对施法者发起普通攻击。持续 {持续时间}。";
|
||||
public override EffectType EffectType => EffectType.Taunt;
|
||||
public override DispelledType DispelledType => DispelledType.Strong;
|
||||
|
||||
private string 持续时间 => _durative && _duration > 0 ? 实际持续时间 + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? 实际持续时间 + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}");
|
||||
private double 实际持续时间 => _durative && _duration > 0 ? _duration + _levelGrowth * (Level - 1) : (!_durative && _durationTurn > 0 ? _durationTurn + _levelGrowth * (Level - 1) : 0);
|
||||
|
||||
private readonly bool _durative = false;
|
||||
private readonly double _duration = 0;
|
||||
private readonly int _durationTurn = 2;
|
||||
private readonly double _levelGrowth = 0;
|
||||
|
||||
public 挑拨特效(Skill skill) : base(skill)
|
||||
{
|
||||
GamingQueue = skill.GamingQueue;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
foreach (Character target in targets)
|
||||
{
|
||||
WriteLine($"[ {caster} ] 嘲讽了 [ {target} ] ,[ {target} ] 愤怒了!!持续时间:{持续时间}!");
|
||||
愤怒 e = new(Skill, caster, caster);
|
||||
if (_durative && _duration > 0)
|
||||
{
|
||||
e.Durative = true;
|
||||
e.Duration = 实际持续时间;
|
||||
e.RemainDuration = 实际持续时间;
|
||||
}
|
||||
else if (!_durative && _durationTurn > 0)
|
||||
{
|
||||
e.Durative = false;
|
||||
e.DurationTurn = (int)实际持续时间;
|
||||
e.RemainDurationTurn = (int)实际持续时间;
|
||||
}
|
||||
target.Effects.Add(e);
|
||||
e.OnEffectGained(target);
|
||||
GamingQueue?.LastRound.AddApplyEffects(target, e.EffectType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
24
OshimaModules/Skills/战技/旋风轮.cs
Normal file
24
OshimaModules/Skills/战技/旋风轮.cs
Normal file
@ -0,0 +1,24 @@
|
||||
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 => 80;
|
||||
public override double CD => 25;
|
||||
public override double HardnessTime { get; set; } = 8;
|
||||
public override int CanSelectTargetCount => 5;
|
||||
|
||||
public 旋风轮(Character? character = null) : base(SkillType.Skill, character)
|
||||
{
|
||||
CastRange = 6;
|
||||
Effects.Add(new 基于攻击力的伤害_带基础伤害(this, 40, 55, 0.1, 0.03, DamageType.Physical));
|
||||
}
|
||||
}
|
||||
}
|
||||
72
OshimaModules/Skills/战技/疾走.cs
Normal file
72
OshimaModules/Skills/战技/疾走.cs
Normal file
@ -0,0 +1,72 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
|
||||
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 => 25;
|
||||
public override double CD => 15;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
public override bool CanSelectSelf => true;
|
||||
public override bool CanSelectEnemy => false;
|
||||
|
||||
public 疾走(Character? character = null) : base(SkillType.Skill, 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 => $"本回合内大幅提升移动距离。";
|
||||
public override string DispelDescription => "";
|
||||
public override EffectType EffectType => EffectType.Haste;
|
||||
public override bool Durative => false;
|
||||
public override double Duration => 0;
|
||||
public override int DurationTurn => 1;
|
||||
|
||||
private int 移动距离提升
|
||||
{
|
||||
get
|
||||
{
|
||||
return Skill.Level switch
|
||||
{
|
||||
2 or 3 => 2,
|
||||
4 or 5 => 3,
|
||||
6 => 4,
|
||||
_ => 1,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnEffectGained(Character character)
|
||||
{
|
||||
Skill.IsInEffect = true;
|
||||
character.ExMOV += 移动距离提升;
|
||||
}
|
||||
|
||||
public override void OnEffectLost(Character character)
|
||||
{
|
||||
Skill.IsInEffect = false;
|
||||
character.ExMOV -= 移动距离提升;
|
||||
}
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
if (!caster.Effects.Contains(this))
|
||||
{
|
||||
GamingQueue?.LastRound.AddApplyEffects(caster, EffectType);
|
||||
RemainDurationTurn = DurationTurn;
|
||||
caster.Effects.Add(this);
|
||||
OnEffectGained(caster);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,7 @@ 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 => 60;
|
||||
public override double CD => 35;
|
||||
public override double CD => 45;
|
||||
public override double HardnessTime { get; set; } = 5;
|
||||
public override bool CanSelectSelf => true;
|
||||
public override bool CanSelectEnemy => false;
|
||||
|
||||
22
OshimaModules/Skills/战技/绝影.cs
Normal file
22
OshimaModules/Skills/战技/绝影.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
public class 绝影 : Skill
|
||||
{
|
||||
public override long Id => (long)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 => 45;
|
||||
public override double CD => 12;
|
||||
public override double HardnessTime { get; set; } = 7;
|
||||
|
||||
public 绝影(Character? character = null) : base(SkillType.Skill, character)
|
||||
{
|
||||
Effects.Add(new 基于攻击力的伤害_带基础伤害(this, 75, 70, 0.075, 0.055, DamageType.Physical));
|
||||
}
|
||||
}
|
||||
}
|
||||
22
OshimaModules/Skills/战技/绞丝棍.cs
Normal file
22
OshimaModules/Skills/战技/绞丝棍.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Oshima.FunGame.OshimaModules.Effects.SkillEffects;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
public class 绞丝棍 : Skill
|
||||
{
|
||||
public override long Id => (long)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 => 45;
|
||||
public override double CD => 12;
|
||||
public override double HardnessTime { get; set; } = 7;
|
||||
|
||||
public 绞丝棍(Character? character = null) : base(SkillType.Skill, character)
|
||||
{
|
||||
Effects.Add(new 基于攻击力的伤害_带基础伤害(this, 75, 70, 0.075, 0.055, DamageType.Physical));
|
||||
}
|
||||
}
|
||||
}
|
||||
23
OshimaModules/Skills/战技/金刚击.cs
Normal file
23
OshimaModules/Skills/战技/金刚击.cs
Normal 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 => string.Join("", Effects.Select(e => e.Description));
|
||||
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
|
||||
public override double EPCost => 60;
|
||||
public override double CD => 20;
|
||||
public override double HardnessTime { get; set; } = 8;
|
||||
|
||||
public 金刚击(Character? character = null) : base(SkillType.Skill, character)
|
||||
{
|
||||
Effects.Add(new 基于攻击力的伤害_带基础伤害(this, 65, 65, 0.09,0.04, DamageType.Physical));
|
||||
Effects.Add(new 打断施法(this));
|
||||
}
|
||||
}
|
||||
}
|
||||
36
OshimaModules/Skills/战技/闪现.cs
Normal file
36
OshimaModules/Skills/战技/闪现.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
[Obsolete("非指向性技能测试,请勿使用")]
|
||||
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 => 25;
|
||||
public override double CD => 25;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
public override bool IsNonDirectional => true;
|
||||
|
||||
public 闪现(Character? character = null) : base(SkillType.Skill, 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 => $"立即将角色传送到范围内的任意一个没有被角色占据的指定地点。";
|
||||
public override string DispelDescription => "";
|
||||
|
||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -47,21 +47,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
是否是满层伤害 = true;
|
||||
是否是叠加伤害 = true;
|
||||
WriteLine($"[ {character} ] 发动了征服者!");
|
||||
DamageToEnemy(character, enemy, DamageType.True, magicType, 真实伤害 * 层数);
|
||||
WriteLine($"[ {character} ] 发动了征服者的满层效果!");
|
||||
DamageToEnemy(character, enemy, DamageType.True, magicType, 满层伤害);
|
||||
ClearExPrimaryAttribute(character);
|
||||
层数 = 0;
|
||||
允许叠层 = false;
|
||||
}
|
||||
if (!是否是满层伤害 && !是否是叠加伤害 && 层数 < 4)
|
||||
{
|
||||
if (层数 > 0 && enemy.HP > 0)
|
||||
{
|
||||
是否是叠加伤害 = true;
|
||||
WriteLine($"[ {character} ] 发动了征服者!");
|
||||
DamageToEnemy(character, enemy, DamageType.True, magicType, 真实伤害 * 层数);
|
||||
}
|
||||
if (允许叠层)
|
||||
{
|
||||
允许叠层 = false;
|
||||
@ -82,6 +75,12 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
break;
|
||||
}
|
||||
WriteLine($"[ {character} ] 的征服者层数:{层数},获得了 {累计增加:0.##} 点核心属性({CharacterSet.GetPrimaryAttributeName(核心属性)})加成。");
|
||||
if (层数 > 0 && enemy.HP > 0)
|
||||
{
|
||||
是否是叠加伤害 = true;
|
||||
WriteLine($"[ {character} ] 发动了征服者!");
|
||||
DamageToEnemy(character, enemy, DamageType.True, magicType, 真实伤害 * 层数);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,7 +57,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
RecordCharacterApplyEffects(character, EffectType.Haste);
|
||||
|
||||
// 检查是否达到阈值
|
||||
if (character.ActionCoefficient * 100 >= 行动系数阈值)
|
||||
if (character.ActionCoefficient * 100 >= 行动系数阈值 && !冷却中)
|
||||
{
|
||||
Skill.Enable = false;
|
||||
Skill.CurrentCD = 冷却时间;
|
||||
|
||||
@ -58,10 +58,13 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
if (death == Skill.Character && 当前灵魂数量 > 0)
|
||||
{
|
||||
int lost = 当前灵魂数量 / 2;
|
||||
if (lost > 0)
|
||||
{
|
||||
当前灵魂数量 -= lost;
|
||||
WriteLine($"[ {death} ] 因死亡损失了 [ {lost} ] 个灵魂!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnTurnEnd(Character character)
|
||||
{
|
||||
|
||||
@ -46,7 +46,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
FunGameConstant.Characters.Add(new dddovo());
|
||||
FunGameConstant.Characters.Add(new Quduoduo());
|
||||
|
||||
FunGameConstant.Skills.AddRange([new 疾风步()]);
|
||||
FunGameConstant.Skills.AddRange([new 疾风步(), new 疾走(), new 助威(), new 挑拨(), new 绞丝棍(), new 金刚击(), new 旋风轮(), new 双连击()]);
|
||||
|
||||
FunGameConstant.SuperSkills.AddRange([new 嗜血本能(), new 平衡强化(), new 绝对领域(), new 精准打击(), new 三重叠加(), new 变幻之心(), new 力量爆发(), new 能量毁灭(), new 血之狂欢(), new 迅捷之势(), new 天赐之力(), new 魔法涌流()]);
|
||||
|
||||
|
||||
@ -121,12 +121,14 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
c.Level = clevel;
|
||||
c.NormalAttack.Level = mlevel;
|
||||
FunGameService.AddCharacterSkills(c, 1, slevel, slevel);
|
||||
Skill 疾风步 = new 疾风步(c)
|
||||
foreach (Skill skillLoop in FunGameConstant.Skills.Where(s => s is not 疾走).OrderBy(o => Random.Shared.Next()).Take(3))
|
||||
{
|
||||
Level = slevel
|
||||
};
|
||||
c.Skills.Add(疾风步);
|
||||
foreach (Skill skillLoop in FunGameConstant.CommonPassiveSkills)
|
||||
Skill skill = skillLoop.Copy();
|
||||
skill.Character = c;
|
||||
skill.Level = slevel;
|
||||
c.Skills.Add(skill);
|
||||
}
|
||||
foreach (Skill skillLoop in FunGameConstant.CommonPassiveSkills.OrderBy(o => Random.Shared.Next()).Take(3))
|
||||
{
|
||||
Skill passive = skillLoop.Copy();
|
||||
passive.Character = c;
|
||||
@ -343,7 +345,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
break;
|
||||
}
|
||||
|
||||
actionQueue.DisplayQueue();
|
||||
if (isWeb) actionQueue.DisplayQueue();
|
||||
WriteLine("");
|
||||
}
|
||||
|
||||
@ -440,7 +442,6 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
mvpBuilder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
||||
if (stats.TotalTrueDamage > 0 || stats.TotalTakenTrueDamage > 0) mvpBuilder.AppendLine($"总计真实伤害:{stats.TotalTrueDamage:0.##} / 总承受真实伤害:{stats.TotalTakenTrueDamage:0.##}");
|
||||
mvpBuilder.AppendLine($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
||||
mvpBuilder.Append($"{mvp.GetInfo()}");
|
||||
}
|
||||
|
||||
int top = isWeb ? actionQueue.CharacterStatistics.Count : 0; // 回执多少个角色的统计信息
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user