armark1ng

Untitled

Apr 14th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.76 KB | None | 0 0
  1. package com.rs.game.minigames.clanwars;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import com.rs.game.Animation;
  7. import com.rs.game.Entity;
  8. import com.rs.game.WorldObject;
  9. import com.rs.game.WorldTile;
  10. import com.rs.game.item.Item;
  11. import com.rs.game.player.Player;
  12. import com.rs.game.player.controlers.Controler;
  13. import com.rs.game.player.controlers.Wilderness;
  14. import com.rs.game.tasks.WorldTask;
  15. import com.rs.game.tasks.WorldTasksManager;
  16.  
  17. /**
  18. * Handles the FFA Clan Wars zone.
  19. *
  20. * @author Emperor
  21. *
  22. */
  23. public final class FfaZone extends Controler {
  24.  
  25. /**
  26. * If the FFA zone is the risk zone.
  27. */
  28. public boolean risk;
  29. public List<Item> itemsSpawned;
  30.  
  31. /**
  32. * If the player was in the ffa pvp area.
  33. */
  34. private transient boolean wasInArea;
  35.  
  36. @Override
  37. public void start() {
  38. if (getArguments() == null || getArguments().length < 1) {
  39. this.risk = player.getX() >= 2948 && player.getY() >= 5508
  40. && player.getX() <= 3071 && player.getY() <= 5631;
  41. } else {
  42. this.risk = (Boolean) getArguments()[0];
  43. }
  44. if (!risk)
  45. itemsSpawned = new ArrayList<Item>();
  46. moved();
  47. sendInterfaces();
  48. }
  49.  
  50. @Override
  51. public void sendInterfaces() {
  52. player.getInterfaceManager().setOverlay(789, true);
  53. }
  54.  
  55. @Override
  56. public boolean sendDeath() {
  57. player.lock(7);
  58. player.stopAll();
  59. WorldTasksManager.schedule(new WorldTask() {
  60. int loop;
  61.  
  62. @Override
  63. public void run() {
  64. if (loop == 0) {
  65. player.setNextAnimation(new Animation(836));
  66. } else if (loop == 1) {
  67. player.getPackets().sendGameMessage(
  68. "Oh dear, you have died.");
  69. } else if (loop == 3) {
  70. if (risk) {
  71. Player killer = player
  72. .getMostDamageReceivedSourcePlayer();
  73. if (killer != null) {
  74. killer.removeDamage(player);
  75. killer.increaseKillCount(player);
  76. if (risk)
  77. player.sendItemsOnDeath(killer, true);
  78. }
  79. }
  80. player.setNextWorldTile(new WorldTile(2993, 9679, 0));
  81. player.getControlerManager().startControler(
  82. "clan_wars_request");
  83. player.reset();
  84. player.setNextAnimation(new Animation(-1));
  85. } else if (loop == 4) {
  86. player.getPackets().sendMusicEffect(90);
  87. stop();
  88. }
  89. loop++;
  90. }
  91. }, 0, 1);
  92. return false;
  93. }
  94.  
  95. @Override
  96. public void magicTeleported(int type) {
  97. player.getControlerManager().forceStop();
  98. }
  99.  
  100. @Override
  101. public boolean processObjectClick1(WorldObject object) {
  102. switch (object.getId()) {
  103. case 38700:
  104. player.setNextWorldTile(new WorldTile(2993, 9679, 0));
  105. player.getControlerManager().forceStop();
  106. player.getControlerManager().startControler("clan_wars_request");
  107. return false;
  108. }
  109. return true;
  110. }
  111.  
  112. @Override
  113. public void moved() {
  114. boolean inArea = inPvpArea(player);
  115. if (inArea && !wasInArea) {
  116. player.setCanPvp(true);
  117. wasInArea = true;
  118. Wilderness.checkBoosts(player);
  119. } else if (!inArea && wasInArea) {
  120. player.setCanPvp(false);
  121. wasInArea = false;
  122. }
  123. }
  124.  
  125. @Override
  126. public boolean keepCombating(Entity victim) {
  127. if (!(victim instanceof Player))
  128. return true;
  129. return player.isCanPvp() && ((Player) victim).isCanPvp();
  130. }
  131.  
  132. @Override
  133. public void forceClose() {
  134. player.setCanPvp(false);
  135. player.getInterfaceManager().removeOverlay(true);
  136. if (!risk) {
  137. if (itemsSpawned != null && !itemsSpawned.isEmpty()) {
  138. for (int i = 0; i < itemsSpawned.size(); i++) {
  139. Item item = itemsSpawned.get(i);
  140. if (item != null) {
  141. if (player.getInventory().containsItem(item.getId(), 1)) {
  142. player.getInventory().deleteItem(item);
  143. }
  144. if (player.getEquipment().containsOneItem(item.getId())) {
  145. player.getEquipment().deleteItem(item.getId(),
  146. item.getAmount());
  147. }
  148. }
  149. }
  150. itemsSpawned.clear();
  151. }
  152. }
  153. }
  154.  
  155. @Override
  156. public boolean logout() {
  157. if (!risk) {
  158. if (itemsSpawned != null) {
  159. for (int i = 0; i < itemsSpawned.size(); i++) {
  160. Item item = itemsSpawned.get(i);
  161. if (item != null) {
  162. if (player.getInventory().containsItem(item.getId(), 1)) {
  163. player.getInventory().deleteItem(item);
  164. }
  165. if (player.getEquipment().containsOneItem(item.getId())) {
  166. player.getEquipment().deleteItem(item.getId(),
  167. item.getAmount());
  168. }
  169. }
  170. }
  171. }
  172. }
  173. setArguments(new Object[] { risk });
  174. return false;
  175. }
  176.  
  177. @Override
  178. public boolean login() {
  179. moved();
  180. sendInterfaces();
  181. return false;
  182. }
  183.  
  184. /**
  185. * Checks if the location is in a ffa pvp zone.
  186. *
  187. * @param t
  188. * The world tile.
  189. * @return {@code True} if so.
  190. */
  191. public static boolean inPvpArea(WorldTile t) {
  192. return (t.getX() >= 2948 && t.getY() >= 5512 && t.getX() <= 3071 && t
  193. .getY() <= 5631) // Risk
  194. // area.
  195. || (t.getX() >= 2756 && t.getY() >= 5512 && t.getX() <= 2879 && t
  196. .getY() <= 5631); // Safe
  197. // area.
  198. }
  199.  
  200. /**
  201. * Checks if the location is in a ffa zone.
  202. *
  203. * @param t
  204. * The world tile.
  205. * @return {@code True} if so.
  206. */
  207. public static boolean inArea(WorldTile t) {
  208. return (t.getX() >= 2948 && t.getY() >= 5508 && t.getX() <= 3071 && t
  209. .getY() <= 5631) // Risk
  210. // area.
  211. || (t.getX() >= 2756 && t.getY() >= 5508 && t.getX() <= 2879 && t
  212. .getY() <= 5631); // Safe
  213. // area.
  214. }
  215.  
  216. /**
  217. * Checks if a player's overload effect is changed (due to being in the risk
  218. * ffa zone, in pvp)
  219. *
  220. * @param player
  221. * The player.
  222. * @return {@code True} if so.
  223. */
  224. public static boolean isOverloadChanged(Player player) {
  225. if (!(player.getControlerManager().getControler() instanceof FfaZone)) {
  226. return false;
  227. }
  228. return player.isCanPvp()
  229. && ((FfaZone) player.getControlerManager().getControler()).risk;
  230. }
  231. }
Advertisement
Add Comment
Please, Sign In to add comment