Merge remote-tracking branch 'origin/feature-lore-ruleset' into magicbox-1.5.2

This commit is contained in:
2024-02-18 08:27:30 -05:00
24 changed files with 635 additions and 227 deletions
+2 -1
View File
@@ -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 {
+36
View File
@@ -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());
+8
View File
@@ -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;
}
}
+20 -1
View File
@@ -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);