Advertisement
AhmedSokr

Untitled

Apr 1st, 2020
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.15 KB | None | 0 0
  1. case (ushort)Database.SpellTable.SpellId.WrathoftheEmperor:
  2. {
  3. FloorItem item = new FloorItem(true)
  4. {
  5. ItemID = 1380,
  6. UID = FloorItem.FloorUID.Next,
  7. MapID = Attacker.MapID,
  8. mColor = 14,
  9. ItemColor = Enums.Color.Black,
  10. Type = FloorItem.Effect,
  11. Owner = Attacker.Owner,
  12. OwnerUID = Attacker.UID,
  13. FlowerType = 1,
  14. OnFloor = Time32.Now
  15. };
  16.  
  17. var suse = new SpellUse()
  18. {
  19. Attacker = Attacker.UID,
  20. Attacked = Attacker.UID,
  21. SpellID = spell.Id,
  22. SpellLevel = spell.Level,
  23. };
  24. bool CanAttack = false;
  25. IMapObject obj;
  26. if (Attacker.Owner.Screen.TryGetValue(info.TargetUid, out obj, MapObjectType.Player, MapObjectType.Monster))
  27. {
  28. if (Kernel.GetDistance(Attacker.X, Attacker.Y, obj.X, obj.Y) <= 2)
  29. {
  30. if (CanAttackEntity.Verified(Attacker, (obj as Entity), spell))
  31. {
  32. item.X = obj.X;
  33. item.Y = obj.Y;
  34.  
  35. uint damage = Calculating.Physical.Player(Attacker, (obj as Entity), spell, ref info.Attack);
  36. suse.Effect1 = info.Attack.Effect;
  37. ReceiveAttack.Player.Execute(Attacker, (obj as Entity), info.Attack, ref damage, spell);
  38. suse.AddTarget(obj.UID, damage, info.Attack);
  39.  
  40. CanAttack = true;
  41. }
  42. }
  43. }
  44. else if (Attacker.Owner.Screen.TryGetValue(info.TargetUid, out obj, MapObjectType.SobNpc))
  45. {
  46. if (Kernel.GetDistance(Attacker.X, Attacker.Y, obj.X, obj.Y) <= 2)
  47. {
  48. if (CanAttackNpc.Verified(Attacker, (obj as SobNpcSpawn), spell))
  49. {
  50. item.X = obj.X;
  51. item.Y = obj.Y;
  52.  
  53. uint damage = Physical.OnSob(Attacker, (obj as SobNpcSpawn), spell, ref info.Attack);
  54. suse.Effect1 = info.Attack.Effect;
  55. ReceiveAttack.Npc.Execute(Attacker, (obj as SobNpcSpawn), info.Attack, damage, spell);
  56. suse.AddTarget(obj.UID, damage, info.Attack);
  57. CanAttack = true;
  58. }
  59. }
  60. }
  61. if (CanAttack)
  62. {
  63. Attacker.Owner.SendScreenSpawn(item, true);
  64. suse = new SpellUse()
  65. {
  66. Attacker = Attacker.UID,
  67. SpellID = spell.Id,
  68. SpellLevel = spell.Level,
  69. X = info.Attack.X,
  70. Y = info.Attack.Y,
  71. SpellEffect = 1
  72. };
  73. Program.World.DelayedTask.StartDelayedTask(() =>
  74. {
  75. foreach (var target in Attacker.Owner.Screen.TryGetValues(MapObjectType.Player, MapObjectType.Monster))
  76. {
  77. var attacked = target as Entity;
  78.  
  79. if (Kernel.GetDistance(item.X, item.Y, attacked.X, attacked.Y) <= spell.Range)
  80. {
  81. if (CanAttackEntity.Verified(Attacker, attacked, spell))
  82. {
  83. uint damage = Calculating.Physical.Player(Attacker, attacked, spell, ref info.Attack);
  84. suse.Effect1 = info.Attack.Effect;
  85. ReceiveAttack.Player.Execute(Attacker, attacked, info.Attack, ref damage, spell);
  86. suse.AddTarget(attacked.UID, damage, info.Attack);
  87. }
  88. }
  89. }
  90.  
  91. foreach (var target in Attacker.Owner.Screen.TryGetValues(MapObjectType.SobNpc))
  92. {
  93. var attacked = target as SobNpcSpawn;
  94.  
  95. if (Kernel.GetDistance(item.X, item.Y, attacked.X, attacked.Y) <= spell.Range)
  96. {
  97. if (CanAttackNpc.Verified(Attacker, attacked, spell))
  98. {
  99. uint damage = Physical.OnSob(Attacker, attacked, spell, ref info.Attack);
  100. suse.Effect1 = info.Attack.Effect;
  101. ReceiveAttack.Npc.Execute(Attacker, attacked, info.Attack, damage, spell);
  102. suse.AddTarget(attacked.UID, damage, info.Attack);
  103. }
  104. }
  105. }
  106. Attacker.Owner.SendScreen(suse);
  107.  
  108. foreach (var user in Kernel.GamePool.Values.Where(u => u.Entity.MapID == item.MapID))
  109. {
  110. if (Kernel.GetDistance(user.Entity.X, user.Entity.Y, item.X, item.Y) <= 18)
  111. {
  112. item.Type = FloorItem.RemoveEffect;
  113. user.Screen.Remove(item);
  114. user.Send(item);
  115. }
  116. }
  117. }, 1000);
  118. }
  119. break;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement