Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1.  
  2. case BCardType.CardType.RecoveryAndDamagePercent:
  3. switch (SubType)
  4. {
  5. case (byte)AdditionalTypes.RecoveryAndDamagePercent.HPRecovered/10:
  6. IDisposable obs = null;
  7. switch (session)
  8. {
  9. case Character receiverCharacter:
  10. if (IsLevelScaled)
  11. {
  12. Card hcard = ServerManager.GetCardByCardId(CardId.Value);
  13. if (hcard == null)
  14. {
  15. break;
  16. }
  17.  
  18. int bonus = receiverCharacter.Level / FirstData;
  19. int heal = (int)(receiverCharacter.HpLoad() * (bonus * 0.01));
  20.  
  21. obs = Observable.Interval(TimeSpan.FromSeconds(ThirdData + 1 < 0 ? 2 : ThirdData + 1)).Subscribe(s =>
  22. {
  23. if (receiverCharacter.Hp > 0)
  24. {
  25. receiverCharacter.Hp = (int)(receiverCharacter.Hp + heal > receiverCharacter.HpLoad() ? receiverCharacter.HpLoad() : receiverCharacter.Hp + heal);
  26. receiverCharacter.MapInstance?.Broadcast(receiverCharacter.GenerateRc(heal));
  27. receiverCharacter.Session.SendPacket(receiverCharacter.GenerateStat());
  28. }
  29. else
  30. {
  31. obs?.Dispose();
  32. }
  33. });
  34.  
  35. Observable.Timer(TimeSpan.FromSeconds(hcard.Duration * 0.1)).Subscribe(s =>
  36. {
  37. obs?.Dispose();
  38. });
  39. }
  40. break;
  41. }
  42. break;
  43. case (SubType == (byte)AdditionalTypes.RecoveryAndDamagePercent.HPReduced/10)
  44. switch (session)
  45. {
  46. case Character receiverCharacter:
  47. int loss = (int)(receiverCharacter.HpLoad() * (FirstData * 0.01));
  48. IDisposable rObs;
  49. Card rCard = ServerManager.GetCardByCardId(CardId.value);
  50.  
  51. if (rCard == null)
  52. {
  53. return;
  54. }
  55.  
  56. if (rCard.Duration <= 0)
  57. {
  58. receiverCharacter.DotDebuff = Observable.Interval(TimeSpan.FromSeconds(ThirdData + 1)).Subscribe(s =>
  59. {
  60. if (receiverCharacter.Hp > 0)
  61. {
  62. receiverCharacter.Hp = receiverCharacter.Hp - loss <= 0 ? 1 : receiverCharacter.Hp - loss;
  63. receiverCharacter.MapInstance?.Broadcast(receiverCharacter.GenerateDm((ushort)loss));
  64. receiverCharacter.Session.SendPacket(receiverCharacter.GenerateStat());
  65. }
  66. });
  67. break;
  68. }
  69.  
  70. rObs = Observable.Interval(TimeSpan.FromSeconds(ThirdData + 1)).Subscribe(s =>
  71. {
  72. if (receiverCharacter.Hp > 0)
  73. {
  74. receiverCharacter.Hp = receiverCharacter.Hp - loss <= 0 ? 1 : receiverCharacter.Hp - loss;
  75. receiverCharacter.MapInstance?.Broadcast(receiverCharacter.GenerateDm((ushort)loss));
  76. receiverCharacter.Session.SendPacket(receiverCharacter.GenerateStat());
  77. }
  78. });
  79.  
  80. Observable.Timer(TimeSpan.FromSeconds(rCard.Duration * 0.1)).Subscribe(s =>
  81. {
  82. rObs.Dispose();
  83. });
  84.  
  85. break;
  86. }
  87. break;
  88. }
  89. break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement