using CommonAI.Zone; using CommonAI.Zone.Formula; using CommonAI.Zone.Helper; using CommonAI.Zone.Instance; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; using XmdsCommonSkill.Plugin.PassiveSkills.Magic; using static CommonAI.Zone.Instance.InstanceUnit; namespace XmdsCommonSkill.Plugin.Skills.Boss { /// /// boss - 3 - 水火无情-水(场地中召唤大量随机出现的红蓝圈圈,给命中玩家分别施加火标记和水标记, /// 水标记玩家不能被红圈命中,火标记玩家不能被篮圈命中,否则以该玩家为中心释放一次高额AOE伤害) /// public class Boss_90313 : XmdsSkillBase { private static int ID = 90313; public static int Buff_WATER = (int)XmdsBuffBase.XmdsBuffList.TAG_WATER; public static XmdsSkillValue damageValue1; // 伤害系数1 public static XmdsSkillValue damageValue2; // 伤害系数2 public static XmdsSkillValue tagBuffTime; // Buff时间 public override int SkillID { get { return ID; } } protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { XmdsBuffPack pack1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_WATER); BuffTemplate bt1 = pack1.mBuffTemplate; bt1.IsHarmful = true; bt1.LifeTimeMS = tagBuffTime.GetValue(); pack1.BindTemplateAndDispose(); unit.RegistSendBuff(bt1); } //伤害计算 protected override void OnSkillDamagePerEvent(BattleParams param) { if (param.Hitter.mUnit.GetBuffByID(Boss_90313.Buff_WATER) == null && param.Hitter.mUnit.GetBuffByID(Boss_90314.Buff_FIRE) == null) { param.SkillDamagePer = damageValue2.GetValue(); param.Hitter.mUnit.removeBuff(Boss_90313.Buff_WATER); param.Hitter.mUnit.removeBuff(Boss_90314.Buff_FIRE); } else { param.SkillDamagePer = damageValue1.GetValue(); } param.Hitter.mUnit.AddBuff(Boss_90313.Buff_WATER, param.Attacker.mUnit); } protected override void OnSkillLogicEvent(BattleParams param) { param.Hitter.mUnit.AddBuff(Buff_WATER, param.Attacker.mUnit); } protected override void OnInitSkillParam() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); InitData(data, out damageValue1, XmdsSkillData.XmdsSkillDataKey.DmgRate); InitData(data, out damageValue2, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out tagBuffTime, XmdsSkillData.XmdsSkillDataKey.ValueSet2); } } }