mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-04-22 03:59:35 +08:00
为技能系统添加更多功能;删除SkillFactory
This commit is contained in:
parent
780979fa5b
commit
42e5042154
@ -1,15 +0,0 @@
|
|||||||
using Milimoe.FunGame.Core.Entity;
|
|
||||||
using Milimoe.FunGame.Core.Interface.Base;
|
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Core.Api.Factory
|
|
||||||
{
|
|
||||||
internal class SkillFactory : IFactory<Skill>
|
|
||||||
{
|
|
||||||
public Type EntityType => typeof(Skill);
|
|
||||||
|
|
||||||
public Skill Create()
|
|
||||||
{
|
|
||||||
return new();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -296,6 +296,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
|
|
||||||
// 基础硬直时间
|
// 基础硬直时间
|
||||||
double baseTime = 10;
|
double baseTime = 10;
|
||||||
|
bool isCheckProtected = true;
|
||||||
|
|
||||||
// 敌人列表
|
// 敌人列表
|
||||||
List<Character> enemys = [.. _queue.Where(c => c != character && !c.IsUnselectable)];
|
List<Character> enemys = [.. _queue.Where(c => c != character && !c.IsUnselectable)];
|
||||||
@ -419,7 +420,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
baseTime = character.NormalAttack.HardnessTime;
|
baseTime = character.NormalAttack.HardnessTime;
|
||||||
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
||||||
{
|
{
|
||||||
effect.AlterHardnessTimeAfterNormalAttack(character, ref baseTime);
|
effect.AlterHardnessTimeAfterNormalAttack(character, ref baseTime, ref isCheckProtected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -434,25 +435,25 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
character.CharacterState = CharacterState.Casting;
|
character.CharacterState = CharacterState.Casting;
|
||||||
_castingSkills.Add(character, skill);
|
_castingSkills.Add(character, skill);
|
||||||
baseTime = skill.CastTime;
|
baseTime = skill.CastTime;
|
||||||
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
skill.OnSkillCasting(this, character);
|
||||||
{
|
|
||||||
effect.OnSkillCasting(character);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (CheckCanCast(character, skill, out double cost))
|
if (CheckCanCast(character, skill, out double cost))
|
||||||
{
|
{
|
||||||
|
skill.OnSkillCasting(this, character);
|
||||||
|
|
||||||
character.EP = Calculation.Round2Digits(character.EP - cost);
|
character.EP = Calculation.Round2Digits(character.EP - cost);
|
||||||
baseTime = skill.HardnessTime;
|
baseTime = skill.HardnessTime;
|
||||||
skill.CurrentCD = Calculation.Round2Digits(Math.Max(1, skill.CD * (1 - character.CDR)));
|
skill.CurrentCD = Calculation.Round2Digits(Math.Max(1, skill.CD * (1 - character.CDR)));
|
||||||
skill.Enable = false;
|
skill.Enable = false;
|
||||||
|
|
||||||
WriteLine("[ " + character + $" ] 消耗了 {cost:f2} 点能量,释放了{(skill.IsSuperSkill ? "爆发技" : "战技")} {skill.Name}!");
|
WriteLine("[ " + character + $" ] 消耗了 {cost:f2} 点能量,释放了{(skill.IsSuperSkill ? "爆发技" : "战技")} {skill.Name}!");
|
||||||
skill.Trigger(this, character, enemys, teammates);
|
skill.OnSkillCasted(this, character, enemys, teammates);
|
||||||
|
|
||||||
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
||||||
{
|
{
|
||||||
effect.AlterHardnessTimeAfterCastSkill(character, ref baseTime);
|
effect.AlterHardnessTimeAfterCastSkill(character, ref baseTime, ref isCheckProtected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -473,7 +474,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
skill.Enable = false;
|
skill.Enable = false;
|
||||||
|
|
||||||
WriteLine("[ " + character + $" ] 消耗了 {cost:f2} 点魔法值,释放了技能 {skill.Name}!");
|
WriteLine("[ " + character + $" ] 消耗了 {cost:f2} 点魔法值,释放了技能 {skill.Name}!");
|
||||||
skill.Trigger(this, character, enemys, teammates);
|
skill.OnSkillCasted(this, character, enemys, teammates);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -484,7 +485,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
|
|
||||||
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
||||||
{
|
{
|
||||||
effect.AlterHardnessTimeAfterCastSkill(character, ref baseTime);
|
effect.AlterHardnessTimeAfterCastSkill(character, ref baseTime, ref isCheckProtected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (type == CharacterActionType.CastSuperSkill)
|
else if (type == CharacterActionType.CastSuperSkill)
|
||||||
@ -503,7 +504,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
skill.Enable = false;
|
skill.Enable = false;
|
||||||
|
|
||||||
WriteLine("[ " + character + $" ] 消耗了 {cost:f2} 点能量值,释放了爆发技 {skill.Name}!");
|
WriteLine("[ " + character + $" ] 消耗了 {cost:f2} 点能量值,释放了爆发技 {skill.Name}!");
|
||||||
skill.Trigger(this, character, enemys, teammates);
|
skill.OnSkillCasted(this, character, enemys, teammates);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -514,7 +515,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
|
|
||||||
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
||||||
{
|
{
|
||||||
effect.AlterHardnessTimeAfterCastSkill(character, ref baseTime);
|
effect.AlterHardnessTimeAfterCastSkill(character, ref baseTime, ref isCheckProtected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (type == CharacterActionType.UseItem)
|
else if (type == CharacterActionType.UseItem)
|
||||||
@ -543,7 +544,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
newHardnessTime = Math.Max(0, Calculation.Round2Digits(baseTime * (1 - character.AccelerationCoefficient)));
|
newHardnessTime = Math.Max(0, Calculation.Round2Digits(baseTime * (1 - character.AccelerationCoefficient)));
|
||||||
WriteLine("[ " + character + " ] 进行吟唱,持续时间: " + newHardnessTime);
|
WriteLine("[ " + character + " ] 进行吟唱,持续时间: " + newHardnessTime);
|
||||||
}
|
}
|
||||||
AddCharacter(character, newHardnessTime);
|
AddCharacter(character, newHardnessTime, isCheckProtected);
|
||||||
|
|
||||||
// 有人想要插队吗?
|
// 有人想要插队吗?
|
||||||
WillPreCastSuperSkill(character);
|
WillPreCastSuperSkill(character);
|
||||||
@ -616,19 +617,19 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
{
|
{
|
||||||
character.HP = Calculation.Round2Digits(character.HP + reallyReHP);
|
character.HP = Calculation.Round2Digits(character.HP + reallyReHP);
|
||||||
character.MP = Calculation.Round2Digits(character.MP + reallyReMP);
|
character.MP = Calculation.Round2Digits(character.MP + reallyReMP);
|
||||||
WriteLine("角色 " + character.Name + " 回血:" + recoveryHP + " / " + "回蓝:" + recoveryMP);
|
WriteLine("角色 " + character.NickName + " 回血:" + recoveryHP + " / " + "回蓝:" + recoveryMP);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (reallyReHP > 0)
|
if (reallyReHP > 0)
|
||||||
{
|
{
|
||||||
character.HP = Calculation.Round2Digits(character.HP + reallyReHP);
|
character.HP = Calculation.Round2Digits(character.HP + reallyReHP);
|
||||||
WriteLine("角色 " + character.Name + " 回血:" + recoveryHP);
|
WriteLine("角色 " + character.NickName + " 回血:" + recoveryHP);
|
||||||
}
|
}
|
||||||
if (reallyReMP > 0)
|
if (reallyReMP > 0)
|
||||||
{
|
{
|
||||||
character.MP = Calculation.Round2Digits(character.MP + reallyReMP);
|
character.MP = Calculation.Round2Digits(character.MP + reallyReMP);
|
||||||
WriteLine("角色 " + character.Name + " 回蓝:" + recoveryMP);
|
WriteLine("角色 " + character.NickName + " 回蓝:" + recoveryMP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -689,13 +690,18 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
/// <param name="damageResult"></param>
|
/// <param name="damageResult"></param>
|
||||||
public void DamageToEnemy(Character actor, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage = false, MagicType magicType = MagicType.None, DamageResult damageResult = DamageResult.Normal)
|
public void DamageToEnemy(Character actor, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage = false, MagicType magicType = MagicType.None, DamageResult damageResult = DamageResult.Normal)
|
||||||
{
|
{
|
||||||
|
bool isEvaded = damageResult == DamageResult.Evaded;
|
||||||
foreach (Effect effect in actor.Effects.Union(enemy.Effects).Where(e => e.Level > 0).ToList())
|
foreach (Effect effect in actor.Effects.Union(enemy.Effects).Where(e => e.Level > 0).ToList())
|
||||||
{
|
{
|
||||||
effect.AlterActualDamageAfterCalculation(actor, enemy, ref damage, isNormalAttack, isMagicDamage, magicType, damageResult);
|
if (effect.AlterActualDamageAfterCalculation(actor, enemy, ref damage, isNormalAttack, isMagicDamage, magicType, damageResult))
|
||||||
|
{
|
||||||
|
isEvaded = true;
|
||||||
|
damageResult = DamageResult.Evaded;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 闪避了就没伤害了
|
// 闪避了就没伤害了
|
||||||
if (damageResult != DamageResult.Evaded)
|
if (!isEvaded)
|
||||||
{
|
{
|
||||||
if (damage < 0) damage = 0;
|
if (damage < 0) damage = 0;
|
||||||
if (isMagicDamage)
|
if (isMagicDamage)
|
||||||
@ -728,7 +734,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
{
|
{
|
||||||
effect.AfterDamageCalculation(actor, enemy, damage, isNormalAttack, isMagicDamage, magicType, damageResult);
|
effect.AfterDamageCalculation(actor, enemy, damage, isNormalAttack, isMagicDamage, magicType, damageResult);
|
||||||
}
|
}
|
||||||
if (enemy.HP <= 0)
|
if (enemy.HP <= 0 && !_eliminated.Contains(enemy))
|
||||||
{
|
{
|
||||||
DeathCalculation(actor, enemy);
|
DeathCalculation(actor, enemy);
|
||||||
// 给所有角色的特效广播角色死亡结算
|
// 给所有角色的特效广播角色死亡结算
|
||||||
@ -766,6 +772,17 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public DamageResult CalculatePhysicalDamage(Character actor, Character enemy, bool isNormalAttack, double expectedDamage, out double finalDamage)
|
public DamageResult CalculatePhysicalDamage(Character actor, Character enemy, bool isNormalAttack, double expectedDamage, out double finalDamage)
|
||||||
{
|
{
|
||||||
|
bool isMagic = false;
|
||||||
|
MagicType magicType = MagicType.None;
|
||||||
|
foreach(Effect effect in actor.Effects.Union(enemy.Effects).Where(e => e.Level > 0).ToList())
|
||||||
|
{
|
||||||
|
effect.AlterDamageTypeBeforeCalculation(actor, enemy, ref isNormalAttack, ref isMagic, ref magicType);
|
||||||
|
}
|
||||||
|
if (isMagic)
|
||||||
|
{
|
||||||
|
return CalculateMagicalDamage(actor, enemy, isNormalAttack, magicType, expectedDamage, out finalDamage);
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Effect effect in actor.Effects.Union(enemy.Effects).Where(e => e.Level > 0).ToList())
|
foreach (Effect effect in actor.Effects.Union(enemy.Effects).Where(e => e.Level > 0).ToList())
|
||||||
{
|
{
|
||||||
effect.AlterExpectedDamageBeforeCalculation(actor, enemy, ref expectedDamage, isNormalAttack, false, MagicType.None);
|
effect.AlterExpectedDamageBeforeCalculation(actor, enemy, ref expectedDamage, isNormalAttack, false, MagicType.None);
|
||||||
@ -782,7 +799,10 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
bool isAlterEvaded = false;
|
bool isAlterEvaded = false;
|
||||||
foreach (Effect effect in characters.SelectMany(c => c.Effects.Where(e => e.Level > 0).ToList()))
|
foreach (Effect effect in characters.SelectMany(c => c.Effects.Where(e => e.Level > 0).ToList()))
|
||||||
{
|
{
|
||||||
isAlterEvaded = effect.OnEvadedTriggered(actor, enemy, dice);
|
if (effect.OnEvadedTriggered(actor, enemy, dice))
|
||||||
|
{
|
||||||
|
isAlterEvaded = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!isAlterEvaded)
|
if (!isAlterEvaded)
|
||||||
{
|
{
|
||||||
@ -830,6 +850,16 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public DamageResult CalculateMagicalDamage(Character actor, Character enemy, bool isNormalAttack, MagicType magicType, double expectedDamage, out double finalDamage)
|
public DamageResult CalculateMagicalDamage(Character actor, Character enemy, bool isNormalAttack, MagicType magicType, double expectedDamage, out double finalDamage)
|
||||||
{
|
{
|
||||||
|
bool isMagic = true;
|
||||||
|
foreach (Effect effect in actor.Effects.Union(enemy.Effects).Where(e => e.Level > 0).ToList())
|
||||||
|
{
|
||||||
|
effect.AlterDamageTypeBeforeCalculation(actor, enemy, ref isNormalAttack, ref isMagic, ref magicType);
|
||||||
|
}
|
||||||
|
if (!isMagic)
|
||||||
|
{
|
||||||
|
return CalculatePhysicalDamage(actor, enemy, isNormalAttack, expectedDamage, out finalDamage);
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Effect effect in actor.Effects.Union(enemy.Effects).Where(e => e.Level > 0).ToList())
|
foreach (Effect effect in actor.Effects.Union(enemy.Effects).Where(e => e.Level > 0).ToList())
|
||||||
{
|
{
|
||||||
effect.AlterExpectedDamageBeforeCalculation(actor, enemy, ref expectedDamage, isNormalAttack, true, magicType);
|
effect.AlterExpectedDamageBeforeCalculation(actor, enemy, ref expectedDamage, isNormalAttack, true, magicType);
|
||||||
@ -846,7 +876,10 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
bool isAlterEvaded = false;
|
bool isAlterEvaded = false;
|
||||||
foreach (Effect effect in characters.SelectMany(c => c.Effects.Where(e => e.Level > 0).ToList()))
|
foreach (Effect effect in characters.SelectMany(c => c.Effects.Where(e => e.Level > 0).ToList()))
|
||||||
{
|
{
|
||||||
isAlterEvaded = effect.OnEvadedTriggered(actor, enemy, dice);
|
if (effect.OnEvadedTriggered(actor, enemy, dice))
|
||||||
|
{
|
||||||
|
isAlterEvaded = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!isAlterEvaded)
|
if (!isAlterEvaded)
|
||||||
{
|
{
|
||||||
@ -1068,10 +1101,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
_hardnessTimes[c] = Calculation.Round2Digits(_hardnessTimes[c] + 0.01);
|
_hardnessTimes[c] = Calculation.Round2Digits(_hardnessTimes[c] + 0.01);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach (Effect effect in character.Effects.Where(e => e.Level > 0).ToList())
|
skill.OnSkillCasting(this, other);
|
||||||
{
|
|
||||||
effect.OnSkillCasting(character);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1097,7 +1127,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
WriteLine($"[ {caster} ] 的施法被 [ {interrupter} ] 打断了!!");
|
WriteLine($"[ {caster} ] 的施法被 [ {interrupter} ] 打断了!!");
|
||||||
foreach (Effect e in cast.Effects.Where(e => e.Level > 0).ToList())
|
foreach (Effect e in cast.Effects.Where(e => e.Level > 0).ToList())
|
||||||
{
|
{
|
||||||
e.OnSkillCastInterrupted(caster, interrupter);
|
e.OnSkillCastInterrupted(caster, cast, interrupter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
private readonly static InventoryFactory InventoryFactory = new();
|
private readonly static InventoryFactory InventoryFactory = new();
|
||||||
private readonly static ItemFactory ItemFactory = new();
|
private readonly static ItemFactory ItemFactory = new();
|
||||||
private readonly static RoomFactory RoomFactory = new();
|
private readonly static RoomFactory RoomFactory = new();
|
||||||
private readonly static SkillFactory SkillFactory = new();
|
|
||||||
private readonly static UserFactory UserFactory = new();
|
private readonly static UserFactory UserFactory = new();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -137,15 +136,6 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
return RoomFactory.Create();
|
return RoomFactory.Create();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取技能实例
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static Skill GetSkill()
|
|
||||||
{
|
|
||||||
return SkillFactory.Create();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取用户实例
|
/// 获取用户实例
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -547,17 +547,17 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 力量 = 基础力量 + 额外力量
|
/// 力量 = 基础力量 + 额外力量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double STR => BaseSTR + ExSTR;
|
public double STR => Calculation.Round2Digits(BaseSTR + ExSTR);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 敏捷 = 基础敏捷 + 额外敏捷
|
/// 敏捷 = 基础敏捷 + 额外敏捷
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double AGI => BaseAGI + ExAGI;
|
public double AGI => Calculation.Round2Digits(BaseAGI + ExAGI);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 智力 = 基础智力 + 额外智力
|
/// 智力 = 基础智力 + 额外智力
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double INT => BaseINT + ExINT;
|
public double INT => Calculation.Round2Digits(BaseINT + ExINT);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 力量成长值(+BaseSTR/Lv)
|
/// 力量成长值(+BaseSTR/Lv)
|
||||||
@ -941,6 +941,15 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Effects.Count > 0)
|
||||||
|
{
|
||||||
|
builder.AppendLine("== 状态栏 ==");
|
||||||
|
foreach (Effect effect in Effects)
|
||||||
|
{
|
||||||
|
builder.Append(effect.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return builder.ToString();
|
return builder.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,6 +119,19 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 在伤害计算前修改伤害类型
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="character"></param>
|
||||||
|
/// <param name="enemy"></param>
|
||||||
|
/// <param name="isNormalAttack"></param>
|
||||||
|
/// <param name="isMagicDamage"></param>
|
||||||
|
/// <param name="magicType"></param>
|
||||||
|
public virtual void AlterDamageTypeBeforeCalculation(Character character, Character enemy, ref bool isNormalAttack, ref bool isMagicDamage, ref MagicType magicType)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 在伤害计算前修改预期伤害
|
/// 在伤害计算前修改预期伤害
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -134,7 +147,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 在伤害计算完成后修改实际伤害
|
/// 在伤害计算完成后修改实际伤害 [ 允许取消伤害 ]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="character"></param>
|
/// <param name="character"></param>
|
||||||
/// <param name="enemy"></param>
|
/// <param name="enemy"></param>
|
||||||
@ -143,9 +156,10 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// <param name="isMagicDamage"></param>
|
/// <param name="isMagicDamage"></param>
|
||||||
/// <param name="magicType"></param>
|
/// <param name="magicType"></param>
|
||||||
/// <param name="damageResult"></param>
|
/// <param name="damageResult"></param>
|
||||||
public virtual void AlterActualDamageAfterCalculation(Character character, Character enemy, ref double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)
|
/// <returns>返回 true 表示取消此伤害,等同于闪避</returns>
|
||||||
|
public virtual bool AlterActualDamageAfterCalculation(Character character, Character enemy, ref double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)
|
||||||
{
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -153,7 +167,8 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="character"></param>
|
/// <param name="character"></param>
|
||||||
/// <param name="baseHardnessTime"></param>
|
/// <param name="baseHardnessTime"></param>
|
||||||
public virtual void AlterHardnessTimeAfterNormalAttack(Character character, ref double baseHardnessTime)
|
/// <param name="isCheckProtected"></param>
|
||||||
|
public virtual void AlterHardnessTimeAfterNormalAttack(Character character, ref double baseHardnessTime, ref bool isCheckProtected)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -163,7 +178,8 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="character"></param>
|
/// <param name="character"></param>
|
||||||
/// <param name="baseHardnessTime"></param>
|
/// <param name="baseHardnessTime"></param>
|
||||||
public virtual void AlterHardnessTimeAfterCastSkill(Character character, ref double baseHardnessTime)
|
/// <param name="isCheckProtected"></param>
|
||||||
|
public virtual void AlterHardnessTimeAfterCastSkill(Character character, ref double baseHardnessTime, ref bool isCheckProtected)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -201,8 +217,9 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// 技能吟唱被打断时
|
/// 技能吟唱被打断时
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="caster"></param>
|
/// <param name="caster"></param>
|
||||||
|
/// <param name="skill"></param>
|
||||||
/// <param name="interrupter"></param>
|
/// <param name="interrupter"></param>
|
||||||
public virtual void OnSkillCastInterrupted(Character caster, Character interrupter)
|
public virtual void OnSkillCastInterrupted(Character caster, Skill skill, Character interrupter)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -144,11 +144,6 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
Character = character;
|
Character = character;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Skill()
|
|
||||||
{
|
|
||||||
SkillType = SkillType.Passive;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 触发技能升级
|
/// 触发技能升级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -158,6 +153,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
{
|
{
|
||||||
foreach (Effect e in AddInactiveEffectToCharacter())
|
foreach (Effect e in AddInactiveEffectToCharacter())
|
||||||
{
|
{
|
||||||
|
e.ActionQueue = ActionQueue;
|
||||||
if (Character != null && !Character.Effects.Contains(e))
|
if (Character != null && !Character.Effects.Contains(e))
|
||||||
{
|
{
|
||||||
Character.Effects.Add(e);
|
Character.Effects.Add(e);
|
||||||
@ -177,10 +173,23 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
OnLevelUp();
|
OnLevelUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 技能开始吟唱时 [ 吟唱魔法、释放战技和爆发技、预释放爆发技均可触发 ]
|
||||||
|
/// </summary>
|
||||||
|
public void OnSkillCasting(ActionQueue queue, Character actor)
|
||||||
|
{
|
||||||
|
ActionQueue = queue;
|
||||||
|
foreach (Effect e in Effects)
|
||||||
|
{
|
||||||
|
e.ActionQueue = ActionQueue;
|
||||||
|
e.OnSkillCasting(actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 触发技能效果
|
/// 触发技能效果
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Trigger(ActionQueue queue, Character actor, List<Character> enemys, List<Character> teammates)
|
public void OnSkillCasted(ActionQueue queue, Character actor, List<Character> enemys, List<Character> teammates)
|
||||||
{
|
{
|
||||||
ActionQueue = queue;
|
ActionQueue = queue;
|
||||||
foreach (Effect e in Effects)
|
foreach (Effect e in Effects)
|
||||||
|
@ -332,10 +332,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon.Example
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
List<Skill> list = [];
|
List<Skill> list = [];
|
||||||
Skill s = Factory.GetSkill();
|
// 技能应该在GameModule中新建类继承Skill实现,再自行构造。
|
||||||
s.Name = "Example Skill";
|
|
||||||
s.Description = "技能应该在GameModule中继承实现,再自行构造。";
|
|
||||||
list.Add(s);
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user