using CommonAI.Zone.Helper; using CommonAI.Zone.Instance; using XmdsCommonServer.Plugin; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; using System; using static CommonAI.Zone.Instance.InstanceUnit; using XmdsCommon.Plugin; using CommonAI.Zone; using XmdsCommonServer.Plugin.Units; using CommonAI.Zone.Formula; using XmdsCommonSkill.Plugin.Skills; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills; using CommonLang; namespace XmdsCommonSkill.Plugin.PassiveSkills.Remedy { /// /// boss - 3 - 水火无情触发检测 /// class Boss_90111 : XmdsPassiveSkillBase { public static int ID = 90111; private static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.BOSS_ZB_TAG_SKILLLAUNCH; // 水火无情冷却标记 private static XmdsSkillValue valueSet0; // 伤害系数 private static XmdsSkillValue valueSet1; // 触发间隔 private static XmdsSkillValue valueSet2; // 水无情 private static XmdsSkillValue valueSet3; // 火无情 private int TimePass = 0; //时间流逝 private XmdsVirtual mOwner = null; // 分解配置数据 private int mTriggerInterval = 0; private int mUnitMySkillID = 0; private int mUnitOtherID = 0; private int mUnitOtherSkillID = 0; public override int SkillID {get{return ID;}} protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner) { this.mOwner = owner; this.mTriggerInterval = valueSet1.GetValue(); int unitA = valueSet2.GetValue(1, 1); int skillA = valueSet2.GetValue(1, 2); int unitB = valueSet3.GetValue(1, 1); int skillB = valueSet3.GetValue(1, 2); if(unitA == this.mOwner.mInfo.ID) { this.mUnitMySkillID = skillA; this.mUnitOtherID = unitB; this.mUnitOtherSkillID = skillB; } else if (unitB == this.mOwner.mInfo.ID) { this.mUnitMySkillID = skillB; this.mUnitOtherID = unitA; this.mUnitOtherSkillID = skillA; } else { this.mTriggerInterval = 0; } XmdsBuffPack pack1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID); BuffTemplate bt1 = pack1.mBuffTemplate; bt1.IsHarmful = true; bt1.LifeTimeMS = this.mTriggerInterval; pack1.BindTemplateAndDispose(); this.mOwner.RegistSendBuff(bt1); } protected override void OnUpdate(int intervalMS, bool slowRefresh) { try { if(mTriggerInterval <= 0) { base.OnUpdate(intervalMS, slowRefresh); return; } this.TimePass += intervalMS; if (this.TimePass > this.mTriggerInterval && this.mOwner.mUnit.GetBuffByID(Buff_ID) == null) { this.TimePass = 0; InstanceUnit unit = this.mOwner.mUnit.Parent.isUnitInRoundRange(this.mUnitOtherID, this.mOwner.mUnit.X, this.mOwner.mUnit.Y, 35, this.mOwner.mUnit.AoiStatus); if (unit != null) { unit.AddBuff(Buff_ID, this.mOwner.mUnit); this.mOwner.mUnit.AddBuff(Buff_ID, this.mOwner.mUnit); // 释放技能 SkillState skillStateA = this.mOwner.mUnit.getSkillState(mUnitMySkillID); SkillState skillStateB = unit.getSkillState(mUnitOtherSkillID); if(skillStateA != null && skillStateB != null) { this.mOwner.mUnit.launchSkill(skillStateA, new InstanceUnit.LaunchSkillParam()); unit.launchSkill(skillStateB, new InstanceUnit.LaunchSkillParam()); } else { log.Warn("Boss_90111 释放双生技能时,找不到技能状态信息!"); } } } base.OnUpdate(intervalMS, slowRefresh); } catch(Exception err) { log.Warn("Boss_90111 catch : " + err); } } protected override void OnInitSkillParam() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); InitData(data, out valueSet0, XmdsSkillData.XmdsSkillDataKey.DmgRate); InitData(data, out valueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); InitData(data, out valueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3); } protected override void OnDispose(XmdsVirtual owner) { } } }