SuckBloodFunEvent.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using UnityEngine;
  2. using System.Collections;
  3. //吸血
  4. public class SuckBloodFunEvent : DurationFunctionEvent
  5. {
  6. public static SuckBloodFunEvent Creator(BuffFunctionData data)
  7. {
  8. return new SuckBloodFunEvent(data);
  9. }
  10. public SuckBloodFunEvent(BuffFunctionData data) : base(data)
  11. {
  12. mType = data.functionType;
  13. }
  14. public override void Enter(Fighter fighter)
  15. {
  16. EventMgr.AddEventListener<UIEventParamFighterHurt>(ECoreEventType.EID_FIGHTER_HURT, OnFighterHurt);
  17. base.Enter(fighter);
  18. }
  19. public override void Exit(Fighter fighter)
  20. {
  21. EventMgr.RemoveEventListener<UIEventParamFighterHurt>(ECoreEventType.EID_FIGHTER_HURT, OnFighterHurt);
  22. base.Exit(fighter);
  23. }
  24. private void OnFighterHurt(CoreEvent<UIEventParamFighterHurt> ce)
  25. {
  26. UIEventParamFighterHurt param = ce.Data;
  27. Fighter caster = param.mCaster;
  28. Fighter target = param.mTarget;
  29. if(mHitInfo.Target.Id == caster.Id)
  30. {
  31. int nValidSuck = 0;
  32. int.TryParse(Data.extendParam, out nValidSuck);
  33. nValidSuck = (int)(nValidSuck * 0.01f * mHitInfo.Target.MaxLife);
  34. nValidSuck = Mathf.Min((int)(Data.value * 0.01f * param.mHurtVal), nValidSuck);
  35. mHitInfo.Target.Life += nValidSuck;
  36. mHitInfo.Target.RefreshLife();
  37. //if (mHitInfo.Target.Statistics != null)
  38. // mHitInfo.Target.Statistics.StatHealInfo(mHitInfo.Target, param.mHurtVal);
  39. //if (param.mHurtVal > 0)
  40. // Caster.Battle.Output(OutputType.Heal, Caster, Caster, SkillName, (int)param.mHurtVal);
  41. if (nValidSuck > 0)
  42. EventMgr.DispatchEvent<object[]>(new CoreEvent<object[]>(ECoreEventType.EID_FIGHTER_HEAL, new object[] { mHitInfo.Target, nValidSuck }));
  43. }
  44. }
  45. }