mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-20 05:20:22 -07:00
[events] Convert to enum
This commit is contained in:
parent
f828ef699c
commit
78673774c2
13 changed files with 247 additions and 226 deletions
30
09HDscape-server/src/org/crandor/Util.java
Normal file
30
09HDscape-server/src/org/crandor/Util.java
Normal file
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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<NPC> {
|
|||
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();
|
||||
|
|
|
|||
|
|
@ -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<GameObject> {
|
|||
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<GameObject> {
|
|||
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!");
|
||||
|
|
|
|||
|
|
@ -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<Item> {
|
|||
i *= 2;
|
||||
}
|
||||
|
||||
if(GlobalEventManager.get().isActive("Golden essence")) {
|
||||
if(GlobalEvent.GOLDEN_ESSENCE.isActive()) {
|
||||
i *= 3;
|
||||
}
|
||||
return i != 0 ? i : 1;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,30 +1,83 @@
|
|||
package org.crandor.game.events;
|
||||
|
||||
public class GlobalEvent {
|
||||
import org.crandor.Util;
|
||||
|
||||
private String eventName;
|
||||
private long remainingTicks;
|
||||
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");
|
||||
|
||||
public String getEventName() {
|
||||
/**
|
||||
* 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;
|
||||
|
||||
GlobalEvent(final String eventDescription) {
|
||||
this.eventName = Util.enumToString(this.name());;
|
||||
this.eventDescription = eventDescription;
|
||||
this.remainingTicks = 0L;
|
||||
}
|
||||
|
||||
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;
|
||||
return this;
|
||||
}
|
||||
|
||||
public GlobalEvent process() {
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,25 +20,12 @@ import java.util.Map.Entry;
|
|||
*/
|
||||
public class GlobalEventManager implements CallBack {
|
||||
|
||||
private static Map<String, Long> EVENTS = new HashMap<String, Long>();
|
||||
|
||||
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++;
|
||||
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.");
|
||||
|
||||
Iterator<Entry<String, Long>> iterator = EVENTS.entrySet().iterator();
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
Map.Entry<String, Long> 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.");
|
||||
|
||||
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<Entry<String, Long>> iterator = EVENTS.entrySet().iterator();
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
Map.Entry<String, Long> 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<Entry<String, Long>> iterator = EVENTS.entrySet().iterator();
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
|
||||
Map.Entry<String, Long> 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, "<col=c0392b>");
|
||||
return message(message, true, "<col=3498db>");
|
||||
}
|
||||
|
||||
public GlobalEventManager notify(String message, boolean tag) {
|
||||
return message(message, tag, "<col=c0392b>");
|
||||
return message(message, tag, "<col=3498db>");
|
||||
}
|
||||
|
||||
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<Entry<String, Long>> iterator = EVENTS.entrySet().iterator();
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
Map.Entry<String, Long> entry = (Map.Entry<String, Long>) 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<Entry<String, Long>> iterator = EVENTS.entrySet().iterator();
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
Map.Entry<String, Long> entry = (Map.Entry<String, Long>) 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<Entry<String, Long>> iterator = EVENTS.entrySet().iterator();
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
Map.Entry<String, Long> 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<Entry<String, Long>> iterator = EVENTS.entrySet().iterator();
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
Map.Entry<String, Long> entry = (Map.Entry<String, Long>) 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<Entry<String, Long>> i = EVENTS.entrySet().iterator();
|
||||
|
||||
while(i.hasNext()) {
|
||||
Map.Entry<String, Long> entry = (Map.Entry<String, Long>) i.next();
|
||||
if (entry.getValue() > 0) {
|
||||
active = true;
|
||||
for(GlobalEvent event : GlobalEvent.values()){
|
||||
if (event.isActive()) {
|
||||
active = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!active) {
|
||||
player.sendMessage("<col=3498db>No events are currently active.");
|
||||
return this;
|
||||
}
|
||||
player.sendMessage("<col=3498db>The following events are active:");
|
||||
Iterator<Entry<String, Long>> iterator = EVENTS.entrySet().iterator();
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
Map.Entry<String, Long> entry = (Map.Entry<String, Long>) iterator.next();
|
||||
if (entry.getValue() > 0) {
|
||||
player.sendMessage("<col=3498db> [-] " + entry.getKey() + ".");
|
||||
player.sendMessage("<col=3498db>The following events are active:");
|
||||
|
||||
for(GlobalEvent event : GlobalEvent.values()){
|
||||
if (event.isActive()) {
|
||||
player.sendMessage("<col=3498db> [-] " + event.getName() + ".");
|
||||
}
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -319,24 +219,28 @@ public class GlobalEventManager implements CallBack {
|
|||
return true;
|
||||
}
|
||||
|
||||
public static Map<String, Long> 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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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("<col=3498db> " + item.getAmount() + " coins were sent to your bank.");
|
||||
|
|
|
|||
|
|
@ -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.");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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<>());
|
||||
|
|
|
|||
|
|
@ -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}.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue