From 78673774c20a4b78dc83825cd466fbaf6a2a4038 Mon Sep 17 00:00:00 2001 From: RedSparr0w Date: Mon, 23 Sep 2019 00:12:43 +1200 Subject: [PATCH] [events] Convert to enum --- 09HDscape-server/src/org/crandor/Util.java | 30 +++ .../crandor/game/content/skill/Skills.java | 6 +- .../skill/free/fishing/FishingPulse.java | 4 +- .../free/gather/GatheringSkillPulse.java | 6 +- .../free/runecrafting/RuneCraftPulse.java | 4 +- .../skill/member/thieving/Pickpocket.java | 4 +- .../org/crandor/game/events/GlobalEvent.java | 77 +++++- .../game/events/GlobalEventManager.java | 254 ++++++------------ .../node/entity/npc/drop/NPCDropTables.java | 10 +- .../player/info/login/LoginConfiguration.java | 2 +- .../src/org/crandor/game/world/GameWorld.java | 23 +- .../command/DeveloperCommandPlugin.java | 25 +- .../inter/ExperienceLampInterface.java | 28 +- 13 files changed, 247 insertions(+), 226 deletions(-) create mode 100644 09HDscape-server/src/org/crandor/Util.java diff --git a/09HDscape-server/src/org/crandor/Util.java b/09HDscape-server/src/org/crandor/Util.java new file mode 100644 index 000000000..231ca4063 --- /dev/null +++ b/09HDscape-server/src/org/crandor/Util.java @@ -0,0 +1,30 @@ +package org.crandor; + +public class Util { + + /** + * Capitalize the first letter of the string + * @return Capitalized string + */ + public static String capitalize(String name) { + if (name != null && name.length() != 0) { + char[] chars = name.toCharArray(); + chars[0] = Character.toUpperCase(chars[0]); + return new String(chars); + } else { + return name; + } + } + + public static String strToEnum(String name) { + name = name.toUpperCase(); + name = name.replaceAll(" ", "_"); + return capitalize(name); + } + + public static String enumToString(String name) { + name = name.toLowerCase(); + name = name.replaceAll("_", " "); + return capitalize(name); + } +} diff --git a/09HDscape-server/src/org/crandor/game/content/skill/Skills.java b/09HDscape-server/src/org/crandor/game/content/skill/Skills.java index 78b559a5c..20d065a95 100644 --- a/09HDscape-server/src/org/crandor/game/content/skill/Skills.java +++ b/09HDscape-server/src/org/crandor/game/content/skill/Skills.java @@ -3,7 +3,7 @@ package org.crandor.game.content.skill; import org.crandor.game.content.global.SkillcapePerks; import org.crandor.game.content.global.tutorial.TutorialSession; import org.crandor.game.content.holiday.HolidayEvent; -import org.crandor.game.events.GlobalEventManager; +import org.crandor.game.events.GlobalEvent; import org.crandor.game.node.entity.Entity; import org.crandor.game.node.entity.combat.ImpactHandler; import org.crandor.game.node.entity.npc.NPC; @@ -28,7 +28,7 @@ public final class Skills { /** * Represents the constant modifier of experience. */ - public static final double EXPERIENCE_MULTIPLIER = 25; + public static final double EXPERIENCE_MULTIPLIER = 20; /** * The maximum experience multiplier. @@ -258,7 +258,7 @@ public final class Skills { if (!(entity instanceof Player)) { return 1.0; } - double mod = multiplyer ? (GlobalEventManager.get().isActive("XP Fever") ? EXPERIENCE_MULTIPLIER * 2 : EXPERIENCE_MULTIPLIER) : 1; + double mod = multiplyer ? (GlobalEvent.XP_FEVER.isActive() ? EXPERIENCE_MULTIPLIER * 2 : EXPERIENCE_MULTIPLIER) : 1; Player p = (Player) entity; if (p.getIronmanManager().getMode() == IronmanMode.ULTIMATE) { mod /= 4; diff --git a/09HDscape-server/src/org/crandor/game/content/skill/free/fishing/FishingPulse.java b/09HDscape-server/src/org/crandor/game/content/skill/free/fishing/FishingPulse.java index 8536baa26..1fc9d7e75 100644 --- a/09HDscape-server/src/org/crandor/game/content/skill/free/fishing/FishingPulse.java +++ b/09HDscape-server/src/org/crandor/game/content/skill/free/fishing/FishingPulse.java @@ -6,7 +6,7 @@ import org.crandor.game.content.global.tutorial.TutorialStage; import org.crandor.game.content.skill.SkillPulse; import org.crandor.game.content.skill.Skills; import org.crandor.game.content.skill.member.summoning.familiar.Forager; -import org.crandor.game.events.GlobalEventManager; +import org.crandor.game.events.GlobalEvent; import org.crandor.game.node.entity.npc.NPC; import org.crandor.game.node.entity.player.Player; import org.crandor.game.node.entity.player.info.portal.Perks; @@ -181,7 +181,7 @@ public final class FishingPulse extends SkillPulse { player.getSkillTasks().decreaseTask(player, SkillTasks.FTUNA2); } - if (GlobalEventManager.get().isActive("Plenty of fish")) + if (GlobalEvent.PLENTY_OF_FISH.isActive()) player.getInventory().add(fish.getItem()); SkillingPets.checkPetDrop(player, SkillingPets.HERON); final Item item = fish.getItem(); diff --git a/09HDscape-server/src/org/crandor/game/content/skill/free/gather/GatheringSkillPulse.java b/09HDscape-server/src/org/crandor/game/content/skill/free/gather/GatheringSkillPulse.java index fdbf32e89..0a1dbe7cc 100644 --- a/09HDscape-server/src/org/crandor/game/content/skill/free/gather/GatheringSkillPulse.java +++ b/09HDscape-server/src/org/crandor/game/content/skill/free/gather/GatheringSkillPulse.java @@ -11,7 +11,7 @@ import org.crandor.game.content.global.tutorial.TutorialStage; import org.crandor.game.content.skill.SkillPulse; import org.crandor.game.content.skill.Skills; import org.crandor.game.content.skill.member.farming.wrapper.PatchWrapper; -import org.crandor.game.events.GlobalEventManager; +import org.crandor.game.events.GlobalEvent; import org.crandor.game.node.entity.impl.Projectile; import org.crandor.game.node.entity.player.Player; import org.crandor.game.node.entity.player.info.portal.Perks; @@ -344,7 +344,7 @@ public final class GatheringSkillPulse extends SkillPulse { private int calculateRewardAmount(int reward) { int amount = 1; // Event doubles resources - if (GlobalEventManager.get().isActive("Harvesting doubles")) { + if (GlobalEvent.HARVESTING_DOUBLES.isActive()) { amount *= 2; } @@ -358,7 +358,7 @@ public final class GatheringSkillPulse extends SkillPulse { amount += 1; player.sendMessage("Through the power of the varrock armour you receive an extra ore."); } - // If the player has a skillcape, 10% chance of finding an extra item + // If the player has a skill cape, 10% chance of finding an extra item else if (isMining && !isMiningEssence && SkillcapePerks.hasSkillcapePerk(player, SkillcapePerks.MINING) && RandomFunction.getRandom(100) <= 10) { amount += 1; player.sendNotificationMessage("Your " + player.getEquipment().get(EquipmentContainer.SLOT_CAPE).getName() + " allows you to obtain two ores from this rock!"); diff --git a/09HDscape-server/src/org/crandor/game/content/skill/free/runecrafting/RuneCraftPulse.java b/09HDscape-server/src/org/crandor/game/content/skill/free/runecrafting/RuneCraftPulse.java index 5124458d6..61f22188f 100644 --- a/09HDscape-server/src/org/crandor/game/content/skill/free/runecrafting/RuneCraftPulse.java +++ b/09HDscape-server/src/org/crandor/game/content/skill/free/runecrafting/RuneCraftPulse.java @@ -3,7 +3,7 @@ package org.crandor.game.content.skill.free.runecrafting; import org.crandor.game.container.impl.EquipmentContainer; import org.crandor.game.content.skill.SkillPulse; import org.crandor.game.content.skill.Skills; -import org.crandor.game.events.GlobalEventManager; +import org.crandor.game.events.GlobalEvent; import org.crandor.game.node.entity.impl.Animator.Priority; import org.crandor.game.node.entity.player.Player; import org.crandor.game.node.entity.player.info.portal.Perks; @@ -309,7 +309,7 @@ public final class RuneCraftPulse extends SkillPulse { i *= 2; } - if(GlobalEventManager.get().isActive("Golden essence")) { + if(GlobalEvent.GOLDEN_ESSENCE.isActive()) { i *= 3; } return i != 0 ? i : 1; diff --git a/09HDscape-server/src/org/crandor/game/content/skill/member/thieving/Pickpocket.java b/09HDscape-server/src/org/crandor/game/content/skill/member/thieving/Pickpocket.java index 3a5f518f5..18078dc8e 100644 --- a/09HDscape-server/src/org/crandor/game/content/skill/member/thieving/Pickpocket.java +++ b/09HDscape-server/src/org/crandor/game/content/skill/member/thieving/Pickpocket.java @@ -2,7 +2,7 @@ package org.crandor.game.content.skill.member.thieving; import org.crandor.game.content.global.ttrail.ClueLevel; import org.crandor.game.content.global.ttrail.ClueScrollPlugin; -import org.crandor.game.events.GlobalEventManager; +import org.crandor.game.events.GlobalEvent; import org.crandor.game.node.entity.npc.NPC; import org.crandor.game.node.entity.npc.drop.DropFrequency; import org.crandor.game.node.entity.player.Player; @@ -175,7 +175,7 @@ public enum Pickpocket { // Calculate any bonus multipliers int bonusMultiplier = 1; if (loot[0] == 995) { - if(GlobalEventManager.get().isActive("Thieves jackpot")) { + if(GlobalEvent.THIEVES_JACKPOT.isActive()) { bonusMultiplier *= 3; } } diff --git a/09HDscape-server/src/org/crandor/game/events/GlobalEvent.java b/09HDscape-server/src/org/crandor/game/events/GlobalEvent.java index a1b4221a1..12c868da8 100644 --- a/09HDscape-server/src/org/crandor/game/events/GlobalEvent.java +++ b/09HDscape-server/src/org/crandor/game/events/GlobalEvent.java @@ -1,30 +1,83 @@ package org.crandor.game.events; -public class GlobalEvent { +import org.crandor.Util; + +public enum GlobalEvent { + ALCHEMY_HELLENISTIC("Receive 2 x coins when using high alchemy"), // Not implemented + GOLDEN_RETRIEVER("All gold dropped by monsters will be automatically banked for you"), // Not implemented + THIEVES_JACKPOT("Receive 3 x more coins when thieving"), + GOLDEN_ESSENCE("Receive 3 x more runes when runecrafting"), + CLONE_FEST("20 x PVP clones have been spawned in the wilderness near the mage bank."), // Not implemented + TRY_YOUR_LUCK("Mobs will drop 40% more items when killed"), + CRAZY_SEEDS("Mobs will drop 2 x more seeds when killed"), + CHARMED("Mobs will drop 2 x more charms when killed"), + XP_FEVER("Receive 2 x XP for all skills"), + PLENTY_OF_FISH("Receive 2 x rewards when fishing"), + HARVESTING_DOUBLES("Receive 2 x items harvested with woodcutting or mining"); + + /** + * Represents the object of the altar. + */ + private final String eventName; + + /** + * Represents the object of the altar. + */ + private final String eventDescription; + + /** + * Represents the object of the altar. + */ + private Long remainingTicks; - private String eventName; - private long remainingTicks; + GlobalEvent(final String eventDescription) { + this.eventName = Util.enumToString(this.name());; + this.eventDescription = eventDescription; + this.remainingTicks = 0L; + } - public String getEventName() { + public String getName() { return this.eventName; } - public long getRemainingTicks() { + public String getDescription() { + return this.eventDescription; + } + + public Long getRemainingTicks() { return this.remainingTicks; } - public GlobalEvent(String eventName, long ticks) { - this.eventName = eventName; + public GlobalEvent setRemainingTicks(Long ticks) { this.remainingTicks = ticks; - } - - public GlobalEvent process() { - remainingTicks--; return this; } + public Boolean isActive() { + return this.remainingTicks > 0; + } + + public GlobalEvent tick() { + remainingTicks--; + return this; + } + + // Start/Extend the event public GlobalEvent extend() { - remainingTicks += 6000; + return extend(6000); + } + + public GlobalEvent extend(int ticks) { + remainingTicks += ticks; + return this; + } + + public GlobalEvent start() { + return extend(6000); + } + + public GlobalEvent start(int ticks) { + extend(ticks); return this; } diff --git a/09HDscape-server/src/org/crandor/game/events/GlobalEventManager.java b/09HDscape-server/src/org/crandor/game/events/GlobalEventManager.java index bfc40be3a..6e43d5472 100644 --- a/09HDscape-server/src/org/crandor/game/events/GlobalEventManager.java +++ b/09HDscape-server/src/org/crandor/game/events/GlobalEventManager.java @@ -20,25 +20,12 @@ import java.util.Map.Entry; */ public class GlobalEventManager implements CallBack { - private static Map EVENTS = new HashMap(); - private long tick = 0; - private String lastEvent; - private String currentEvent; + private GlobalEvent lastEvent; + private GlobalEvent currentEvent; public final GlobalEventManager init() { - try { - getEvents().put("Alchemy hellenistic", 0L); - getEvents().put("Golden retriever", 0L); - getEvents().put("Harvesting doubles", 0L); - getEvents().put("Thieves jackpot", 0L); - getEvents().put("Golden essence", 0L); - getEvents().put("Clone Fest", 0L); - getEvents().put("XP Fever", 0L); - } catch (Exception e) { - e.printStackTrace(); - } return this; } @@ -48,23 +35,17 @@ public class GlobalEventManager implements CallBack { @Override public boolean pulse() { - - tick++; - - Iterator> iterator = EVENTS.entrySet().iterator(); - - while(iterator.hasNext()) { - Map.Entry entry = iterator.next(); - Long ticksRemaining = entry.getValue(); - if (entry.getValue() > 0) { - entry.setValue(--ticksRemaining); - if (ticksRemaining == 3000) - message("You have 30 minutes before the " + entry.getKey() + " event ends."); + for(GlobalEvent event : GlobalEvent.values()){ + Long ticksRemaining = event.getRemainingTicks(); + if (ticksRemaining > 0) { + event.tick(); + --ticksRemaining; + if (ticksRemaining % 3000 == 0) + message("You have " + Math.round(ticksRemaining / 100) + " minutes before the " + event.getName() + " event ends."); - if (ticksRemaining <= 0) { - message("The " + entry.getKey() + " event has now ended."); - } + if (ticksRemaining <= 0) + message("The " + event.getName() + " event has now ended."); } } @@ -80,23 +61,12 @@ public class GlobalEventManager implements CallBack { } - public void reActivate(String name, long time) { - Iterator> iterator = EVENTS.entrySet().iterator(); - - while(iterator.hasNext()) { - Map.Entry entry = iterator.next(); - if (entry.getKey().equalsIgnoreCase(name)) { - entry.setValue(time); - } - } + public void reActivate(GlobalEvent event, long time) { + event.setRemainingTicks(time); } public GlobalEventManager save() { - Iterator> iterator = EVENTS.entrySet().iterator(); - - while(iterator.hasNext()) { - - Map.Entry entry = iterator.next(); + for(GlobalEvent event : GlobalEvent.values()){ StringBuilder query = new StringBuilder(); @@ -104,14 +74,14 @@ public class GlobalEventManager implements CallBack { query.append("(`eventName`,`eventTime`,`worldId`)"); query.append(" VALUES("); - query.append("'" + entry.getKey() + "'").append(","); - query.append("'" + entry.getValue() + "'").append(","); + query.append("'" + event.getName() + "'").append(","); + query.append("'" + event.getRemainingTicks() + "'").append(","); query.append("'" + GameWorld.getSettings().getWorldId() + "'"); query.append(")"); query.append(" ON DUPLICATE KEY UPDATE "); - query.append("eventTime='" + entry.getValue() + "'"); + query.append("eventTime='" + event.getRemainingTicks() + "'"); GameWorld.getDatabaseManager().update("server", query.toString()); @@ -121,17 +91,15 @@ public class GlobalEventManager implements CallBack { public GlobalEventManager load() { try { - Results result = null; - - result = new Results(GameWorld.getDatabaseManager().query("server", "SELECT * FROM `global_events` WHERE worldid='" + GameWorld.getSettings().getWorldId() + "'")); + Results result = new Results(GameWorld.getDatabaseManager().query("server", "SELECT * FROM `global_events` WHERE worldid='" + GameWorld.getSettings().getWorldId() + "'")); while (!result.empty()) { String eventName = result.string("eventName"); String eventTime = result.string("eventTime"); - reActivate(eventName, Long.valueOf(eventTime)); + GlobalEvent event = getEvent(eventName); + reActivate(event, Long.valueOf(eventTime)); } - } catch(Exception e) { e.printStackTrace(); } @@ -147,11 +115,11 @@ public class GlobalEventManager implements CallBack { } public GlobalEventManager notify(String message) { - return message(message, true, ""); + return message(message, true, ""); } public GlobalEventManager notify(String message, boolean tag) { - return message(message, tag, ""); + return message(message, tag, ""); } public GlobalEventManager message(String message, boolean tag, String color) { @@ -159,151 +127,83 @@ public class GlobalEventManager implements CallBack { player.getPacketDispatch().sendMessage(color + (tag ? "[Event Manager] " : "") + message); } return this; - } - public GlobalEventManager deactivate(String eventName) { - return deactivate(eventName, false); - } - - public GlobalEventManager deactivate(String eventName, boolean forceMessage) { + public GlobalEventManager deactivate(GlobalEvent event) { // Only deactivate event if already active - if (!isActive(eventName) && !forceMessage) { + if (!event.isActive()) { return this; } - - Iterator> iterator = EVENTS.entrySet().iterator(); - - while(iterator.hasNext()) { - Map.Entry entry = (Map.Entry) iterator.next(); - if (entry.getKey().equalsIgnoreCase(eventName)) { - message(eventName + " event has ended."); - entry.setValue(0L); - } - } + + // Event will end in 2 ticks + event.setRemainingTicks(2L); return this; } - public GlobalEventManager activate(String eventName) { - return activate(eventName, null, 6000); + public GlobalEventManager activate(GlobalEvent event) { + return activate(event, null, 6000); } - public GlobalEventManager activate(String eventName, String name) { - return activate(eventName, name, 6000); + public GlobalEventManager activate(GlobalEvent event, String name) { + return activate(event, name, 6000); } - public GlobalEventManager activate(String eventName, String name, int timeToAdd) { + public GlobalEventManager activate(GlobalEvent event, String name, int timeToAdd) { if (timeToAdd <= 0) timeToAdd = 6000; - + event.start(timeToAdd); + Player player = Repository.getPlayerByDisplay(name); - Boolean eventStarted = false; - - Iterator> iterator = EVENTS.entrySet().iterator(); - - while(iterator.hasNext()) { - Map.Entry entry = (Map.Entry) iterator.next(); - if (entry.getKey().equalsIgnoreCase(eventName)) { - if (eventName.equalsIgnoreCase("clone fest")) { - notify("The " + eventName + " event is live, clones are located near the mage arena."); - } else { - if (entry.getValue() == 0) { - message("The " + eventName + " event has been activated for " + Math.round(timeToAdd / 100) + " minutes" + (player == null ? "" : " by " + player.getUsername()) + "."); - } else { - message("The " + eventName + " event has been extended by " + Math.round(timeToAdd / 100) + " minutes" + (player == null ? "" : " by " + player.getUsername()) + "."); - } - } - entry.setValue(entry.getValue() + timeToAdd); - eventStarted = true; - } + + StringBuilder message = new StringBuilder(); + message.append("The " + event.getName() + " event has been "); + message.append(event.isActive() ? "extended by" : "activated for"); + message.append(" " + Math.round(timeToAdd / 100) + " minutes"); + if (player != null) { + message.append(" by " + player.getUsername()); } - if (!eventStarted) { - player.sendMessage("Failed to activate event " + eventName + "."); + message.append("."); + + message(message.toString()); + player.getPacketDispatch().sendMessage(event.getDescription()); + + return this; + } + + public GlobalEventManager activateHourly(GlobalEvent event) { + event.start(6000); + message(event.getName() + " is now active, and will run for an hour!"); + for (Player player : Repository.getPlayers()) { + player.getPacketDispatch().sendMessage(event.getDescription()); } return this; } - public GlobalEventManager activateHourly(String eventName) { - - if (getEvents().get(eventName) == null) { - System.out.println("Failed to activate event " + eventName + "."); - return this; - } - - Iterator> iterator = EVENTS.entrySet().iterator(); - - while(iterator.hasNext()) { - Map.Entry entry = iterator.next(); - if (entry.getKey().equalsIgnoreCase(eventName)) { - message(eventName + " is now active, and will run for an hour!"); - for (Player player : Repository.getPlayers()) { - switch(getCurrentEvent()) { - case "Alchemy hellenistic": - player.getPacketDispatch().sendMessage("This event means you'll receive x2 coins when using high alchemy."); - break; - case "Golden retriever": - player.getPacketDispatch().sendMessage("This event means you'll have all gold dropped by monsters banked for you."); - break; - case "Harvesting doubles": - player.getPacketDispatch().sendMessages("This event means you'll receive x2 items when harvesting with woodcutting, mining", "or fishing."); - break; - case "Thieves jackpot": - player.getPacketDispatch().sendMessages("This event means you'll receive 3x more coins when thieving."); - break; - case "Golden essence": - player.getPacketDispatch().sendMessages("This event means you'll receive x3 more runes than normal when runecrafting."); - break; - case "Clone Fest": - player.getPacketDispatch().sendMessages("This event means 20 clones have been spawned in the wilderness", "near the mage bank."); - break; - case "XP Fever": - player.getPacketDispatch().sendMessages("This event means you'll receive x2 XP"); - break; - - } - } - entry.setValue(entry.getValue() + 6000); - } - } - return this; - } - - public boolean isActive(String eventName) { - Iterator> iterator = EVENTS.entrySet().iterator(); - - while(iterator.hasNext()) { - Map.Entry entry = (Map.Entry) iterator.next(); - if (entry.getKey().equalsIgnoreCase(eventName)) { - if (entry.getValue() > 0) - return true; - } - } - - return false; + public boolean isActive(GlobalEvent event) { + return event.isActive(); } public GlobalEventManager alert(Player player) { boolean active = false; - Iterator> i = EVENTS.entrySet().iterator(); - - while(i.hasNext()) { - Map.Entry entry = (Map.Entry) i.next(); - if (entry.getValue() > 0) { - active = true; + + for(GlobalEvent event : GlobalEvent.values()){ + if (event.isActive()) { + active = true; } } + if (!active) { player.sendMessage("No events are currently active."); return this; } - player.sendMessage("The following events are active:"); - Iterator> iterator = EVENTS.entrySet().iterator(); - while(iterator.hasNext()) { - Map.Entry entry = (Map.Entry) iterator.next(); - if (entry.getValue() > 0) { - player.sendMessage(" [-] " + entry.getKey() + "."); + player.sendMessage("The following events are active:"); + + for(GlobalEvent event : GlobalEvent.values()){ + if (event.isActive()) { + player.sendMessage(" [-] " + event.getName() + "."); } } + return this; } @@ -319,24 +219,28 @@ public class GlobalEventManager implements CallBack { return true; } - public static Map getEvents() { - return EVENTS; + public static GlobalEvent getEvent(String name) { + for(GlobalEvent event : GlobalEvent.values()){ + if (event.getName().equalsIgnoreCase(name)) + return event; + } + return null; } - public String getLastEvent() { + public GlobalEvent getLastEvent() { return lastEvent; } - public void setLastEvent(String lastEvent) { - this.lastEvent = lastEvent; + public void setLastEvent(GlobalEvent event) { + this.lastEvent = event; } - public String getCurrentEvent() { + public GlobalEvent getCurrentEvent() { return currentEvent; } - public void setCurrentEvent(String currentEvent) { - this.currentEvent = currentEvent; + public void setCurrentEvent(GlobalEvent event) { + this.currentEvent = event; } diff --git a/09HDscape-server/src/org/crandor/game/node/entity/npc/drop/NPCDropTables.java b/09HDscape-server/src/org/crandor/game/node/entity/npc/drop/NPCDropTables.java index 200103d7d..a821873f8 100644 --- a/09HDscape-server/src/org/crandor/game/node/entity/npc/drop/NPCDropTables.java +++ b/09HDscape-server/src/org/crandor/game/node/entity/npc/drop/NPCDropTables.java @@ -8,7 +8,7 @@ import org.crandor.game.content.eco.EconomyManagement; import org.crandor.game.content.eco.ge.GrandExchangeDatabase; import org.crandor.game.content.global.Bones; import org.crandor.game.content.skill.Skills; -import org.crandor.game.events.GlobalEventManager; +import org.crandor.game.events.GlobalEvent; import org.crandor.game.node.entity.Entity; import org.crandor.game.node.entity.npc.NPC; import org.crandor.game.node.entity.player.Player; @@ -93,11 +93,11 @@ public final class NPCDropTables { Player p = looter instanceof Player ? (Player) looter : null; for (ChanceItem item : defaultTable) { int amount = RandomFunction.random(item.getMinimumAmount(), item.getMaximumAmount() + 1); - if (GlobalEventManager.get().isActive("Try your luck")) + if (GlobalEvent.TRY_YOUR_LUCK.isActive()) amount *= 1.4; - if (GlobalEventManager.get().isActive("Crazy Seeds") && ItemDefinition.forId(item.getId()).getName().toLowerCase().contains("seed")) + if (GlobalEvent.CRAZY_SEEDS.isActive() && ItemDefinition.forId(item.getId()).getName().toLowerCase().contains("seed")) amount *= 2; - if (GlobalEventManager.get().isActive("Charmed") && ItemDefinition.forId(item.getId()).getName().toLowerCase().contains("charm")) + if (GlobalEvent.CHARMED.isActive() && ItemDefinition.forId(item.getId()).getName().toLowerCase().contains("charm")) amount *= 2; if (npc.getName().startsWith("Revenant") && item.getName().equalsIgnoreCase("coins")) { break; @@ -181,7 +181,7 @@ public final class NPCDropTables { if (handleBoneCrusher(player, item)) { return; } - if (item.getId() == 995 && player.getBank().hasSpaceFor(item) && ( player.getGlobalData().isEnableCoinMachine() || GlobalEventManager.get().isActive("Golden retriever") )) { + if (item.getId() == 995 && player.getBank().hasSpaceFor(item) && ( player.getGlobalData().isEnableCoinMachine() || GlobalEvent.GOLDEN_RETRIEVER.isActive() )) { item = new Item(995, (int) (item.getAmount() + (item.getAmount() * 0.25))); player.getBank().add(item); player.sendMessage(" " + item.getAmount() + " coins were sent to your bank."); diff --git a/09HDscape-server/src/org/crandor/game/node/entity/player/info/login/LoginConfiguration.java b/09HDscape-server/src/org/crandor/game/node/entity/player/info/login/LoginConfiguration.java index 4b88e12b8..3aa75fd32 100644 --- a/09HDscape-server/src/org/crandor/game/node/entity/player/info/login/LoginConfiguration.java +++ b/09HDscape-server/src/org/crandor/game/node/entity/player/info/login/LoginConfiguration.java @@ -154,7 +154,7 @@ public final class LoginConfiguration { return; } player.getPacketDispatch().sendMessage("Welcome to " + GameWorld.getName() + "."); - player.getPacketDispatch().sendMessage("You are currently playing in beta version 1.2"); + //player.getPacketDispatch().sendMessage("You are currently playing in beta version 1.2"); if (player.getDetails().isMuted()) { player.getPacketDispatch().sendMessage("You are muted."); player.getPacketDispatch().sendMessage("To prevent further mutes please read the rules."); diff --git a/09HDscape-server/src/org/crandor/game/world/GameWorld.java b/09HDscape-server/src/org/crandor/game/world/GameWorld.java index 8a2e289b7..261762e15 100644 --- a/09HDscape-server/src/org/crandor/game/world/GameWorld.java +++ b/09HDscape-server/src/org/crandor/game/world/GameWorld.java @@ -4,6 +4,7 @@ import org.crandor.ServerConstants; import org.crandor.cache.Cache; import org.crandor.cache.ServerStore; import org.crandor.game.content.eco.ge.GrandExchangeDatabase; +import org.crandor.game.events.GlobalEvent; import org.crandor.game.events.GlobalEventManager; import org.crandor.game.node.entity.npc.NPC; import org.crandor.game.node.entity.player.Player; @@ -105,7 +106,18 @@ public final class GameWorld { getEvents().put("Thieves jackpot", 0L); getEvents().put("Golden essence", 0L); */ - public static String[] hourlyEvent = {"Alchemy hellenistic", "Golden retriever", "Harvesting doubles", "Thieves jackpot", "Golden essence"}; + public static GlobalEvent[] hourlyEvents = { + GlobalEvent.ALCHEMY_HELLENISTIC, + GlobalEvent.GOLDEN_RETRIEVER, + GlobalEvent.THIEVES_JACKPOT, + GlobalEvent.GOLDEN_ESSENCE, + GlobalEvent.TRY_YOUR_LUCK, + GlobalEvent.CRAZY_SEEDS, + GlobalEvent.CHARMED, + GlobalEvent.XP_FEVER, + GlobalEvent.PLENTY_OF_FISH, + GlobalEvent.HARVESTING_DOUBLES, + }; /** * Pulses all current pulses. @@ -139,8 +151,9 @@ public final class GameWorld { switch(cfTicks) { case 100: if (checkDay()) { - GlobalEventManager.get().activate("Clone Fest", null, 2000); - if (GlobalEventManager.get().isActive("Clone Fest")) { + // Activate clone fest for 15 minutes + GlobalEventManager.get().activate(GlobalEvent.CLONE_FEST, null, 1500); + if (GlobalEvent.CLONE_FEST.isActive()) { int size = 20; if (PVPAIPActions.pvp_players == null) { PVPAIPActions.pvp_players = new ArrayList<>(); @@ -169,8 +182,8 @@ public final class GameWorld { switch (eventTicks) { // 2 minute gap between events case 200: - int randomEventId = new Random().nextInt(hourlyEvent.length); - String event = hourlyEvent[randomEventId]; + int randomEventId = new Random().nextInt(hourlyEvents.length); + GlobalEvent event = hourlyEvents[randomEventId]; GlobalEventManager.get().setLastEvent(event); GlobalEventManager.get().setCurrentEvent(event); diff --git a/09HDscape-server/src/plugin/command/DeveloperCommandPlugin.java b/09HDscape-server/src/plugin/command/DeveloperCommandPlugin.java index 8be8ae6f9..d01108610 100644 --- a/09HDscape-server/src/plugin/command/DeveloperCommandPlugin.java +++ b/09HDscape-server/src/plugin/command/DeveloperCommandPlugin.java @@ -1,16 +1,13 @@ package plugin.command; -import com.sun.xml.internal.ws.util.StringUtils; import org.crandor.ServerConstants; import org.crandor.cache.Cache; import org.crandor.cache.def.impl.ItemDefinition; import org.crandor.cache.def.impl.NPCDefinition; -import org.crandor.game.component.Component; import org.crandor.game.container.Container; import org.crandor.game.container.impl.EquipmentContainer; import org.crandor.game.content.eco.EconomyManagement; import org.crandor.game.content.global.shop.Shop; -import org.crandor.game.content.global.shop.ShopViewer; import org.crandor.game.content.global.tutorial.TutorialSession; import org.crandor.game.content.holiday.HolidayItem; import org.crandor.game.content.holiday.ItemLimitation; @@ -18,6 +15,7 @@ import org.crandor.game.content.skill.Skills; import org.crandor.game.content.skill.free.smithing.smelting.Bar; import org.crandor.game.content.skill.member.construction.HouseLocation; import org.crandor.game.content.skill.member.summoning.pet.Pets; +import org.crandor.game.events.GlobalEvent; import org.crandor.game.events.GlobalEventManager; import org.crandor.game.node.entity.combat.ImpactHandler.HitsplatType; import org.crandor.game.node.entity.npc.NPC; @@ -50,9 +48,6 @@ import org.crandor.game.world.map.zone.RegionZone; import org.crandor.game.world.repository.Repository; import org.crandor.game.world.update.flag.context.Animation; import org.crandor.game.world.update.flag.context.Graphics; -import org.crandor.net.packet.PacketRepository; -import org.crandor.net.packet.context.ContainerContext; -import org.crandor.net.packet.out.ContainerPacket; import org.crandor.plugin.InitializablePlugin; import org.crandor.plugin.Plugin; import org.crandor.plugin.PluginManager; @@ -106,6 +101,7 @@ public final class DeveloperCommandPlugin extends CommandPlugin { public boolean parse(final Player player, String name, String[] args) { String[] eventNameArr; String eventName; + GlobalEvent event; switch (name) { case "find": try { @@ -188,8 +184,11 @@ public final class DeveloperCommandPlugin extends CommandPlugin { case "beginevent": eventNameArr = Arrays.copyOfRange(args, 1, args.length); eventName = String.join(" ", eventNameArr); + event = GlobalEventManager.getEvent(eventName); + if (event == null) + break; + GlobalEventManager.get().activate(event); player.sendMessage("You have activated the " + eventName + " event!"); - GlobalEventManager.get().activate(eventName, null); break; case "eventdeactivate": @@ -200,8 +199,11 @@ public final class DeveloperCommandPlugin extends CommandPlugin { case "finishevent": eventNameArr = Arrays.copyOfRange(args, 1, args.length); eventName = String.join(" ", eventNameArr); + event = GlobalEventManager.getEvent(eventName); + if (event == null) + break; + GlobalEventManager.get().deactivate(event); player.sendMessage("You have deactivated the " + eventName + " event!"); - GlobalEventManager.get().activate(eventName, null); break; case "poison": @@ -211,11 +213,8 @@ public final class DeveloperCommandPlugin extends CommandPlugin { break; case "activatecf": - String target = ""; - for (int i = 1; i < args.length; i++) - target += args[i] + ((i == args.length - 1) ? "" : " "); - GlobalEventManager.get().activate("Clone Fest", null); - if (GlobalEventManager.get().isActive("Clone Fest")) { + GlobalEventManager.get().activate(GlobalEvent.CLONE_FEST); + if (GlobalEvent.CLONE_FEST.isActive()) { int size = 20; if (PVPAIPActions.pvp_players == null) { player.setAttribute("aip_legion", PVPAIPActions.pvp_players = new ArrayList<>()); diff --git a/09HDscape-server/src/plugin/interaction/inter/ExperienceLampInterface.java b/09HDscape-server/src/plugin/interaction/inter/ExperienceLampInterface.java index e4b4003a7..e67ed1fa1 100644 --- a/09HDscape-server/src/plugin/interaction/inter/ExperienceLampInterface.java +++ b/09HDscape-server/src/plugin/interaction/inter/ExperienceLampInterface.java @@ -76,9 +76,9 @@ public final class ExperienceLampInterface extends ComponentPlugin { player.getAudioManager().send(SOUND); player.getInventory().remove(lamp); player.getInterfaceManager().close(); - int x = player.getSkills().getStaticLevel(skillType.skill); + int skillLevel = player.getSkills().getStaticLevel(skillType.skill); int modifier = 10; - double experience = x * modifier; + double experience = skillLevel * modifier; if (type != null && type != Lamps.GENIE_LAMP) { player.getDialogueInterpreter().open(70099, new Object[] { "The lamp gives you " + (int) type.getExp() + " " + Skills.SKILL_NAME[skillType.skill] + " experience." }); experience = type.getExp() / Skills.EXPERIENCE_MULTIPLIER; @@ -99,7 +99,29 @@ public final class ExperienceLampInterface extends ComponentPlugin { * @author 'Vexia */ public enum SkillInterface { - ATTACK(29, Skills.ATTACK), STRENGTH(30, Skills.STRENGTH), RANGE(32, Skills.RANGE), MAGIC(35, Skills.MAGIC), DEFENCE(31, Skills.DEFENCE), CRAFTING(39, Skills.CRAFTING), HITPOINTS(34, Skills.HITPOINTS), PRAYER(33, Skills.PRAYER), AGILITY(36, Skills.AGILITY), HERBLORE(37, Skills.HERBLORE), THIEVING(38, Skills.THIEVING), FISHING(43, Skills.FISHING), RUNECRAFTING(47, Skills.RUNECRAFTING), SLAYER(48, Skills.SLAYER), FARMING(50, Skills.FARMING), MINING(41, Skills.MINING), SMITHING(42, Skills.SMITHING), HUNTER(49, Skills.HUNTER), SUMMONING(52, Skills.SUMMONING), COOKING(45, Skills.COOKING), FIREMAKING(44, Skills.FIREMAKING), WOODCUTTING(46, Skills.WOODCUTTING), FLETCHING(40, Skills.FLETCHING); + ATTACK(29, Skills.ATTACK), + STRENGTH(30, Skills.STRENGTH), + RANGE(32, Skills.RANGE), + MAGIC(35, Skills.MAGIC), + DEFENCE(31, Skills.DEFENCE), + CRAFTING(39, Skills.CRAFTING), + HITPOINTS(34, Skills.HITPOINTS), + PRAYER(33, Skills.PRAYER), + AGILITY(36, Skills.AGILITY), + HERBLORE(37, Skills.HERBLORE), + THIEVING(38, Skills.THIEVING), + FISHING(43, Skills.FISHING), + RUNECRAFTING(47, Skills.RUNECRAFTING), + SLAYER(48, Skills.SLAYER), + FARMING(50, Skills.FARMING), + MINING(41, Skills.MINING), + SMITHING(42, Skills.SMITHING), + HUNTER(49, Skills.HUNTER), + SUMMONING(52, Skills.SUMMONING), + COOKING(45, Skills.COOKING), + FIREMAKING(44, Skills.FIREMAKING), + WOODCUTTING(46, Skills.WOODCUTTING), + FLETCHING(40, Skills.FLETCHING); /** * Constructs a new {@code ExperienceLampInterface} {@code Object}.