Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.foxtrot.game.minigames.events;
- import java.util.LinkedList;
- import com.foxtrot.game.player.Player;
- import com.foxtrot.game.item.Item;
- import com.foxtrot.game.item.floor.FloorItemManager;
- import com.foxtrot.game.minigames.events.Hunger;
- import com.foxtrot.utils.Logger;
- import com.foxtrot.utils.Utils;
- import com.foxtrot.game.World;
- import com.foxtrot.game.WorldTile;
- public final class Hunger {
- private static final LinkedList<Player> lobbyevent = new LinkedList<Player>();
- private static final LinkedList<Player> eventplayers = new LinkedList<Player>();
- private static long eventTimer;
- private static long startTime;
- public static final WorldTile LOBBY = new WorldTile(2738, 5081, 0); // needs to be changed (WAS DONE FOR TESTING)
- private static int PLAYERS_NEEDED = 1;
- /**
- * MAIN FOCUS OF THE GAME,
- * EVENT PLAYERS MUST SURVIVE THE HUNGER GAMES.
- *
- * WAYS OF SURVIVING?
- * - COLLECT RESOURCES (FOOD, TOOLS)
- * - MAYBE INVINCIBILITY FOR 10 SECONDS (HARD AND RARE TO OBTAIN)
- * - PANIC TABS (CAN BE MADE VIA COLLECTING A BUNCH OF RESOURCES)
- * INSTA TELEPORTS FROM TARGETS TO A SAFE AREA.
- *
- * HOW TO COLLECT RESOURCES?
- * - RANDOM SPAWNS EVERY (X) AMOUNT OF TIME
- * - ITEMS SUCH AS KNIVES, CHISELS AND OTHERS NEEDED FOR SKILLING WILL RANDOMLY SPAWN
- * USE THESE ITEMS ^ ^ ^ TO GENERATE YOUR OWN FOOD, WATER ETC..
- *
- * GOAL?
- * BE THE LAST GAMER STANDING. KILL YOUR ENEMIES CU.
- *
- * BOUNDRIES?
- * ENTERING THE MAIN AREA (DANGEROUS) WILL HIT THE PLAYER UNTIL HE HIDES IN THE "SAFE SPOT"
- * - "SAFE" SPOT IS GUARDED WITH CUSTOM NPCS
- * - "SAFE" SPOT IS WHERE THE BIG RESOURCE PACKAGES WILL BE
- * - NPC GUARDING THE "SAFE" SPOT WILL HAVE UNLIMITED HP SO THE NPC IS ALWAYS GUARDING.
- * - NPC WILL HAVE CUSTOM FIGHTING SCRIPTS MAYBE? : NPC WILL HIT HARD.
- *
- * MISC
- * - MINIMAP DOTS ARE OFF SO CONTESTANTS CAN'T SEE EACH OTHER FROM A DISTANCE THROUGH THE MINIMAP
- * - TRADE, REQUEST ASSIST, STATS, ETC ARE ALL TOGGLED (OFF)
- * - ORB OF PROTECTION IS NEEDED FOR PROTECTION FROM HYDRATION, ELSE CAUSES POISON.
- * - MAKING ITEMS WILL BE SAME AS I.E FLETCHING LOGS > BOW > STRING : FLETCHING LOGS > HEADLESS ARROWS > TIP.
- * - RESOURCE SPAWNS (PILE OF CERTAIN RESOURCES)
- *
- * STABILITY
- * - NO OVERPOWERED WEAPONS WHAT SO EVER K.
- * - AS THE MAIN FOCUS IS SURVIVING NOT ALOT OF FOOD SPAWNS WILL BE ADDED IN-EVENT.
- * - 1-2 PILES OF FOOD MAX. "@" 5 MINUTES AND "@" 10 MINUTES AFTER GAME IS STARTED. OTHER FOODS ARE GENERATED VIA FISHING.
- * - FOR THE FIRST 2-4 MINUTES IT IS A PVP FREE ZONE. GAMERS CAN RUN AROUND AND EXLPORE THE LOCATION.
- *
- * FUTURE PLANS (AFTER LIVE RELEASE)
- * - MULTIPLE PLAYING GROUNDS. (AUTOMATICALLY CHOOSES A RANDOM MAP)
- * - TEAM A vs TEAM B
- * - TRAPS
- * - GROUP INVENTORY ONLY WHEN IT IS TEAM A vs TEAM B
- *
- *
- */
- /** SPAWNING STATIONS
- *
- */
- public static final WorldTile[] TELEPORTS = { new WorldTile(0, 0, 0),
- new WorldTile(0, 0, 0), new WorldTile(0, 0, 0),
- new WorldTile(0, 0, 0), new WorldTile(0, 0, 0),
- new WorldTile(0, 0, 0), new WorldTile(0, 0, 0),
- new WorldTile(0, 0, 0)};
- /**
- * EVENT START AND END
- */
- public static void startEvent() {
- setEventStarted(true);
- Logger.log("HungerGames", "Game started");
- World.sendWorldMessage("<col=ff0000>The Hunger Games event has just started!");
- for (Player eventplayers : geteventplayers()) {
- eventTimer = Utils.currentTimeMillis();
- eventplayers.setForceMultiArea(true);
- eventplayers.setCanPvp(true);
- /**
- * DISABLE RIGHT CLICK FEATURES ON PLAYERS (TODO)
- */
- }
- }
- public static void endGame() {
- for(Player contribute: geteventplayers()) {
- if(contribute == null)
- continue;
- Player winner = (Player) getEventPlayers().poll();
- if(winner == null)
- continue;
- contribute.setNextWorldTile(LOBBY);
- winner.setNextWorldTile(LOBBY);
- World.sendWorldMessage("The Hunger Games has finished, winner was "+winner.getDisplayName()+"");
- winner.sm("Congratulations! You've won the Event!");
- winner.getInventory().addItem(995, 500000);
- contribute.sm("<col=f0470a>Thanks for contributing!</col>");
- contribute.getInventory().addItem(995, 500);
- setEventStarted(false);
- contribute.setCanPvp(false);
- contribute.setForceMultiArea(false);
- winner.setCanPvp(false);
- winner.setForceMultiArea(false);
- }
- }
- /**
- * EVENT START AND END - END
- */
- /**
- * ALL SPAWNS WITHIN THE GAME
- *
- */
- public static final int[] FOOD = {1
- };
- public static final int[] POTS = {1
- };
- public static final int [] WP1 = {//WEAPON PIECES 1st half
- };
- public static final int [] WP2 = {//WEAPON PIECES 2nd half
- };
- public static final int [] NPC_SPAWNS = {
- };
- public static final int [] FISHING_SPOTS = {
- };
- public static final int [] TOOL_SPAWNS = {//knife, chisel etc..
- };
- /**
- * ALL SPAWNS WITHIN THE GAME - END
- */
- /*
- * IMPORTANT INTS AND BOOLEANS
- *
- */
- /**
- * USED COORDS
- */
- public static final int maxx = 2755;
- public static final int minx = 2732;
- public static final int maxy = 5101;
- public static final int miny = 5071;
- /**
- * USED COORDS - END
- */
- static int fspawn = 0; // in use ( food spawn count )
- static int fpspawn = 0; //in use ( food and potions spawn count )
- static int Fsm = 0; // in use (food spawn message count)
- static int FPsm = 0; // in use (food and pot spawn message count)
- private static boolean fspawn1 = false; // in use
- private static boolean fspawn2 = false; //in use
- private static boolean wmess = false; //in use
- private static boolean npcSpawn = false; // in use
- private static boolean eventStarted = false; // in use DONT REMOVE
- /*
- * END IMPORTANT INTS AND BOOLEANS
- */
- /**
- * TOOL SPAWNS
- */
- public static void processtoolSpawns() {
- }
- public static void processresourceSpawns() {
- }
- /**
- * EVENT PROCESSING FOOD
- *
- */
- public static void processFoodSpawns(final Player player, int item) {
- for (Player gamers : Hunger.geteventplayers()) {
- //SPAWN TIMES NEED CHANGING
- if(getEventTimer() + 10000 < Utils.currentTimeMillis() && Hunger.isEventStarted() && !fspawn1) {
- FloorItemManager.addGroundItem(new Item(FOOD[Utils.random(FOOD.length)], Utils.random(3, 6)),
- new WorldTile(Utils.random(minx, maxx), Utils.random(miny, maxy), 0), player, true, 180, true);
- fspawn ++;
- }
- if (getEventTimer() + 10000 < Utils.currentTimeMillis() && fspawn == 5 && Hunger.isEventStarted() && Fsm == 0) {
- gamers.sm("Food has spawned within the game.");
- Fsm++;
- fspawn1 = true;
- }
- if (getEventTimer() + 20000 < Utils.currentTimeMillis() && Hunger.isEventStarted() && !fspawn2 ) {
- FloorItemManager.addGroundItem(new Item(FOOD[Utils.random(FOOD.length)], Utils.random(2, 4)),
- new WorldTile(Utils.random(minx, maxx), Utils.random(miny, maxy), 0), player, true, 180, true);
- FloorItemManager.addGroundItem(new Item(POTS[Utils.random(POTS.length)], Utils.random(2, 4)),
- new WorldTile(Utils.random(minx, maxx), Utils.random(miny, maxy), 0), player, true, 180, true);
- fpspawn ++;
- }
- if (getEventTimer() + 20000 < Utils.currentTimeMillis() && fpspawn == 4 && Hunger.isEventStarted() && FPsm == 0) {
- gamers.sm("Potions and food have spawned within the game.");
- FPsm++;
- fspawn2 = true;
- }
- }
- }
- /**
- * EVENT PROCESSING NPC SPAWNS
- *
- */
- public static void processNpcSpawns() {
- //NEED TO MAKE A CUSTOM NPC WEARING ARMOUR SUITABLE FOR THE MINIGAME.
- //SPAWN TIMES NEED CHANGING
- if (getEventTimer() + 10000 < Utils.currentTimeMillis() && Hunger.isEventStarted() && !npcSpawn) {
- World.spawnNPC(1, new WorldTile(2731, 5082, 0), -1, true, true);
- npcSpawn = true;
- }
- }
- /**
- * EVENT PROCESSING NPC SPAWNS - END
- *
- */
- /**
- * EVENT PROCESSING FOOD - END
- *
- */
- /**
- * EVENT PROCESSING MESSAGES
- *
- */
- public static void processWorldMessage(){
- if (Hunger.isEventStarted() && !wmess) {
- for (Player gamers : Hunger.geteventplayers()) {
- gamers.sm("<col=ff0000>[</col>HUNGER GAMES<col=ff0000>]</col> Survive within the first 30 seconds before consumables are input.");
- World.sendWorldMessage("<col=ff0000>[</col>HUNGER GAMES<col=ff0000>]</col> Challengers have entered the Hunger Games!");
- wmess = true;
- }
- }
- }
- /**
- * EVENT PROCESSING MESSAGES - END
- *
- */
- /**
- * EVENT PROCESSING EVENT
- *
- */
- public static void processEvent() {
- //left out for testing purposes
- /*if (Hunger.isEventStarted()) {
- if(geteventplayers().size() == 1) {
- endGame();
- }*/
- if (EventPlayers().size() >= 5 && getEventTimer() + 3.6e+6 < Utils.currentTimeMillis()) { //greater than 5 players, game is 1 hour
- for (Player gamers : Hunger.geteventplayers()) {
- gamers.sm("Sorry! Time has ran out!");
- World.sendWorldMessage("The Hunger Games have ended, with no winner!");
- endGame();
- }
- }
- if (EventPlayers().size() < 5 && getEventTimer() + 1.8e+6 < Utils.currentTimeMillis()) { //less than 5 players, game is 30 mins
- for (Player gamers : Hunger.geteventplayers()) {
- gamers.sm("Sorry! Time has ran out!");
- World.sendWorldMessage("The Hunger Games have ended, with no winner!");
- endGame();
- }
- }
- if(getlobbyEvent().size() < PLAYERS_NEEDED && !isEventStarted() && + 300000 < Utils.currentTimeMillis()) {
- if(getStartTime() + 300000 < Utils.currentTimeMillis()) {
- for(Player players: getlobbyEvent()) {
- players.sm("Players ready for the Hunger Games: (<col=ff000>"+Hunger.getlobbyEvent().size()+"</col>)");
- players.sm("There wasn't enough players in-time. Event Canelled.");
- World.sendWorldMessage("Hunger Games, cancelle!");
- Logger.log("EVENT 1","Event CANCELLED");
- players.getControlerManager().removeControlerWithoutCheck();
- setStartTime(Utils.currentTimeMillis());
- }
- }
- }
- else if (getlobbyEvent().size() >= PLAYERS_NEEDED && !isEventStarted() && + 300000 < Utils.currentTimeMillis()) {
- if(getStartTime() + 10000 < Utils.currentTimeMillis()) {
- getEventPlayers().addAll(lobbyevent);
- getlobbyEvent().removeAll(lobbyevent);
- startEvent();
- }
- }
- }
- /**
- * EVENT PROCESSING EVENT - END
- *
- */
- /**
- *
- * OTHER SHIT
- */
- public static void addEventPlayer(Player player) {
- if(!geteventplayers().contains(player))
- geteventplayers().add(player);
- }
- public static void addLobbyPlayer(Player player) {//neccessary to use because it checks for
- //the lobby already containing the player.
- if(!getlobbyEvent().contains(player))
- getlobbyEvent().add(player);
- }
- public static void removeLobbyPlayer(Player player) {
- getlobbyEvent().remove(player);
- }
- public static void removeEventPlayer(Player player) {
- getEventPlayers().remove(player);
- }
- public static LinkedList<Player> getlobbyEvent() {
- return lobbyevent;
- }
- public static long getStartTime() {
- return startTime;
- }
- public static boolean isEventStarted() {
- return eventStarted;
- }
- public static LinkedList<Player> getEventPlayers() {
- return eventplayers;
- }
- public static LinkedList<Player> EventPlayers() {
- return eventplayers;
- }
- public static void setEventStarted(boolean gameStarted) {
- Hunger.eventStarted = gameStarted;
- }
- public static void setStartTime(long startTime) {
- Hunger.startTime = startTime;
- }
- public static long getEventTimer() {
- return eventTimer;
- }
- public static LinkedList<Player> geteventplayers() {
- return eventplayers;
- }
- /**
- * OTHER SHIT END
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement