Skip to content

Effect

特效基类,位于 Milimoe.FunGame.Core.Entity

需继承并使用。一个 Skill 由多个 Effect 组合而成,每个 Effect 负责一种具体效果。

核心属性

属性类型默认值说明
Idlong唯一标识符(从 Skill 继承)
Namestring名称(从 Skill 继承)
Descriptionstring""效果描述
SkillSkill所属技能(只读)
Priorityint0触发优先级,越大越高。在状态栏中影响哈希排序
Levelint等级,跟随技能等级
EffectTypeEffectTypeNone特效类型(50+ 种,决定 BUFF/DEBUFF/控制/驱散分类)
IsDebuffboolfalse是否是负面效果
MagicTypeMagicTypeNone魔法类型
MagicEfficacydouble魔法效能%(来自 Skill.MagicEfficacy,只读)

持续时间

属性类型默认值说明
Durativeboolfalse是否按时间持续
Durationdouble0持续时间(配合 Durative = true
DurationTurnint0持续时间(回合,Durative = false 时)
RemainDurationdouble0剩余持续时间
RemainDurationTurnint0剩余持续回合数
DurativeWithoutDurationboolfalse无具体持续时间的持续性特效

驱散系统

属性类型默认值说明
DispelTypeDispelTypeNone驱散性(能驱散什么)
DispelledTypeDispelledTypeWeak被驱散性(能被什么驱散)
DispelDescriptionstring驱散性文字说明
CanWeakDispelbool是否具备弱驱散能力(只读)
CanStrongDispelbool是否具备强驱散能力(只读)
IsTemporaryDispelbool是否是临时驱散(只读)
IsBeingTemporaryDispelledboolfalse是否处于临时被驱散状态

豁免系统

属性类型默认值说明
Exemptablebool是否可被属性豁免(只读)
ExemptionTypePrimaryAttribute自动判定豁免所需属性类型
ExemptDurationboolfalse豁免是否减半持续时间
ExemptionDescriptionstring豁免性文字说明
IgnoreImmuneImmuneTypeNone可无视的免疫类型

外观

属性类型默认值说明
ForceHideInStatusBarboolfalse强制在状态栏中隐藏
ShowInStatusBarbool是否显示在状态栏(只读)
IsInEffectbool特效是否生效(只读,Level > 0 && !IsBeingTemporaryDispelled

关系属性

属性类型说明
ParentEffectEffect?附属的主特效
IsSubsidiarybool是否是附属特效(只读)
SourceCharacter?特效来源角色
GamingQueueGamingQueue?所在的游戏队列
GameplayEquilibriumConstantEquilibriumConstant游戏平衡常数

可重写方法

生命周期

方法触发时机
OnEffectGained(Character)特效施加到角色
OnEffectLost(Character)特效从角色移除
OnGameStart()游戏开始时
OnTurnStart(Character, List<Character>, List<Character>, List<Skill>, List<Item>)回合开始时
OnTurnEnd(Character)回合结束时
OnTimeElapsed(Character, double)时间流逝时
OnTimeElapsed(Grid, double)时间流逝时(格子版本)
OnAttributeChanged(Character)角色属性变化时

技能相关

方法触发时机
OnSkillCasting(Character, List<Character>, List<Grid>)技能吟唱开始时
OnSkillCasted(Character, List<Character>, List<Grid>, Dictionary)技能释放完成时
OnSkillCasted(User, List<Character>, Dictionary)技能释放完成(用户版本)
BeforeSkillCasted(Character, List<Character>, List<Grid>, double, double)技能释放前(含消耗信息)
AfterSkillCasted(Character, List<Character>, List<Grid>)技能释放后
OnSkillCastInterrupted(Character, Skill, Character)技能吟唱被打断时
OnSkillLevelUp(Character, double)技能升级时
OnOwnerLevelUp(Character, double)所属角色升级时

伤害相关

方法触发时机返回
AlterDamageTypeBeforeCalculation(Character, Character, ref bool, ref DamageType, ref MagicType)计算前修改伤害类型void(ref 修改)
AlterExpectedDamageBeforeCalculation(Character, Character, double, bool, DamageType, MagicType, Dictionary)乘区1调整double(加值)
AlterActualDamageAfterCalculation(Character, Character, double, bool, DamageType, MagicType, DamageResult, ref bool, Dictionary)乘区2调整double(加值)
BeforeApplyTrueDamage(Character, Character, double, bool, DamageResult)真实伤害生效前bool(false=阻止)
OnApplyDamage(Character, Character, double, double, bool, DamageType, MagicType, DamageResult)伤害生效时void
AfterDamageCalculation(Character, Character, double, double, bool, DamageType, MagicType, DamageResult)伤害计算完成后void

治疗相关

方法触发时机返回
BeforeHealToTarget(Character, Character, double, bool)治疗前bool(false=阻止)
AlterHealValueBeforeHealToTarget(Character, Character, double, ref bool, Dictionary)修改治疗值double(加值)

硬直时间

方法触发时机
AlterHardnessTimeAfterNormalAttack(Character, ref double, ref bool)普攻后调整硬直
AlterHardnessTimeAfterCastSkill(Character, Skill, ref double, ref bool)释放技能后调整硬直

能量与回复

方法触发时机
AlterEPAfterDamage(Character, ref double)造成伤害后修改获得的 EP
AlterEPAfterGetDamage(Character, ref double)受到伤害后修改获得的 EP
BeforeApplyRecoveryAtTimeLapsing(Character, ref double, ref double)时间流逝回复前

AI 决策

方法触发时机返回
AlterActionTypeBeforeAction(Character, DecisionPoints, CharacterState, ref bool, ref bool, ref double, ref double, ref double, ref bool)AI 决策偏好调整CharacterActionType

死亡

方法触发时机
AfterDeathCalculation(Character, bool, Character?, Dictionary, Dictionary, Character[], ...)死亡结算后

特效内部可用方法

方法说明
DamageToEnemy(actor, enemy, DamageType, MagicType, damage)造成伤害(走完整伤害计算流程)
CheckExemption(caster, target, this)豁免检定(true = 豁免成功)
InterruptCasting(target, interrupter)打断目标施法
RecordCharacterApplyEffects(caster, params EffectType[])记录特效施加
WriteLine(string)输出日志
GetDispelDescription(string)生成驱散说明

基于 LGPL-3.0 许可证发布