123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
- namespace XmdsCommonSkill.Plugin.Buffs
- {
-
-
-
-
-
-
-
- public class XmdsBuff_ChangeSkillTotalTime : XmdsBuffBase
- {
-
-
-
- public int TargetSkill = 0;
-
-
-
- public int ChangeTime = 0;
-
-
-
- public bool IsPercent = false;
- public override int GetAbilityID()
- {
- return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.ChangeSkillTotalTime;
- }
- public override void CopyTo(UnitBuff other)
- {
- var ret = other as XmdsBuff_ChangeSkillTotalTime;
- ret.TargetSkill = this.TargetSkill;
- ret.ChangeTime = this.ChangeTime;
- ret.IsPercent = this.IsPercent;
- base.CopyTo(other);
- }
- protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, CommonAI.Zone.Instance.InstanceUnit.BuffState state)
- {
- if (TargetSkill != 0)
- {
-
- CommonAI.Zone.Instance.InstanceUnit.SkillState ss = hitter.mUnit.getSkillState(TargetSkill);
- if (ss != null)
- {
- XmdsCommonServer.Plugin.XmdsVirtual.FormatLog("BuffBegin 【{0}】技能【{1}】CD改变{2}", hitter.mProp.ServerData.BaseInfo.name, ss.Data.Name, ChangeTime);
- BeginEffect(hitter, ss, state.OverlayLevel + 1);
- }
- }
- else
- {
-
-
- List<CommonAI.Zone.Instance.InstanceUnit.SkillState> states = (List<CommonAI.Zone.Instance.InstanceUnit.SkillState>)hitter.mUnit.SkillStatus;
- for (int i = 0 ; i < states.Count ; i++)
- {
- XmdsCommonServer.Plugin.XmdsVirtual.FormatLog("BuffBegin 【{0}】技能【{1}】CD改变{2}", hitter.mProp.ServerData.BaseInfo.name, states[i].Data.Name, ChangeTime);
- BeginEffect(hitter, states[i], state.OverlayLevel + 1);
- }
- }
- }
- protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, CommonAI.Zone.Instance.InstanceUnit.BuffState state, bool replace)
- {
- if (TargetSkill != 0)
- {
-
- CommonAI.Zone.Instance.InstanceUnit.SkillState ss = hitter.mUnit.getSkillState(TargetSkill);
- if (ss != null)
- {
- XmdsCommonServer.Plugin.XmdsVirtual.FormatLog("BuffEnd 【{0}】技能【{1}】CD改变{2}", hitter.mProp.ServerData.BaseInfo.name, ss.Data.Name, ChangeTime);
- EndEffect(hitter, ss, state.OverlayLevel + 1);
- }
- }
- else
- {
-
-
- List<CommonAI.Zone.Instance.InstanceUnit.SkillState> states = (List<CommonAI.Zone.Instance.InstanceUnit.SkillState>)hitter.mUnit.SkillStatus;
- for (int i = 0 ; i < states.Count ; i++)
- {
- XmdsCommonServer.Plugin.XmdsVirtual.FormatLog("BuffEnd 【{0}】技能【{1}】CD改变{2}", hitter.mProp.ServerData.BaseInfo.name, states[i].Data.Name, ChangeTime);
- EndEffect(hitter, states[i], state.OverlayLevel + 1);
- }
- }
- }
- private void BeginEffect(XmdsVirtual unit, CommonAI.Zone.Instance.InstanceUnit.SkillState ss, int overlay)
- {
- int v = 0;
- if (IsPercent)
- {
- v = (int)(-1 * ChangeTime * XmdsUnitProp.PER * ss.Data.CoolDownMS);
- }
- else
- {
- v = -1 * ChangeTime;
- }
- int old_v = ss.GetDecreaseTotalTimeMS();
- int new_v = old_v + v;
-
- ss.SetDecreaseTotalTimeMS(new_v);
- unit.mUnit.DecreaseSkillCD(ss.Data.ID, v);
- }
- private void EndEffect(XmdsVirtual unit, CommonAI.Zone.Instance.InstanceUnit.SkillState ss, int overlay)
- {
- int v = 0;
- if (IsPercent)
- {
- v = (int)(-1 * ChangeTime * XmdsUnitProp.PER * ss.Data.CoolDownMS);
- }
- else
- {
- v = -1 * ChangeTime;
- }
- int old_v = ss.GetDecreaseTotalTimeMS();
- int new_v = old_v - v;
-
- ss.SetDecreaseTotalTimeMS(new_v);
- }
- }
- }
|