123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
-
- using XmdsCommonServer.XLS.Data;
- using XmdsCommonServer.Plugin;
- using XmdsCommonSkill.Plugin.Buffs;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
- using CommonAI.Zone;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- namespace XmdsCommonSkill.Plugin.Skills.Monster
- {
- /// <summary>
- /// 毒血卫士 - 麻痹: 对敌人发起攻击,使敌人中毒,在10秒内总共造成x%魔攻伤害和额外y点魔法伤害,
- /// 中毒5秒后如果敌人身上仍然存在中毒效果,敌人将被麻痹3秒无法动弹.
- /// </summary>
- public class Monster_10480202 : XmdsSkillBase
- {
- public static int ID = 10480202;
- public static XmdsSkillValue DP_1;
- /// 毒.
- public static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.DU;
- public static XmdsSkillValue Buff_Rate;
- public static XmdsSkillValue BuffLifeTime;
- public static XmdsSkillValue BuffDamageHP;
- /// 麻痹.
- public static int Buff_ID2 = (int)XmdsBuffBase.XmdsBuffList.MA_BI;
- public static XmdsSkillValue BuffLifeTime2;
- public override int SkillID { get { return ID; } }
- protected override void OnSkillLogicEvent(BattleParams param)
- {
- // 加第1个debuff - 毒.
- if (param.AtkProp.DamagePerID == 1)
- {
- //随机概率添加BUFF.
- if (param.Attacker.RandomPercent(this.GetTargetFormulaValue(param.GameSkill.SkillLevel, Buff_Rate)))
- {
- // 流血
- UnitBuff ub = param.Attacker.GetRegisBuffVirtual(Buff_ID);
- XmdsBuff_Bleed buff = ub as XmdsBuff_Bleed;
- int bb = CalDamagePer(DP_1, param.GameSkill.SkillLevel);
- bb = XmdsDamageCalculator.GetDamage(bb, param.Attacker, param.Hitter, param.Source); // 参与魔抗计算
- buff.ChangeValue = bb / (GetTargetFormulaValue(param.GameSkill.SkillLevel, BuffLifeTime) / 1000);
- BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID);
- bt.LifeTimeMS = GetTargetFormulaValue(param.GameSkill.SkillLevel, BuffLifeTime);
- param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
- }
- }
- // 加第2个debuff - 麻痹.
- else if (param.AtkProp.DamagePerID == 2)
- {
- //判断是否存在"毒"debuff.
- {
- CommonAI.Zone.Instance.InstanceUnit.BuffState bs =
- param.Hitter.mUnit.GetBuffByID((int)XmdsBuffBase.XmdsBuffList.DU);
- if (bs != null)
- {
- BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID2);
- bt.LifeTimeMS = GetTargetFormulaValue(param.GameSkill.SkillLevel, BuffLifeTime2);
- param.Hitter.mUnit.AddBuff(Buff_ID2, 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;
- pack.BindTemplateAndDispose();
- bt.IsHarmful = true;
- unit.RegistSendBuff(bt);
- // 麻痹.
- pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID2);
- XmdsBuff_Frozen buff2 = (XmdsBuff_Frozen)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.FROZEN);
- bt = pack.mBuffTemplate;
- bt.IsHarmful = true;
- pack.BindTemplateAndDispose();
- unit.RegistSendBuff(bt);
- }
- protected override void OnInitSkillParam()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out DP_1, XmdsSkillData.XmdsSkillDataKey.DmgRate);
- InitData(data, out BuffLifeTime2, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- }
- }
- }
|