using CommonAI.Data; using CommonAI.Zone; using CommonAI.Zone.Formula; using CommonAI.Zone.Helper; using CommonAI.Zone.Instance; using CommonLang; using System; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; using XmdsCommonServer.XLS.Data; namespace XmdsCommonSkill.Plugin.Skills.Magic { /// <summary> /// 法师【1】技能 1 - 2(根据敌人当前生命值,造成额外伤害,当前血越低伤害越高,波动值n-n1(有上下限)) /// </summary> public class Magic_310120 : Magic_310110 { /// 技能ID. private static int ID = 310120; //1-2血量每减少N1,伤害提高N2 protected XmdsSkillValue mValueSet3; /// 获取技能ID. public override int SkillID { get { return ID; } } private float mHpMaxLayer = 0; protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { base.OnInit(info, unit, ref template); this.mHpMaxLayer = (XmdsDamageCalculator.PERER / mValueSet3.GetValue(info.TalentSkillLevel2, 1)); } protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit) { base.OnSkillDataChange(gs, unit); this.mHpMaxLayer = XmdsDamageCalculator.PERER / mValueSet3.GetValue(gs.TalentSkillLevel2, 1); } protected override void OnSkillDamagePerEvent(BattleParams param) { base.OnSkillDamagePerEvent(param); int hpLevel = (int)(mHpMaxLayer - mHpMaxLayer / param.Hitter.MirrorProp.MaxHP * param.Hitter.mUnit.CurrentHP); if(hpLevel > 0) { param.SkillDamagePer += hpLevel * mValueSet3.GetValue(param.GameSkill.TalentSkillLevel2, 2); } } protected override void OnInitConfig() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out mValueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); InitData(data, out mValueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3); // 扩展配置 InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8); } } }