|
@@ -57,29 +57,61 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Magic
|
|
|
pco.Value = mNeedHitTimes * HIT_DAMAGE;
|
|
|
mOpID1 = owner.AddPropChangeOperation(pco);
|
|
|
|
|
|
- mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDmage, skillInfo, true);
|
|
|
- mUUID_2 = owner.RegistTryAddBuffEvent(OnTryAddBuffEvent, skillInfo);
|
|
|
+ //mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDmage, skillInfo, true);
|
|
|
+ mUUID_1 = owner.RegistAddOtherHPEvent(OnAddOtherHPEvnet, skillInfo);
|
|
|
+ mUUID_2 = owner.RegistTryAddBuffEvent(OnTryAddBuffEvent, skillInfo);
|
|
|
}
|
|
|
|
|
|
- private float OnHandleHitDmage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
|
|
|
- ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
|
|
|
- {
|
|
|
+ public bool OnAddOtherHPEvnet(int hp, InstanceUnit sender, InstanceUnit hitter, AttackSource source, out int finalHP)
|
|
|
+ {
|
|
|
+ //加血跳过
|
|
|
+ if(hp <= 0)
|
|
|
+ {
|
|
|
+ finalHP = hp;
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
this.lastHitTime = CommonLang.CUtils.localTimeMS;
|
|
|
- isEndDispatch = true;
|
|
|
- if (source.FromSkillType == XmdsSkillType.normalAtk && attacker.mUnit.IsPlayer)
|
|
|
+ finalHP = hp;
|
|
|
+ if (source != null && source.FromSkillType == XmdsSkillType.normalAtk)
|
|
|
{
|
|
|
- if(HIT_DAMAGE > 1 && HIT_DAMAGE_REDUCE > 0 && hitted.mUnit.GetBuffByID(BuffID) != null)
|
|
|
- {
|
|
|
- float damageReduce = HIT_DAMAGE * HIT_DAMAGE_REDUCE * XmdsUnitProp.PER;
|
|
|
- return HIT_DAMAGE - damageReduce;
|
|
|
+ if (HIT_DAMAGE > 1 && HIT_DAMAGE_REDUCE > 0 && hitter.GetBuffByID(BuffID) != null)
|
|
|
+ {
|
|
|
+ float damageReduce = HIT_DAMAGE * HIT_DAMAGE_REDUCE * XmdsUnitProp.PER;
|
|
|
+ finalHP = CUtils.CastInt(HIT_DAMAGE - damageReduce);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ finalHP = HIT_DAMAGE;
|
|
|
}
|
|
|
|
|
|
- return HIT_DAMAGE;
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
- attacker.SendBattleHintNumberB2C(0, XmdsVirtual.UnitHitEventState.Immunity, hitted.mUnit.ID);
|
|
|
- return 0;
|
|
|
- }
|
|
|
+ (sender.Virtual as XmdsVirtual).SendBattleHintNumberB2C(0, XmdsVirtual.UnitHitEventState.Immunity, hitter.ID);
|
|
|
+ finalHP = 0;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //private float OnHandleHitDmage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
|
|
|
+ // ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
|
|
|
+ //{
|
|
|
+ // this.lastHitTime = CommonLang.CUtils.localTimeMS;
|
|
|
+ // isEndDispatch = true;
|
|
|
+ // if (source.FromSkillType == XmdsSkillType.normalAtk && attacker.mUnit.IsPlayer)
|
|
|
+ // {
|
|
|
+ // if (HIT_DAMAGE > 1 && HIT_DAMAGE_REDUCE > 0 && hitted.mUnit.GetBuffByID(BuffID) != null)
|
|
|
+ // {
|
|
|
+ // float damageReduce = HIT_DAMAGE * HIT_DAMAGE_REDUCE * XmdsUnitProp.PER;
|
|
|
+ // return HIT_DAMAGE - damageReduce;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // return HIT_DAMAGE;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // attacker.SendBattleHintNumberB2C(0, XmdsVirtual.UnitHitEventState.Immunity, hitted.mUnit.ID);
|
|
|
+ // return 0;
|
|
|
+ //}
|
|
|
|
|
|
private bool OnTryAddBuffEvent(ref BuffTemplate buff, XmdsVirtual attacker, XmdsVirtual hitter, GameSkill skill)
|
|
|
{
|
|
@@ -230,7 +262,8 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Magic
|
|
|
|
|
|
protected override void OnDispose(XmdsVirtual owner)
|
|
|
{
|
|
|
- owner.UnRegistOnHitDamage(mUUID_1);
|
|
|
+ owner.UnRegistAddOtherHPEvent(mUUID_1);
|
|
|
+ //owner.UnRegistOnHitDamage(mUUID_1);
|
|
|
owner.UnRegistTryAddBuffEvent(mUUID_2);
|
|
|
owner.RemovePropChangeOperation(mOpID1);
|
|
|
}
|