Advertisement
Guest User

cunt

a guest
May 3rd, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.74 KB | None | 0 0
  1. package com.foxtrot.game.minigames.events;
  2.  
  3. import java.util.LinkedList;
  4.  
  5.  
  6. import com.foxtrot.game.player.Player;
  7. import com.foxtrot.game.item.Item;
  8. import com.foxtrot.game.item.floor.FloorItemManager;
  9. import com.foxtrot.game.minigames.events.Hunger;
  10. import com.foxtrot.utils.Logger;
  11. import com.foxtrot.utils.Utils;
  12. import com.foxtrot.game.World;
  13. import com.foxtrot.game.WorldTile;
  14.  
  15. public final class Hunger {
  16. private static final LinkedList<Player> lobbyevent = new LinkedList<Player>();
  17. private static final LinkedList<Player> eventplayers = new LinkedList<Player>();
  18. private static long eventTimer;
  19. private static long startTime;
  20. public static final WorldTile LOBBY = new WorldTile(2738, 5081, 0); // needs to be changed (WAS DONE FOR TESTING)
  21. private static int PLAYERS_NEEDED = 1;
  22.  
  23. /**
  24. * MAIN FOCUS OF THE GAME,
  25. * EVENT PLAYERS MUST SURVIVE THE HUNGER GAMES.
  26. *
  27. * WAYS OF SURVIVING?
  28. * - COLLECT RESOURCES (FOOD, TOOLS)
  29. * - MAYBE INVINCIBILITY FOR 10 SECONDS (HARD AND RARE TO OBTAIN)
  30. * - PANIC TABS (CAN BE MADE VIA COLLECTING A BUNCH OF RESOURCES)
  31. * INSTA TELEPORTS FROM TARGETS TO A SAFE AREA.
  32. *
  33. * HOW TO COLLECT RESOURCES?
  34. * - RANDOM SPAWNS EVERY (X) AMOUNT OF TIME
  35. * - ITEMS SUCH AS KNIVES, CHISELS AND OTHERS NEEDED FOR SKILLING WILL RANDOMLY SPAWN
  36. * USE THESE ITEMS ^ ^ ^ TO GENERATE YOUR OWN FOOD, WATER ETC..
  37. *
  38. * GOAL?
  39. * BE THE LAST GAMER STANDING. KILL YOUR ENEMIES CU.
  40. *
  41. * BOUNDRIES?
  42. * ENTERING THE MAIN AREA (DANGEROUS) WILL HIT THE PLAYER UNTIL HE HIDES IN THE "SAFE SPOT"
  43. * - "SAFE" SPOT IS GUARDED WITH CUSTOM NPCS
  44. * - "SAFE" SPOT IS WHERE THE BIG RESOURCE PACKAGES WILL BE
  45. * - NPC GUARDING THE "SAFE" SPOT WILL HAVE UNLIMITED HP SO THE NPC IS ALWAYS GUARDING.
  46. * - NPC WILL HAVE CUSTOM FIGHTING SCRIPTS MAYBE? : NPC WILL HIT HARD.
  47. *
  48. * MISC
  49. * - MINIMAP DOTS ARE OFF SO CONTESTANTS CAN'T SEE EACH OTHER FROM A DISTANCE THROUGH THE MINIMAP
  50. * - TRADE, REQUEST ASSIST, STATS, ETC ARE ALL TOGGLED (OFF)
  51. * - ORB OF PROTECTION IS NEEDED FOR PROTECTION FROM HYDRATION, ELSE CAUSES POISON.
  52. * - MAKING ITEMS WILL BE SAME AS I.E FLETCHING LOGS > BOW > STRING : FLETCHING LOGS > HEADLESS ARROWS > TIP.
  53. * - RESOURCE SPAWNS (PILE OF CERTAIN RESOURCES)
  54. *
  55. * STABILITY
  56. * - NO OVERPOWERED WEAPONS WHAT SO EVER K.
  57. * - AS THE MAIN FOCUS IS SURVIVING NOT ALOT OF FOOD SPAWNS WILL BE ADDED IN-EVENT.
  58. * - 1-2 PILES OF FOOD MAX. "@" 5 MINUTES AND "@" 10 MINUTES AFTER GAME IS STARTED. OTHER FOODS ARE GENERATED VIA FISHING.
  59. * - FOR THE FIRST 2-4 MINUTES IT IS A PVP FREE ZONE. GAMERS CAN RUN AROUND AND EXLPORE THE LOCATION.
  60. *
  61. * FUTURE PLANS (AFTER LIVE RELEASE)
  62. * - MULTIPLE PLAYING GROUNDS. (AUTOMATICALLY CHOOSES A RANDOM MAP)
  63. * - TEAM A vs TEAM B
  64. * - TRAPS
  65. * - GROUP INVENTORY ONLY WHEN IT IS TEAM A vs TEAM B
  66. *
  67. *
  68. */
  69.  
  70.  
  71. /** SPAWNING STATIONS
  72. *
  73. */
  74. public static final WorldTile[] TELEPORTS = { new WorldTile(0, 0, 0),
  75. new WorldTile(0, 0, 0), new WorldTile(0, 0, 0),
  76. new WorldTile(0, 0, 0), new WorldTile(0, 0, 0),
  77. new WorldTile(0, 0, 0), new WorldTile(0, 0, 0),
  78. new WorldTile(0, 0, 0)};
  79.  
  80. /**
  81. * EVENT START AND END
  82. */
  83. public static void startEvent() {
  84. setEventStarted(true);
  85. Logger.log("HungerGames", "Game started");
  86. World.sendWorldMessage("<col=ff0000>The Hunger Games event has just started!");
  87. for (Player eventplayers : geteventplayers()) {
  88. eventTimer = Utils.currentTimeMillis();
  89. eventplayers.setForceMultiArea(true);
  90. eventplayers.setCanPvp(true);
  91. /**
  92. * DISABLE RIGHT CLICK FEATURES ON PLAYERS (TODO)
  93. */
  94. }
  95. }
  96.  
  97.  
  98. public static void endGame() {
  99. for(Player contribute: geteventplayers()) {
  100. if(contribute == null)
  101. continue;
  102. Player winner = (Player) getEventPlayers().poll();
  103. if(winner == null)
  104. continue;
  105. contribute.setNextWorldTile(LOBBY);
  106. winner.setNextWorldTile(LOBBY);
  107. World.sendWorldMessage("The Hunger Games has finished, winner was "+winner.getDisplayName()+"");
  108. winner.sm("Congratulations! You've won the Event!");
  109. winner.getInventory().addItem(995, 500000);
  110. contribute.sm("<col=f0470a>Thanks for contributing!</col>");
  111. contribute.getInventory().addItem(995, 500);
  112. setEventStarted(false);
  113. contribute.setCanPvp(false);
  114. contribute.setForceMultiArea(false);
  115. winner.setCanPvp(false);
  116. winner.setForceMultiArea(false);
  117.  
  118. }
  119. }
  120. /**
  121. * EVENT START AND END - END
  122. */
  123. /**
  124. * ALL SPAWNS WITHIN THE GAME
  125. *
  126. */
  127. public static final int[] FOOD = {1
  128.  
  129. };
  130. public static final int[] POTS = {1
  131.  
  132. };
  133. public static final int [] WP1 = {//WEAPON PIECES 1st half
  134.  
  135. };
  136. public static final int [] WP2 = {//WEAPON PIECES 2nd half
  137.  
  138. };
  139. public static final int [] NPC_SPAWNS = {
  140.  
  141. };
  142. public static final int [] FISHING_SPOTS = {
  143.  
  144. };
  145. public static final int [] TOOL_SPAWNS = {//knife, chisel etc..
  146.  
  147. };
  148. /**
  149. * ALL SPAWNS WITHIN THE GAME - END
  150. */
  151.  
  152. /*
  153. * IMPORTANT INTS AND BOOLEANS
  154. *
  155. */
  156. /**
  157. * USED COORDS
  158. */
  159. public static final int maxx = 2755;
  160. public static final int minx = 2732;
  161. public static final int maxy = 5101;
  162. public static final int miny = 5071;
  163. /**
  164. * USED COORDS - END
  165. */
  166. static int fspawn = 0; // in use ( food spawn count )
  167. static int fpspawn = 0; //in use ( food and potions spawn count )
  168. static int Fsm = 0; // in use (food spawn message count)
  169. static int FPsm = 0; // in use (food and pot spawn message count)
  170. private static boolean fspawn1 = false; // in use
  171. private static boolean fspawn2 = false; //in use
  172. private static boolean wmess = false; //in use
  173. private static boolean npcSpawn = false; // in use
  174. private static boolean eventStarted = false; // in use DONT REMOVE
  175. /*
  176. * END IMPORTANT INTS AND BOOLEANS
  177. */
  178. /**
  179. * TOOL SPAWNS
  180. */
  181.  
  182. public static void processtoolSpawns() {
  183.  
  184. }
  185.  
  186. public static void processresourceSpawns() {
  187.  
  188. }
  189. /**
  190. * EVENT PROCESSING FOOD
  191. *
  192. */
  193. public static void processFoodSpawns(final Player player, int item) {
  194. for (Player gamers : Hunger.geteventplayers()) {
  195. //SPAWN TIMES NEED CHANGING
  196. if(getEventTimer() + 10000 < Utils.currentTimeMillis() && Hunger.isEventStarted() && !fspawn1) {
  197. FloorItemManager.addGroundItem(new Item(FOOD[Utils.random(FOOD.length)], Utils.random(3, 6)),
  198. new WorldTile(Utils.random(minx, maxx), Utils.random(miny, maxy), 0), player, true, 180, true);
  199. fspawn ++;
  200. }
  201.  
  202. if (getEventTimer() + 10000 < Utils.currentTimeMillis() && fspawn == 5 && Hunger.isEventStarted() && Fsm == 0) {
  203. gamers.sm("Food has spawned within the game.");
  204. Fsm++;
  205. fspawn1 = true;
  206. }
  207.  
  208. if (getEventTimer() + 20000 < Utils.currentTimeMillis() && Hunger.isEventStarted() && !fspawn2 ) {
  209. FloorItemManager.addGroundItem(new Item(FOOD[Utils.random(FOOD.length)], Utils.random(2, 4)),
  210. new WorldTile(Utils.random(minx, maxx), Utils.random(miny, maxy), 0), player, true, 180, true);
  211. FloorItemManager.addGroundItem(new Item(POTS[Utils.random(POTS.length)], Utils.random(2, 4)),
  212. new WorldTile(Utils.random(minx, maxx), Utils.random(miny, maxy), 0), player, true, 180, true);
  213. fpspawn ++;
  214.  
  215. }
  216. if (getEventTimer() + 20000 < Utils.currentTimeMillis() && fpspawn == 4 && Hunger.isEventStarted() && FPsm == 0) {
  217. gamers.sm("Potions and food have spawned within the game.");
  218. FPsm++;
  219. fspawn2 = true;
  220. }
  221. }
  222. }
  223.  
  224. /**
  225. * EVENT PROCESSING NPC SPAWNS
  226. *
  227. */
  228. public static void processNpcSpawns() {
  229. //NEED TO MAKE A CUSTOM NPC WEARING ARMOUR SUITABLE FOR THE MINIGAME.
  230. //SPAWN TIMES NEED CHANGING
  231. if (getEventTimer() + 10000 < Utils.currentTimeMillis() && Hunger.isEventStarted() && !npcSpawn) {
  232. World.spawnNPC(1, new WorldTile(2731, 5082, 0), -1, true, true);
  233. npcSpawn = true;
  234. }
  235. }
  236. /**
  237. * EVENT PROCESSING NPC SPAWNS - END
  238. *
  239. */
  240. /**
  241. * EVENT PROCESSING FOOD - END
  242. *
  243. */
  244. /**
  245. * EVENT PROCESSING MESSAGES
  246. *
  247. */
  248. public static void processWorldMessage(){
  249. if (Hunger.isEventStarted() && !wmess) {
  250. for (Player gamers : Hunger.geteventplayers()) {
  251. gamers.sm("<col=ff0000>[</col>HUNGER GAMES<col=ff0000>]</col> Survive within the first 30 seconds before consumables are input.");
  252. World.sendWorldMessage("<col=ff0000>[</col>HUNGER GAMES<col=ff0000>]</col> Challengers have entered the Hunger Games!");
  253. wmess = true;
  254. }
  255. }
  256. }
  257. /**
  258. * EVENT PROCESSING MESSAGES - END
  259. *
  260. */
  261.  
  262. /**
  263. * EVENT PROCESSING EVENT
  264. *
  265. */
  266. public static void processEvent() {
  267. //left out for testing purposes
  268.  
  269. /*if (Hunger.isEventStarted()) {
  270. if(geteventplayers().size() == 1) {
  271. endGame();
  272. }*/
  273.  
  274. if (EventPlayers().size() >= 5 && getEventTimer() + 3.6e+6 < Utils.currentTimeMillis()) { //greater than 5 players, game is 1 hour
  275. for (Player gamers : Hunger.geteventplayers()) {
  276. gamers.sm("Sorry! Time has ran out!");
  277. World.sendWorldMessage("The Hunger Games have ended, with no winner!");
  278. endGame();
  279. }
  280. }
  281. if (EventPlayers().size() < 5 && getEventTimer() + 1.8e+6 < Utils.currentTimeMillis()) { //less than 5 players, game is 30 mins
  282. for (Player gamers : Hunger.geteventplayers()) {
  283. gamers.sm("Sorry! Time has ran out!");
  284. World.sendWorldMessage("The Hunger Games have ended, with no winner!");
  285. endGame();
  286. }
  287. }
  288.  
  289. if(getlobbyEvent().size() < PLAYERS_NEEDED && !isEventStarted() && + 300000 < Utils.currentTimeMillis()) {
  290. if(getStartTime() + 300000 < Utils.currentTimeMillis()) {
  291. for(Player players: getlobbyEvent()) {
  292. players.sm("Players ready for the Hunger Games: (<col=ff000>"+Hunger.getlobbyEvent().size()+"</col>)");
  293. players.sm("There wasn't enough players in-time. Event Canelled.");
  294. World.sendWorldMessage("Hunger Games, cancelle!");
  295. Logger.log("EVENT 1","Event CANCELLED");
  296. players.getControlerManager().removeControlerWithoutCheck();
  297. setStartTime(Utils.currentTimeMillis());
  298. }
  299. }
  300. }
  301. else if (getlobbyEvent().size() >= PLAYERS_NEEDED && !isEventStarted() && + 300000 < Utils.currentTimeMillis()) {
  302. if(getStartTime() + 10000 < Utils.currentTimeMillis()) {
  303. getEventPlayers().addAll(lobbyevent);
  304. getlobbyEvent().removeAll(lobbyevent);
  305. startEvent();
  306. }
  307. }
  308. }
  309.  
  310. /**
  311. * EVENT PROCESSING EVENT - END
  312. *
  313. */
  314.  
  315.  
  316. /**
  317. *
  318. * OTHER SHIT
  319. */
  320. public static void addEventPlayer(Player player) {
  321. if(!geteventplayers().contains(player))
  322. geteventplayers().add(player);
  323. }
  324.  
  325. public static void addLobbyPlayer(Player player) {//neccessary to use because it checks for
  326. //the lobby already containing the player.
  327. if(!getlobbyEvent().contains(player))
  328. getlobbyEvent().add(player);
  329. }
  330.  
  331. public static void removeLobbyPlayer(Player player) {
  332. getlobbyEvent().remove(player);
  333. }
  334.  
  335. public static void removeEventPlayer(Player player) {
  336. getEventPlayers().remove(player);
  337. }
  338. public static LinkedList<Player> getlobbyEvent() {
  339. return lobbyevent;
  340. }
  341.  
  342. public static long getStartTime() {
  343. return startTime;
  344. }
  345.  
  346.  
  347. public static boolean isEventStarted() {
  348. return eventStarted;
  349. }
  350. public static LinkedList<Player> getEventPlayers() {
  351. return eventplayers;
  352. }
  353. public static LinkedList<Player> EventPlayers() {
  354. return eventplayers;
  355. }
  356.  
  357. public static void setEventStarted(boolean gameStarted) {
  358. Hunger.eventStarted = gameStarted;
  359. }
  360. public static void setStartTime(long startTime) {
  361. Hunger.startTime = startTime;
  362. }
  363.  
  364. public static long getEventTimer() {
  365. return eventTimer;
  366. }
  367. public static LinkedList<Player> geteventplayers() {
  368. return eventplayers;
  369. }
  370. /**
  371. * OTHER SHIT END
  372. */
  373. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement