using CommonAI.Zone;
using XmdsCommon.Plugin;
using XmdsCommonSkill.Plugin.Buffs;
using XmdsCommonServer.Plugin;
using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
using XmdsCommonServer.XLS.Data;
using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
using CommonLang;
namespace XmdsCommonSkill.Plugin.Skills.Hunter
{
///
/// 重伤: 使自动射击在命中敌人时,x%概率造成敌人受伤,x秒内总共流失对方x%生命,流血期间敌人受到的治疗效果降低x%.
///
public class Hunter_402010 : Hunter_400010
{
public static new int ID = 402010;
/// 点燃BUFFID.
public static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.ZHONG_SHANG;
public static XmdsSkillValue BuffDamageHP;
/// BUFF伤害 - 治疗效果下降.
public static XmdsSkillValue BuffDamageTreat;
public override int SkillID { get { return ID; } }
protected override void OnSkillLogicEvent(BattleParams param)
{
// 流血
UnitBuff ub = param.Attacker.GetRegisBuffVirtual(Buff_ID, 0);
if (ub != null)
{
XmdsBuff_Bleed buff = ub as XmdsBuff_Bleed;
int bb = this.GetTargetFormulaValue(param.Attacker.SkillHelper.GetGameSkill(SkillID).TalentSkillLevel1, BuffDamageHP);
bb = CUtils.CastInt(bb / XmdsDamageCalculator.PERER * param.Hitter.MirrorProp.MaxHP);
buff.ChangeValue = bb / 5;
}
// 治疗效果
XmdsBuff_PropChange bf = param.Attacker.GetRegisBuffVirtual(Buff_ID, 1) as XmdsBuff_PropChange;
bf.CurentChangeType = XmdsVirtual.UnitAttributeType.HealEffect;
bf.IsPercent = true;
bf.CurrentValue = -this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel1, BuffDamageTreat);
// 设置buff时长
BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID);
bt.LifeTimeMS = 5000;
// 上buff
param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
}
///
/// 初始化.
///
///
///
///
protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
{
XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
XmdsBuff_Bleed buff = (XmdsBuff_Bleed)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.Bleed);
BuffTemplate bt = pack.mBuffTemplate;
bt.IsHarmful = true;
pack.BindTemplateAndDispose();
unit.RegistSendBuff(bt);
base.OnInit(info, unit, ref template);
}
protected override void OnInitSkillParam()
{
base.OnInitSkillParam();
XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
InitData(data, out BuffDamageHP, XmdsSkillData.XmdsSkillDataKey.ValueSet);
InitData(data, out BuffDamageTreat, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
}
}
}