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); } } }