Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.00 KB | None | 0 0
  1. package com.arlania.world.content.minigames.impl;
  2.  
  3. import com.arlania.GameSettings;
  4. import com.arlania.model.Flag;
  5. import com.arlania.model.Item;
  6. import com.arlania.model.MagicSpellbook;
  7. import com.arlania.model.Position;
  8. import com.arlania.model.Skill;
  9. import com.arlania.model.container.impl.Equipment;
  10. import com.arlania.net.packet.impl.EquipPacketListener;
  11. import com.arlania.util.Misc;
  12. import com.arlania.world.World;
  13. import com.arlania.world.content.BonusManager;
  14. import com.arlania.world.content.dialogue.DialogueManager;
  15. import com.arlania.world.content.skill.SkillManager;
  16. import com.arlania.world.content.skill.SkillManager.Skills;
  17. import com.arlania.world.entity.impl.player.Player;
  18. import java.util.HashMap;
  19. import java.util.Iterator;
  20. import java.util.Map;
  21. import java.util.concurrent.CopyOnWriteArrayList;
  22.  
  23. public class FreeForAll {
  24. public static int TOTAL_PLAYERS = 0;
  25. private static int PLAYERS_IN_LOBBY = 0;
  26.  
  27. /**
  28. * @note Stores player and State
  29. */
  30. public static Map<Player, String> playerMap = new HashMap<Player, String>();
  31. public static Map<Player, String> playersInGame = new HashMap<Player, String>();
  32. public static final String PLAYING = "PLAYING";
  33. public static final String WAITING = "WAITING";
  34. public String type = "";
  35. public static boolean pure = false;
  36. public int[][] pureInv = new int[][] { { Equipment.HEAD_SLOT, 1153 }, { Equipment.CAPE_SLOT, 10499 },
  37. { Equipment.AMULET_SLOT, 1725 }, { Equipment.WEAPON_SLOT, 4587 }, { Equipment.BODY_SLOT, 1129 },
  38. { Equipment.SHIELD_SLOT, 1540 }, { Equipment.LEG_SLOT, 2497 }, { Equipment.HANDS_SLOT, 7459 },
  39. { Equipment.FEET_SLOT, 3105 }, { Equipment.RING_SLOT, 2550 }, { Equipment.AMMUNITION_SLOT, 9244 } };
  40. public static boolean brid = false;
  41. public static boolean dharok = false;
  42. private static boolean gameRunning = false;
  43. private static boolean eventRunning = false;
  44. private static int waitTimer = 50;
  45. public static int[][] coordinates = { {2265,4684,4}, {2261,4699,4}, {2282,4706,4}, {2282,4689,4}};
  46. public static String getState(Player player) {
  47. return playerMap.get(player);
  48. }
  49. public static void saveOldStats(Player player) {
  50. Skills currentSkills = player.getSkillManager().getSkills();
  51. player.oldSkillLevels = currentSkills.level;
  52. player.oldSkillXP = currentSkills.experience;
  53. player.oldSkillMaxLevels = currentSkills.maxLevel;
  54. }
  55.  
  56. public static void startGame() {
  57. for (Player player : playerMap.keySet()) {
  58. eventRunning = false;
  59. gameRunning = true;
  60. player.getPA().closeAllWindows();
  61. saveOldStats(player);
  62. player.getSkillManager().newSkillManager();
  63. updateSkills(player);
  64. if (pure) {
  65. player.getSkillManager().setMaxLevel(Skill.ATTACK, 40).setMaxLevel(Skill.STRENGTH, 99)
  66. .setMaxLevel(Skill.RANGED, 99).setMaxLevel(Skill.MAGIC, 99)
  67. .setMaxLevel(Skill.CONSTITUTION, 990);
  68. for (Skill skill : Skill.values()) {
  69. player.getSkillManager().setCurrentLevel(skill, player.getSkillManager().getMaxLevel(skill))
  70. .setExperience(skill,
  71. SkillManager.getExperienceForLevel(player.getSkillManager().getMaxLevel(skill)));
  72. }
  73. player.getInventory().add(1319, 1);
  74. player.getInventory().add(2440, 1);
  75. player.getInventory().add(2444, 1);
  76. player.getInventory().add(379, 25);
  77. player.getEquipment().set(Equipment.HEAD_SLOT, new Item(1169,1));
  78. player.getEquipment().set(Equipment.AMMUNITION_SLOT, new Item(892,1000));
  79. player.getEquipment().set(Equipment.CAPE_SLOT, new Item(15345,1));
  80. player.getEquipment().set(Equipment.AMULET_SLOT, new Item(1725,1));
  81. player.getEquipment().set(Equipment.WEAPON_SLOT, new Item(861,1));
  82. player.getEquipment().set(Equipment.BODY_SLOT, new Item(1129,1));
  83. player.getEquipment().set(Equipment.LEG_SLOT, new Item(1099,1));
  84. player.getEquipment().set(Equipment.HANDS_SLOT, new Item(1065,1));
  85. player.getEquipment().set(Equipment.FEET_SLOT, new Item(1061,1));
  86. player.getEquipment().refreshItems();
  87. player.getUpdateFlag().flag(Flag.APPEARANCE);
  88. EquipPacketListener.resetWeapon(player);
  89. BonusManager.update(player);
  90. } else if (brid) {
  91. player.getSkillManager().setMaxLevel(Skill.ATTACK, 99).setMaxLevel(Skill.STRENGTH, 99)
  92. .setMaxLevel(Skill.RANGED, 99).setMaxLevel(Skill.MAGIC, 99).setMaxLevel(Skill.DEFENCE, 99).setMaxLevel(Skill.PRAYER, 990)
  93. .setMaxLevel(Skill.CONSTITUTION, 990);
  94. for (Skill skill : Skill.values()) {
  95. player.getSkillManager().setCurrentLevel(skill, player.getSkillManager().getMaxLevel(skill))
  96. .setExperience(skill,
  97. SkillManager.getExperienceForLevel(player.getSkillManager().getMaxLevel(skill)));
  98. }
  99. player.getInventory().add(4151, 1);
  100. player.getInventory().add(4722, 1);
  101. player.getInventory().add(19111, 1);
  102. player.getInventory().add(14484, 1);
  103. player.getInventory().add(10551, 1);
  104. player.getInventory().add(11732, 1);
  105. player.getInventory().add(13262, 1);
  106. player.getInventory().add(6685, 1);
  107. player.getInventory().add(2436, 1);
  108. player.getInventory().add(2440, 1);
  109. player.getInventory().add(3024, 2);
  110. player.getInventory().add(385, 13);
  111. player.getInventory().add(560, 20000);
  112. player.getInventory().add(565, 20000);
  113. player.getInventory().add(555, 20000);
  114. player.getEquipment().set(Equipment.HEAD_SLOT, new Item(10828,1));
  115. player.getEquipment().set(Equipment.CAPE_SLOT, new Item(10636,1));
  116. player.getEquipment().set(Equipment.AMULET_SLOT, new Item(6585,1));
  117. player.getEquipment().set(Equipment.WEAPON_SLOT, new Item(15486,1));
  118. player.getEquipment().set(Equipment.BODY_SLOT, new Item(4712,1));
  119. player.getEquipment().set(Equipment.LEG_SLOT, new Item(4714,1));
  120. player.getEquipment().set(Equipment.SHIELD_SLOT, new Item(6889,1));
  121. player.getEquipment().set(Equipment.HANDS_SLOT, new Item(7462,1));
  122. player.getEquipment().set(Equipment.FEET_SLOT, new Item(6920,1));
  123. player.getEquipment().set(Equipment.RING_SLOT, new Item(2550,1));
  124. player.setSpellbook(MagicSpellbook.ANCIENT);
  125. player.getPacketSender().sendTabInterface(GameSettings.MAGIC_TAB, player.getSpellbook().getInterfaceId());
  126. player.getEquipment().refreshItems();
  127. player.getUpdateFlag().flag(Flag.APPEARANCE);
  128. EquipPacketListener.resetWeapon(player);
  129. BonusManager.update(player);
  130. } else if (dharok) {
  131. player.getSkillManager().setMaxLevel(Skill.ATTACK, 99).setMaxLevel(Skill.STRENGTH, 99)
  132. .setMaxLevel(Skill.RANGED, 99).setMaxLevel(Skill.MAGIC, 99).setMaxLevel(Skill.DEFENCE, 99).setMaxLevel(Skill.PRAYER, 990)
  133. .setMaxLevel(Skill.CONSTITUTION, 990);
  134. for (Skill skill : Skill.values()) {
  135. player.getSkillManager().setCurrentLevel(skill, player.getSkillManager().getMaxLevel(skill))
  136. .setExperience(skill,
  137. SkillManager.getExperienceForLevel(player.getSkillManager().getMaxLevel(skill)));
  138. }
  139. player.getInventory().add(14484, 1);
  140. player.getInventory().add(2436, 1);
  141. player.getInventory().add(2440, 1);
  142. player.getInventory().add(6685, 1);
  143. player.getInventory().add(4718, 1);
  144. player.getInventory().add(3024, 2);
  145. player.getInventory().add(6685, 1);
  146. player.getInventory().add(385, 17);
  147. player.getInventory().add(560, 20000);
  148. player.getInventory().add(9075, 20000);
  149. player.getInventory().add(557, 20000);
  150. player.getEquipment().set(Equipment.HEAD_SLOT, new Item(4716,1));
  151. player.getEquipment().set(Equipment.CAPE_SLOT, new Item(19111,1));
  152. player.getEquipment().set(Equipment.AMULET_SLOT, new Item(6585,1));
  153. player.getEquipment().set(Equipment.WEAPON_SLOT, new Item(4151,1));
  154. player.getEquipment().set(Equipment.BODY_SLOT, new Item(4720,1));
  155. player.getEquipment().set(Equipment.LEG_SLOT, new Item(4722,1));
  156. player.getEquipment().set(Equipment.SHIELD_SLOT, new Item(13262,1));
  157. player.getEquipment().set(Equipment.HANDS_SLOT, new Item(7462,1));
  158. player.getEquipment().set(Equipment.FEET_SLOT, new Item(11732,1));
  159. player.getEquipment().set(Equipment.RING_SLOT, new Item(6737,1));
  160. player.setSpellbook(MagicSpellbook.LUNAR);
  161. player.getPacketSender().sendTabInterface(GameSettings.MAGIC_TAB, player.getSpellbook().getInterfaceId());
  162. player.getEquipment().refreshItems();
  163. player.getUpdateFlag().flag(Flag.APPEARANCE);
  164. EquipPacketListener.resetWeapon(player);
  165. BonusManager.update(player);
  166. }
  167. movePlayerToArena(player);
  168. player.inFFALobby = false;
  169. player.inFFA = true;
  170. player.getPacketSender().sendInteractionOption("Attack", 2, true);
  171. waitTimer = 50;
  172. }
  173. }
  174. public static void removePlayer(Player c) {
  175. playerMap.remove(c);
  176. }
  177. public static boolean checkEndGame() {
  178. if (gameRunning) {
  179.  
  180. if (playerMap.size() <= 1) {
  181. return true;
  182. }
  183. }
  184. return false;
  185. }
  186. public static void sequence() {
  187. if (gameRunning) {
  188.  
  189. if(checkEndGame()) {
  190. endGame();
  191. return;
  192. }
  193. return;
  194. }
  195.  
  196.  
  197. if (!eventRunning)
  198. return;
  199.  
  200. if(waitTimer > 0) {
  201. waitTimer--;
  202. if (waitTimer % 100 == 0 && waitTimer > 0)
  203. World.sendMessage("@or2@[FFA] "+waitTimer+" seconds until FFA starts!" +" Join now @ ::ffa");
  204. }
  205. updateGameInterface();
  206. if(waitTimer <= 0) {
  207. if(!gameRunning)
  208. startGame();
  209. }
  210. }
  211.  
  212. private static void updateGameInterface() {
  213. for (Player p : playerMap.keySet()) {
  214. if(p == null)
  215. continue;
  216.  
  217. String state = getState(p);
  218. if(state != null && state.equals(WAITING)) {
  219. p.getPacketSender().sendString(21006, "Time till start: "+waitTimer+"");
  220. p.getPacketSender().sendString(21007, "Players Ready: "+PLAYERS_IN_LOBBY+"");
  221. p.getPacketSender().sendString(21009, "");
  222. }
  223. }
  224. }
  225. public static boolean checkItems(Player c) {
  226. if (c.getInventory().getFreeSlots() != 28) {
  227. return false;
  228. }
  229. for (int i = 0; i < 14; i++) {
  230. if(c.getEquipment().get(i).getId() > 0)
  231. return false;
  232. }
  233. return true;
  234. }
  235.  
  236. public static void startEvent(String type) {
  237. if(!eventRunning) {
  238. World.sendMessage("@or2@[FFA] A "+type+" FFA event has been started! Type ::ffa to join!");
  239. if (type == "pure") {
  240. pure = true;
  241. } else if (type == "brid") {
  242. brid = true;
  243. } else {
  244. dharok = true;
  245. }
  246. eventRunning = true;
  247. }
  248. }
  249.  
  250. private static void movePlayerToArena(Player p) {
  251. int random = Misc.random(3);
  252. p.moveTo(new Position(coordinates[random][0], coordinates[random][1], coordinates[random][2]));
  253. PLAYERS_IN_LOBBY--;
  254. }
  255. public static void enterLobby(Player c) {
  256. if (!eventRunning) {
  257. c.sendMessage("There is no game available right now!");
  258. return;
  259. }
  260. if(getState(c) == null) {
  261. if (checkItems(c)) {
  262. c.getPA().closeAllWindows();
  263. playerMap.put(c, WAITING);
  264. TOTAL_PLAYERS++;
  265. PLAYERS_IN_LOBBY++;
  266. c.inFFALobby = true;
  267. c.moveTo(new Position(2223,3799,0));
  268. c.sendMessage("Welcome to FFA!");
  269. } else {
  270. c.sendMessage("Bank all your items to play FFA!");
  271. }
  272. }
  273. }
  274. public static void updateSkills(Player player) {
  275. player.getSkillManager().updateSkill(Skill.ATTACK);
  276. player.getSkillManager().updateSkill(Skill.AGILITY);
  277. player.getSkillManager().updateSkill(Skill.CONSTITUTION);
  278. player.getSkillManager().updateSkill(Skill.CONSTRUCTION);
  279. player.getSkillManager().updateSkill(Skill.COOKING);
  280. player.getSkillManager().updateSkill(Skill.CRAFTING);
  281. player.getSkillManager().updateSkill(Skill.DEFENCE);
  282. player.getSkillManager().updateSkill(Skill.DUNGEONEERING);
  283. player.getSkillManager().updateSkill(Skill.FARMING);
  284. player.getSkillManager().updateSkill(Skill.FIREMAKING);
  285. player.getSkillManager().updateSkill(Skill.FISHING);
  286. player.getSkillManager().updateSkill(Skill.FLETCHING);
  287. player.getSkillManager().updateSkill(Skill.HERBLORE);
  288. player.getSkillManager().updateSkill(Skill.HUNTER);
  289. player.getSkillManager().updateSkill(Skill.MAGIC);
  290. player.getSkillManager().updateSkill(Skill.MINING);
  291. player.getSkillManager().updateSkill(Skill.PRAYER);
  292. player.getSkillManager().updateSkill(Skill.RANGED);
  293. player.getSkillManager().updateSkill(Skill.RUNECRAFTING);
  294. player.getSkillManager().updateSkill(Skill.SLAYER);
  295. player.getSkillManager().updateSkill(Skill.SMITHING);
  296. player.getSkillManager().updateSkill(Skill.STRENGTH);
  297. player.getSkillManager().updateSkill(Skill.SUMMONING);
  298. player.getSkillManager().updateSkill(Skill.THIEVING);
  299. player.getSkillManager().updateSkill(Skill.WOODCUTTING);
  300. }
  301. public static void endGame() {
  302. eventRunning = false;
  303. gameRunning = false;
  304. for (Player p : playerMap.keySet()) {
  305. World.sendMessage("@or2@[FFA] @blu@"+Misc.formatPlayerName(p.getUsername()) + "@or2@ has won the FFA game!");
  306. p.sendMessage("You have won the game! PM a admin or owner for your reward!"); //kk i gtg eat brb enjoytho
  307. leaveGame(p);
  308. }
  309. playerMap.clear();
  310. }
  311. public static void leaveGame(Player c) {
  312. c.getInventory().deleteAll();
  313. c.getEquipment().deleteAll();
  314. playerMap.remove(c);
  315. c.getSkillManager().getSkills().level = c.oldSkillLevels;
  316. c.getSkillManager().getSkills().experience = c.oldSkillXP;
  317. c.getSkillManager().getSkills().maxLevel = c.oldSkillMaxLevels;
  318. updateSkills(c);
  319. c.moveTo(new Position(3208,3426,0));
  320. c.inFFA = false;
  321. c.getPacketSender().sendInteractionOption("null", 2, true);
  322. c.sendMessage("Thank you for participating in FFA!");
  323. }
  324. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement