forked from MagicBane/Server
Merge remote-tracking branch 'origin/feature-lore-ruleset' into magicbox-1.5.2
This commit is contained in:
@@ -30,6 +30,7 @@ public enum ConfigManager {
|
||||
|
||||
MB_BIND_ADDR,
|
||||
MB_EXTERNAL_ADDR,
|
||||
|
||||
// Database connection config
|
||||
|
||||
MB_DATABASE_ADDRESS,
|
||||
@@ -66,6 +67,7 @@ public enum ConfigManager {
|
||||
MB_WORLD_GREETING,
|
||||
MB_WORLD_KEYCLONE_MAX,
|
||||
MB_USE_RUINS,
|
||||
MB_RULESET,
|
||||
|
||||
// Mobile AI modifiers
|
||||
MB_AI_CAST_FREQUENCY,
|
||||
@@ -134,7 +136,6 @@ public enum ConfigManager {
|
||||
File file = new File("mbbranch.sh");
|
||||
|
||||
if (file.exists() && !file.isDirectory()) {
|
||||
|
||||
String[] command = {"./mbbranch.sh"};
|
||||
|
||||
try {
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
import java.util.EnumMap;
|
||||
import java.util.EnumSet;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public enum DbManager {
|
||||
@@ -266,6 +267,40 @@ public enum DbManager {
|
||||
|
||||
}
|
||||
|
||||
public static <E extends java.lang.Enum<E>> EnumSet<E> parseEnumSet(String mysqlSet, Class<E> enumClass) {
|
||||
|
||||
// Create empty output set of the passed Enum class
|
||||
|
||||
EnumSet<E> enumSet = EnumSet.noneOf(enumClass);
|
||||
|
||||
// Early exit for empty sets
|
||||
|
||||
if (mysqlSet.isEmpty())
|
||||
return enumSet;
|
||||
|
||||
// Split set string and trim each element
|
||||
|
||||
String[] elements = mysqlSet.split(";");
|
||||
|
||||
for (String element : elements) {
|
||||
|
||||
element = element.trim();
|
||||
|
||||
// Parse the element into an enum; add to the output set
|
||||
|
||||
try {
|
||||
E enumConstant = java.lang.Enum.valueOf(enumClass, element);
|
||||
enumSet.add(enumConstant);
|
||||
} catch (Exception e) {
|
||||
Logger.error(" Parse error: " + mysqlSet);
|
||||
}
|
||||
}
|
||||
|
||||
// Return the output set
|
||||
|
||||
return enumSet;
|
||||
}
|
||||
|
||||
public static void printCacheCount(PlayerCharacter pc) {
|
||||
ChatManager.chatSystemInfo(pc, "Cache Lists");
|
||||
|
||||
@@ -324,4 +359,5 @@ public enum DbManager {
|
||||
|
||||
Logger.info("Database configured with " + connectionCount + " connections");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@ public enum DevCmdManager {
|
||||
DevCmdManager.registerDevCmd(new PrintResistsCmd());
|
||||
DevCmdManager.registerDevCmd(new PrintLocationCmd());
|
||||
DevCmdManager.registerDevCmd(new InfoCmd());
|
||||
DevCmdManager.registerDevCmd(new ItemInfoCmd());
|
||||
DevCmdManager.registerDevCmd(new aiInfoCmd());
|
||||
DevCmdManager.registerDevCmd(new SimulateBootyCmd());
|
||||
DevCmdManager.registerDevCmd(new GetHeightCmd());
|
||||
|
||||
@@ -200,5 +200,13 @@ public enum GuildManager {
|
||||
|
||||
}
|
||||
}
|
||||
public static Boolean meetsLoreRequirements(Guild guild, PlayerCharacter player){
|
||||
Enum.GuildCharterType charter = guild.getGuildType();
|
||||
if(charter.requiredClasses.contains(player.absPromotionClass))
|
||||
if(charter.requiredRaces.contains(player.absRace))
|
||||
if(charter.sexRequired.contains(player.absGender))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,6 +170,19 @@ public enum PowersManager {
|
||||
public static void usePower(final PerformActionMsg msg, ClientConnection origin,
|
||||
boolean sendCastToSelf) {
|
||||
|
||||
if(ConfigManager.MB_RULESET.getValue() == "LORE") {
|
||||
PowersBase pb = PowersManager.powersBaseByToken.get(msg.getPowerUsedID());
|
||||
PlayerCharacter caster = origin.getPlayerCharacter();
|
||||
PlayerCharacter target = PlayerCharacter.getFromCache(msg.getTargetID());
|
||||
if(pb != null && pb.isHarmful == false) {
|
||||
if (caster.guild.equals(Guild.getErrantGuild()))
|
||||
return;
|
||||
|
||||
if (target != null && caster.guild.getGuildType().equals(target.guild.getGuildType()) == false)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (usePowerA(msg, origin, sendCastToSelf)) {
|
||||
// Cast failed for some reason, reset timer
|
||||
|
||||
@@ -1258,7 +1271,13 @@ public enum PowersManager {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(ConfigManager.MB_RULESET.getValue() == "LORE") {
|
||||
if (pc.guild.getGuildType().equals(target.guild.getGuildType()) == false) {
|
||||
ChatManager.chatInfoError(pc,
|
||||
"Cannot summon player outside your charter.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
PerformActionMsg pam = new PerformActionMsg(msg.getPowerToken(), msg
|
||||
.getTrains(), msg.getSourceType(), msg.getSourceID(), target
|
||||
.getObjectType().ordinal(), target.getObjectUUID(), 0f, 0f, 0f, 1, 0);
|
||||
|
||||
Reference in New Issue
Block a user