using CommonAI.Zone;
using XmdsCommon.Plugin;
using XmdsCommonServer.Plugin;
using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
using XmdsCommonSkill.Plugin.Buffs;
using XmdsCommonServer.XLS.Data;
namespace XmdsCommonSkill.Plugin.Skills.Monster
{
///
/// 格鲁 - 狂暴护盾: 释放一个护盾笼罩自己,吸收x%倍物攻伤害,护盾持续10秒.
/// 如10秒内护盾没有被打破,在护盾消失时,格鲁会狂暴,自身物攻增加y%,持续10秒.
///
public class Monster_6050602 : XmdsSkillBase
{
///
/// 技能ID.
///
public static int ID = 6050602;
///
/// BUFF1 - 吸收护盾.
///
public static int Buff_1 = (int)XmdsBuffBase.XmdsBuffList.XSSH_MONSTER;
public static XmdsSkillValue DP_1;
///
/// BUFF2 - 物攻↑.
///
public static int Buff_2 = (int)XmdsBuffBase.XmdsBuffList.WU_GONG_UP;
public static XmdsSkillValue Buff2_Value;
public override int SkillID { get { return ID; } }
protected override void OnSkillDamagePerEvent(BattleParams param)
{
int ret = CalDamagePer(DP_1, param.GameSkill.SkillLevel);
param.SkillDamagePer = ret;
}
protected override void OnSkillLogicEvent(BattleParams param)
{
// 给自己上护盾BUFF.
if (param.AtkProp.DamagePerID == 1)
{
XmdsBuff_Shield_AbsorbDamage buff = (XmdsBuff_Shield_AbsorbDamage)param.Attacker.GetRegisBuffVirtual(Buff_1);
//计算吸收伤害总值.
int phyAtk = param.Attacker.MirrorProp.BaseAttack;
phyAtk = XmdsDamageCalculator.GetSkillDamage(phyAtk, param.SkillDamagePer, 0);
buff.AbsorbDamageSum = phyAtk;
param.Hitter.mUnit.AddBuff(Buff_1, param.Attacker.mUnit);
}
// 护盾未被打破正常结束上物攻.
else if (param.AtkProp.DamagePerID == 2)
{
XmdsBuff_PropChange buff = (XmdsBuff_PropChange)param.Attacker.GetRegisBuffVirtual(Buff_2);
buff.CurentChangeType = XmdsVirtual.UnitAttributeType.Attack;
buff.IsPercent = true;
buff.CurrentValue = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, Buff2_Value);
BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_2);
bt.LifeTimeMS = 5000;
param.Attacker.mUnit.AddBuff(Buff_2, param.Attacker.mUnit);
}
}
protected override void OnRegistEvent()
{
this.RegistEvent(EventType.UseFormluaType, OnUseFormluaTypeEvent);
base.OnRegistEvent();
}
private void OnUseFormluaTypeEvent(BattleParams param)
{
param.UseDamageType = CommonAI.Data.DamageType.None;
}
///
/// 初始化.
///
///
///
///
protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
{
//技能技能初始化,常用作为修改BUFF能力等等.
XmdsBuffPack pack1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_1);
BuffTemplate bt1 = pack1.mBuffTemplate;
bt1.IsHarmful = false;
bt1.LifeTimeMS = 10000; // 第1次上护盾buff,由于需要编辑器写死,故这里配置时也写死10s.
pack1.BindTemplateAndDispose();
unit.RegistSendBuff(bt1);
XmdsBuffPack pack2 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_2);
XmdsBuff_PropChange buff = (XmdsBuff_PropChange)pack2.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.PropChange);
BuffTemplate bt2 = pack2.mBuffTemplate;
bt2.IsHarmful = true;
pack2.BindTemplateAndDispose();
unit.RegistSendBuff(bt2);
}
protected override void OnInitSkillParam()
{
XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
InitData(data, out DP_1, XmdsSkillData.XmdsSkillDataKey.DmgRate);
InitData(data, out Buff2_Value, XmdsSkillData.XmdsSkillDataKey.ValueSet);
}
}
}