Advertisement
Guest User

Untitled

a guest
Aug 17th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.52 KB | None | 0 0
  1. public void Attack(SuctlPacket suctlPacket)
  2. {
  3. if (suctlPacket == null)
  4. {
  5. return;
  6. }
  7.  
  8. if (suctlPacket.TargetType != UserType.Npc)
  9. {
  10. Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("LIMITED_ACCOUNT"), 0));
  11. return;
  12. }
  13.  
  14. PenaltyLogDTO penalty = Session.Account.PenaltyLogs.OrderByDescending(s => s.DateEnd).FirstOrDefault();
  15. if (Session.Character.IsMuted() && penalty != null)
  16. {
  17. if (Session.Character.Gender == GenderType.Female)
  18. {
  19. Session.CurrentMapInstance?.Broadcast(
  20. Session.Character.GenerateSay(Language.Instance.GetMessageFromKey("MUTED_FEMALE"), 1));
  21. Session.SendPacket(Session.Character.GenerateSay(
  22. string.Format(Language.Instance.GetMessageFromKey("MUTE_TIME"),
  23. (penalty.DateEnd - DateTime.Now).ToString("hh\\:mm\\:ss")), 11));
  24. }
  25. else
  26. {
  27. Session.CurrentMapInstance?.Broadcast(
  28. Session.Character.GenerateSay(Language.Instance.GetMessageFromKey("MUTED_MALE"), 1));
  29. Session.SendPacket(Session.Character.GenerateSay(
  30. string.Format(Language.Instance.GetMessageFromKey("MUTE_TIME"),
  31. (penalty.DateEnd - DateTime.Now).ToString("hh\\:mm\\:ss")), 11));
  32. }
  33.  
  34. return;
  35. }
  36.  
  37. Mate attacker = Session.Character.Mates.Find(x => x.MateTransportId == suctlPacket.MateTransportId);
  38.  
  39. if (attacker != null && !attacker.HasBuff(CardType.SpecialAttack, (byte)AdditionalTypes.SpecialAttack.NoAttack))
  40. {
  41. IEnumerable<NpcMonsterSkill> mateSkills = attacker.Skills;
  42.  
  43. if (mateSkills != null)
  44. {
  45. NpcMonsterSkill skill = null;
  46.  
  47. List<NpcMonsterSkill> PossibleSkills = mateSkills.Where(s => (DateTime.Now - s.LastSkillUse).TotalMilliseconds >= 1000 * s.Skill.Cooldown || s.Rate == 0).ToList();
  48.  
  49. foreach (NpcMonsterSkill ski in PossibleSkills.OrderBy(rnd => ServerManager.RandomNumber()))
  50. {
  51. if (ski.Rate == 0)
  52. {
  53. skill = ski;
  54. }
  55. else if (ServerManager.RandomNumber() < ski.Rate)
  56. {
  57. skill = ski;
  58. break;
  59. }
  60. }
  61.  
  62. switch (suctlPacket.TargetType)
  63. {
  64. case UserType.Monster:
  65. if (attacker.Hp > 0)
  66. {
  67. MapMonster target = Session.CurrentMapInstance?.GetMonsterById(suctlPacket.TargetId);
  68. if (target != null)
  69. {
  70. if (attacker.BattleEntity.CanAttackEntity(target.BattleEntity))
  71. {
  72. attacker.TargetHit(target.BattleEntity, skill);
  73. }
  74. }
  75. }
  76.  
  77. return;
  78.  
  79. case UserType.Npc:
  80. if (attacker.Hp > 0)
  81. {
  82. Mate target = Session.CurrentMapInstance?.GetMate(suctlPacket.TargetId);
  83. if (target != null)
  84. {
  85. if (attacker.Owner.BattleEntity.CanAttackEntity(target.BattleEntity))
  86. {
  87. attacker.TargetHit(target.BattleEntity, skill);
  88. }
  89. else
  90. {
  91. Session.SendPacket(StaticPacketHelper.Cancel(2, target.CharacterId));
  92. }
  93. }
  94. }
  95. return;
  96.  
  97. case UserType.Player:
  98. if (attacker.Hp > 0)
  99. {
  100. Character target = Session.CurrentMapInstance?.GetSessionByCharacterId(suctlPacket.TargetId) ?.Character;
  101. if (target != null)
  102. {
  103. if (attacker.Owner.BattleEntity.CanAttackEntity(target.BattleEntity))
  104. {
  105. attacker.TargetHit(target.BattleEntity, skill);
  106. }
  107. else
  108. {
  109. Session.SendPacket(StaticPacketHelper.Cancel(2, target.CharacterId));
  110. }
  111. }
  112. }
  113.  
  114. return;
  115.  
  116. case UserType.Object:
  117. return;
  118. }
  119. }
  120. }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement