123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- using System;
- using CommonAI.Zone;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.Plugin.Units;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using XmdsCommonServer.XLS.Data;
- using CommonLang.Vector;
- namespace XmdsCommonSkill.Plugin.Skills.Priest
- {
- /// <summary>
- /// 强化暗影魔: 使暗影魔的属性全面提升,生命提高x%,攻击提高x%.
- /// </summary>
- public class Priest_501030 : Priest_500030
- {
- /// <summary>
- /// 技能ID.
- /// </summary>
- public static new int ID = 501030;
- /// <summary>
- /// 血量提升.
- /// </summary>
- public static XmdsSkillValue HP_up;
- /// <summary>
- /// 攻击提升.
- /// </summary>
- public static XmdsSkillValue Atk_up;
- /// <summary>
- /// 仇恨系数.
- /// </summary>
- public static new XmdsSkillValue ThreatValue;
- public override int SkillID
- {
- get
- {
- return ID;
- }
- }
- protected override void OnThreatValueEvent(BattleParams param)
- {
- param.ThreatValue = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, ThreatValue);
- }
- protected override void OnSkillLogicEvent(BattleParams param)
- {
- if (param.AtkProp.DamagePerID == 1)
- {
- callMonster2(param, SummonUnit_ID);
- }
- }
- /// <summary>
- /// 召唤暗影魔.
- /// </summary>
- private void callMonster2(BattleParams param, int templateID)
- {
- UnitInfo info = XmdsBattleSkill.GetUnitInfo(SummonUnit_ID);
- int r = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SummonLimit);
- int numPerTime = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SumUnitCount);
- XmdsVirtual_Player player = param.Attacker as XmdsVirtual_Player; ;
- XmdsVirtual_SummonUnit su = null;
- if (player != null)
- {
- int cur = player.GetSummonUnitListCount();
- while (cur + numPerTime > r)
- {
- su = player.GetFirstTimesupSummonUnit();
- if (su != null)
- {
- (su.mUnit as XmdsInstanceSummonUnit).kill(null, false);
- cur--;
- }
- }
- }
- for (int i = 0; i < numPerTime; i++)
- {
- //var pos = param.Attacker.mUnit.Parent.PathFinder.FindNearRandomMoveableNode(
- // param.Attacker.mUnit.RandomN,
- // param.Attacker.mUnit.X,
- // param.Attacker.mUnit.Y,
- // 2, true);
- AddUnitEvent aue = null;
- Vector2 pos = new Vector2(param.Attacker.mUnit.X, param.Attacker.mUnit.Y);
- MoveLinear(param.Attacker.mUnit, ref pos, SummonDistance, param.Attacker.mUnit.Direction);
- var unit = (param.Attacker.mUnit.Parent.AddUnit(
- info, info.Name,
- param.Attacker.mUnit.Force, param.Attacker.GetUnitLv(),
- pos.X,
- pos.Y,
- param.Attacker.mUnit.Direction,
- out aue,
- param.Attacker.mUnit)) as XmdsInstanceSummonUnit;
-
- XmdsVirtual zv = (unit.Virtual) as XmdsVirtual;
- //XmdsUnitProperties zup = unit.Info.Properties as XmdsUnitProperties;
- zv.mProp.ServerData.BaseInfo.UnitLv = param.Attacker.GetUnitLv();
- //继承本体部分属性.
- XmdsBattleHelper.SetSummonUnitProp(zv, param.Attacker);
- aue.Sync.Name = zv.mProp.ServerData.BaseInfo.name;
- //血量提升.
- float k = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, HP_up);
- k = k / XmdsDamageCalculator.PERER;
- zv.MirrorProp.BaseMaxHP = (int)((1 + k) * zv.MirrorProp.BaseMaxHP);
- zv.MirrorProp.HP = zv.MirrorProp.MaxHP;
- //攻击提升.
- k = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, Atk_up);
- k = k / XmdsDamageCalculator.PERER;
- zv.MirrorProp.BaseMaxPhy = (int)((1 + k) * zv.MirrorProp.MaxPhy);
- zv.MirrorProp.BaseMinPhy = (int)((1 + k) * zv.MirrorProp.MinPhy);
- zv.MirrorProp.BaseMaxMag = (int)((1 + k) * zv.MirrorProp.MaxMag);
- zv.MirrorProp.BaseMinMag = (int)((1 + k) * zv.MirrorProp.MinMag);
- info.LifeTimeMS = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SummonUnit_LifeTime);
- //unit.guardUnit(param.Attacker.mUnit);
- unit.SummonerUnit = param.Attacker.mUnit;
- if (player != null)
- {
- player.AddSummonUnitList(unit.Virtual as XmdsVirtual_SummonUnit);
- }
- }
- }
- protected override void OnInitSkillParam()
- {
- base.OnInitSkillParam();
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out HP_up, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- InitData(data, out Atk_up, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
- InitData(data, out ThreatValue, XmdsSkillData.XmdsSkillDataKey.HateRate);
- }
- }
- }
|