using CommonAI.Zone;
using CommonLang;
using XmdsCommon.Plugin;
using XmdsCommonServer.Plugin;
using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
using XmdsCommonServer.XLS.Data;
namespace XmdsCommonSkill.Plugin.Skills.Monster
{
///
/// 兰彻斯特 - 生命吸取: 施展邪恶法术,在5秒内总计吸取目标x%生命并治疗自己(治疗量=吸取量).
/// 数值 = x% 对方的maxhp.
///
public class Monster_10320402 : XmdsSkillBase
{
///
/// 技能ID.
///
public static int ID = 10320402;
/// 作用百分比.
public static XmdsSkillValue ChangeValue;
/// 作用时间,在编辑器里配死,做成每秒进来1次,持续可打断型.
public static int longTime = 5;
public override int SkillID { get { return ID; } }
private void OnUseFormluaTypeEvent(BattleParams param)
{
//自定义伤害计算.
param.UseDamageType = CommonAI.Data.DamageType.Modify;
}
protected override void OnSkillLogicEvent(BattleParams param)
{
//强制为普攻.
param.Source.OutClientState = (int)XmdsVirtual.UnitHitEventState.Normal;
float t = (GetTargetFormulaValue(param.GameSkill.SkillLevel, ChangeValue) * 1.0f) / XmdsDamageCalculator.PERER / longTime;
// 作用量.
int v = CUtils.CastInt(param.Hitter.mUnit.MaxHP * t);
if (v > 0)
{
// 伤害.
param.FinalSkillDamage = v;
// 回复.
param.Attacker.AddHP(v, param.Attacker.mUnit, true);
}
}
protected override void OnRegistEvent()
{
this.RegistEvent(EventType.UseFormluaType, OnUseFormluaTypeEvent);
base.OnRegistEvent();
}
protected override void OnInitSkillParam()
{
XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
InitData(data, out ChangeValue, XmdsSkillData.XmdsSkillDataKey.ValueSet);
}
}
}