123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using CommonAI.Data;
- using CommonAI.Zone;
- using CommonAI.Zone.Formula;
- using CommonAI.Zone.Helper;
- using CommonLang;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using XmdsCommonSkill.Plugin.Buffs;
- using XmdsCommonSkill.Plugin.Skills;
- namespace XmdsCommonSkill.Plugin.PassiveSkills.Monster
- {
- /// <summary>
- /// 在生命低于50%时,进入狂暴状态,攻击增加x%,防御增加y%,这个效果可持续30秒(被动,无动作).
- /// </summary>
- public class Monster_10330403_Passive : XmdsPassiveSkillBase
- {
- /// <summary>
- ///ID.
- /// </summary>
- public static int ID = 10330403;
- /// <summary>
- /// BUFF时间.
- /// </summary>
- public static int Buff_Time = 30000;
- /// <summary>
- /// BUFF ID.
- /// </summary>
- public static int Buff_ID = 10330403;
- /// <summary>
- /// BUFF 攻击增加.
- /// </summary>
- public static int Buff_Value_1 = 1000;
- /// <summary>
- /// BUFF 防御增加.
- /// </summary>
- public static int Buff_Value_2 = 1000;
- public static int Condition_1 = 5000;
- /// <summary>
- /// 是否使用.
- /// </summary>
- private bool HasDone = false;
- private int mUUID = 0;
- public override int SkillID
- {
- get { return ID; }
- }
- protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
- {
- XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
- var bufflist = pack.GetXmdsBuffList();
- if (bufflist.Count >= 2)
- {
- //攻击增加.
- var propChange = (XmdsBuff_PropChange)bufflist[0];
- propChange.CurentChangeType = XmdsVirtual.UnitAttributeType.Attack;
- propChange.CurrentValue = Buff_Value_1;
- propChange.IsPercent = true;
- //防御增加.
- propChange = (XmdsBuff_PropChange)bufflist[1];
- propChange.CurentChangeType = XmdsVirtual.UnitAttributeType.Defence;
- propChange.CurrentValue = Buff_Value_2;
- propChange.IsPercent = true;
- }
- BuffTemplate bt = pack.mBuffTemplate;
- bt.IsHarmful = false;
- bt.LifeTimeMS = Buff_Time;
-
- pack.BindTemplateAndDispose();
- owner.RegistSendBuff(bt);
- //注册招架监听.
- mUUID = owner.RegistOnHitDamage(OnHandleOnHitDamage, skillInfo, true);
- }
- //招架触发回调.
- private float OnHandleOnHitDamage(float damage, XmdsVirtual hitter, XmdsVirtual attacker, AttackSource source,
- ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
- {
- if (HasDone == false)
- {
- int v1 = CUtils.CastInt(hitter.mUnit.MaxHP * (Condition_1 * 1.0f / XmdsDamageCalculator.PERER));
- //小于指定血量.
- if (hitter.mUnit.CurrentHP - damage < v1)
- {
- HasDone = true;
- //触发技能效果.
- hitter.mUnit.AddBuff(Buff_ID, hitter.mUnit);
- CommonAI.Zone.LaunchSpell ls = new CommonAI.Zone.LaunchSpell();
- ls.SpellID = SkillID;
- //播放声音特效.
- hitter.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitter.mUnit, ls,
- hitter.mUnit.X, hitter.mUnit.Y, hitter.mUnit.ID);
- }
- }
- return damage;
- }
- protected override void OnDispose(XmdsVirtual owner)
- {
- owner.UnRegistOnHitDamage(mUUID);
- }
- }
- }
|