123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- 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
- {
- /// <summary>
- /// 格鲁 - 狂暴护盾: 释放一个护盾笼罩自己,吸收x%倍物攻伤害,护盾持续10秒.
- /// 如10秒内护盾没有被打破,在护盾消失时,格鲁会狂暴,自身物攻增加y%,持续10秒.
- /// </summary>
- public class Monster_6050602 : XmdsSkillBase
- {
- /// <summary>
- /// 技能ID.
- /// </summary>
- public static int ID = 6050602;
- /// <summary>
- /// BUFF1 - 吸收护盾.
- /// </summary>
- public static int Buff_1 = (int)XmdsBuffBase.XmdsBuffList.XSSH_MONSTER;
- public static XmdsSkillValue DP_1;
- /// <summary>
- /// BUFF2 - 物攻↑.
- /// </summary>
- 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;
- }
- /// <summary>
- /// 初始化.
- /// </summary>
- /// <param name="info"></param>
- /// <param name="unit"></param>
- /// <param name="template"></param>
- 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);
- }
- }
- }
|