using CommonAI.Zone; using CommonAI.Zone.Instance; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; using XmdsCommonServer.XLS.Data; namespace XmdsCommonSkill.Plugin.Skills.Priest { /// /// 使暗言术的冷却时间缩短秒,但法力消耗提高%. /// 我吐槽这技能ID设定,完全不按照规则来 (#‵′)凸. /// public class Priest_501070 : Priest_500020 { /// /// 技能ID. /// public static new int ID = 501070; /// /// 减少时间. /// public static XmdsSkillValue TimeValue; /// /// MP消耗. /// public static XmdsSkillValue MPCost; /// /// 获取技能ID. /// public override int SkillID { get { return ID; } } protected override void OnInitSkillParam() { base.OnInitSkillParam(); XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); InitData(data, out TimeValue, XmdsSkillData.XmdsSkillDataKey.ValueSet2); InitData(data, out MPCost, XmdsSkillData.XmdsSkillDataKey.ValueSet); } protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { base.OnInit(info, unit, ref template); } protected override void OnInitOVer(XmdsVirtual unit) { GameSkill gs = unit.SkillHelper.GetGameSkill(SkillID); var state = unit.mUnit.getSkillState(SkillID); if (state != null && gs != null) { ChangeSkillCDtime(gs, ref state); } base.OnInitOVer(unit); } //MP消耗增加. protected override int GetMPCost(int skillid, int skilllv, XmdsVirtual launcher) { int cost = base.GetMPCost(skillid, skilllv, launcher); int mpUp = this.GetTargetFormulaValue(skilllv, MPCost); float c = mpUp / XmdsDamageCalculator.PERER; cost = (int)(cost * (1 + c)); return cost; } protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit, ref InstanceUnit.SkillState skill) { ChangeSkillCDtime(gs, ref skill); } private void ChangeSkillCDtime(GameSkill gs, ref InstanceUnit.SkillState skill) { int t = this.GetTargetFormulaValue(gs.TalentSkillLevel, TimeValue); skill.Data.CoolDownMS = this.GetTargetFormulaValue(gs.SkillLevel, mSkillCD) - t; } } }