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