Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.67 KB | None | 0 0
  1.  
  2. case BCardType.CardType.DrainAndSteal:
  3. if (ServerManager.RandomNumber() < FirstData)
  4. {
  5. return;
  6. }
  7. switch (SubType)
  8. {
  9. case (byte)AdditionalTypes.DrainAndSteal.LeechEnemyHP / 10 :
  10. int heal = 0;
  11. switch (session)
  12. {
  13. case MapMonster toDrain when caster is Character drainer:
  14. heal = drainer.Level * SecondData;
  15. drainer.Hp = (int)(heal + drainer.Hp > drainer.HpLoad() ? drainer.HpLoad() : drainer.Hp + heal);
  16. drainer.MapInstance?.Broadcast(drainer.GenerateRc((int)(heal + drainer.Hp > drainer.HpLoad() ? drainer.HpLoad() - drainer.Hp : heal)));
  17. toDrain.CurrentHp -= heal;
  18. drainer.Session.SendPacket(drainer.GenerateStat());
  19. if (toDrain.CurrentHp <= 0)
  20. {
  21. toDrain.CurrentHp = 1;
  22. }
  23.  
  24. break;
  25. case Character characterDrained when caster is Character drainerCharacter:
  26. heal = drainerCharacter.Level * SecondData;
  27. drainerCharacter.Hp = (int)(heal + drainerCharacter.Hp > drainerCharacter.HpLoad() ? drainerCharacter.HpLoad() : drainerCharacter.Hp + heal);
  28. drainerCharacter.MapInstance?.Broadcast(drainerCharacter.GenerateRc((int)(heal + drainerCharacter.Hp > drainerCharacter.HpLoad() ? drainerCharacter.HpLoad() - drainerCharacter.Hp : heal)));
  29. characterDrained.Hp -= heal;
  30. characterDrained.Session.SendPacket(characterDrained.GenerateStat());
  31. drainerCharacter.Session.SendPacket(drainerCharacter.GenerateStat());
  32. if (characterDrained.Hp <= 0)
  33. {
  34. characterDrained.Hp = 1;
  35. }
  36.  
  37. break;
  38. case Character characterDrained when caster is MapMonster drainerMapMonster:
  39. heal = drainerMapMonster.Monster.Level * SecondData;
  40. drainerMapMonster.CurrentHp = (heal + drainerMapMonster.CurrentHp > drainerMapMonster.MaxHp ? drainerMapMonster.MaxHp : drainerMapMonster.CurrentHp + heal);
  41. drainerMapMonster.MapInstance?.Broadcast(drainerMapMonster.GenerateRc((heal + drainerMapMonster.CurrentHp > drainerMapMonster.MaxHp ? drainerMapMonster.MaxHp - drainerMapMonster.CurrentHp : heal)));
  42. characterDrained.Hp -= heal;
  43. characterDrained.Session.SendPacket(characterDrained.GenerateStat());
  44. if (characterDrained.Hp <= 0)
  45. {
  46. characterDrained.Hp = 1;
  47. }
  48. break;
  49. }
  50. break;
  51. case (byte)AdditionalTypes.DrainAndSteal.LeechEnemyMP / 10:
  52. int mpDrain = 0;
  53. switch (session)
  54. {
  55. case MapMonster toDrain when caster is Character drainer:
  56. mpDrain = drainer.Level * SecondData;
  57. drainer.Mp = (int)(mpDrain + drainer.Mp > drainer.MpLoad() ? drainer.MpLoad() : drainer.Mp + mpDrain);
  58. toDrain.CurrentMp -= mpDrain;
  59. drainer.Session.SendPacket(drainer.GenerateStat());
  60. if (toDrain.CurrentMp <= 0)
  61. {
  62. toDrain.CurrentMp = 1;
  63. }
  64.  
  65. break;
  66. case Character characterDrained when caster is Character drainerCharacter:
  67. mpDrain = drainerCharacter.Level * SecondData;
  68. drainerCharacter.Mp = (int)(mpDrain + drainerCharacter.Mp > drainerCharacter.MpLoad() ? drainerCharacter.MpLoad() : drainerCharacter.Mp + mpDrain);
  69. characterDrained.Mp -= mpDrain;
  70. characterDrained.Session.SendPacket(characterDrained.GenerateStat());
  71. drainerCharacter.Session.SendPacket(drainerCharacter.GenerateStat());
  72. if (characterDrained.Mp <= 0)
  73. {
  74. characterDrained.Mp = 1;
  75. }
  76.  
  77. break;
  78. case Character characterDrained when caster is MapMonster drainerMapMonster:
  79. // TODO: Add a MaxMp property to MapMonsters
  80. /*
  81. mpDrain = drainerMapMonster.Monster.Level * SecondData;
  82. drainerMapMonster.CurrentMp = (mpDrain + drainerMapMonster.CurrentMp > drainerMapMonster.MaxHp ? drainerMapMonster.MaxHp : drainerMapMonster.CurrentHp + mpDrain);
  83. drainerMapMonster.MapInstance?.Broadcast(drainerMapMonster.GenerateRc((mpDrain + drainerMapMonster.CurrentHp > drainerMapMonster.MaxHp ? drainerMapMonster.MaxHp - drainerMapMonster.CurrentHp : mpDrain)));
  84. characterDrained.Hp -= mpDrain;
  85. characterDrained.MapInstance?.Broadcast(characterDrained.GenerateStat());
  86. if (characterDrained.Hp <= 0)
  87. {
  88. characterDrained.Hp = 1;
  89. }*/
  90. break;
  91. }
  92. break;
  93. default:
  94. break;
  95. }
  96. break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement