1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
-
- 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
- {
- /// <summary>
- /// 兰彻斯特 - 生命吸取: 施展邪恶法术,在5秒内总计吸取目标x%生命并治疗自己(治疗量=吸取量).
- /// 数值 = x% 对方的maxhp.
- /// </summary>
- public class Monster_10320402 : XmdsSkillBase
- {
- /// <summary>
- /// 技能ID.
- /// </summary>
- 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);
- }
- }
- }
|