Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.04 KB | None | 0 0
  1. package com.ruseps.game.engine.task.impl;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.concurrent.CopyOnWriteArrayList;
  5.  
  6. import com.ruseps.game.GameSettings;
  7. import com.ruseps.game.engine.task.Task;
  8. import com.ruseps.model.Animation;
  9. import com.ruseps.model.Flag;
  10. import com.ruseps.model.GroundItem;
  11. import com.ruseps.model.Item;
  12. import com.ruseps.model.Locations.Location;
  13. import com.ruseps.model.PlayerRights;
  14. import com.ruseps.model.Position;
  15. import com.ruseps.model.Skill;
  16. import com.ruseps.util.Misc;
  17. import com.ruseps.world.World;
  18. import com.ruseps.world.content.ItemsKeptOnDeath;
  19. import com.ruseps.world.content.PlayerPanel;
  20. import com.ruseps.world.content.RandomPkDrop;
  21. import com.ruseps.world.entity.impl.GroundItemManager;
  22. import com.ruseps.world.entity.impl.npc.NPC;
  23. import com.ruseps.world.entity.impl.player.Player;
  24.  
  25. /**
  26. * Represents a player's death task, through which the process of dying is
  27. * handled, the animation, dropping items, etc.
  28. *
  29. * @author relex lawl, redone by Gabbe.
  30. */
  31.  
  32. public class PlayerDeathTask extends Task {
  33.  
  34. /**
  35. * The PlayerDeathTask constructor.
  36. *
  37. * @param player
  38. * The player setting off the task.
  39. */
  40. public PlayerDeathTask(Player player) {
  41. super(1, player, false);
  42. this.player = player;
  43. }
  44.  
  45. private Player player;
  46. private int ticks = 5;
  47. private boolean dropItems = false;
  48. Position oldPosition;
  49. Location loc;
  50. ArrayList<Item> itemsToKeep = null;
  51. NPC death;
  52.  
  53. @Override
  54. public void execute() {
  55. if (player == null) {
  56. stop();
  57. return;
  58. }
  59. try {
  60. switch (ticks) {
  61. case 5:
  62. player.getPacketSender().sendInterfaceRemoval();
  63. player.getMovementQueue().setLockMovement(true).reset();
  64. break;
  65. case 3:
  66. player.performAnimation(new Animation(0x900));
  67. player.getPacketSender().sendMessage("Oh dear, you are dead!");
  68. this.death = getDeathNpc(player);
  69. break;
  70. /*
  71. case 1:
  72. this.oldPosition = player.getPosition().copy();
  73. this.loc = player.getLocation();
  74. if (loc != Location.FREE_FOR_ALL_WAIT) {
  75. System.out.println("is not in ffa");
  76. Player killer = player.getCombatBuilder().getKiller(true);
  77.  
  78.  
  79. System.out.println("drop items is true");
  80. final Position position = player.getPosition();
  81. if (killer != null) {
  82. System.out.println("killer is not null: " + player.getLocation() +"nigga");
  83. if(player.getLocation() != Location.WILDERNESS &&
  84. killer.getLocation() != Location.WILDERNESS) {
  85. System.out.println("Drop items" + player.getUsername());
  86. itemsToKeep = ItemsKeptOnDeath.getItemsToKeep(player);
  87. final CopyOnWriteArrayList<Item> playerItems = new CopyOnWriteArrayList<Item>();
  88. playerItems.addAll(player.getInventory().getValidItems());
  89. playerItems.addAll(player.getEquipment().getValidItems());
  90. for (Item item : playerItems) {
  91. if (!item.tradeable() || itemsToKeep.contains(item)) {
  92. if (!itemsToKeep.contains(item)) {
  93. itemsToKeep.add(item);
  94. }
  95. continue;
  96. }
  97. if (item != null && item.getId() > 0 && item.getAmount() > 0) {
  98. System.out.println("Fffa");
  99. player.getInventory().resetItems().refreshItems();
  100. player.getEquipment().resetItems().refreshItems();
  101. player.getUpdateFlag().flag(Flag.APPEARANCE);
  102. GroundItemManager.spawnGroundItem(player, new GroundItem(item, position, killer != null ? killer.getUsername() : player.getUsername(), player.getHostAddress(), false, 150, true, 150));
  103.  
  104. }
  105. }
  106. player.getUpdateFlag().flag(Flag.APPEARANCE);
  107. }
  108.  
  109. int multiplier = 0;
  110. if(multiplier == 0) {
  111. if(player.getRights() == PlayerRights.BRONZE_MEMBER
  112. || player.getRights() == PlayerRights.SILVER_MEMBER
  113. || player.getRights() == PlayerRights.GOLD_MEMBER
  114. || player.getRights() == PlayerRights.PLATINUM_MEMBER
  115. || player.getRights() == PlayerRights.DIAMOND_MEMBER)
  116. multiplier = 3;
  117. else multiplier = 2;
  118. }
  119.  
  120. Item items = new Item(12852, multiplier);
  121. if(player.getPlayerKillingAttributes().getPlayerKillStreak() > 0) {
  122. GroundItemManager.spawnGroundItem((killer != null ? killer : player), new GroundItem(items, position, killer != null ? killer.getUsername() : player.getUsername(), player.getHostAddress(), false, 150, true, 150));
  123. World.sendMessage(killer.getUsername() + " has ended " + player.getUsername() + "'s killstreak of " + player.getPlayerKillingAttributes().getPlayerKillStreak());
  124. }
  125. GroundItemManager.spawnGroundItem((killer != null ? killer : player), new GroundItem(items, position, killer != null ? killer.getUsername() : player.getUsername(), player.getHostAddress(), false, 150, true, 150));
  126. RandomPkDrop.dropItems(killer, player);
  127. killer.getPlayerKillingAttributes().add(player);
  128. player.getPlayerKillingAttributes().setPlayerDeaths(player.getPlayerKillingAttributes().getPlayerDeaths() + 1);
  129. player.getPlayerKillingAttributes().setPlayerKillStreak(0);
  130. player.eloRating -= player.eloRating * 0.01;
  131. player.setSpecialPercentage(100);
  132. if(killer.getPlayerKillingAttributes().getPlayerKillStreak() >= 5) {
  133. World.sendMessage(killer.getUsername() + " is now on a " + killer.getPlayerKillingAttributes().getPlayerKillStreak()
  134. + " killstreak, bounty is set at " + (multiplier + killer.getPlayerKillingAttributes().getPlayerHighestKillStreak()));
  135. }
  136.  
  137. int pkLevel = 1 + (killer.pkExperience / 10);
  138. player.getPacketSender().sendString(23995, pkLevel + "/" + pkLevel);
  139. PlayerPanel.refreshPvpPanel(player, player);
  140.  
  141. }
  142. }
  143. dropItems = false;
  144. player.getPacketSender().sendInterfaceRemoval();
  145. player.setEntityInteraction(null);
  146. player.getMovementQueue().setFollowCharacter(null);
  147. player.getCombatBuilder().cooldown(false);
  148. player.setTeleporting(false);
  149. player.setWalkToTask(null);
  150. player.getSkillManager().stopSkilling();
  151. player.getUpdateFlag().flag(Flag.APPEARANCE);
  152. break;
  153. */
  154.  
  155. case 1:
  156. this.oldPosition = player.getPosition().copy();
  157. this.loc = player.getLocation();
  158. Player killer = player.getCombatBuilder().getKiller(true);
  159.  
  160. if(loc == Location.DANGER_ZONE) {
  161. itemsToKeep = ItemsKeptOnDeath.getItemsToKeep(player);
  162. final CopyOnWriteArrayList<Item> playerItems = new CopyOnWriteArrayList<Item>();
  163. playerItems.addAll(player.getInventory().getValidItems());
  164. playerItems.addAll(player.getEquipment().getValidItems());
  165. final Position position = player.getPosition();
  166. for (Item item : playerItems) {
  167. if(!item.tradeable() || itemsToKeep.contains(item)) {
  168. if(!itemsToKeep.contains(item)) {
  169. itemsToKeep.add(item);
  170. }
  171. continue;
  172. }
  173. if(killer != null) {
  174. killer.getPlayerKillingAttributes().add(player);
  175. player.getPlayerKillingAttributes().setPlayerDeaths(player.getPlayerKillingAttributes().getPlayerDeaths() + 1);
  176. player.getPlayerKillingAttributes().setPlayerKillStreak(0);
  177. player.getPointsHandler().refreshPanel();
  178.  
  179. if (item != null && item.getId() > 0 && item.getAmount() > 0) {
  180. player.getInventory().resetItems().refreshItems();
  181. player.getEquipment().resetItems().refreshItems();
  182. player.getUpdateFlag().flag(Flag.APPEARANCE);
  183. GroundItemManager.spawnGroundItem(player, new GroundItem(item, position, killer != null ? killer.getUsername() : player.getUsername(), player.getHostAddress(), false, 150, true, 150));
  184. }
  185. }
  186.  
  187. }
  188. } else
  189. System.out.println(itemsToKeep);
  190. player.getPacketSender().sendInterfaceRemoval();
  191. player.setEntityInteraction(null);
  192. player.getMovementQueue().setFollowCharacter(null);
  193. player.getCombatBuilder().cooldown(false);
  194. player.setTeleporting(false);
  195. player.setWalkToTask(null);
  196. player.getSkillManager().stopSkilling();
  197. break;
  198.  
  199. case 0:
  200. if (loc == Location.DANGER_ZONE) {
  201. {
  202. if (itemsToKeep != null) {
  203. for (Item it : itemsToKeep) {
  204. player.getInventory().add(it.getId(), 1);
  205. }
  206. itemsToKeep.clear();
  207. }
  208. }
  209. }
  210. if (death != null) {
  211. World.deregister(death);
  212. }
  213. player.restart();
  214. player.getUpdateFlag().flag(Flag.APPEARANCE);
  215. loc.onDeath(player);
  216. if (loc != Location.DUNGEONEERING) {
  217. if (player.getPosition().equals(oldPosition))
  218. player.moveTo(GameSettings.DEFAULT_POSITION.copy());
  219. }
  220. player = null;
  221. oldPosition = null;
  222. stop();
  223. break;
  224. }
  225. ticks--;
  226. } catch (Exception e) {
  227. setEventRunning(false);
  228. e.printStackTrace();
  229. if (player != null) {
  230. player.moveTo(GameSettings.DEFAULT_POSITION.copy());
  231. player.setConstitution(player.getSkillManager().getMaxLevel(Skill.CONSTITUTION));
  232. }
  233. }
  234. }
  235.  
  236. public static NPC getDeathNpc(Player player) {
  237. NPC death = new NPC(2862, new Position(player.getPosition().getX() + 1, player.getPosition().getY() + 1));
  238. World.register(death);
  239. death.setEntityInteraction(player);
  240. death.performAnimation(new Animation(401));
  241. death.forceChat(randomDeath(player.getUsername()));
  242. return death;
  243. }
  244.  
  245. public static String randomDeath(String name) {
  246. switch (Misc.getRandom(8)) {
  247. case 0:
  248. return "There is no escape, " + Misc.formatText(name) + "...";
  249. case 1:
  250. return "Muahahahaha!";
  251. case 2:
  252. return "You belong to me!";
  253. case 3:
  254. return "Beware mortals, " + Misc.formatText(name) + " travels with me!";
  255. case 4:
  256. return "Your time here is over, " + Misc.formatText(name) + "!";
  257. case 5:
  258. return "Now is the time you die, " + Misc.formatText(name) + "!";
  259. case 6:
  260. return "I claim " + Misc.formatText(name) + " as my own!";
  261. case 7:
  262. return "" + Misc.formatText(name) + " is mine!";
  263. case 8:
  264. return "Let me escort you back to Edgeville, " + Misc.formatText(name) + "!";
  265. case 9:
  266. return "I have come for you, " + Misc.formatText(name) + "!";
  267. }
  268. return "";
  269. }
  270.  
  271. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement