123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- 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
- {
- /// <summary>
- /// boss - 2 - 将军令
- /// (每隔10秒召唤5个精英小怪,每个精英小怪会给BOSS提供回春BUFF)
- /// </summary>
- class Boss_90109 : XmdsPassiveSkillBase
- {
- public static readonly int ID = 90109;
- private static XmdsSkillValue valueSet0; // 召唤时间间隔
- private static XmdsSkillValue valueSet1; // 召唤物ID
- private static XmdsSkillValue valueSet2; // 每次召唤数量, 最大数量
- private static XmdsSkillValue valueSet3; // 回血时间间隔
- private static XmdsSkillValue valueSet4; // 每层回血效果
- private int mPreAddHPTime = 0; // 时间流逝
- private int mPreSummonTime = 0; // 上一次召唤的时间
- private int mTimePass = 0; // 时间流逝
- private XmdsVirtual mOwner = null;
- public override int SkillID {get{return ID;}}
- protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
- {
- this.mOwner = owner;
- }
- protected override void OnUpdate(int intervalMS, bool slowRefresh)
- {
- this.mPreSummonTime += intervalMS;
- this.mPreAddHPTime += intervalMS;
- this.mTimePass += intervalMS;
- if (this.mTimePass >= 1000)
- {
- this.mTimePass = 0;
- int curSumCount = -1;
- //1. 召唤小怪
- if (this.mPreSummonTime >= valueSet0.GetValue())
- {
- this.mPreSummonTime = 0;
- curSumCount = SummonMonster();
- }
- //2. 回血
- if(this.mPreAddHPTime >= valueSet3.GetValue())
- {
- this.mPreAddHPTime = 0;
- if(curSumCount == -1)
- {
- XmdsVirtual_Monster monster = mOwner as XmdsVirtual_Monster;
- curSumCount = monster.GetSummonUnitListCount();
- }
- //血是满的,不用处理加血
- if (curSumCount == -1 || this.mOwner.mUnit.MaxHP == this.mOwner.mUnit.CurrentHP) { return; }
- int addHP = CUtils.CastInt(this.mOwner.mUnit.MaxHP * curSumCount * XmdsUnitProp.PER * valueSet4.GetValue());
- this.mOwner.mUnit.AddHP(addHP, null);
- }
- }
- base.OnUpdate(intervalMS, slowRefresh);
- }
- /// 召唤单位
- protected int SummonMonster()
- {
- UnitInfo info = XmdsBattleSkill.GetUnitInfo(valueSet1.GetValue());
- XmdsVirtual_Monster monster = this.mOwner as XmdsVirtual_Monster;
- int summonCount = monster.GetSummonUnitListCount();
- int maxSummon = Math.Min(valueSet2.GetValue(1, 1), valueSet2.GetValue(1, 2) - summonCount);
- if(maxSummon > 0)
- {
- for (int i = 0; i < maxSummon; i++)
- {
- var pos = monster.mUnit.Parent.PathFinder.FindNearRandomMoveableNode(
- monster.mUnit.RandomN, monster.mUnit.X, monster.mUnit.Y, 2, true);
- //控制生命周期.
- info.LifeTimeMS = 120000;
- AddUnitEvent aue = null;
- var unit = (monster.mUnit.Parent.AddUnit(info, info.Name, monster.mUnit.Force, monster.GetUnitLv(),
- pos.PosX, pos.PosY, monster.mUnit.Direction, out aue, monster.mUnit)) as XmdsInstanceMonster;
- unit.guardUnit(monster.mUnit);
- monster.AddSummonUnitList(unit.Virtual as XmdsVirtual);
- }
- return summonCount + maxSummon;
- }
- return summonCount ;
- }
- 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);
- InitData(data, out valueSet4, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
- }
- protected override void OnDispose(XmdsVirtual owner)
- {
-
- }
- }
- }
|