Advertisement
Guest User

Untitled

a guest
Aug 20th, 2014
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.69 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5. public static bool CanAttack(Entity attacker, Entity attacked, SpellInformation spell, bool melee)
  6. {
  7. if (attacked.MapID == 1584 && attacked.Spouse == attacker.Name && !attacked.ContainsFlag(576460752303423488uL))
  8. {
  9. return false;
  10. }
  11. if (attacked.ContainsFlag(576460752303423488uL))
  12. {
  13. if (attacked.MapID == 1584)
  14. {
  15. if (!(attacked.Spouse == attacker.Name))
  16. {
  17. attacker.Owner.Send(new Message("This is Not Your Spouse Pleas Go And Uncaged her", Color.Black, 2012u));
  18. return false;
  19. }
  20. Attack attack = new Attack(true);
  21. uint num = 50000u;
  22. attack.Effect1 = Attack.AttackEffects1.None;
  23. attack.Attacker = attacker.UID;
  24. attack.Attacked = attacked.UID;
  25. attack.AttackType = 2u;
  26. attack.Damage = 50000u;
  27. attack.X = attacked.X;
  28. attack.Y = attacked.Y;
  29. if (attacked.FreezLife <= 50000u)
  30. {
  31. attacked.Owner.SendScreen(attack, true);
  32. attacked.FrozenD = false;
  33. attacked.FrozenTime = 0;
  34. attacked.RemoveFlag(576460752303423488uL);
  35. GameCharacterUpdates gameCharacterUpdates = new GameCharacterUpdates(true);
  36. gameCharacterUpdates.UID = attacked.UID;
  37. gameCharacterUpdates.Remove(59u);
  38. attacked.Owner.SendScreen(gameCharacterUpdates, true);
  39. Thread.Sleep(1500);
  40. GameClient[] gamePool = Program.GamePool;
  41. for (int i = 0; i < gamePool.Length; i++)
  42. {
  43. GameClient gameClient = gamePool[i];
  44. if (gameClient.Entity.MapID == 1584 && gameClient != attacker.Owner && gameClient.Entity.Name != attacker.Spouse)
  45. {
  46. Calculate.Melee(attacker, gameClient.Entity, ref attack, 0);
  47. attack.Effect1 = Attack.AttackEffects1.None;
  48. attack.Damage = num;
  49. ushort x = gameClient.Entity.X;
  50. ushort y = gameClient.Entity.Y;
  51. Map.UpdateCoordonatesForAngle(ref x, ref y, Kernel.GetAngle(gameClient.Entity.X, gameClient.Entity.Y, attacker.X, attacker.Y));
  52. attacker.Shift(x, y);
  53. attack.X = x;
  54. attack.Y = y;
  55. attack.Damage = num;
  56. attack.AttackType = 45u;
  57. attacked.Owner.SendScreen(attack, true);
  58. gameClient.Entity.Die(attacker);
  59. Thread.Sleep(600);
  60. }
  61. }
  62. Thread.Sleep(1500);
  63. GameClient[] teammates = attacker.Owner.Team.Teammates;
  64. for (int j = 0; j < teammates.Length; j++)
  65. {
  66. GameClient gameClient2 = teammates[j];
  67. gameClient2.Entity.Teleport(1002, 301, 281);
  68. }
  69. attacker.ConquerPoints += 5000u;
  70. attacked.ConquerPoints += 5000u;
  71. }
  72. else
  73. {
  74. attacked.FreezLife -= num;
  75. attacked.Owner.SendScreen(attack, true);
  76. }
  77. }
  78. return false;
  79. }
  80. if (attacker.UID == attacked.UID)
  81. {
  82. return false;
  83. }
  84. if (attacker.SkillTeamWatchingElitePKMatch != null)
  85. {
  86. return false;
  87. }
  88. if (spell != null && spell.ID != 8001)
  89. {
  90. if (spell.OnlyGround && attacked.ContainsFlag(134217728uL))
  91. {
  92. return false;
  93. }
  94. if (melee && attacked.ContainsFlag(134217728uL))
  95. {
  96. return false;
  97. }
  98. }
  99. if (attacker.EntityFlag == EntityFlag.Player && attacked.EntityFlag == EntityFlag.Player && attacked.Owner.Team != null && attacker.Owner.Team != null && attacker.Owner.Team.EliteFighterStats != null && attacked.Owner.Team.EliteFighterStats != null && attacker.MapID == attacked.Owner.Team.EliteMatch.Map.ID && attacker.Owner.Team.EliteMatch != null)
  100. {
  101. return attacker.Owner.Team != attacked.Owner.Team;
  102. }
  103. if (Program.IsTwinCityWar && attacker.EntityFlag == EntityFlag.Player && attacked.EntityFlag == EntityFlag.Player && attacked.Away == 1)
  104. {
  105. return false;
  106. }
  107. if (attacker.EntityFlag == EntityFlag.Player && attacked.EntityFlag == EntityFlag.Player && attacked.SwitchJiang && attacker.SwitchJiang && attacked.MapID == 1002 && attacker.MapID == 1002)
  108. {
  109. return !attacked.Dead;
  110. }
  111. if (spell != null && spell.ID == 6010 && attacked.ContainsFlag(134217728uL))
  112. {
  113. return false;
  114. }
  115. if (spell != null && spell.ID == 10381 && attacked.ContainsFlag(134217728uL))
  116. {
  117. return false;
  118. }
  119. if (spell != null && spell.ID == 6000 && attacked.ContainsFlag(134217728uL))
  120. {
  121. return false;
  122. }
  123. if (spell != null && spell.ID == 5030 && attacked.ContainsFlag(134217728uL))
  124. {
  125. return false;
  126. }
  127. if (spell == null && attacked.ContainsFlag(134217728uL))
  128. {
  129. return false;
  130. }
  131. if (attacked.EntityFlag == EntityFlag.Monster && attacked.MonsterInfo.ID == 9879u)
  132. {
  133. return false;
  134. }
  135. if (attacked.Dead)
  136. {
  137. return false;
  138. }
  139. if (attacker.EntityFlag == EntityFlag.Player && attacker.Owner.WatchingElitePKMatch != null)
  140. {
  141. return false;
  142. }
  143. if (attacked.EntityFlag == EntityFlag.Player && attacked.Owner.WatchingElitePKMatch != null)
  144. {
  145. return false;
  146. }
  147. if (attacker.EntityFlag == EntityFlag.Player && attacked != null && attacked.EntityFlag == EntityFlag.Player && attacker.Owner.InTeamQualifier() && attacked.Owner.InTeamQualifier())
  148. {
  149. return !attacker.Owner.Team.IsTeammate(attacked.UID);
  150. }
  151. if (attacker.MapID == 2057 && (!CaptureTheFlag.Attackable(attacker) || !CaptureTheFlag.Attackable(attacked)))
  152. {
  153. return false;
  154. }
  155. if (attacker.MapID == 8883)
  156. {
  157. return attacker.TeamDeathMatchTeamKey != attacked.TeamDeathMatchTeamKey;
  158. }
  159. if (spell != null && spell.CanKill && attacker.EntityFlag == EntityFlag.Player && Constants.PKForbiddenMaps.Contains(attacker.Owner.Map.ID) && attacked.EntityFlag == EntityFlag.Player)
  160. {
  161. return false;
  162. }
  163. if (attacker.EntityFlag == EntityFlag.Player && attacker.Owner.WatchingGroup != null)
  164. {
  165. return false;
  166. }
  167. if (attacked == null)
  168. {
  169. return false;
  170. }
  171. if (attacked.Dead)
  172. {
  173. attacker.AttackPacket = null;
  174. return false;
  175. }
  176. if (attacker.EntityFlag == EntityFlag.Player && attacked.EntityFlag == EntityFlag.Player && ((attacker.Owner.InQualifier() && attacked.Owner.IsWatching()) || (attacked.Owner.InQualifier() && attacker.Owner.IsWatching())))
  177. {
  178. return false;
  179. }
  180. if (attacker.EntityFlag == EntityFlag.Player && Time32.Now < attacker.Owner.CantAttack)
  181. {
  182. return false;
  183. }
  184. if (attacked.EntityFlag == EntityFlag.Monster)
  185. {
  186. if (attacked.Companion && Constants.PKForbiddenMaps.Contains(attacker.Owner.Map.ID))
  187. {
  188. if (attacked.Owner == attacker.Owner)
  189. {
  190. return false;
  191. }
  192. if (attacker.PKMode != Enums.PKMode.PK && attacker.PKMode != Enums.PKMode.Team)
  193. {
  194. return false;
  195. }
  196. attacker.AddFlag(1uL);
  197. attacker.FlashingNameStamp = Time32.Now;
  198. attacker.FlashingNameTime = 10;
  199. return true;
  200. }
  201. else
  202. {
  203. if (!attacked.Name.Contains("Guard"))
  204. {
  205. return true;
  206. }
  207. if (attacker.PKMode != Enums.PKMode.PK && attacker.PKMode != Enums.PKMode.Team)
  208. {
  209. return false;
  210. }
  211. attacker.AddFlag(1uL);
  212. attacker.FlashingNameStamp = Time32.Now;
  213. attacker.FlashingNameTime = 10;
  214. return true;
  215. }
  216. }
  217. else
  218. {
  219. if (attacked.EntityFlag == EntityFlag.Player && !attacked.Owner.Attackable)
  220. {
  221. return false;
  222. }
  223. if (attacker.EntityFlag == EntityFlag.Player && attacker.Owner.WatchingGroup == null && attacked.EntityFlag == EntityFlag.Player && attacked.Owner.WatchingGroup != null)
  224. {
  225. return false;
  226. }
  227. if (Constants.PKForbiddenMaps.Contains(attacker.Owner.Map.ID))
  228. {
  229. if (attacker.PKMode == Enums.PKMode.PK || attacker.PKMode == Enums.PKMode.Team || (spell != null && spell.CanKill))
  230. {
  231. attacker.Owner.Send(Constants.PKForbidden);
  232. attacker.AttackPacket = null;
  233. }
  234. return false;
  235. }
  236. if (attacker.PKMode == Enums.PKMode.Capture && (attacked.ContainsFlag(1uL) || attacked.PKPoints > 99))
  237. {
  238. return true;
  239. }
  240. if (attacker.PKMode == Enums.PKMode.Peace)
  241. {
  242. return false;
  243. }
  244. if (attacker.UID == attacked.UID)
  245. {
  246. return false;
  247. }
  248. if (attacker.PKMode == Enums.PKMode.Team)
  249. {
  250. if (attacker.Owner.Team != null && attacker.Owner.Team.IsTeammate(attacked.UID))
  251. {
  252. attacker.AttackPacket = null;
  253. return false;
  254. }
  255. if (attacker.GuildID == attacked.GuildID && attacker.GuildID != 0)
  256. {
  257. attacker.AttackPacket = null;
  258. return false;
  259. }
  260. if (attacker.ClanId == attacked.ClanId && attacker.ClanId != 0u)
  261. {
  262. attacker.AttackPacket = null;
  263. return false;
  264. }
  265. if (attacker.Owner.Friends.ContainsKey(attacked.UID))
  266. {
  267. attacker.AttackPacket = null;
  268. return false;
  269. }
  270. if (attacker.Owner.Guild != null && attacker.Owner.Guild.Ally != null && attacker.Owner.Guild.Ally.ContainsKey((uint)attacked.GuildID))
  271. {
  272. attacker.AttackPacket = null;
  273. return false;
  274. }
  275. if (attacker.ClanId != 0u)
  276. {
  277. Clan getClan = attacker.GetClan;
  278. if (getClan != null && getClan.Allies.ContainsKey(attacked.ClanId))
  279. {
  280. attacker.AttackPacket = null;
  281. return false;
  282. }
  283. }
  284. }
  285. if (spell != null && spell.OnlyGround && attacked.ContainsFlag(134217728uL))
  286. {
  287. return false;
  288. }
  289. if (spell != null && !spell.CanKill)
  290. {
  291. return true;
  292. }
  293. if (attacker.PKMode != Enums.PKMode.PK && attacker.PKMode != Enums.PKMode.Team && attacked.PKPoints < 99)
  294. {
  295. attacker.AttackPacket = null;
  296. return false;
  297. }
  298. if (!attacked.ContainsFlag(1uL) && !attacked.ContainsFlag(32768uL))
  299. {
  300. if (Constants.PKFreeMaps.Contains(attacker.MapID))
  301. {
  302. return true;
  303. }
  304. if (Constants.Damage1Map.Contains(attacker.MapID))
  305. {
  306. return true;
  307. }
  308. if (attacker.Owner.Map.BaseID == 700)
  309. {
  310. return true;
  311. }
  312. attacker.AddFlag(1uL);
  313. attacker.FlashingNameStamp = Time32.Now;
  314. attacker.FlashingNameTime = 10;
  315. }
  316. return true;
  317. }
  318. }
  319.  
  320.  
  321. public static void ReceiveAttack(Entity attacker, Entity attacked, Attack attack, uint damage, SpellInformation spell)
  322. {
  323. if (attacker.MapID == 8883)
  324. {
  325. DeathMatch.Points[attacker.TeamDeathMatchTeamKey]++;
  326. attacker.TeamDeathMatch_Hits++;
  327. attacked.Hitpoints = attacked.MaxHitpoints;
  328. }
  329. if ((!attacked.Name.Contains("Guard") || attacked.EntityFlag != EntityFlag.Monster) && attacker.EntityFlag == EntityFlag.Player && attacked.EntityFlag != EntityFlag.Player && !attacked.Name.Contains("Guard"))
  330. {
  331. if (damage > attacked.Hitpoints)
  332. {
  333. if (attacker.Name != "SwordMaster" && attacker.Name != "ThrillingSpook" && attacker.Name != "LavaBeast" && attacker.Name != "SnowBanshee" && attacker.Name != "SnowBansheeSoul" && attacker.Name != "TeratoDragon")
  334. {
  335. attacker.Owner.IncreaseExperience(Calculate.CalculateExpBonus((ushort)attacker.Level, (ushort)attacked.Level, (ulong)Math.Min(damage, attacked.Hitpoints)), true);
  336. }
  337. if (spell != null)
  338. {
  339. attacker.Owner.IncreaseSpellExperience((uint)Calculate.CalculateExpBonus((ushort)attacker.Level, (ushort)attacked.Level, (ulong)Math.Min(damage, attacked.Hitpoints)), spell.ID);
  340. }
  341. }
  342. else
  343. {
  344. if (attacker.Name != "SwordMaster" && attacker.Name != "ThrillingSpook" && attacker.Name != "LavaBeast" && attacker.Name != "SnowBanshee" && attacker.Name != "SnowBansheeSoul" && attacker.Name != "TeratoDragon")
  345. {
  346. attacker.Owner.IncreaseExperience(Calculate.CalculateExpBonus((ushort)attacker.Level, (ushort)attacked.Level, (ulong)damage), true);
  347. }
  348. if (spell != null)
  349. {
  350. attacker.Owner.IncreaseSpellExperience((uint)Calculate.CalculateExpBonus((ushort)attacker.Level, (ushort)attacked.Level, (ulong)damage), spell.ID);
  351. }
  352. }
  353. }
  354. if (attacker.EntityFlag == EntityFlag.Monster && attacked.EntityFlag == EntityFlag.Player)
  355. {
  356. if (attacked.Action == 250)
  357. {
  358. if (attacked.Stamina > 20)
  359. {
  360. attacked.Stamina -= 20;
  361. }
  362. else
  363. {
  364. attacked.Stamina = 0;
  365. }
  366. }
  367. attacked.Action = 0;
  368. }
  369. if (attack.AttackType == 24u)
  370. {
  371. if (attacked.Hitpoints > damage)
  372. {
  373. if (attacked.Owner != null && attacker.Owner != null && attacked.Owner.Team != null && attacker.Owner.Team != null && attacker.Owner.Team.EliteFighterStats != null && attacked.Owner.Team.EliteFighterStats != null && attacker.MapID == attacked.Owner.Team.EliteMatch.Map.ID && attacker.Owner.Team.EliteMatch != null)
  374. {
  375. attacker.Owner.Team.EliteFighterStats.Points += damage;
  376. attacker.Owner.Team.SendMesageTeam(attacker.Owner.Team.EliteMatch.CreateUpdate().ToArray(), 0u);
  377. attacked.Owner.Team.SendMesageTeam(attacker.Owner.Team.EliteMatch.CreateUpdate().ToArray(), 0u);
  378. }
  379. if (attacked.EntityFlag == EntityFlag.Monster && attacker.MapID == 6421)
  380. {
  381. Entity.UpdateDamage(attacker.Owner, attacked, damage, 0u);
  382. }
  383. attacker.Owner.UpdateQualifier(attacker.Owner, attacked.Owner, (long)((ulong)damage));
  384. attacked.Hitpoints -= damage;
  385. return;
  386. }
  387. if (attacked.EntityFlag == EntityFlag.Monster && attacker.MapID == 6421)
  388. {
  389. Entity.UpdateDamage(attacker.Owner, attacked, damage, 0u);
  390. }
  391. attacker.Owner.UpdateQualifier(attacker.Owner, attacked.Owner, (long)((ulong)attacked.Hitpoints));
  392. attacked.CauseOfDeathIsMagic = true;
  393. attacked.Die(attacker);
  394. attacked.IsDropped = false;
  395. if (attacked.Owner != null && attacker.Owner != null && attacked.Owner.Team != null && attacker.Owner.Team != null && attacker.Owner.Team.EliteFighterStats != null && attacked.Owner.Team.EliteFighterStats != null && attacker.MapID == attacked.Owner.Team.EliteMatch.Map.ID && attacker.Owner.Team.EliteMatch != null)
  396. {
  397. if (!attacked.Owner.Team.Alive)
  398. {
  399. attacker.Owner.Team.EliteFighterStats.Points += damage;
  400. attacker.Owner.Team.EliteMatch.End(attacked.Owner.Team);
  401. return;
  402. }
  403. attacker.Owner.Team.EliteFighterStats.Points += damage;
  404. attacker.Owner.Team.SendMesageTeam(attacker.Owner.Team.EliteMatch.CreateUpdate().ToArray(), 0u);
  405. attacked.Owner.Team.SendMesageTeam(attacker.Owner.Team.EliteMatch.CreateUpdate().ToArray(), 0u);
  406. return;
  407. }
  408. }
  409. else
  410. {
  411. if (attacked.Hitpoints <= damage)
  412. {
  413. if (attacked.EntityFlag == EntityFlag.Monster && attacker.MapID == 6421)
  414. {
  415. Entity.UpdateDamage(attacker.Owner, attacked, damage, 0u);
  416. }
  417. if (attacked.EntityFlag == EntityFlag.Player)
  418. {
  419. attacker.Owner.UpdateQualifier(attacker.Owner, attacked.Owner, (long)((ulong)attacked.Hitpoints));
  420. attacked.Owner.SendScreen(attack, true);
  421. attacker.AttackPacket = null;
  422. }
  423. else
  424. {
  425. attacked.MonsterInfo.SendScreen(attack);
  426. }
  427. attacked.Die(attacker);
  428. if (attacked.Owner != null && attacker.Owner != null && attacked.Owner.Team != null && attacker.Owner.Team != null && attacker.Owner.Team.EliteFighterStats != null && attacked.Owner.Team.EliteFighterStats != null && attacker.MapID == attacked.Owner.Team.EliteMatch.Map.ID && attacker.Owner.Team.EliteMatch != null)
  429. {
  430. if (!attacked.Owner.Team.Alive)
  431. {
  432. attacker.Owner.Team.EliteFighterStats.Points += damage;
  433. attacker.Owner.Team.EliteMatch.End(attacked.Owner.Team);
  434. return;
  435. }
  436. attacker.Owner.Team.EliteFighterStats.Points += damage;
  437. attacker.Owner.Team.SendMesageTeam(attacker.Owner.Team.EliteMatch.CreateUpdate().ToArray(), 0u);
  438. attacked.Owner.Team.SendMesageTeam(attacker.Owner.Team.EliteMatch.CreateUpdate().ToArray(), 0u);
  439. return;
  440. }
  441. }
  442. else
  443. {
  444. if (attacked.Owner != null && attacker.Owner != null && attacked.Owner.Team != null && attacker.Owner.Team != null && attacker.Owner.Team.EliteFighterStats != null && attacked.Owner.Team.EliteFighterStats != null && attacker.MapID == attacked.Owner.Team.EliteMatch.Map.ID && attacker.Owner.Team.EliteMatch != null)
  445. {
  446. attacker.Owner.Team.EliteFighterStats.Points += damage;
  447. attacker.Owner.Team.SendMesageTeam(attacker.Owner.Team.EliteMatch.CreateUpdate().ToArray(), 0u);
  448. attacked.Owner.Team.SendMesageTeam(attacker.Owner.Team.EliteMatch.CreateUpdate().ToArray(), 0u);
  449. }
  450. if (attacked.EntityFlag == EntityFlag.Monster && attacker.MapID == 6421)
  451. {
  452. Entity.UpdateDamage(attacker.Owner, attacked, damage, 0u);
  453. }
  454. attacked.Hitpoints -= damage;
  455. if (attacked.EntityFlag == EntityFlag.Player)
  456. {
  457. attacker.Owner.UpdateQualifier(attacker.Owner, attacked.Owner, (long)((ulong)damage));
  458. attacked.Owner.SendScreen(attack, true);
  459. }
  460. else
  461. {
  462. attacked.MonsterInfo.SendScreen(attack);
  463. }
  464. attacker.AttackPacket = attack;
  465. attacker.AttackStamp = Time32.Now;
  466. }
  467. }
  468. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement