diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/custom/Champion.ini b/L2J_Mobius_C6_Interlude/dist/game/config/custom/Champion.ini index 083300b8bf..9a2ca5b123 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/config/custom/Champion.ini +++ b/L2J_Mobius_C6_Interlude/dist/game/config/custom/Champion.ini @@ -18,7 +18,7 @@ ChampionMaxLevel = 70 ChampionHp = 8 # Hp Regen Multiplier. -ChampionRegenHp = 1. +ChampionHpRegen = 1. # Rewards multiplier. ChampionRewards = 8 diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/Clanhall.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/Clanhall.ini index 751f584dc2..13d275c448 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/config/main/Clanhall.ini +++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/Clanhall.ini @@ -5,6 +5,7 @@ # ---------------------------------------- # Teleport Function price # ---------------------------------------- +ClanHallTeleportFunctionFeeRation = 86400000 # 1st level ClanHallTeleportFunctionFeeLvl1 = 7000 # 2nd level @@ -19,6 +20,7 @@ ClanHallTeleportFunctionFeeLvl2 = 14000 # ------------------------------------------- # Support magic buff price # ------------------------------------------- +ClanHallSupportFunctionFeeRation = 86400000 # 1st level ClanHallSupportFeeLvl1 = 17500 # 2nd level @@ -39,6 +41,7 @@ ClanHallSupportFeeLvl8 = 364000 # --------------------------------------- # MpRegeneration price # --------------------------------------- +ClanHallMpRegenerationFunctionFeeRation = 86400000 # 5% MpRegeneration ClanHallMpRegenerationFeeLvl1 = 14000 # 10% MpRegeneration @@ -53,6 +56,7 @@ ClanHallMpRegenerationFeeLvl5 = 140000 # -------------------------------------- # HpRegeneration price # -------------------------------------- +ClanHallHpRegenerationFunctionFeeRation = 86400000 # 20% HpRegeneration ClanHallHpRegenerationFeeLvl1 = 4900 # 40% HpRegeneration @@ -83,6 +87,7 @@ ClanHallHpRegenerationFeeLvl13 = 36166 # ---------------------------------------- # ExpRegeneration price # ---------------------------------------- +ClanHallExpRegenerationFunctionFeeRation = 86400000 # 5% ExpRegeneration ClanHallExpRegenerationFeeLvl1 = 21000 # 10% ExpRegeneration @@ -101,6 +106,7 @@ ClanHallExpRegenerationFeeLvl7 = 210000 # -------------------------------------- # Creation item function # -------------------------------------- +ClanHallItemCreationFunctionFeeRation = 86400000 # Time after count of Item is restored (in Hours) # ClanHallItemCreationFunctionTaskRestore = 24 # 1st level @@ -115,7 +121,9 @@ ClanHallItemCreationFunctionFeeLvl3 = 980000 # -------------------------- # Need core support, need more information on functions in different # Clan Hall in different Towns. +ClanHallCurtainFunctionFeeRation = 86400000 ClanHallCurtainFunctionFeeLvl1 = 2002 ClanHallCurtainFunctionFeeLvl2 = 2625 +ClanHallFrontPlatformFunctionFeeRation = 86400000 ClanHallFrontPlatformFunctionFeeLvl1 = 3031 ClanHallFrontPlatformFunctionFeeLvl2 = 9331 \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/General.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/General.ini index cf304436ae..39ee491707 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/config/main/General.ini +++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/General.ini @@ -5,16 +5,16 @@ # --------------------------------------------------------------------------- # Debug # --------------------------------------------------------------------------- -# Don't load quests +# Do not load quests AltDevNoQuests = False -# Don't load spawntable +# Do not load spawntable AltDevNoSpawns = False -# Don't load Script's +# Do not load Scripts AltDevNoScript = False -# Don't load RaidBoss +# Do not load RaidBoss AltDevNoRB = False diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/SevenSigns.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/SevenSigns.ini index a995a092a7..6051cbb330 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/config/main/SevenSigns.ini +++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/SevenSigns.ini @@ -55,5 +55,4 @@ AltFestivalSecondSwarm = 720000 # Spawn Chests. # Default: 15 minutes -AltFestivalChestspawn = 900000 - +AltFestivalChestSpawn = 900000 diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/protected/Flood.ini b/L2J_Mobius_C6_Interlude/dist/game/config/protected/Flood.ini index 3179625069..6b11cac288 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/config/protected/Flood.ini +++ b/L2J_Mobius_C6_Interlude/dist/game/config/protected/Flood.ini @@ -141,6 +141,13 @@ FloodProtectorMoveActionPunishmentLimit = 0 FloodProtectorMoveActionPunishmentType = none FloodProtectorMoveActionPunishmentTime = 0 +# Generic Action +FloodProtectorGenericActionInterval = 5 +FloodProtectorGenericActionLogFlooding = false +FloodProtectorGenericActionPunishmentLimit = 0 +FloodProtectorGenericActionPunishmentType = none +FloodProtectorGenericActionPunishmentTime = 0 + # Macro - attempts to Macro system FloodProtectorMacroInterval = 8 FloodProtectorMacroLogFlooding = True diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java index b3c977fc4e..54806a7bee 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java @@ -23,7 +23,6 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.io.OutputStream; @@ -34,11 +33,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.logging.Level; import java.util.logging.Logger; import org.l2jmobius.commons.enums.ServerMode; import org.l2jmobius.commons.util.ClassMasterSettings; -import org.l2jmobius.commons.util.L2Properties; +import org.l2jmobius.commons.util.PropertiesParser; import org.l2jmobius.commons.util.StringUtil; import org.l2jmobius.gameserver.model.entity.olympiad.OlympiadPeriod; import org.l2jmobius.gameserver.util.FloodProtectorConfig; @@ -65,7 +65,7 @@ public class Config private static final String ENCHANT_CONFIG_FILE = "./config/main/Enchant.ini"; public static final String FORTSIEGE_CONFIG_FILE = "./config/main/Fort.ini"; private static final String GENERAL_CONFIG_FILE = "./config/main/General.ini"; - private static final String GEODATA_CONFIG_FILE = "./config/main/GeoEngine.ini"; + private static final String GEOENGINE_CONFIG_FILE = "./config/main/GeoEngine.ini"; private static final String OLYMP_CONFIG_FILE = "./config/main/Olympiad.ini"; private static final String PHYSICS_CONFIG_FILE = "./config/main/Physics.ini"; private static final String PVP_CONFIG_FILE = "./config/main/PvP.ini"; @@ -173,20 +173,11 @@ public class Config public static int MAX_NPC_ANIMATION; public static int MIN_MONSTER_ANIMATION; public static int MAX_MONSTER_ANIMATION; - public static boolean USE_3D_MAP; public static boolean ENABLE_COMMUNITY_BOARD; public static String BBS_DEFAULT; - public static int PATH_NODE_RADIUS; - public static int NEW_NODE_ID; - public static int SELECTED_NODE_ID; - public static int LINKED_NODE_ID; - public static String NEW_NODE_TYPE; public static boolean SHOW_NPC_LVL; public static boolean SHOW_NPC_AGGRESSION; public static int ZONE_TOWN; - public static boolean COUNT_PACKETS = false; - public static boolean DUMP_PACKET_COUNTS = false; - public static int DUMP_INTERVAL_SECONDS = 60; public static int DEFAULT_PUNISH; public static int DEFAULT_PUNISH_PARAM; @@ -197,9 +188,6 @@ public class Config public static boolean GRIDS_ALWAYS_ON; public static int GRID_NEIGHBOR_TURNON_TIME; public static int GRID_NEIGHBOR_TURNOFF_TIME; - public static int MINIMUM_UPDATE_DISTANCE; - public static int KNOWNLIST_FORGET_DELAY; - public static int MINIMUN_UPDATE_TIME; public static boolean BYPASS_VALIDATION; public static boolean HIGH_RATE_SERVER_DROPS; public static boolean FORCE_COMPLETE_STATUS_UPDATE; @@ -261,7 +249,7 @@ public class Config public static float RATE_DROP_ITEMS; public static float RATE_DROP_SEAL_STONES; public static float RATE_DROP_SPOIL; - public static int RATE_DROP_MANOR; + public static float RATE_DROP_MANOR; public static float RATE_DROP_QUEST; public static float RATE_KARMA_EXP_LOST; public static float RATE_SIEGE_GUARDS_PRICE; @@ -464,36 +452,36 @@ public class Config public static int PARTISAN_HOUR; public static int PARTISAN_MINUTES; - public static boolean L2JMOD_CHAMPION_ENABLE; - public static int L2JMOD_CHAMPION_FREQUENCY; - public static int L2JMOD_CHAMP_MIN_LVL; - public static int L2JMOD_CHAMP_MAX_LVL; - public static int L2JMOD_CHAMPION_HP; - public static int L2JMOD_CHAMPION_REWARDS; - public static int L2JMOD_CHAMPION_ADENAS_REWARDS; - public static float L2JMOD_CHAMPION_HP_REGEN; - public static float L2JMOD_CHAMPION_ATK; - public static float L2JMOD_CHAMPION_SPD_ATK; - public static int L2JMOD_CHAMPION_REWARD; - public static int L2JMOD_CHAMPION_REWARD_ID; - public static int L2JMOD_CHAMPION_REWARD_QTY; - public static String L2JMOD_CHAMP_TITLE; + public static boolean CHAMPION_ENABLE; + public static int CHAMPION_FREQUENCY; + public static int CHAMP_MIN_LVL; + public static int CHAMP_MAX_LVL; + public static int CHAMPION_HP; + public static int CHAMPION_REWARDS; + public static int CHAMPION_ADENAS_REWARDS; + public static float CHAMPION_HP_REGEN; + public static float CHAMPION_ATK; + public static float CHAMPION_SPD_ATK; + public static int CHAMPION_REWARD; + public static int CHAMPION_REWARD_ID; + public static int CHAMPION_REWARD_QTY; + public static String CHAMP_TITLE; public static boolean MERCHANT_ZERO_SELL_PRICE; - public static boolean L2JMOD_ALLOW_WEDDING; - public static int L2JMOD_WEDDING_PRICE; - public static boolean L2JMOD_WEDDING_PUNISH_INFIDELITY; - public static boolean L2JMOD_WEDDING_TELEPORT; - public static int L2JMOD_WEDDING_TELEPORT_PRICE; - public static int L2JMOD_WEDDING_TELEPORT_DURATION; - public static int L2JMOD_WEDDING_NAME_COLOR_NORMAL; - public static int L2JMOD_WEDDING_NAME_COLOR_GEY; - public static int L2JMOD_WEDDING_NAME_COLOR_LESBO; - public static boolean L2JMOD_WEDDING_SAMESEX; - public static boolean L2JMOD_WEDDING_FORMALWEAR; - public static int L2JMOD_WEDDING_DIVORCE_COSTS; - public static boolean WEDDING_GIVE_CUPID_BOW; + public static boolean ALLOW_WEDDING; + public static int WEDDING_PRICE; + public static boolean WEDDING_PUNISH_INFIDELITY; + public static boolean WEDDING_TELEPORT; + public static int WEDDING_TELEPORT_PRICE; + public static int WEDDING_TELEPORT_DURATION; + public static int WEDDING_NAME_COLOR_NORMAL; + public static int WEDDING_NAME_COLOR_GEY; + public static int WEDDING_NAME_COLOR_LESBO; + public static boolean WEDDING_SAMESEX; + public static boolean WEDDING_FORMALWEAR; + public static int WEDDING_DIVORCE_COSTS; + public static boolean GIVE_CUPID_BOW; public static boolean ANNOUNCE_WEDDING; public static String TVT_EVEN_TEAMS; @@ -1178,2287 +1166,1876 @@ public class Config public static void loadAccessConfig() { - try - { - final Properties accessSettings = new Properties(); - final InputStream is = new FileInputStream(new File(ACCESS_CONFIG_FILE)); - accessSettings.load(is); - is.close(); - - EVERYBODY_HAS_ADMIN_RIGHTS = Boolean.parseBoolean(accessSettings.getProperty("EverybodyHasAdminRights", "false")); - GM_STARTUP_AUTO_LIST = Boolean.parseBoolean(accessSettings.getProperty("GMStartupAutoList", "true")); - GM_HERO_AURA = Boolean.parseBoolean(accessSettings.getProperty("GMHeroAura", "false")); - GM_STARTUP_BUILDER_HIDE = Boolean.parseBoolean(accessSettings.getProperty("GMStartupBuilderHide", "true")); - GM_STARTUP_INVULNERABLE = Boolean.parseBoolean(accessSettings.getProperty("GMStartupInvulnerable", "true")); - GM_ANNOUNCER_NAME = Boolean.parseBoolean(accessSettings.getProperty("AnnounceGmName", "false")); - GM_CRITANNOUNCER_NAME = Boolean.parseBoolean(accessSettings.getProperty("CritAnnounceName", "false")); - SHOW_GM_LOGIN = Boolean.parseBoolean(accessSettings.getProperty("ShowGMLogin", "false")); - GM_STARTUP_INVISIBLE = Boolean.parseBoolean(accessSettings.getProperty("GMStartupInvisible", "true")); - GM_SPECIAL_EFFECT = Boolean.parseBoolean(accessSettings.getProperty("GmLoginSpecialEffect", "false")); - GM_STARTUP_SILENCE = Boolean.parseBoolean(accessSettings.getProperty("GMStartupSilence", "true")); - GM_DEBUG_HTML_PATHS = Boolean.parseBoolean(accessSettings.getProperty("GMDebugHtmlPaths", "true")); - USE_SUPER_HASTE_AS_GM_SPEED = Boolean.parseBoolean(accessSettings.getProperty("UseSuperHasteAsGMSpeed", "false")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + ACCESS_CONFIG_FILE + " File."); - } + final PropertiesParser accessConfig = new PropertiesParser(ACCESS_CONFIG_FILE); + + EVERYBODY_HAS_ADMIN_RIGHTS = accessConfig.getBoolean("EverybodyHasAdminRights", false); + GM_STARTUP_AUTO_LIST = accessConfig.getBoolean("GMStartupAutoList", true); + GM_HERO_AURA = accessConfig.getBoolean("GMHeroAura", false); + GM_STARTUP_BUILDER_HIDE = accessConfig.getBoolean("GMStartupBuilderHide", true); + GM_STARTUP_INVULNERABLE = accessConfig.getBoolean("GMStartupInvulnerable", true); + GM_ANNOUNCER_NAME = accessConfig.getBoolean("AnnounceGmName", false); + GM_CRITANNOUNCER_NAME = accessConfig.getBoolean("CritAnnounceName", false); + SHOW_GM_LOGIN = accessConfig.getBoolean("ShowGMLogin", false); + GM_STARTUP_INVISIBLE = accessConfig.getBoolean("GMStartupInvisible", true); + GM_SPECIAL_EFFECT = accessConfig.getBoolean("GmLoginSpecialEffect", false); + GM_STARTUP_SILENCE = accessConfig.getBoolean("GMStartupSilence", true); + GM_DEBUG_HTML_PATHS = accessConfig.getBoolean("GMDebugHtmlPaths", true); + USE_SUPER_HASTE_AS_GM_SPEED = accessConfig.getBoolean("UseSuperHasteAsGMSpeed", false); } public static void loadServerConfig() { + final PropertiesParser serverConfig = new PropertiesParser(SERVER_CONFIG_FILE); + + GAMESERVER_HOSTNAME = serverConfig.getString("GameserverHostname", ""); + PORT_GAME = serverConfig.getInt("GameserverPort", 7777); + + EXTERNAL_HOSTNAME = serverConfig.getString("ExternalHostname", "*"); + INTERNAL_HOSTNAME = serverConfig.getString("InternalHostname", "*"); + + GAME_SERVER_LOGIN_PORT = serverConfig.getInt("LoginPort", 9014); + GAME_SERVER_LOGIN_HOST = serverConfig.getString("LoginHost", "127.0.0.1"); + + DATABASE_DRIVER = serverConfig.getString("Driver", "org.mariadb.jdbc.Driver"); + DATABASE_URL = serverConfig.getString("URL", "jdbc:mariadb://localhost/"); + + DATABASE_LOGIN = serverConfig.getString("Login", "root"); + DATABASE_PASSWORD = serverConfig.getString("Password", ""); + DATABASE_MAX_CONNECTIONS = serverConfig.getInt("MaximumDbConnections", 10); + + BACKUP_DATABASE = serverConfig.getBoolean("BackupDatabase", false); + MYSQL_BIN_PATH = serverConfig.getString("MySqlBinLocation", "C:/xampp/mysql/bin/"); + BACKUP_PATH = serverConfig.getString("BackupPath", "../backup/"); + BACKUP_DAYS = serverConfig.getInt("BackupDays", 30); + + REQUEST_ID = serverConfig.getInt("RequestServerID", 0); + ACCEPT_ALTERNATE_ID = serverConfig.getBoolean("AcceptAlternateID", true); + try { - final Properties serverSettings = new Properties(); - final InputStream is = new FileInputStream(new File(SERVER_CONFIG_FILE)); - serverSettings.load(is); - is.close(); - GAMESERVER_HOSTNAME = serverSettings.getProperty("GameserverHostname"); - PORT_GAME = Integer.parseInt(serverSettings.getProperty("GameserverPort", "7777")); - - EXTERNAL_HOSTNAME = serverSettings.getProperty("ExternalHostname", "*"); - INTERNAL_HOSTNAME = serverSettings.getProperty("InternalHostname", "*"); - - GAME_SERVER_LOGIN_PORT = Integer.parseInt(serverSettings.getProperty("LoginPort", "9014")); - GAME_SERVER_LOGIN_HOST = serverSettings.getProperty("LoginHost", "127.0.0.1"); - - DATABASE_DRIVER = serverSettings.getProperty("Driver", "org.mariadb.jdbc.Driver"); - DATABASE_URL = serverSettings.getProperty("URL", "jdbc:mariadb://localhost/"); - - DATABASE_LOGIN = serverSettings.getProperty("Login", "root"); - DATABASE_PASSWORD = serverSettings.getProperty("Password", ""); - DATABASE_MAX_CONNECTIONS = Integer.parseInt(serverSettings.getProperty("MaximumDbConnections", "10")); - - BACKUP_DATABASE = Boolean.parseBoolean(serverSettings.getProperty("BackupDatabase", "false")); - MYSQL_BIN_PATH = serverSettings.getProperty("MySqlBinLocation", "C:/xampp/mysql/bin/"); - BACKUP_PATH = serverSettings.getProperty("BackupPath", "../backup/"); - BACKUP_DAYS = Integer.parseInt(serverSettings.getProperty("BackupDays", "30")); - - REQUEST_ID = Integer.parseInt(serverSettings.getProperty("RequestServerID", "0")); - ACCEPT_ALTERNATE_ID = Boolean.parseBoolean(serverSettings.getProperty("AcceptAlternateID", "true")); - - DATAPACK_ROOT = new File(serverSettings.getProperty("DatapackRoot", ".")).getCanonicalFile(); - SCRIPT_ROOT = new File(serverSettings.getProperty("ScriptRoot", "./data/scripts").replaceAll("\\\\", "/")).getCanonicalFile(); - - MAXIMUM_ONLINE_USERS = Integer.parseInt(serverSettings.getProperty("MaximumOnlineUsers", "100")); - - SERVER_LIST_BRACKET = Boolean.parseBoolean(serverSettings.getProperty("ServerListBrackets", "false")); - SERVER_LIST_CLOCK = Boolean.parseBoolean(serverSettings.getProperty("ServerListClock", "false")); - - MIN_PROTOCOL_REVISION = Integer.parseInt(serverSettings.getProperty("MinProtocolRevision", "660")); - MAX_PROTOCOL_REVISION = Integer.parseInt(serverSettings.getProperty("MaxProtocolRevision", "665")); - if (MIN_PROTOCOL_REVISION > MAX_PROTOCOL_REVISION) - { - throw new Error("MinProtocolRevision is bigger than MaxProtocolRevision in server configuration file."); - } - - SCHEDULED_THREAD_POOL_COUNT = Integer.parseInt(serverSettings.getProperty("ScheduledThreadPoolCount", "40")); - INSTANT_THREAD_POOL_COUNT = Integer.parseInt(serverSettings.getProperty("InstantThreadPoolCount", "20")); - - CNAME_TEMPLATE = serverSettings.getProperty("CnameTemplate", ".*"); - PET_NAME_TEMPLATE = serverSettings.getProperty("PetNameTemplate", ".*"); - CLAN_NAME_TEMPLATE = serverSettings.getProperty("ClanNameTemplate", ".*"); - ALLY_NAME_TEMPLATE = serverSettings.getProperty("AllyNameTemplate", ".*"); + DATAPACK_ROOT = new File(serverConfig.getString("DatapackRoot", ".")).getCanonicalFile(); + SCRIPT_ROOT = new File(serverConfig.getString("ScriptRoot", "./data/scripts").replaceAll("\\\\", "/")).getCanonicalFile(); } - catch (Exception e) + catch (IOException e) { e.printStackTrace(); - throw new Error("Failed to Load " + SERVER_CONFIG_FILE + " File."); } + + MAXIMUM_ONLINE_USERS = serverConfig.getInt("MaximumOnlineUsers", 100); + + SERVER_LIST_BRACKET = serverConfig.getBoolean("ServerListBrackets", false); + SERVER_LIST_CLOCK = serverConfig.getBoolean("ServerListClock", false); + + MIN_PROTOCOL_REVISION = serverConfig.getInt("MinProtocolRevision", 660); + MAX_PROTOCOL_REVISION = serverConfig.getInt("MaxProtocolRevision", 665); + if (MIN_PROTOCOL_REVISION > MAX_PROTOCOL_REVISION) + { + throw new Error("MinProtocolRevision is bigger than MaxProtocolRevision in server configuration file."); + } + + SCHEDULED_THREAD_POOL_COUNT = serverConfig.getInt("ScheduledThreadPoolCount", 40); + INSTANT_THREAD_POOL_COUNT = serverConfig.getInt("InstantThreadPoolCount", 20); + + CNAME_TEMPLATE = serverConfig.getString("CnameTemplate", ".*"); + PET_NAME_TEMPLATE = serverConfig.getString("PetNameTemplate", ".*"); + CLAN_NAME_TEMPLATE = serverConfig.getString("ClanNameTemplate", ".*"); + ALLY_NAME_TEMPLATE = serverConfig.getString("AllyNameTemplate", ".*"); } public static void loadTelnetConfig() { - FileInputStream is = null; - try - { - final L2Properties telnetSettings = new L2Properties(); - is = new FileInputStream(new File(TELNET_CONFIG_FILE)); - telnetSettings.load(is); - - IS_TELNET_ENABLED = Boolean.parseBoolean(telnetSettings.getProperty("EnableTelnet", "false")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + TELNET_CONFIG_FILE + " File."); - } - finally - { - - if (is != null) - { - try - { - is.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - } - + final PropertiesParser telnetConfig = new PropertiesParser(TELNET_CONFIG_FILE); + IS_TELNET_ENABLED = telnetConfig.getBoolean("EnableTelnet", false); } public static void loadRatesConfig() { - try - { - final Properties ratesSettings = new Properties(); - final InputStream is = new FileInputStream(new File(RATES_CONFIG_FILE)); - ratesSettings.load(is); - is.close(); - - RATE_XP = Float.parseFloat(ratesSettings.getProperty("RateXp", "1.00")); - RATE_SP = Float.parseFloat(ratesSettings.getProperty("RateSp", "1.00")); - RATE_PARTY_XP = Float.parseFloat(ratesSettings.getProperty("RatePartyXp", "1.00")); - RATE_PARTY_SP = Float.parseFloat(ratesSettings.getProperty("RatePartySp", "1.00")); - RATE_QUESTS_REWARD = Float.parseFloat(ratesSettings.getProperty("RateQuestsReward", "1.00")); - RATE_DROP_ADENA = Float.parseFloat(ratesSettings.getProperty("RateDropAdena", "1.00")); - RATE_CONSUMABLE_COST = Float.parseFloat(ratesSettings.getProperty("RateConsumableCost", "1.00")); - RATE_DROP_ITEMS = Float.parseFloat(ratesSettings.getProperty("RateDropItems", "1.00")); - RATE_DROP_SEAL_STONES = Float.parseFloat(ratesSettings.getProperty("RateDropSealStones", "1.00")); - RATE_DROP_SPOIL = Float.parseFloat(ratesSettings.getProperty("RateDropSpoil", "1.00")); - RATE_DROP_MANOR = Integer.parseInt(ratesSettings.getProperty("RateDropManor", "1.00")); - RATE_DROP_QUEST = Float.parseFloat(ratesSettings.getProperty("RateDropQuest", "1.00")); - RATE_KARMA_EXP_LOST = Float.parseFloat(ratesSettings.getProperty("RateKarmaExpLost", "1.00")); - RATE_SIEGE_GUARDS_PRICE = Float.parseFloat(ratesSettings.getProperty("RateSiegeGuardsPrice", "1.00")); - RATE_DROP_COMMON_HERBS = Float.parseFloat(ratesSettings.getProperty("RateCommonHerbs", "15.00")); - RATE_DROP_MP_HP_HERBS = Float.parseFloat(ratesSettings.getProperty("RateHpMpHerbs", "10.00")); - RATE_DROP_GREATER_HERBS = Float.parseFloat(ratesSettings.getProperty("RateGreaterHerbs", "4.00")); - RATE_DROP_SUPERIOR_HERBS = Float.parseFloat(ratesSettings.getProperty("RateSuperiorHerbs", "0.80")) * 10; - RATE_DROP_SPECIAL_HERBS = Float.parseFloat(ratesSettings.getProperty("RateSpecialHerbs", "0.20")) * 10; - - PLAYER_DROP_LIMIT = Integer.parseInt(ratesSettings.getProperty("PlayerDropLimit", "3")); - PLAYER_RATE_DROP = Integer.parseInt(ratesSettings.getProperty("PlayerRateDrop", "5")); - PLAYER_RATE_DROP_ITEM = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropItem", "70")); - PLAYER_RATE_DROP_EQUIP = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropEquip", "25")); - PLAYER_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropEquipWeapon", "5")); - - PET_XP_RATE = Float.parseFloat(ratesSettings.getProperty("PetXpRate", "1.00")); - PET_FOOD_RATE = Integer.parseInt(ratesSettings.getProperty("PetFoodRate", "1")); - SINEATER_XP_RATE = Float.parseFloat(ratesSettings.getProperty("SinEaterXpRate", "1.00")); - - KARMA_DROP_LIMIT = Integer.parseInt(ratesSettings.getProperty("KarmaDropLimit", "10")); - KARMA_RATE_DROP = Integer.parseInt(ratesSettings.getProperty("KarmaRateDrop", "70")); - KARMA_RATE_DROP_ITEM = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropItem", "50")); - KARMA_RATE_DROP_EQUIP = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropEquip", "40")); - KARMA_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropEquipWeapon", "10")); - - /** RB rate **/ - ADENA_BOSS = Float.parseFloat(ratesSettings.getProperty("AdenaBoss", "1.00")); - ADENA_RAID = Float.parseFloat(ratesSettings.getProperty("AdenaRaid", "1.00")); - ADENA_MINION = Float.parseFloat(ratesSettings.getProperty("AdenaMinion", "1.00")); - ITEMS_BOSS = Float.parseFloat(ratesSettings.getProperty("ItemsBoss", "1.00")); - ITEMS_RAID = Float.parseFloat(ratesSettings.getProperty("ItemsRaid", "1.00")); - ITEMS_MINION = Float.parseFloat(ratesSettings.getProperty("ItemsMinion", "1.00")); - SPOIL_BOSS = Float.parseFloat(ratesSettings.getProperty("SpoilBoss", "1.00")); - SPOIL_RAID = Float.parseFloat(ratesSettings.getProperty("SpoilRaid", "1.00")); - SPOIL_MINION = Float.parseFloat(ratesSettings.getProperty("SpoilMinion", "1.00")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + RATES_CONFIG_FILE + " File."); - } + final PropertiesParser ratesConfig = new PropertiesParser(RATES_CONFIG_FILE); + + RATE_XP = ratesConfig.getFloat("RateXp", 1f); + RATE_SP = ratesConfig.getFloat("RateSp", 1f); + RATE_PARTY_XP = ratesConfig.getFloat("RatePartyXp", 1f); + RATE_PARTY_SP = ratesConfig.getFloat("RatePartySp", 1f); + RATE_QUESTS_REWARD = ratesConfig.getFloat("RateQuestsReward", 1f); + RATE_DROP_ADENA = ratesConfig.getFloat("RateDropAdena", 1f); + RATE_CONSUMABLE_COST = ratesConfig.getFloat("RateConsumableCost", 1f); + RATE_DROP_ITEMS = ratesConfig.getFloat("RateDropItems", 1f); + RATE_DROP_SEAL_STONES = ratesConfig.getFloat("RateDropSealStones", 1f); + RATE_DROP_SPOIL = ratesConfig.getFloat("RateDropSpoil", 1f); + RATE_DROP_MANOR = ratesConfig.getFloat("RateDropManor", 1f); + RATE_DROP_QUEST = ratesConfig.getFloat("RateDropQuest", 1f); + RATE_KARMA_EXP_LOST = ratesConfig.getFloat("RateKarmaExpLost", 1f); + RATE_SIEGE_GUARDS_PRICE = ratesConfig.getFloat("RateSiegeGuardsPrice", 1f); + RATE_DROP_COMMON_HERBS = ratesConfig.getFloat("RateCommonHerbs", 15f); + RATE_DROP_MP_HP_HERBS = ratesConfig.getFloat("RateHpMpHerbs", 10f); + RATE_DROP_GREATER_HERBS = ratesConfig.getFloat("RateGreaterHerbs", 4f); + RATE_DROP_SUPERIOR_HERBS = ratesConfig.getFloat("RateSuperiorHerbs", 0.80f) * 10; + RATE_DROP_SPECIAL_HERBS = ratesConfig.getFloat("RateSpecialHerbs", 0.20f) * 10; + + PLAYER_DROP_LIMIT = ratesConfig.getInt("PlayerDropLimit", 3); + PLAYER_RATE_DROP = ratesConfig.getInt("PlayerRateDrop", 5); + PLAYER_RATE_DROP_ITEM = ratesConfig.getInt("PlayerRateDropItem", 70); + PLAYER_RATE_DROP_EQUIP = ratesConfig.getInt("PlayerRateDropEquip", 25); + PLAYER_RATE_DROP_EQUIP_WEAPON = ratesConfig.getInt("PlayerRateDropEquipWeapon", 5); + + PET_XP_RATE = ratesConfig.getFloat("PetXpRate", 1f); + PET_FOOD_RATE = ratesConfig.getInt("PetFoodRate", 1); + SINEATER_XP_RATE = ratesConfig.getFloat("SinEaterXpRate", 1f); + + KARMA_DROP_LIMIT = ratesConfig.getInt("KarmaDropLimit", 10); + KARMA_RATE_DROP = ratesConfig.getInt("KarmaRateDrop", 70); + KARMA_RATE_DROP_ITEM = ratesConfig.getInt("KarmaRateDropItem", 50); + KARMA_RATE_DROP_EQUIP = ratesConfig.getInt("KarmaRateDropEquip", 40); + KARMA_RATE_DROP_EQUIP_WEAPON = ratesConfig.getInt("KarmaRateDropEquipWeapon", 10); + + /** RB rate **/ + ADENA_BOSS = ratesConfig.getFloat("AdenaBoss", 1f); + ADENA_RAID = ratesConfig.getFloat("AdenaRaid", 1f); + ADENA_MINION = ratesConfig.getFloat("AdenaMinion", 1f); + ITEMS_BOSS = ratesConfig.getFloat("ItemsBoss", 1f); + ITEMS_RAID = ratesConfig.getFloat("ItemsRaid", 1f); + ITEMS_MINION = ratesConfig.getFloat("ItemsMinion", 1f); + SPOIL_BOSS = ratesConfig.getFloat("SpoilBoss", 1f); + SPOIL_RAID = ratesConfig.getFloat("SpoilRaid", 1f); + SPOIL_MINION = ratesConfig.getFloat("SpoilMinion", 1f); } public static void loadGeneralConfig() { - try + final PropertiesParser generalConfig = new PropertiesParser(GENERAL_CONFIG_FILE); + + SERVER_LIST_TESTSERVER = generalConfig.getBoolean("TestServer", false); + SERVER_GMONLY = generalConfig.getBoolean("ServerGMOnly", false); + ALT_DEV_NO_QUESTS = generalConfig.getBoolean("AltDevNoQuests", false); + ALT_DEV_NO_SPAWNS = generalConfig.getBoolean("AltDevNoSpawns", false); + ALT_DEV_NO_SCRIPT = generalConfig.getBoolean("AltDevNoScript", false); + ALT_DEV_NO_RB = generalConfig.getBoolean("AltDevNoRB", false); + + GMAUDIT = generalConfig.getBoolean("GMAudit", false); + LOG_CHAT = generalConfig.getBoolean("LogChat", false); + LOG_ITEMS = generalConfig.getBoolean("LogItems", false); + + LAZY_CACHE = generalConfig.getBoolean("LazyCache", false); + CHECK_HTML_ENCODING = generalConfig.getBoolean("CheckHtmlEncoding", true); + + REMOVE_CASTLE_CIRCLETS = generalConfig.getBoolean("RemoveCastleCirclets", true); + ALT_GAME_VIEWNPC = generalConfig.getBoolean("AltGameViewNpc", false); + ALT_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE = generalConfig.getBoolean("AltNewCharAlwaysIsNewbie", false); + ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = generalConfig.getBoolean("AltMembersCanWithdrawFromClanWH", false); + ALT_MAX_NUM_OF_CLANS_IN_ALLY = generalConfig.getInt("AltMaxNumOfClansInAlly", 3); + + ALT_CLAN_MEMBERS_FOR_WAR = generalConfig.getInt("AltClanMembersForWar", 15); + ALT_CLAN_JOIN_DAYS = generalConfig.getInt("DaysBeforeJoinAClan", 5); + ALT_CLAN_CREATE_DAYS = generalConfig.getInt("DaysBeforeCreateAClan", 10); + ALT_CLAN_DISSOLVE_DAYS = generalConfig.getInt("DaysToPassToDissolveAClan", 7); + ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = generalConfig.getInt("DaysBeforeJoinAllyWhenLeaved", 1); + ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = generalConfig.getInt("DaysBeforeJoinAllyWhenDismissed", 1); + ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = generalConfig.getInt("DaysBeforeAcceptNewClanWhenDismissed", 1); + ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = generalConfig.getInt("DaysBeforeCreateNewAllyWhenDissolved", 10); + + ALT_MANOR_REFRESH_TIME = generalConfig.getInt("AltManorRefreshTime", 20); + ALT_MANOR_REFRESH_MIN = generalConfig.getInt("AltManorRefreshMin", 0); + ALT_MANOR_APPROVE_TIME = generalConfig.getInt("AltManorApproveTime", 6); + ALT_MANOR_APPROVE_MIN = generalConfig.getInt("AltManorApproveMin", 0); + ALT_MANOR_MAINTENANCE_PERIOD = generalConfig.getInt("AltManorMaintenancePeriod", 360000); + ALT_MANOR_SAVE_ALL_ACTIONS = generalConfig.getBoolean("AltManorSaveAllActions", false); + ALT_MANOR_SAVE_PERIOD_RATE = generalConfig.getInt("AltManorSavePeriodRate", 2); + + ALT_LOTTERY_PRIZE = generalConfig.getInt("AltLotteryPrize", 50000); + ALT_LOTTERY_TICKET_PRICE = generalConfig.getInt("AltLotteryTicketPrice", 2000); + ALT_LOTTERY_5_NUMBER_RATE = generalConfig.getFloat("AltLottery5NumberRate", 0.6f); + ALT_LOTTERY_4_NUMBER_RATE = generalConfig.getFloat("AltLottery4NumberRate", 0.2f); + ALT_LOTTERY_3_NUMBER_RATE = generalConfig.getFloat("AltLottery3NumberRate", 0.2f); + ALT_LOTTERY_2_AND_1_NUMBER_PRIZE = generalConfig.getInt("AltLottery2and1NumberPrize", 200); + + ALT_FISH_CHAMPIONSHIP_ENABLED = generalConfig.getBoolean("AltFishChampionshipEnabled", true); + ALT_FISH_CHAMPIONSHIP_REWARD_ITEM = generalConfig.getInt("AltFishChampionshipRewardItemId", 57); + ALT_FISH_CHAMPIONSHIP_REWARD_1 = generalConfig.getInt("AltFishChampionshipReward1", 800000); + ALT_FISH_CHAMPIONSHIP_REWARD_2 = generalConfig.getInt("AltFishChampionshipReward2", 500000); + ALT_FISH_CHAMPIONSHIP_REWARD_3 = generalConfig.getInt("AltFishChampionshipReward3", 300000); + ALT_FISH_CHAMPIONSHIP_REWARD_4 = generalConfig.getInt("AltFishChampionshipReward4", 200000); + ALT_FISH_CHAMPIONSHIP_REWARD_5 = generalConfig.getInt("AltFishChampionshipReward5", 100000); + + RIFT_MIN_PARTY_SIZE = generalConfig.getInt("RiftMinPartySize", 5); + RIFT_MAX_JUMPS = generalConfig.getInt("MaxRiftJumps", 4); + RIFT_SPAWN_DELAY = generalConfig.getInt("RiftSpawnDelay", 10000); + RIFT_AUTO_JUMPS_TIME_MIN = generalConfig.getInt("AutoJumpsDelayMin", 480); + RIFT_AUTO_JUMPS_TIME_MAX = generalConfig.getInt("AutoJumpsDelayMax", 600); + RIFT_ENTER_COST_RECRUIT = generalConfig.getInt("RecruitCost", 18); + RIFT_ENTER_COST_SOLDIER = generalConfig.getInt("SoldierCost", 21); + RIFT_ENTER_COST_OFFICER = generalConfig.getInt("OfficerCost", 24); + RIFT_ENTER_COST_CAPTAIN = generalConfig.getInt("CaptainCost", 27); + RIFT_ENTER_COST_COMMANDER = generalConfig.getInt("CommanderCost", 30); + RIFT_ENTER_COST_HERO = generalConfig.getInt("HeroCost", 33); + RIFT_BOSS_ROOM_TIME_MUTIPLY = generalConfig.getFloat("BossRoomTimeMultiply", 1.5f); + + DONT_DESTROY_SS = generalConfig.getBoolean("DontDestroySS", false); + + STANDARD_RESPAWN_DELAY = generalConfig.getInt("StandardRespawnDelay", 180); + + RAID_RANKING_1ST = generalConfig.getInt("1stRaidRankingPoints", 1250); + RAID_RANKING_2ND = generalConfig.getInt("2ndRaidRankingPoints", 900); + RAID_RANKING_3RD = generalConfig.getInt("3rdRaidRankingPoints", 700); + RAID_RANKING_4TH = generalConfig.getInt("4thRaidRankingPoints", 600); + RAID_RANKING_5TH = generalConfig.getInt("5thRaidRankingPoints", 450); + RAID_RANKING_6TH = generalConfig.getInt("6thRaidRankingPoints", 350); + RAID_RANKING_7TH = generalConfig.getInt("7thRaidRankingPoints", 300); + RAID_RANKING_8TH = generalConfig.getInt("8thRaidRankingPoints", 200); + RAID_RANKING_9TH = generalConfig.getInt("9thRaidRankingPoints", 150); + RAID_RANKING_10TH = generalConfig.getInt("10thRaidRankingPoints", 100); + RAID_RANKING_UP_TO_50TH = generalConfig.getInt("UpTo50thRaidRankingPoints", 25); + RAID_RANKING_UP_TO_100TH = generalConfig.getInt("UpTo100thRaidRankingPoints", 12); + + EXPERTISE_PENALTY = generalConfig.getBoolean("ExpertisePenalty", true); + MASTERY_PENALTY = generalConfig.getBoolean("MasteryPenalty", false); + LEVEL_TO_GET_PENALTY = generalConfig.getInt("LevelToGetPenalty", 20); + + MASTERY_WEAPON_PENALTY = generalConfig.getBoolean("MasteryWeaponPenality", false); + LEVEL_TO_GET_WEAPON_PENALTY = generalConfig.getInt("LevelToGetWeaponPenalty", 20); + + ACTIVE_AUGMENTS_START_REUSE_TIME = generalConfig.getInt("AugmStartReuseTime", 0); + + INVUL_NPC_LIST = new ArrayList<>(); + final String t = generalConfig.getString("InvulNpcList", "30001-32132,35092-35103,35142-35146,35176-35187,35218-35232,35261-35278,35308-35319,35352-35367,35382-35407,35417-35427,35433-35469,35497-35513,35544-35587,35600-35617,35623-35628,35638-35640,35644,35645,50007,70010,99999"); + String as[]; + final int k = (as = t.split(",")).length; + for (int j = 0; j < k; j++) { - final Properties generalSettings = new Properties(); - final InputStream is = new FileInputStream(new File(GENERAL_CONFIG_FILE)); - generalSettings.load(is); - is.close(); - - SERVER_LIST_TESTSERVER = Boolean.parseBoolean(generalSettings.getProperty("TestServer", "false")); - SERVER_GMONLY = Boolean.parseBoolean(generalSettings.getProperty("ServerGMOnly", "false")); - ALT_DEV_NO_QUESTS = Boolean.parseBoolean(generalSettings.getProperty("AltDevNoQuests", "false")); - ALT_DEV_NO_SPAWNS = Boolean.parseBoolean(generalSettings.getProperty("AltDevNoSpawns", "false")); - ALT_DEV_NO_SCRIPT = Boolean.parseBoolean(generalSettings.getProperty("AltDevNoScript", "false")); - ALT_DEV_NO_RB = Boolean.parseBoolean(generalSettings.getProperty("AltDevNoRB", "false")); - - GMAUDIT = Boolean.parseBoolean(generalSettings.getProperty("GMAudit", "false")); - LOG_CHAT = Boolean.parseBoolean(generalSettings.getProperty("LogChat", "false")); - LOG_ITEMS = Boolean.parseBoolean(generalSettings.getProperty("LogItems", "false")); - - LAZY_CACHE = Boolean.parseBoolean(generalSettings.getProperty("LazyCache", "false")); - CHECK_HTML_ENCODING = Boolean.parseBoolean(generalSettings.getProperty("CheckHtmlEncoding", "true")); - - REMOVE_CASTLE_CIRCLETS = Boolean.parseBoolean(generalSettings.getProperty("RemoveCastleCirclets", "true")); - ALT_GAME_VIEWNPC = Boolean.parseBoolean(generalSettings.getProperty("AltGameViewNpc", "false")); - ALT_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE = Boolean.parseBoolean(generalSettings.getProperty("AltNewCharAlwaysIsNewbie", "false")); - ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Boolean.parseBoolean(generalSettings.getProperty("AltMembersCanWithdrawFromClanWH", "false")); - ALT_MAX_NUM_OF_CLANS_IN_ALLY = Integer.parseInt(generalSettings.getProperty("AltMaxNumOfClansInAlly", "3")); - - ALT_CLAN_MEMBERS_FOR_WAR = Integer.parseInt(generalSettings.getProperty("AltClanMembersForWar", "15")); - ALT_CLAN_JOIN_DAYS = Integer.parseInt(generalSettings.getProperty("DaysBeforeJoinAClan", "5")); - ALT_CLAN_CREATE_DAYS = Integer.parseInt(generalSettings.getProperty("DaysBeforeCreateAClan", "10")); - ALT_CLAN_DISSOLVE_DAYS = Integer.parseInt(generalSettings.getProperty("DaysToPassToDissolveAClan", "7")); - ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = Integer.parseInt(generalSettings.getProperty("DaysBeforeJoinAllyWhenLeaved", "1")); - ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = Integer.parseInt(generalSettings.getProperty("DaysBeforeJoinAllyWhenDismissed", "1")); - ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = Integer.parseInt(generalSettings.getProperty("DaysBeforeAcceptNewClanWhenDismissed", "1")); - ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = Integer.parseInt(generalSettings.getProperty("DaysBeforeCreateNewAllyWhenDissolved", "10")); - - ALT_MANOR_REFRESH_TIME = Integer.parseInt(generalSettings.getProperty("AltManorRefreshTime", "20")); - ALT_MANOR_REFRESH_MIN = Integer.parseInt(generalSettings.getProperty("AltManorRefreshMin", "00")); - ALT_MANOR_APPROVE_TIME = Integer.parseInt(generalSettings.getProperty("AltManorApproveTime", "6")); - ALT_MANOR_APPROVE_MIN = Integer.parseInt(generalSettings.getProperty("AltManorApproveMin", "00")); - ALT_MANOR_MAINTENANCE_PERIOD = Integer.parseInt(generalSettings.getProperty("AltManorMaintenancePeriod", "360000")); - ALT_MANOR_SAVE_ALL_ACTIONS = Boolean.parseBoolean(generalSettings.getProperty("AltManorSaveAllActions", "false")); - ALT_MANOR_SAVE_PERIOD_RATE = Integer.parseInt(generalSettings.getProperty("AltManorSavePeriodRate", "2")); - - ALT_LOTTERY_PRIZE = Integer.parseInt(generalSettings.getProperty("AltLotteryPrize", "50000")); - ALT_LOTTERY_TICKET_PRICE = Integer.parseInt(generalSettings.getProperty("AltLotteryTicketPrice", "2000")); - ALT_LOTTERY_5_NUMBER_RATE = Float.parseFloat(generalSettings.getProperty("AltLottery5NumberRate", "0.6")); - ALT_LOTTERY_4_NUMBER_RATE = Float.parseFloat(generalSettings.getProperty("AltLottery4NumberRate", "0.2")); - ALT_LOTTERY_3_NUMBER_RATE = Float.parseFloat(generalSettings.getProperty("AltLottery3NumberRate", "0.2")); - ALT_LOTTERY_2_AND_1_NUMBER_PRIZE = Integer.parseInt(generalSettings.getProperty("AltLottery2and1NumberPrize", "200")); - - ALT_FISH_CHAMPIONSHIP_ENABLED = Boolean.parseBoolean(generalSettings.getProperty("AltFishChampionshipEnabled", "true")); - ALT_FISH_CHAMPIONSHIP_REWARD_ITEM = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipRewardItemId", "57")); - ALT_FISH_CHAMPIONSHIP_REWARD_1 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward1", "800000")); - ALT_FISH_CHAMPIONSHIP_REWARD_2 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward2", "500000")); - ALT_FISH_CHAMPIONSHIP_REWARD_3 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward3", "300000")); - ALT_FISH_CHAMPIONSHIP_REWARD_4 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward4", "200000")); - ALT_FISH_CHAMPIONSHIP_REWARD_5 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward5", "100000")); - - RIFT_MIN_PARTY_SIZE = Integer.parseInt(generalSettings.getProperty("RiftMinPartySize", "5")); - RIFT_MAX_JUMPS = Integer.parseInt(generalSettings.getProperty("MaxRiftJumps", "4")); - RIFT_SPAWN_DELAY = Integer.parseInt(generalSettings.getProperty("RiftSpawnDelay", "10000")); - RIFT_AUTO_JUMPS_TIME_MIN = Integer.parseInt(generalSettings.getProperty("AutoJumpsDelayMin", "480")); - RIFT_AUTO_JUMPS_TIME_MAX = Integer.parseInt(generalSettings.getProperty("AutoJumpsDelayMax", "600")); - RIFT_ENTER_COST_RECRUIT = Integer.parseInt(generalSettings.getProperty("RecruitCost", "18")); - RIFT_ENTER_COST_SOLDIER = Integer.parseInt(generalSettings.getProperty("SoldierCost", "21")); - RIFT_ENTER_COST_OFFICER = Integer.parseInt(generalSettings.getProperty("OfficerCost", "24")); - RIFT_ENTER_COST_CAPTAIN = Integer.parseInt(generalSettings.getProperty("CaptainCost", "27")); - RIFT_ENTER_COST_COMMANDER = Integer.parseInt(generalSettings.getProperty("CommanderCost", "30")); - RIFT_ENTER_COST_HERO = Integer.parseInt(generalSettings.getProperty("HeroCost", "33")); - RIFT_BOSS_ROOM_TIME_MUTIPLY = Float.parseFloat(generalSettings.getProperty("BossRoomTimeMultiply", "1.5")); - - DONT_DESTROY_SS = Boolean.parseBoolean(generalSettings.getProperty("DontDestroySS", "false")); - - STANDARD_RESPAWN_DELAY = Integer.parseInt(generalSettings.getProperty("StandardRespawnDelay", "180")); - - RAID_RANKING_1ST = Integer.parseInt(generalSettings.getProperty("1stRaidRankingPoints", "1250")); - RAID_RANKING_2ND = Integer.parseInt(generalSettings.getProperty("2ndRaidRankingPoints", "900")); - RAID_RANKING_3RD = Integer.parseInt(generalSettings.getProperty("3rdRaidRankingPoints", "700")); - RAID_RANKING_4TH = Integer.parseInt(generalSettings.getProperty("4thRaidRankingPoints", "600")); - RAID_RANKING_5TH = Integer.parseInt(generalSettings.getProperty("5thRaidRankingPoints", "450")); - RAID_RANKING_6TH = Integer.parseInt(generalSettings.getProperty("6thRaidRankingPoints", "350")); - RAID_RANKING_7TH = Integer.parseInt(generalSettings.getProperty("7thRaidRankingPoints", "300")); - RAID_RANKING_8TH = Integer.parseInt(generalSettings.getProperty("8thRaidRankingPoints", "200")); - RAID_RANKING_9TH = Integer.parseInt(generalSettings.getProperty("9thRaidRankingPoints", "150")); - RAID_RANKING_10TH = Integer.parseInt(generalSettings.getProperty("10thRaidRankingPoints", "100")); - RAID_RANKING_UP_TO_50TH = Integer.parseInt(generalSettings.getProperty("UpTo50thRaidRankingPoints", "25")); - RAID_RANKING_UP_TO_100TH = Integer.parseInt(generalSettings.getProperty("UpTo100thRaidRankingPoints", "12")); - - EXPERTISE_PENALTY = Boolean.parseBoolean(generalSettings.getProperty("ExpertisePenalty", "true")); - MASTERY_PENALTY = Boolean.parseBoolean(generalSettings.getProperty("MasteryPenalty", "false")); - LEVEL_TO_GET_PENALTY = Integer.parseInt(generalSettings.getProperty("LevelToGetPenalty", "20")); - - MASTERY_WEAPON_PENALTY = Boolean.parseBoolean(generalSettings.getProperty("MasteryWeaponPenality", "false")); - LEVEL_TO_GET_WEAPON_PENALTY = Integer.parseInt(generalSettings.getProperty("LevelToGetWeaponPenalty", "20")); - - ACTIVE_AUGMENTS_START_REUSE_TIME = Integer.parseInt(generalSettings.getProperty("AugmStartReuseTime", "0")); - - INVUL_NPC_LIST = new ArrayList<>(); - final String t = generalSettings.getProperty("InvulNpcList", "30001-32132,35092-35103,35142-35146,35176-35187,35218-35232,35261-35278,35308-35319,35352-35367,35382-35407,35417-35427,35433-35469,35497-35513,35544-35587,35600-35617,35623-35628,35638-35640,35644,35645,50007,70010,99999"); - String as[]; - final int k = (as = t.split(",")).length; - for (int j = 0; j < k; j++) + final String t2 = as[j]; + if (t2.contains("-")) { - final String t2 = as[j]; - if (t2.contains("-")) + final int a1 = Integer.parseInt(t2.split("-")[0]); + final int a2 = Integer.parseInt(t2.split("-")[1]); + for (int i = a1; i <= a2; i++) { - final int a1 = Integer.parseInt(t2.split("-")[0]); - final int a2 = Integer.parseInt(t2.split("-")[1]); - for (int i = a1; i <= a2; i++) - { - INVUL_NPC_LIST.add(Integer.valueOf(i)); - } + INVUL_NPC_LIST.add(Integer.valueOf(i)); + } + } + else + { + INVUL_NPC_LIST.add(Integer.valueOf(Integer.parseInt(t2))); + } + } + DISABLE_ATTACK_NPC_TYPE = generalConfig.getBoolean("DisableAttackToNpcs", false); + ALLOWED_NPC_TYPES = generalConfig.getString("AllowedNPCTypes", ""); + LIST_ALLOWED_NPC_TYPES = new ArrayList<>(); + for (String npc_type : ALLOWED_NPC_TYPES.split(",")) + { + LIST_ALLOWED_NPC_TYPES.add(npc_type); + } + NPC_ATTACKABLE = generalConfig.getBoolean("NpcAttackable", false); + + SELL_BY_ITEM = generalConfig.getBoolean("SellByItem", false); + SELL_ITEM = generalConfig.getInt("SellItem", 57); + + ALT_MOBS_STATS_BONUS = generalConfig.getBoolean("AltMobsStatsBonus", true); + ALT_PETS_STATS_BONUS = generalConfig.getBoolean("AltPetsStatsBonus", true); + + RAID_HP_REGEN_MULTIPLIER = generalConfig.getDouble("RaidHpRegenMultiplier", 100) / 100; + RAID_MP_REGEN_MULTIPLIER = generalConfig.getDouble("RaidMpRegenMultiplier", 100) / 100; + RAID_P_DEFENCE_MULTIPLIER = generalConfig.getDouble("RaidPhysicalDefenceMultiplier", 100) / 100; + RAID_M_DEFENCE_MULTIPLIER = generalConfig.getDouble("RaidMagicalDefenceMultiplier", 100) / 100; + RAID_MINION_RESPAWN_TIMER = generalConfig.getDouble("RaidMinionRespawnTime", 300000); + RAID_MIN_RESPAWN_MULTIPLIER = generalConfig.getFloat("RaidMinRespawnMultiplier", 1f); + RAID_MAX_RESPAWN_MULTIPLIER = generalConfig.getFloat("RaidMaxRespawnMultiplier", 1f); + + CLICK_TASK = generalConfig.getInt("ClickTaskDelay", 50); + + WYVERN_SPEED = generalConfig.getInt("WyvernSpeed", 100); + STRIDER_SPEED = generalConfig.getInt("StriderSpeed", 80); + ALLOW_WYVERN_UPGRADER = generalConfig.getBoolean("AllowWyvernUpgrader", false); + + ENABLE_AIO_SYSTEM = generalConfig.getBoolean("EnableAioSystem", true); + ALLOW_AIO_NCOLOR = generalConfig.getBoolean("AllowAioNameColor", true); + AIO_NCOLOR = Integer.decode("0x" + generalConfig.getString("AioNameColor", "88AA88")); + ALLOW_AIO_TCOLOR = generalConfig.getBoolean("AllowAioTitleColor", true); + AIO_TCOLOR = Integer.decode("0x" + generalConfig.getString("AioTitleColor", "88AA88")); + ALLOW_AIO_USE_GK = generalConfig.getBoolean("AllowAioUseGk", false); + ALLOW_AIO_USE_CM = generalConfig.getBoolean("AllowAioUseClassMaster", false); + ALLOW_AIO_IN_EVENTS = generalConfig.getBoolean("AllowAioInEvents", false); + if (ENABLE_AIO_SYSTEM) + { + final String[] AioSkillsSplit = generalConfig.getString("AioSkills", "").split(";"); + AIO_SKILLS = new HashMap<>(AioSkillsSplit.length); + for (String skill : AioSkillsSplit) + { + final String[] skillSplit = skill.split(","); + if (skillSplit.length != 2) + { + LOGGER.info("[Aio System]: invalid config property in " + GENERAL_CONFIG_FILE + " -> AioSkills \"" + skill + "\""); } else { - INVUL_NPC_LIST.add(Integer.valueOf(Integer.parseInt(t2))); - } - } - DISABLE_ATTACK_NPC_TYPE = Boolean.parseBoolean(generalSettings.getProperty("DisableAttackToNpcs", "false")); - ALLOWED_NPC_TYPES = generalSettings.getProperty("AllowedNPCTypes"); - LIST_ALLOWED_NPC_TYPES = new ArrayList<>(); - for (String npc_type : ALLOWED_NPC_TYPES.split(",")) - { - LIST_ALLOWED_NPC_TYPES.add(npc_type); - } - NPC_ATTACKABLE = Boolean.parseBoolean(generalSettings.getProperty("NpcAttackable", "false")); - - SELL_BY_ITEM = Boolean.parseBoolean(generalSettings.getProperty("SellByItem", "false")); - SELL_ITEM = Integer.parseInt(generalSettings.getProperty("SellItem", "57")); - - ALT_MOBS_STATS_BONUS = Boolean.parseBoolean(generalSettings.getProperty("AltMobsStatsBonus", "true")); - ALT_PETS_STATS_BONUS = Boolean.parseBoolean(generalSettings.getProperty("AltPetsStatsBonus", "true")); - - RAID_HP_REGEN_MULTIPLIER = Double.parseDouble(generalSettings.getProperty("RaidHpRegenMultiplier", "100")) / 100; - RAID_MP_REGEN_MULTIPLIER = Double.parseDouble(generalSettings.getProperty("RaidMpRegenMultiplier", "100")) / 100; - RAID_P_DEFENCE_MULTIPLIER = Double.parseDouble(generalSettings.getProperty("RaidPhysicalDefenceMultiplier", "100")) / 100; - RAID_M_DEFENCE_MULTIPLIER = Double.parseDouble(generalSettings.getProperty("RaidMagicalDefenceMultiplier", "100")) / 100; - RAID_MINION_RESPAWN_TIMER = Integer.parseInt(generalSettings.getProperty("RaidMinionRespawnTime", "300000")); - RAID_MIN_RESPAWN_MULTIPLIER = Float.parseFloat(generalSettings.getProperty("RaidMinRespawnMultiplier", "1.0")); - RAID_MAX_RESPAWN_MULTIPLIER = Float.parseFloat(generalSettings.getProperty("RaidMaxRespawnMultiplier", "1.0")); - - CLICK_TASK = Integer.parseInt(generalSettings.getProperty("ClickTaskDelay", "50")); - - WYVERN_SPEED = Integer.parseInt(generalSettings.getProperty("WyvernSpeed", "100")); - STRIDER_SPEED = Integer.parseInt(generalSettings.getProperty("StriderSpeed", "80")); - ALLOW_WYVERN_UPGRADER = Boolean.parseBoolean(generalSettings.getProperty("AllowWyvernUpgrader", "false")); - - ENABLE_AIO_SYSTEM = Boolean.parseBoolean(generalSettings.getProperty("EnableAioSystem", "true")); - ALLOW_AIO_NCOLOR = Boolean.parseBoolean(generalSettings.getProperty("AllowAioNameColor", "true")); - AIO_NCOLOR = Integer.decode("0x" + generalSettings.getProperty("AioNameColor", "88AA88")); - ALLOW_AIO_TCOLOR = Boolean.parseBoolean(generalSettings.getProperty("AllowAioTitleColor", "true")); - AIO_TCOLOR = Integer.decode("0x" + generalSettings.getProperty("AioTitleColor", "88AA88")); - ALLOW_AIO_USE_GK = Boolean.parseBoolean(generalSettings.getProperty("AllowAioUseGk", "false")); - ALLOW_AIO_USE_CM = Boolean.parseBoolean(generalSettings.getProperty("AllowAioUseClassMaster", "false")); - ALLOW_AIO_IN_EVENTS = Boolean.parseBoolean(generalSettings.getProperty("AllowAioInEvents", "false")); - if (ENABLE_AIO_SYSTEM) - { - final String[] AioSkillsSplit = generalSettings.getProperty("AioSkills", "").split(";"); - AIO_SKILLS = new HashMap<>(AioSkillsSplit.length); - for (String skill : AioSkillsSplit) - { - final String[] skillSplit = skill.split(","); - if (skillSplit.length != 2) + try { - LOGGER.info("[Aio System]: invalid config property in " + GENERAL_CONFIG_FILE + " -> AioSkills \"" + skill + "\""); + AIO_SKILLS.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1])); } - else + catch (NumberFormatException nfe) { - try + if (!skill.equals("")) { - AIO_SKILLS.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1])); - } - catch (NumberFormatException nfe) - { - if (!skill.equals("")) - { - LOGGER.info("[Aio System]: invalid config property in " + GENERAL_CONFIG_FILE + " -> AioSkills \"" + skillSplit[0] + "\"" + skillSplit[1]); - } + LOGGER.info("[Aio System]: invalid config property in " + GENERAL_CONFIG_FILE + " -> AioSkills \"" + skillSplit[0] + "\"" + skillSplit[1]); } } } } - - PET_RENT_NPC = generalSettings.getProperty("ListPetRentNpc", "30827"); - LIST_PET_RENT_NPC = new ArrayList<>(); - for (String id : PET_RENT_NPC.split(",")) - { - LIST_PET_RENT_NPC.add(Integer.parseInt(id)); - } - NONDROPPABLE_ITEMS = generalSettings.getProperty("ListOfNonDroppableItems", "1147,425,1146,461,10,2368,7,6,2370,2369,5598"); - - LIST_NONDROPPABLE_ITEMS = new ArrayList<>(); - for (String id : NONDROPPABLE_ITEMS.split(",")) - { - LIST_NONDROPPABLE_ITEMS.add(Integer.parseInt(id)); - } - - JAIL_IS_PVP = Boolean.parseBoolean(generalSettings.getProperty("JailIsPvp", "true")); - JAIL_DISABLE_CHAT = Boolean.parseBoolean(generalSettings.getProperty("JailDisableChat", "true")); - - USE_SAY_FILTER = Boolean.parseBoolean(generalSettings.getProperty("UseChatFilter", "false")); - CHAT_FILTER_CHARS = generalSettings.getProperty("ChatFilterChars", "[I love L2jMobius]"); - CHAT_FILTER_PUNISHMENT = generalSettings.getProperty("ChatFilterPunishment", "off"); - CHAT_FILTER_PUNISHMENT_PARAM1 = Integer.parseInt(generalSettings.getProperty("ChatFilterPunishmentParam1", "1")); - CHAT_FILTER_PUNISHMENT_PARAM2 = Integer.parseInt(generalSettings.getProperty("ChatFilterPunishmentParam2", "1000")); - - FS_TIME_ATTACK = Integer.parseInt(generalSettings.getProperty("TimeOfAttack", "50")); - FS_TIME_COOLDOWN = Integer.parseInt(generalSettings.getProperty("TimeOfCoolDown", "5")); - FS_TIME_ENTRY = Integer.parseInt(generalSettings.getProperty("TimeOfEntry", "3")); - FS_TIME_WARMUP = Integer.parseInt(generalSettings.getProperty("TimeOfWarmUp", "2")); - FS_PARTY_MEMBER_COUNT = Integer.parseInt(generalSettings.getProperty("NumberOfNecessaryPartyMembers", "4")); - - if (FS_TIME_ATTACK <= 0) - { - FS_TIME_ATTACK = 50; - } - if (FS_TIME_COOLDOWN <= 0) - { - FS_TIME_COOLDOWN = 5; - } - if (FS_TIME_ENTRY <= 0) - { - FS_TIME_ENTRY = 3; - } - if (FS_TIME_WARMUP <= 0) - { - FS_TIME_WARMUP = 2; - } - if (FS_PARTY_MEMBER_COUNT <= 0) - { - FS_PARTY_MEMBER_COUNT = 4; - } - - ALLOW_QUAKE_SYSTEM = Boolean.parseBoolean(generalSettings.getProperty("AllowQuakeSystem", "false")); - ENABLE_ANTI_PVP_FARM_MSG = Boolean.parseBoolean(generalSettings.getProperty("EnableAntiPvpFarmMsg", "false")); - - ANNOUNCE_CASTLE_LORDS = Boolean.parseBoolean(generalSettings.getProperty("AnnounceCastleLords", "false")); - ANNOUNCE_MAMMON_SPAWN = Boolean.parseBoolean(generalSettings.getProperty("AnnounceMammonSpawn", "true")); - ALLOW_GUARDS = Boolean.parseBoolean(generalSettings.getProperty("AllowGuards", "false")); - - AUTODESTROY_ITEM_AFTER = Integer.parseInt(generalSettings.getProperty("AutoDestroyDroppedItemAfter", "0")); - HERB_AUTO_DESTROY_TIME = Integer.parseInt(generalSettings.getProperty("AutoDestroyHerbTime", "15")) * 1000; - PROTECTED_ITEMS = generalSettings.getProperty("ListOfProtectedItems"); - LIST_PROTECTED_ITEMS = new ArrayList<>(); - for (String id : PROTECTED_ITEMS.split(",")) - { - LIST_PROTECTED_ITEMS.add(Integer.parseInt(id)); - } - - DESTROY_DROPPED_PLAYER_ITEM = Boolean.parseBoolean(generalSettings.getProperty("DestroyPlayerDroppedItem", "false")); - DESTROY_EQUIPABLE_PLAYER_ITEM = Boolean.parseBoolean(generalSettings.getProperty("DestroyEquipableItem", "false")); - SAVE_DROPPED_ITEM = Boolean.parseBoolean(generalSettings.getProperty("SaveDroppedItem", "false")); - EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD = Boolean.parseBoolean(generalSettings.getProperty("EmptyDroppedItemTableAfterLoad", "false")); - SAVE_DROPPED_ITEM_INTERVAL = Integer.parseInt(generalSettings.getProperty("SaveDroppedItemInterval", "0")) * 60000; - CLEAR_DROPPED_ITEM_TABLE = Boolean.parseBoolean(generalSettings.getProperty("ClearDroppedItemTable", "false")); - - PRECISE_DROP_CALCULATION = Boolean.parseBoolean(generalSettings.getProperty("PreciseDropCalculation", "true")); - MULTIPLE_ITEM_DROP = Boolean.parseBoolean(generalSettings.getProperty("MultipleItemDrop", "true")); - - ALLOW_WAREHOUSE = Boolean.parseBoolean(generalSettings.getProperty("AllowWarehouse", "true")); - WAREHOUSE_CACHE = Boolean.parseBoolean(generalSettings.getProperty("WarehouseCache", "false")); - WAREHOUSE_CACHE_TIME = Integer.parseInt(generalSettings.getProperty("WarehouseCacheTime", "15")); - ALLOW_FREIGHT = Boolean.parseBoolean(generalSettings.getProperty("AllowFreight", "true")); - ALLOW_WEAR = Boolean.parseBoolean(generalSettings.getProperty("AllowWear", "false")); - WEAR_DELAY = Integer.parseInt(generalSettings.getProperty("WearDelay", "5")); - WEAR_PRICE = Integer.parseInt(generalSettings.getProperty("WearPrice", "10")); - ALLOW_LOTTERY = Boolean.parseBoolean(generalSettings.getProperty("AllowLottery", "false")); - ALLOW_RACE = Boolean.parseBoolean(generalSettings.getProperty("AllowRace", "false")); - ALLOW_RENTPET = Boolean.parseBoolean(generalSettings.getProperty("AllowRentPet", "false")); - ALLOW_DISCARDITEM = Boolean.parseBoolean(generalSettings.getProperty("AllowDiscardItem", "true")); - ALLOWFISHING = Boolean.parseBoolean(generalSettings.getProperty("AllowFishing", "false")); - ALLOW_MANOR = Boolean.parseBoolean(generalSettings.getProperty("AllowManor", "false")); - ALLOW_BOAT = Boolean.parseBoolean(generalSettings.getProperty("AllowBoat", "false")); - ALLOW_NPC_WALKERS = Boolean.parseBoolean(generalSettings.getProperty("AllowNpcWalkers", "true")); - ALLOW_CURSED_WEAPONS = Boolean.parseBoolean(generalSettings.getProperty("AllowCursedWeapons", "false")); - - DEFAULT_GLOBAL_CHAT = generalSettings.getProperty("GlobalChat", "ON"); - DEFAULT_TRADE_CHAT = generalSettings.getProperty("TradeChat", "ON"); - MAX_CHAT_LENGTH = Integer.parseInt(generalSettings.getProperty("MaxChatLength", "100")); - - TRADE_CHAT_IS_NOOBLE = Boolean.parseBoolean(generalSettings.getProperty("TradeChatIsNooble", "false")); - TRADE_CHAT_WITH_PVP = Boolean.parseBoolean(generalSettings.getProperty("TradeChatWithPvP", "false")); - TRADE_PVP_AMOUNT = Integer.parseInt(generalSettings.getProperty("TradePvPAmount", "800")); - GLOBAL_CHAT_WITH_PVP = Boolean.parseBoolean(generalSettings.getProperty("GlobalChatWithPvP", "false")); - GLOBAL_PVP_AMOUNT = Integer.parseInt(generalSettings.getProperty("GlobalPvPAmount", "1500")); - - ENABLE_COMMUNITY_BOARD = Boolean.parseBoolean(generalSettings.getProperty("EnableCommunityBoard", "true")); - BBS_DEFAULT = generalSettings.getProperty("BBSDefault", "_bbshome"); - - ZONE_TOWN = Integer.parseInt(generalSettings.getProperty("ZoneTown", "0")); - - MAX_DRIFT_RANGE = Integer.parseInt(generalSettings.getProperty("MaxDriftRange", "300")); - AGGRO_DISTANCE_CHECK_ENABLED = Boolean.parseBoolean(generalSettings.getProperty("AggroDistanceCheckEnabled", "false")); - AGGRO_DISTANCE_CHECK_RANGE = Integer.parseInt(generalSettings.getProperty("AggroDistanceCheckRange", "1500")); - AGGRO_DISTANCE_CHECK_RAIDS = Boolean.parseBoolean(generalSettings.getProperty("AggroDistanceCheckRaids", "false")); - AGGRO_DISTANCE_CHECK_INSTANCES = Boolean.parseBoolean(generalSettings.getProperty("AggroDistanceCheckInstances", "false")); - AGGRO_DISTANCE_CHECK_RESTORE_LIFE = Boolean.parseBoolean(generalSettings.getProperty("AggroDistanceCheckRestoreLife", "true")); - - MIN_NPC_ANIMATION = Integer.parseInt(generalSettings.getProperty("MinNpcAnimation", "5")); - MAX_NPC_ANIMATION = Integer.parseInt(generalSettings.getProperty("MaxNpcAnimation", "60")); - MIN_MONSTER_ANIMATION = Integer.parseInt(generalSettings.getProperty("MinMonsterAnimation", "5")); - MAX_MONSTER_ANIMATION = Integer.parseInt(generalSettings.getProperty("MaxMonsterAnimation", "60")); - - SHOW_NPC_LVL = Boolean.parseBoolean(generalSettings.getProperty("ShowNpcLevel", "false")); - SHOW_NPC_AGGRESSION = Boolean.parseBoolean(generalSettings.getProperty("ShowNpcAggression", "false")); - - FORCE_INVENTORY_UPDATE = Boolean.parseBoolean(generalSettings.getProperty("ForceInventoryUpdate", "false")); - - FORCE_COMPLETE_STATUS_UPDATE = Boolean.parseBoolean(generalSettings.getProperty("ForceCompletePlayerStatusUpdate", "true")); - - CHAR_DATA_STORE_INTERVAL = Integer.parseInt(generalSettings.getProperty("CharacterDataStoreInterval", "15")) * 60 * 1000; - UPDATE_ITEMS_ON_CHAR_STORE = Boolean.parseBoolean(generalSettings.getProperty("UpdateItemsOnCharStore", "false")); - - AUTODELETE_INVALID_QUEST_DATA = Boolean.parseBoolean(generalSettings.getProperty("AutoDeleteInvalidQuestData", "false")); - - DELETE_DAYS = Integer.parseInt(generalSettings.getProperty("DeleteCharAfterDays", "7")); - - DEFAULT_PUNISH = Integer.parseInt(generalSettings.getProperty("DefaultPunish", "2")); - DEFAULT_PUNISH_PARAM = Integer.parseInt(generalSettings.getProperty("DefaultPunishParam", "0")); - - GRIDS_ALWAYS_ON = Boolean.parseBoolean(generalSettings.getProperty("GridsAlwaysOn", "false")); - GRID_NEIGHBOR_TURNON_TIME = Integer.parseInt(generalSettings.getProperty("GridNeighborTurnOnTime", "30")); - GRID_NEIGHBOR_TURNOFF_TIME = Integer.parseInt(generalSettings.getProperty("GridNeighborTurnOffTime", "300")); - - USE_3D_MAP = Boolean.parseBoolean(generalSettings.getProperty("Use3DMap", "false")); - - PATH_NODE_RADIUS = Integer.parseInt(generalSettings.getProperty("PathNodeRadius", "50")); - NEW_NODE_ID = Integer.parseInt(generalSettings.getProperty("NewNodeId", "7952")); - SELECTED_NODE_ID = Integer.parseInt(generalSettings.getProperty("NewNodeId", "7952")); - LINKED_NODE_ID = Integer.parseInt(generalSettings.getProperty("NewNodeId", "7952")); - NEW_NODE_TYPE = generalSettings.getProperty("NewNodeType", "npc"); - - COUNT_PACKETS = Boolean.parseBoolean(generalSettings.getProperty("CountPacket", "false")); - DUMP_PACKET_COUNTS = Boolean.parseBoolean(generalSettings.getProperty("DumpPacketCounts", "false")); - DUMP_INTERVAL_SECONDS = Integer.parseInt(generalSettings.getProperty("PacketDumpInterval", "60")); - - MINIMUM_UPDATE_DISTANCE = Integer.parseInt(generalSettings.getProperty("MaximumUpdateDistance", "50")); - MINIMUN_UPDATE_TIME = Integer.parseInt(generalSettings.getProperty("MinimumUpdateTime", "500")); - KNOWNLIST_FORGET_DELAY = Integer.parseInt(generalSettings.getProperty("KnownListForgetDelay", "10000")); - - HIGH_RATE_SERVER_DROPS = Boolean.parseBoolean(generalSettings.getProperty("HighRateServerDrops", "false")); } - catch (Exception e) + + PET_RENT_NPC = generalConfig.getString("ListPetRentNpc", "30827"); + LIST_PET_RENT_NPC = new ArrayList<>(); + for (String id : PET_RENT_NPC.split(",")) { - e.printStackTrace(); - throw new Error("Failed to Load " + GENERAL_CONFIG_FILE + " File."); + LIST_PET_RENT_NPC.add(Integer.parseInt(id)); } + + JAIL_IS_PVP = generalConfig.getBoolean("JailIsPvp", true); + JAIL_DISABLE_CHAT = generalConfig.getBoolean("JailDisableChat", true); + + USE_SAY_FILTER = generalConfig.getBoolean("UseChatFilter", false); + CHAT_FILTER_CHARS = generalConfig.getString("ChatFilterChars", "[I love L2jMobius]"); + CHAT_FILTER_PUNISHMENT = generalConfig.getString("ChatFilterPunishment", "off"); + CHAT_FILTER_PUNISHMENT_PARAM1 = generalConfig.getInt("ChatFilterPunishmentParam1", 1); + CHAT_FILTER_PUNISHMENT_PARAM2 = generalConfig.getInt("ChatFilterPunishmentParam2", 1000); + + FS_TIME_ATTACK = generalConfig.getInt("TimeOfAttack", 50); + FS_TIME_COOLDOWN = generalConfig.getInt("TimeOfCoolDown", 5); + FS_TIME_ENTRY = generalConfig.getInt("TimeOfEntry", 3); + FS_TIME_WARMUP = generalConfig.getInt("TimeOfWarmUp", 2); + FS_PARTY_MEMBER_COUNT = generalConfig.getInt("NumberOfNecessaryPartyMembers", 4); + + if (FS_TIME_ATTACK <= 0) + { + FS_TIME_ATTACK = 50; + } + if (FS_TIME_COOLDOWN <= 0) + { + FS_TIME_COOLDOWN = 5; + } + if (FS_TIME_ENTRY <= 0) + { + FS_TIME_ENTRY = 3; + } + if (FS_TIME_WARMUP <= 0) + { + FS_TIME_WARMUP = 2; + } + if (FS_PARTY_MEMBER_COUNT <= 0) + { + FS_PARTY_MEMBER_COUNT = 4; + } + + ALLOW_QUAKE_SYSTEM = generalConfig.getBoolean("AllowQuakeSystem", false); + ENABLE_ANTI_PVP_FARM_MSG = generalConfig.getBoolean("EnableAntiPvpFarmMsg", false); + + ANNOUNCE_CASTLE_LORDS = generalConfig.getBoolean("AnnounceCastleLords", false); + ANNOUNCE_MAMMON_SPAWN = generalConfig.getBoolean("AnnounceMammonSpawn", true); + ALLOW_GUARDS = generalConfig.getBoolean("AllowGuards", false); + + AUTODESTROY_ITEM_AFTER = generalConfig.getInt("AutoDestroyDroppedItemAfter", 0); + HERB_AUTO_DESTROY_TIME = generalConfig.getInt("AutoDestroyHerbTime", 15) * 1000; + PROTECTED_ITEMS = generalConfig.getString("ListOfProtectedItems", ""); + LIST_PROTECTED_ITEMS = new ArrayList<>(); + for (String id : PROTECTED_ITEMS.split(",")) + { + LIST_PROTECTED_ITEMS.add(Integer.parseInt(id)); + } + + DESTROY_DROPPED_PLAYER_ITEM = generalConfig.getBoolean("DestroyPlayerDroppedItem", false); + DESTROY_EQUIPABLE_PLAYER_ITEM = generalConfig.getBoolean("DestroyEquipableItem", false); + SAVE_DROPPED_ITEM = generalConfig.getBoolean("SaveDroppedItem", false); + EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD = generalConfig.getBoolean("EmptyDroppedItemTableAfterLoad", false); + SAVE_DROPPED_ITEM_INTERVAL = generalConfig.getInt("SaveDroppedItemInterval", 0) * 60000; + CLEAR_DROPPED_ITEM_TABLE = generalConfig.getBoolean("ClearDroppedItemTable", false); + + PRECISE_DROP_CALCULATION = generalConfig.getBoolean("PreciseDropCalculation", true); + MULTIPLE_ITEM_DROP = generalConfig.getBoolean("MultipleItemDrop", true); + + ALLOW_WAREHOUSE = generalConfig.getBoolean("AllowWarehouse", true); + WAREHOUSE_CACHE = generalConfig.getBoolean("WarehouseCache", false); + WAREHOUSE_CACHE_TIME = generalConfig.getInt("WarehouseCacheTime", 15); + ALLOW_FREIGHT = generalConfig.getBoolean("AllowFreight", true); + ALLOW_WEAR = generalConfig.getBoolean("AllowWear", false); + WEAR_DELAY = generalConfig.getInt("WearDelay", 5); + WEAR_PRICE = generalConfig.getInt("WearPrice", 10); + ALLOW_LOTTERY = generalConfig.getBoolean("AllowLottery", false); + ALLOW_RACE = generalConfig.getBoolean("AllowRace", false); + ALLOW_RENTPET = generalConfig.getBoolean("AllowRentPet", false); + ALLOW_DISCARDITEM = generalConfig.getBoolean("AllowDiscardItem", true); + ALLOWFISHING = generalConfig.getBoolean("AllowFishing", false); + ALLOW_MANOR = generalConfig.getBoolean("AllowManor", false); + ALLOW_BOAT = generalConfig.getBoolean("AllowBoat", false); + ALLOW_NPC_WALKERS = generalConfig.getBoolean("AllowNpcWalkers", true); + ALLOW_CURSED_WEAPONS = generalConfig.getBoolean("AllowCursedWeapons", false); + + DEFAULT_GLOBAL_CHAT = generalConfig.getString("GlobalChat", "ON"); + DEFAULT_TRADE_CHAT = generalConfig.getString("TradeChat", "ON"); + MAX_CHAT_LENGTH = generalConfig.getInt("MaxChatLength", 100); + + TRADE_CHAT_IS_NOOBLE = generalConfig.getBoolean("TradeChatIsNooble", false); + TRADE_CHAT_WITH_PVP = generalConfig.getBoolean("TradeChatWithPvP", false); + TRADE_PVP_AMOUNT = generalConfig.getInt("TradePvPAmount", 800); + GLOBAL_CHAT_WITH_PVP = generalConfig.getBoolean("GlobalChatWithPvP", false); + GLOBAL_PVP_AMOUNT = generalConfig.getInt("GlobalPvPAmount", 1500); + + ENABLE_COMMUNITY_BOARD = generalConfig.getBoolean("EnableCommunityBoard", true); + BBS_DEFAULT = generalConfig.getString("BBSDefault", "_bbshome"); + + ZONE_TOWN = generalConfig.getInt("ZoneTown", 0); + + MAX_DRIFT_RANGE = generalConfig.getInt("MaxDriftRange", 300); + AGGRO_DISTANCE_CHECK_ENABLED = generalConfig.getBoolean("AggroDistanceCheckEnabled", false); + AGGRO_DISTANCE_CHECK_RANGE = generalConfig.getInt("AggroDistanceCheckRange", 1500); + AGGRO_DISTANCE_CHECK_RAIDS = generalConfig.getBoolean("AggroDistanceCheckRaids", false); + AGGRO_DISTANCE_CHECK_INSTANCES = generalConfig.getBoolean("AggroDistanceCheckInstances", false); + AGGRO_DISTANCE_CHECK_RESTORE_LIFE = generalConfig.getBoolean("AggroDistanceCheckRestoreLife", true); + + MIN_NPC_ANIMATION = generalConfig.getInt("MinNpcAnimation", 5); + MAX_NPC_ANIMATION = generalConfig.getInt("MaxNpcAnimation", 60); + MIN_MONSTER_ANIMATION = generalConfig.getInt("MinMonsterAnimation", 5); + MAX_MONSTER_ANIMATION = generalConfig.getInt("MaxMonsterAnimation", 60); + + SHOW_NPC_LVL = generalConfig.getBoolean("ShowNpcLevel", false); + SHOW_NPC_AGGRESSION = generalConfig.getBoolean("ShowNpcAggression", false); + + FORCE_INVENTORY_UPDATE = generalConfig.getBoolean("ForceInventoryUpdate", false); + + FORCE_COMPLETE_STATUS_UPDATE = generalConfig.getBoolean("ForceCompletePlayerStatusUpdate", true); + + CHAR_DATA_STORE_INTERVAL = generalConfig.getInt("CharacterDataStoreInterval", 15) * 60 * 1000; + UPDATE_ITEMS_ON_CHAR_STORE = generalConfig.getBoolean("UpdateItemsOnCharStore", false); + + AUTODELETE_INVALID_QUEST_DATA = generalConfig.getBoolean("AutoDeleteInvalidQuestData", false); + + DELETE_DAYS = generalConfig.getInt("DeleteCharAfterDays", 7); + + DEFAULT_PUNISH = generalConfig.getInt("DefaultPunish", 2); + DEFAULT_PUNISH_PARAM = generalConfig.getInt("DefaultPunishParam", 0); + + GRIDS_ALWAYS_ON = generalConfig.getBoolean("GridsAlwaysOn", false); + GRID_NEIGHBOR_TURNON_TIME = generalConfig.getInt("GridNeighborTurnOnTime", 30); + GRID_NEIGHBOR_TURNOFF_TIME = generalConfig.getInt("GridNeighborTurnOffTime", 300); + + HIGH_RATE_SERVER_DROPS = generalConfig.getBoolean("HighRateServerDrops", false); } public static void load7sConfig() { - try - { - final Properties SevenSettings = new Properties(); - final InputStream is = new FileInputStream(new File(SEVENSIGNS_CONFIG_FILE)); - SevenSettings.load(is); - is.close(); - - ALT_GAME_REQUIRE_CASTLE_DAWN = Boolean.parseBoolean(SevenSettings.getProperty("AltRequireCastleForDawn", "false")); - ALT_GAME_REQUIRE_CLAN_CASTLE = Boolean.parseBoolean(SevenSettings.getProperty("AltRequireClanCastle", "false")); - ALT_REQUIRE_WIN_7S = Boolean.parseBoolean(SevenSettings.getProperty("AltRequireWin7s", "true")); - ALT_FESTIVAL_MIN_PLAYER = Integer.parseInt(SevenSettings.getProperty("AltFestivalMinPlayer", "5")); - ALT_MAXIMUM_PLAYER_CONTRIB = Integer.parseInt(SevenSettings.getProperty("AltMaxPlayerContrib", "1000000")); - ALT_FESTIVAL_MANAGER_START = Long.parseLong(SevenSettings.getProperty("AltFestivalManagerStart", "120000")); - ALT_FESTIVAL_LENGTH = Long.parseLong(SevenSettings.getProperty("AltFestivalLength", "1080000")); - ALT_FESTIVAL_CYCLE_LENGTH = Long.parseLong(SevenSettings.getProperty("AltFestivalCycleLength", "2280000")); - ALT_FESTIVAL_FIRST_SPAWN = Long.parseLong(SevenSettings.getProperty("AltFestivalFirstSpawn", "120000")); - ALT_FESTIVAL_FIRST_SWARM = Long.parseLong(SevenSettings.getProperty("AltFestivalFirstSwarm", "300000")); - ALT_FESTIVAL_SECOND_SPAWN = Long.parseLong(SevenSettings.getProperty("AltFestivalSecondSpawn", "540000")); - ALT_FESTIVAL_SECOND_SWARM = Long.parseLong(SevenSettings.getProperty("AltFestivalSecondSwarm", "720000")); - ALT_FESTIVAL_CHEST_SPAWN = Long.parseLong(SevenSettings.getProperty("AltFestivalChestSpawn", "900000")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + SEVENSIGNS_CONFIG_FILE + " File."); - } + final PropertiesParser sevenSignsConfig = new PropertiesParser(SEVENSIGNS_CONFIG_FILE); + + ALT_GAME_REQUIRE_CASTLE_DAWN = sevenSignsConfig.getBoolean("AltRequireCastleForDawn", false); + ALT_GAME_REQUIRE_CLAN_CASTLE = sevenSignsConfig.getBoolean("AltRequireClanCastle", false); + ALT_REQUIRE_WIN_7S = sevenSignsConfig.getBoolean("AltRequireWin7s", true); + ALT_FESTIVAL_MIN_PLAYER = sevenSignsConfig.getInt("AltFestivalMinPlayer", 5); + ALT_MAXIMUM_PLAYER_CONTRIB = sevenSignsConfig.getInt("AltMaxPlayerContrib", 1000000); + ALT_FESTIVAL_MANAGER_START = sevenSignsConfig.getLong("AltFestivalManagerStart", 120000); + ALT_FESTIVAL_LENGTH = sevenSignsConfig.getLong("AltFestivalLength", 1080000); + ALT_FESTIVAL_CYCLE_LENGTH = sevenSignsConfig.getLong("AltFestivalCycleLength", 2280000); + ALT_FESTIVAL_FIRST_SPAWN = sevenSignsConfig.getLong("AltFestivalFirstSpawn", 120000); + ALT_FESTIVAL_FIRST_SWARM = sevenSignsConfig.getLong("AltFestivalFirstSwarm", 300000); + ALT_FESTIVAL_SECOND_SPAWN = sevenSignsConfig.getLong("AltFestivalSecondSpawn", 540000); + ALT_FESTIVAL_SECOND_SWARM = sevenSignsConfig.getLong("AltFestivalSecondSwarm", 720000); + ALT_FESTIVAL_CHEST_SPAWN = sevenSignsConfig.getLong("AltFestivalChestSpawn", 900000); } public static void loadCHConfig() { - try - { - final Properties clanhallSettings = new Properties(); - final InputStream is = new FileInputStream(new File(CLANHALL_CONFIG_FILE)); - clanhallSettings.load(is); - is.close(); - CH_TELE_FEE_RATIO = Long.parseLong(clanhallSettings.getProperty("ClanHallTeleportFunctionFeeRation", "86400000")); - CH_TELE1_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallTeleportFunctionFeeLvl1", "86400000")); - CH_TELE2_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallTeleportFunctionFeeLvl2", "86400000")); - CH_SUPPORT_FEE_RATIO = Long.parseLong(clanhallSettings.getProperty("ClanHallSupportFunctionFeeRation", "86400000")); - CH_SUPPORT1_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallSupportFeeLvl1", "86400000")); - CH_SUPPORT2_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallSupportFeeLvl2", "86400000")); - CH_SUPPORT3_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallSupportFeeLvl3", "86400000")); - CH_SUPPORT4_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallSupportFeeLvl4", "86400000")); - CH_SUPPORT5_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallSupportFeeLvl5", "86400000")); - CH_SUPPORT6_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallSupportFeeLvl6", "86400000")); - CH_SUPPORT7_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallSupportFeeLvl7", "86400000")); - CH_SUPPORT8_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallSupportFeeLvl8", "86400000")); - CH_MPREG_FEE_RATIO = Long.parseLong(clanhallSettings.getProperty("ClanHallMpRegenerationFunctionFeeRation", "86400000")); - CH_MPREG1_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallMpRegenerationFeeLvl1", "86400000")); - CH_MPREG2_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallMpRegenerationFeeLvl2", "86400000")); - CH_MPREG3_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallMpRegenerationFeeLvl3", "86400000")); - CH_MPREG4_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallMpRegenerationFeeLvl4", "86400000")); - CH_MPREG5_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallMpRegenerationFeeLvl5", "86400000")); - CH_HPREG_FEE_RATIO = Long.parseLong(clanhallSettings.getProperty("ClanHallHpRegenerationFunctionFeeRation", "86400000")); - CH_HPREG1_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl1", "86400000")); - CH_HPREG2_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl2", "86400000")); - CH_HPREG3_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl3", "86400000")); - CH_HPREG4_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl4", "86400000")); - CH_HPREG5_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl5", "86400000")); - CH_HPREG6_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl6", "86400000")); - CH_HPREG7_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl7", "86400000")); - CH_HPREG8_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl8", "86400000")); - CH_HPREG9_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl9", "86400000")); - CH_HPREG10_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl10", "86400000")); - CH_HPREG11_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl11", "86400000")); - CH_HPREG12_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl12", "86400000")); - CH_HPREG13_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallHpRegenerationFeeLvl13", "86400000")); - CH_EXPREG_FEE_RATIO = Long.parseLong(clanhallSettings.getProperty("ClanHallExpRegenerationFunctionFeeRation", "86400000")); - CH_EXPREG1_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallExpRegenerationFeeLvl1", "86400000")); - CH_EXPREG2_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallExpRegenerationFeeLvl2", "86400000")); - CH_EXPREG3_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallExpRegenerationFeeLvl3", "86400000")); - CH_EXPREG4_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallExpRegenerationFeeLvl4", "86400000")); - CH_EXPREG5_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallExpRegenerationFeeLvl5", "86400000")); - CH_EXPREG6_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallExpRegenerationFeeLvl6", "86400000")); - CH_EXPREG7_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallExpRegenerationFeeLvl7", "86400000")); - CH_ITEM_FEE_RATIO = Long.parseLong(clanhallSettings.getProperty("ClanHallItemCreationFunctionFeeRation", "86400000")); - CH_ITEM1_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallItemCreationFunctionFeeLvl1", "86400000")); - CH_ITEM2_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallItemCreationFunctionFeeLvl2", "86400000")); - CH_ITEM3_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallItemCreationFunctionFeeLvl3", "86400000")); - CH_CURTAIN_FEE_RATIO = Long.parseLong(clanhallSettings.getProperty("ClanHallCurtainFunctionFeeRation", "86400000")); - CH_CURTAIN1_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallCurtainFunctionFeeLvl1", "86400000")); - CH_CURTAIN2_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallCurtainFunctionFeeLvl2", "86400000")); - CH_FRONT_FEE_RATIO = Long.parseLong(clanhallSettings.getProperty("ClanHallFrontPlatformFunctionFeeRation", "86400000")); - CH_FRONT1_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallFrontPlatformFunctionFeeLvl1", "86400000")); - CH_FRONT2_FEE = Integer.parseInt(clanhallSettings.getProperty("ClanHallFrontPlatformFunctionFeeLvl2", "86400000")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + CLANHALL_CONFIG_FILE + " File."); - } + final PropertiesParser clanhallConfig = new PropertiesParser(CLANHALL_CONFIG_FILE); + + CH_TELE_FEE_RATIO = clanhallConfig.getLong("ClanHallTeleportFunctionFeeRation", 86400000); + CH_TELE1_FEE = clanhallConfig.getInt("ClanHallTeleportFunctionFeeLvl1", 86400000); + CH_TELE2_FEE = clanhallConfig.getInt("ClanHallTeleportFunctionFeeLvl2", 86400000); + CH_SUPPORT_FEE_RATIO = clanhallConfig.getLong("ClanHallSupportFunctionFeeRation", 86400000); + CH_SUPPORT1_FEE = clanhallConfig.getInt("ClanHallSupportFeeLvl1", 86400000); + CH_SUPPORT2_FEE = clanhallConfig.getInt("ClanHallSupportFeeLvl2", 86400000); + CH_SUPPORT3_FEE = clanhallConfig.getInt("ClanHallSupportFeeLvl3", 86400000); + CH_SUPPORT4_FEE = clanhallConfig.getInt("ClanHallSupportFeeLvl4", 86400000); + CH_SUPPORT5_FEE = clanhallConfig.getInt("ClanHallSupportFeeLvl5", 86400000); + CH_SUPPORT6_FEE = clanhallConfig.getInt("ClanHallSupportFeeLvl6", 86400000); + CH_SUPPORT7_FEE = clanhallConfig.getInt("ClanHallSupportFeeLvl7", 86400000); + CH_SUPPORT8_FEE = clanhallConfig.getInt("ClanHallSupportFeeLvl8", 86400000); + CH_MPREG_FEE_RATIO = clanhallConfig.getLong("ClanHallMpRegenerationFunctionFeeRation", 86400000); + CH_MPREG1_FEE = clanhallConfig.getInt("ClanHallMpRegenerationFeeLvl1", 86400000); + CH_MPREG2_FEE = clanhallConfig.getInt("ClanHallMpRegenerationFeeLvl2", 86400000); + CH_MPREG3_FEE = clanhallConfig.getInt("ClanHallMpRegenerationFeeLvl3", 86400000); + CH_MPREG4_FEE = clanhallConfig.getInt("ClanHallMpRegenerationFeeLvl4", 86400000); + CH_MPREG5_FEE = clanhallConfig.getInt("ClanHallMpRegenerationFeeLvl5", 86400000); + CH_HPREG_FEE_RATIO = clanhallConfig.getLong("ClanHallHpRegenerationFunctionFeeRation", 86400000); + CH_HPREG1_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl1", 86400000); + CH_HPREG2_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl2", 86400000); + CH_HPREG3_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl3", 86400000); + CH_HPREG4_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl4", 86400000); + CH_HPREG5_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl5", 86400000); + CH_HPREG6_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl6", 86400000); + CH_HPREG7_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl7", 86400000); + CH_HPREG8_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl8", 86400000); + CH_HPREG9_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl9", 86400000); + CH_HPREG10_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl10", 86400000); + CH_HPREG11_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl11", 86400000); + CH_HPREG12_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl12", 86400000); + CH_HPREG13_FEE = clanhallConfig.getInt("ClanHallHpRegenerationFeeLvl13", 86400000); + CH_EXPREG_FEE_RATIO = clanhallConfig.getLong("ClanHallExpRegenerationFunctionFeeRation", 86400000); + CH_EXPREG1_FEE = clanhallConfig.getInt("ClanHallExpRegenerationFeeLvl1", 86400000); + CH_EXPREG2_FEE = clanhallConfig.getInt("ClanHallExpRegenerationFeeLvl2", 86400000); + CH_EXPREG3_FEE = clanhallConfig.getInt("ClanHallExpRegenerationFeeLvl3", 86400000); + CH_EXPREG4_FEE = clanhallConfig.getInt("ClanHallExpRegenerationFeeLvl4", 86400000); + CH_EXPREG5_FEE = clanhallConfig.getInt("ClanHallExpRegenerationFeeLvl5", 86400000); + CH_EXPREG6_FEE = clanhallConfig.getInt("ClanHallExpRegenerationFeeLvl6", 86400000); + CH_EXPREG7_FEE = clanhallConfig.getInt("ClanHallExpRegenerationFeeLvl7", 86400000); + CH_ITEM_FEE_RATIO = clanhallConfig.getLong("ClanHallItemCreationFunctionFeeRation", 86400000); + CH_ITEM1_FEE = clanhallConfig.getInt("ClanHallItemCreationFunctionFeeLvl1", 86400000); + CH_ITEM2_FEE = clanhallConfig.getInt("ClanHallItemCreationFunctionFeeLvl2", 86400000); + CH_ITEM3_FEE = clanhallConfig.getInt("ClanHallItemCreationFunctionFeeLvl3", 86400000); + CH_CURTAIN_FEE_RATIO = clanhallConfig.getLong("ClanHallCurtainFunctionFeeRation", 86400000); + CH_CURTAIN1_FEE = clanhallConfig.getInt("ClanHallCurtainFunctionFeeLvl1", 86400000); + CH_CURTAIN2_FEE = clanhallConfig.getInt("ClanHallCurtainFunctionFeeLvl2", 86400000); + CH_FRONT_FEE_RATIO = clanhallConfig.getLong("ClanHallFrontPlatformFunctionFeeRation", 86400000); + CH_FRONT1_FEE = clanhallConfig.getInt("ClanHallFrontPlatformFunctionFeeLvl1", 86400000); + CH_FRONT2_FEE = clanhallConfig.getInt("ClanHallFrontPlatformFunctionFeeLvl2", 86400000); } public static void loadElitCHConfig() { - try - { - final Properties conquerableSettings = new Properties(); - final InputStream is = new FileInputStream(new File(CONQUERABLE_CLANHALL_CONFIG_FILE)); - conquerableSettings.load(is); - is.close(); - - DEVASTATED_DAY = Integer.parseInt(conquerableSettings.getProperty("DevastatedDay", "1")); - DEVASTATED_HOUR = Integer.parseInt(conquerableSettings.getProperty("DevastatedHour", "18")); - DEVASTATED_MINUTES = Integer.parseInt(conquerableSettings.getProperty("DevastatedMinutes", "0")); - PARTISAN_DAY = Integer.parseInt(conquerableSettings.getProperty("PartisanDay", "5")); - PARTISAN_HOUR = Integer.parseInt(conquerableSettings.getProperty("PartisanHour", "21")); - PARTISAN_MINUTES = Integer.parseInt(conquerableSettings.getProperty("PartisanMinutes", "0")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + CONQUERABLE_CLANHALL_CONFIG_FILE + " File."); - } + final PropertiesParser conquerableConfig = new PropertiesParser(CONQUERABLE_CLANHALL_CONFIG_FILE); + + DEVASTATED_DAY = conquerableConfig.getInt("DevastatedDay", 1); + DEVASTATED_HOUR = conquerableConfig.getInt("DevastatedHour", 18); + DEVASTATED_MINUTES = conquerableConfig.getInt("DevastatedMinutes", 0); + PARTISAN_DAY = conquerableConfig.getInt("PartisanDay", 5); + PARTISAN_HOUR = conquerableConfig.getInt("PartisanHour", 21); + PARTISAN_MINUTES = conquerableConfig.getInt("PartisanMinutes", 0); } public static void loadChampionConfig() { - try - { - final Properties ChampionSettings = new Properties(); - final InputStream is = new FileInputStream(new File(CHAMPION_CONFIG_FILE)); - ChampionSettings.load(is); - is.close(); - - L2JMOD_CHAMPION_ENABLE = Boolean.parseBoolean(ChampionSettings.getProperty("ChampionEnable", "false")); - L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(ChampionSettings.getProperty("ChampionFrequency", "0")); - L2JMOD_CHAMP_MIN_LVL = Integer.parseInt(ChampionSettings.getProperty("ChampionMinLevel", "20")); - L2JMOD_CHAMP_MAX_LVL = Integer.parseInt(ChampionSettings.getProperty("ChampionMaxLevel", "60")); - L2JMOD_CHAMPION_HP = Integer.parseInt(ChampionSettings.getProperty("ChampionHp", "7")); - L2JMOD_CHAMPION_HP_REGEN = Float.parseFloat(ChampionSettings.getProperty("ChampionHpRegen", "1.0")); - L2JMOD_CHAMPION_REWARDS = Integer.parseInt(ChampionSettings.getProperty("ChampionRewards", "8")); - L2JMOD_CHAMPION_ADENAS_REWARDS = Integer.parseInt(ChampionSettings.getProperty("ChampionAdenasRewards", "1")); - L2JMOD_CHAMPION_ATK = Float.parseFloat(ChampionSettings.getProperty("ChampionAtk", "1.0")); - L2JMOD_CHAMPION_SPD_ATK = Float.parseFloat(ChampionSettings.getProperty("ChampionSpdAtk", "1.0")); - L2JMOD_CHAMPION_REWARD = Integer.parseInt(ChampionSettings.getProperty("ChampionRewardItem", "0")); - L2JMOD_CHAMPION_REWARD_ID = Integer.parseInt(ChampionSettings.getProperty("ChampionRewardItemID", "6393")); - L2JMOD_CHAMPION_REWARD_QTY = Integer.parseInt(ChampionSettings.getProperty("ChampionRewardItemQty", "1")); - L2JMOD_CHAMP_TITLE = ChampionSettings.getProperty("ChampionTitle", "Champion"); - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + CHAMPION_CONFIG_FILE + " File."); - } + final PropertiesParser championConfig = new PropertiesParser(CHAMPION_CONFIG_FILE); + + CHAMPION_ENABLE = championConfig.getBoolean("ChampionEnable", false); + CHAMPION_FREQUENCY = championConfig.getInt("ChampionFrequency", 0); + CHAMP_MIN_LVL = championConfig.getInt("ChampionMinLevel", 20); + CHAMP_MAX_LVL = championConfig.getInt("ChampionMaxLevel", 60); + CHAMPION_HP = championConfig.getInt("ChampionHp", 7); + CHAMPION_HP_REGEN = championConfig.getFloat("ChampionHpRegen", 1f); + CHAMPION_REWARDS = championConfig.getInt("ChampionRewards", 8); + CHAMPION_ADENAS_REWARDS = championConfig.getInt("ChampionAdenasRewards", 1); + CHAMPION_ATK = championConfig.getFloat("ChampionAtk", 1f); + CHAMPION_SPD_ATK = championConfig.getFloat("ChampionSpdAtk", 1f); + CHAMPION_REWARD = championConfig.getInt("ChampionRewardItem", 0); + CHAMPION_REWARD_ID = championConfig.getInt("ChampionRewardItemID", 6393); + CHAMPION_REWARD_QTY = championConfig.getInt("ChampionRewardItemQty", 1); + CHAMP_TITLE = championConfig.getString("ChampionTitle", "Champion"); } public static void loadMerchantZeroPriceConfig() { - try - { - final Properties MerchantZeroSellPrice = new Properties(); - final InputStream is = new FileInputStream(new File(MERCHANT_ZERO_SELL_PRICE_CONFIG_FILE)); - MerchantZeroSellPrice.load(is); - is.close(); - - MERCHANT_ZERO_SELL_PRICE = Boolean.parseBoolean(MerchantZeroSellPrice.getProperty("MerchantZeroSellPrice", "false")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + CHAMPION_CONFIG_FILE + " File."); - } + final PropertiesParser merchantZeroSellPriceConfig = new PropertiesParser(MERCHANT_ZERO_SELL_PRICE_CONFIG_FILE); + MERCHANT_ZERO_SELL_PRICE = merchantZeroSellPriceConfig.getBoolean("MerchantZeroSellPrice", false); } public static void loadWeddingConfig() { - try - { - final Properties WeddingSettings = new Properties(); - final InputStream is = new FileInputStream(new File(EVENT_WEDDING_CONFIG_FILE)); - WeddingSettings.load(is); - is.close(); - - L2JMOD_ALLOW_WEDDING = Boolean.parseBoolean(WeddingSettings.getProperty("AllowWedding", "false")); - L2JMOD_WEDDING_PRICE = Integer.parseInt(WeddingSettings.getProperty("WeddingPrice", "250000000")); - L2JMOD_WEDDING_PUNISH_INFIDELITY = Boolean.parseBoolean(WeddingSettings.getProperty("WeddingPunishInfidelity", "true")); - L2JMOD_WEDDING_TELEPORT = Boolean.parseBoolean(WeddingSettings.getProperty("WeddingTeleport", "true")); - L2JMOD_WEDDING_TELEPORT_PRICE = Integer.parseInt(WeddingSettings.getProperty("WeddingTeleportPrice", "50000")); - L2JMOD_WEDDING_TELEPORT_DURATION = Integer.parseInt(WeddingSettings.getProperty("WeddingTeleportDuration", "60")); - L2JMOD_WEDDING_NAME_COLOR_NORMAL = Integer.decode("0x" + WeddingSettings.getProperty("WeddingNameCollorN", "FFFFFF")); - L2JMOD_WEDDING_NAME_COLOR_GEY = Integer.decode("0x" + WeddingSettings.getProperty("WeddingNameCollorB", "FFFFFF")); - L2JMOD_WEDDING_NAME_COLOR_LESBO = Integer.decode("0x" + WeddingSettings.getProperty("WeddingNameCollorL", "FFFFFF")); - L2JMOD_WEDDING_SAMESEX = Boolean.parseBoolean(WeddingSettings.getProperty("WeddingAllowSameSex", "false")); - L2JMOD_WEDDING_FORMALWEAR = Boolean.parseBoolean(WeddingSettings.getProperty("WeddingFormalWear", "true")); - L2JMOD_WEDDING_DIVORCE_COSTS = Integer.parseInt(WeddingSettings.getProperty("WeddingDivorceCosts", "20")); - WEDDING_GIVE_CUPID_BOW = Boolean.parseBoolean(WeddingSettings.getProperty("WeddingGiveBow", "false")); - ANNOUNCE_WEDDING = Boolean.parseBoolean(WeddingSettings.getProperty("AnnounceWedding", "true")); - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + EVENT_WEDDING_CONFIG_FILE + " File."); - } + final PropertiesParser weddingConfig = new PropertiesParser(EVENT_WEDDING_CONFIG_FILE); + + ALLOW_WEDDING = weddingConfig.getBoolean("AllowWedding", false); + WEDDING_PRICE = weddingConfig.getInt("WeddingPrice", 250000000); + WEDDING_PUNISH_INFIDELITY = weddingConfig.getBoolean("WeddingPunishInfidelity", true); + WEDDING_TELEPORT = weddingConfig.getBoolean("WeddingTeleport", true); + WEDDING_TELEPORT_PRICE = weddingConfig.getInt("WeddingTeleportPrice", 50000); + WEDDING_TELEPORT_DURATION = weddingConfig.getInt("WeddingTeleportDuration", 60); + WEDDING_NAME_COLOR_NORMAL = Integer.decode("0x" + weddingConfig.getString("WeddingNameCollorN", "FFFFFF")); + WEDDING_NAME_COLOR_GEY = Integer.decode("0x" + weddingConfig.getString("WeddingNameCollorB", "FFFFFF")); + WEDDING_NAME_COLOR_LESBO = Integer.decode("0x" + weddingConfig.getString("WeddingNameCollorL", "FFFFFF")); + WEDDING_SAMESEX = weddingConfig.getBoolean("WeddingAllowSameSex", false); + WEDDING_FORMALWEAR = weddingConfig.getBoolean("WeddingFormalWear", true); + WEDDING_DIVORCE_COSTS = weddingConfig.getInt("WeddingDivorceCosts", 20); + GIVE_CUPID_BOW = weddingConfig.getBoolean("WeddingGiveBow", false); + ANNOUNCE_WEDDING = weddingConfig.getBoolean("AnnounceWedding", true); } public static void loadTVTConfig() { - try + final PropertiesParser tvtConfig = new PropertiesParser(EVENT_TVT_CONFIG_FILE); + + TVT_EVEN_TEAMS = tvtConfig.getString("TvTEvenTeams", "BALANCE"); + TVT_ALLOW_INTERFERENCE = tvtConfig.getBoolean("TvTAllowInterference", false); + TVT_ALLOW_POTIONS = tvtConfig.getBoolean("TvTAllowPotions", false); + TVT_ALLOW_SUMMON = tvtConfig.getBoolean("TvTAllowSummon", false); + TVT_ON_START_REMOVE_ALL_EFFECTS = tvtConfig.getBoolean("TvTOnStartRemoveAllEffects", true); + TVT_ON_START_UNSUMMON_PET = tvtConfig.getBoolean("TvTOnStartUnsummonPet", true); + TVT_REVIVE_RECOVERY = tvtConfig.getBoolean("TvTReviveRecovery", false); + TVT_ANNOUNCE_TEAM_STATS = tvtConfig.getBoolean("TvTAnnounceTeamStats", false); + TVT_ANNOUNCE_REWARD = tvtConfig.getBoolean("TvTAnnounceReward", false); + TVT_PRICE_NO_KILLS = tvtConfig.getBoolean("TvTPriceNoKills", false); + TVT_JOIN_CURSED = tvtConfig.getBoolean("TvTJoinWithCursedWeapon", true); + TVT_COMMAND = tvtConfig.getBoolean("TvTCommand", true); + TVT_REVIVE_DELAY = tvtConfig.getLong("TvTReviveDelay", 20000); + if (TVT_REVIVE_DELAY < 1000) { - final Properties TVTSettings = new Properties(); - final InputStream is = new FileInputStream(new File(EVENT_TVT_CONFIG_FILE)); - TVTSettings.load(is); - is.close(); - - TVT_EVEN_TEAMS = TVTSettings.getProperty("TvTEvenTeams", "BALANCE"); - TVT_ALLOW_INTERFERENCE = Boolean.parseBoolean(TVTSettings.getProperty("TvTAllowInterference", "false")); - TVT_ALLOW_POTIONS = Boolean.parseBoolean(TVTSettings.getProperty("TvTAllowPotions", "false")); - TVT_ALLOW_SUMMON = Boolean.parseBoolean(TVTSettings.getProperty("TvTAllowSummon", "false")); - TVT_ON_START_REMOVE_ALL_EFFECTS = Boolean.parseBoolean(TVTSettings.getProperty("TvTOnStartRemoveAllEffects", "true")); - TVT_ON_START_UNSUMMON_PET = Boolean.parseBoolean(TVTSettings.getProperty("TvTOnStartUnsummonPet", "true")); - TVT_REVIVE_RECOVERY = Boolean.parseBoolean(TVTSettings.getProperty("TvTReviveRecovery", "false")); - TVT_ANNOUNCE_TEAM_STATS = Boolean.parseBoolean(TVTSettings.getProperty("TvTAnnounceTeamStats", "false")); - TVT_ANNOUNCE_REWARD = Boolean.parseBoolean(TVTSettings.getProperty("TvTAnnounceReward", "false")); - TVT_PRICE_NO_KILLS = Boolean.parseBoolean(TVTSettings.getProperty("TvTPriceNoKills", "false")); - TVT_JOIN_CURSED = Boolean.parseBoolean(TVTSettings.getProperty("TvTJoinWithCursedWeapon", "true")); - TVT_COMMAND = Boolean.parseBoolean(TVTSettings.getProperty("TvTCommand", "true")); - TVT_REVIVE_DELAY = Long.parseLong(TVTSettings.getProperty("TvTReviveDelay", "20000")); - if (TVT_REVIVE_DELAY < 1000) - { - TVT_REVIVE_DELAY = 1000; // can't be set less then 1 second - } - TVT_OPEN_FORT_DOORS = Boolean.parseBoolean(TVTSettings.getProperty("TvTOpenFortDoors", "false")); - TVT_CLOSE_FORT_DOORS = Boolean.parseBoolean(TVTSettings.getProperty("TvTCloseFortDoors", "false")); - TVT_OPEN_ADEN_COLOSSEUM_DOORS = Boolean.parseBoolean(TVTSettings.getProperty("TvTOpenAdenColosseumDoors", "false")); - TVT_CLOSE_ADEN_COLOSSEUM_DOORS = Boolean.parseBoolean(TVTSettings.getProperty("TvTCloseAdenColosseumDoors", "false")); - TVT_TOP_KILLER_REWARD = Integer.parseInt(TVTSettings.getProperty("TvTTopKillerRewardId", "5575")); - TVT_TOP_KILLER_QTY = Integer.parseInt(TVTSettings.getProperty("TvTTopKillerRewardQty", "2000000")); - TVT_AURA = Boolean.parseBoolean(TVTSettings.getProperty("TvTAura", "false")); - TVT_STATS_LOGGER = Boolean.parseBoolean(TVTSettings.getProperty("TvTStatsLogger", "true")); - - TVT_REMOVE_BUFFS_ON_DIE = Boolean.parseBoolean(TVTSettings.getProperty("TvTRemoveBuffsOnPlayerDie", "false")); - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + EVENT_TVT_CONFIG_FILE + " File."); + TVT_REVIVE_DELAY = 1000; // can't be set less then 1 second } + TVT_OPEN_FORT_DOORS = tvtConfig.getBoolean("TvTOpenFortDoors", false); + TVT_CLOSE_FORT_DOORS = tvtConfig.getBoolean("TvTCloseFortDoors", false); + TVT_OPEN_ADEN_COLOSSEUM_DOORS = tvtConfig.getBoolean("TvTOpenAdenColosseumDoors", false); + TVT_CLOSE_ADEN_COLOSSEUM_DOORS = tvtConfig.getBoolean("TvTCloseAdenColosseumDoors", false); + TVT_TOP_KILLER_REWARD = tvtConfig.getInt("TvTTopKillerRewardId", 5575); + TVT_TOP_KILLER_QTY = tvtConfig.getInt("TvTTopKillerRewardQty", 2000000); + TVT_AURA = tvtConfig.getBoolean("TvTAura", false); + TVT_STATS_LOGGER = tvtConfig.getBoolean("TvTStatsLogger", true); + + TVT_REMOVE_BUFFS_ON_DIE = tvtConfig.getBoolean("TvTRemoveBuffsOnPlayerDie", false); } public static void loadTWConfig() { - try - { - final Properties TWSettings = new Properties(); - final InputStream is = new FileInputStream(new File(EVENT_TW_CONFIG_FILE)); - TWSettings.load(is); - is.close(); - - TW_TOWN_ID = Integer.parseInt(TWSettings.getProperty("TWTownId", "9")); - TW_ALL_TOWNS = Boolean.parseBoolean(TWSettings.getProperty("TWAllTowns", "false")); - TW_ITEM_ID = Integer.parseInt(TWSettings.getProperty("TownWarItemId", "57")); - TW_ITEM_AMOUNT = Integer.parseInt(TWSettings.getProperty("TownWarItemAmount", "5000")); - TW_ALLOW_KARMA = Boolean.parseBoolean(TWSettings.getProperty("AllowKarma", "false")); - TW_DISABLE_GK = Boolean.parseBoolean(TWSettings.getProperty("DisableGK", "true")); - TW_RESS_ON_DIE = Boolean.parseBoolean(TWSettings.getProperty("SendRessOnDeath", "false")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + EVENT_TW_CONFIG_FILE + " File."); - } + final PropertiesParser twConfig = new PropertiesParser(EVENT_TW_CONFIG_FILE); + + TW_TOWN_ID = twConfig.getInt("TWTownId", 9); + TW_ALL_TOWNS = twConfig.getBoolean("TWAllTowns", false); + TW_ITEM_ID = twConfig.getInt("TownWarItemId", 57); + TW_ITEM_AMOUNT = twConfig.getInt("TownWarItemAmount", 5000); + TW_ALLOW_KARMA = twConfig.getBoolean("AllowKarma", false); + TW_DISABLE_GK = twConfig.getBoolean("DisableGK", true); + TW_RESS_ON_DIE = twConfig.getBoolean("SendRessOnDeath", false); } public static void loadRebirthConfig() { - try - { - final Properties REBIRTHSettings = new Properties(); - final InputStream is = new FileInputStream(new File(EVENT_REBIRTH_CONFIG_FILE)); - REBIRTHSettings.load(is); - is.close(); - - REBIRTH_ENABLE = Boolean.parseBoolean(REBIRTHSettings.getProperty("REBIRTH_ENABLE", "false")); - REBIRTH_MIN_LEVEL = Integer.parseInt(REBIRTHSettings.getProperty("REBIRTH_MIN_LEVEL", "80")); - REBIRTH_MAX = Integer.parseInt(REBIRTHSettings.getProperty("REBIRTH_MAX", "3")); - REBIRTH_RETURN_TO_LEVEL = Integer.parseInt(REBIRTHSettings.getProperty("REBIRTH_RETURN_TO_LEVEL", "1")); - - REBIRTH_ITEM_PRICE = REBIRTHSettings.getProperty("REBIRTH_ITEM_PRICE", "").split(";"); - REBIRTH_MAGE_SKILL = REBIRTHSettings.getProperty("REBIRTH_MAGE_SKILL", "").split(";"); - REBIRTH_FIGHTER_SKILL = REBIRTHSettings.getProperty("REBIRTH_FIGHTER_SKILL", "").split(";"); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + EVENT_REBIRTH_CONFIG_FILE + " File."); - } + final PropertiesParser rebirthConfig = new PropertiesParser(EVENT_REBIRTH_CONFIG_FILE); + + REBIRTH_ENABLE = rebirthConfig.getBoolean("REBIRTH_ENABLE", false); + REBIRTH_MIN_LEVEL = rebirthConfig.getInt("REBIRTH_MIN_LEVEL", 80); + REBIRTH_MAX = rebirthConfig.getInt("REBIRTH_MAX", 3); + REBIRTH_RETURN_TO_LEVEL = rebirthConfig.getInt("REBIRTH_RETURN_TO_LEVEL", 1); + + REBIRTH_ITEM_PRICE = rebirthConfig.getString("REBIRTH_ITEM_PRICE", "").split(";"); + REBIRTH_MAGE_SKILL = rebirthConfig.getString("REBIRTH_MAGE_SKILL", "").split(";"); + REBIRTH_FIGHTER_SKILL = rebirthConfig.getString("REBIRTH_FIGHTER_SKILL", "").split(";"); } public static void loadPCBPointConfig() { - try + final PropertiesParser pcBangConfig = new PropertiesParser(EVENT_PC_BANG_POINT_CONFIG_FILE); + + PCB_ENABLE = pcBangConfig.getBoolean("PcBangPointEnable", true); + PCB_MIN_LEVEL = pcBangConfig.getInt("PcBangPointMinLevel", 20); + PCB_POINT_MIN = pcBangConfig.getInt("PcBangPointMinCount", 20); + PCB_POINT_MAX = pcBangConfig.getInt("PcBangPointMaxCount", 1000000); + + if (PCB_POINT_MAX < 1) { - final Properties pcbpSettings = new Properties(); - final InputStream is = new FileInputStream(new File(EVENT_PC_BANG_POINT_CONFIG_FILE)); - pcbpSettings.load(is); - is.close(); - - PCB_ENABLE = Boolean.parseBoolean(pcbpSettings.getProperty("PcBangPointEnable", "true")); - PCB_MIN_LEVEL = Integer.parseInt(pcbpSettings.getProperty("PcBangPointMinLevel", "20")); - PCB_POINT_MIN = Integer.parseInt(pcbpSettings.getProperty("PcBangPointMinCount", "20")); - PCB_POINT_MAX = Integer.parseInt(pcbpSettings.getProperty("PcBangPointMaxCount", "1000000")); - - if (PCB_POINT_MAX < 1) - { - PCB_POINT_MAX = Integer.MAX_VALUE; - } - - PCB_CHANCE_DUAL_POINT = Integer.parseInt(pcbpSettings.getProperty("PcBangPointDualChance", "20")); - PCB_INTERVAL = Integer.parseInt(pcbpSettings.getProperty("PcBangPointTimeStamp", "900")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + EVENT_PC_BANG_POINT_CONFIG_FILE + " File."); + PCB_POINT_MAX = Integer.MAX_VALUE; } + + PCB_CHANCE_DUAL_POINT = pcBangConfig.getInt("PcBangPointDualChance", 20); + PCB_INTERVAL = pcBangConfig.getInt("PcBangPointTimeStamp", 900); } public static void loadCraftConfig() { - try - { - final Properties craftSettings = new Properties(); - final InputStream is = new FileInputStream(new File(CRAFTING_CONFIG_FILE)); - craftSettings.load(is); - is.close(); - - DWARF_RECIPE_LIMIT = Integer.parseInt(craftSettings.getProperty("DwarfRecipeLimit", "50")); - COMMON_RECIPE_LIMIT = Integer.parseInt(craftSettings.getProperty("CommonRecipeLimit", "50")); - IS_CRAFTING_ENABLED = Boolean.parseBoolean(craftSettings.getProperty("CraftingEnabled", "true")); - ALT_GAME_CREATION = Boolean.parseBoolean(craftSettings.getProperty("AltGameCreation", "false")); - ALT_GAME_CREATION_SPEED = Double.parseDouble(craftSettings.getProperty("AltGameCreationSpeed", "1")); - ALT_GAME_CREATION_XP_RATE = Double.parseDouble(craftSettings.getProperty("AltGameCreationRateXp", "1")); - ALT_GAME_CREATION_SP_RATE = Double.parseDouble(craftSettings.getProperty("AltGameCreationRateSp", "1")); - ALT_BLACKSMITH_USE_RECIPES = Boolean.parseBoolean(craftSettings.getProperty("AltBlacksmithUseRecipes", "true")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + CRAFTING_CONFIG_FILE + " File."); - } + final PropertiesParser craftConfig = new PropertiesParser(CRAFTING_CONFIG_FILE); + + DWARF_RECIPE_LIMIT = craftConfig.getInt("DwarfRecipeLimit", 50); + COMMON_RECIPE_LIMIT = craftConfig.getInt("CommonRecipeLimit", 50); + IS_CRAFTING_ENABLED = craftConfig.getBoolean("CraftingEnabled", true); + ALT_GAME_CREATION = craftConfig.getBoolean("AltGameCreation", false); + ALT_GAME_CREATION_SPEED = craftConfig.getDouble("AltGameCreationSpeed", 1); + ALT_GAME_CREATION_XP_RATE = craftConfig.getDouble("AltGameCreationRateXp", 1); + ALT_GAME_CREATION_SP_RATE = craftConfig.getDouble("AltGameCreationRateSp", 1); + ALT_BLACKSMITH_USE_RECIPES = craftConfig.getBoolean("AltBlacksmithUseRecipes", true); } public static void loadBankingConfig() { - try - { - final Properties BANKSettings = new Properties(); - final InputStream is = new FileInputStream(new File(BANK_CONFIG_FILE)); - BANKSettings.load(is); - is.close(); - - BANKING_SYSTEM_ENABLED = Boolean.parseBoolean(BANKSettings.getProperty("BankingEnabled", "false")); - BANKING_SYSTEM_GOLDBARS = Integer.parseInt(BANKSettings.getProperty("BankingGoldbarCount", "1")); - BANKING_SYSTEM_ADENA = Integer.parseInt(BANKSettings.getProperty("BankingAdenaCount", "500000000")); - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + BANK_CONFIG_FILE + " File."); - } + final PropertiesParser bankConfig = new PropertiesParser(BANK_CONFIG_FILE); + + BANKING_SYSTEM_ENABLED = bankConfig.getBoolean("BankingEnabled", false); + BANKING_SYSTEM_GOLDBARS = bankConfig.getInt("BankingGoldbarCount", 1); + BANKING_SYSTEM_ADENA = bankConfig.getInt("BankingAdenaCount", 500000000); } public static void loadBufferConfig() { - try - { - final Properties ShemeBufferSettings = new Properties(); - final InputStream is = new FileInputStream(new File(SCHEME_BUFFER_CONFIG_FILE)); - ShemeBufferSettings.load(is); - is.close(); - - BUFFER_MAX_SCHEMES = Integer.parseInt(ShemeBufferSettings.getProperty("BufferMaxSchemesPerChar", "4")); - BUFFER_STATIC_BUFF_COST = Integer.parseInt(ShemeBufferSettings.getProperty("BufferStaticCostPerBuff", "-1")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + SCHEME_BUFFER_CONFIG_FILE + " File."); - } + final PropertiesParser shemeBufferConfig = new PropertiesParser(SCHEME_BUFFER_CONFIG_FILE); + + BUFFER_MAX_SCHEMES = shemeBufferConfig.getInt("BufferMaxSchemesPerChar", 4); + BUFFER_STATIC_BUFF_COST = shemeBufferConfig.getInt("BufferStaticCostPerBuff", -1); } public static void loadOfflineConfig() { - try - { - final Properties OfflineSettings = new Properties(); - final InputStream is = new FileInputStream(new File(OFFLINE_CONFIG_FILE)); - OfflineSettings.load(is); - is.close(); - - OFFLINE_TRADE_ENABLE = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineTradeEnable", "false")); - OFFLINE_CRAFT_ENABLE = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineCraftEnable", "false")); - OFFLINE_SET_NAME_COLOR = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineNameColorEnable", "false")); - OFFLINE_NAME_COLOR = Integer.decode("0x" + OfflineSettings.getProperty("OfflineNameColor", "ff00ff")); - - OFFLINE_MODE_IN_PEACE_ZONE = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineModeInPeaceZone", "false")); - OFFLINE_MODE_SET_INVULNERABLE = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineModeSetInvulnerable", "false")); - - OFFLINE_COMMAND1 = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineCommand1", "true")); - OFFLINE_COMMAND2 = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineCommand2", "false")); - OFFLINE_LOGOUT = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineLogout", "false")); - OFFLINE_SLEEP_EFFECT = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineSleepEffect", "true")); - - RESTORE_OFFLINERS = Boolean.parseBoolean(OfflineSettings.getProperty("RestoreOffliners", "false")); - OFFLINE_MAX_DAYS = Integer.parseInt(OfflineSettings.getProperty("OfflineMaxDays", "10")); - OFFLINE_DISCONNECT_FINISHED = Boolean.parseBoolean(OfflineSettings.getProperty("OfflineDisconnectFinished", "true")); - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + OFFLINE_CONFIG_FILE + " File."); - } + final PropertiesParser offlineConfig = new PropertiesParser(OFFLINE_CONFIG_FILE); + + OFFLINE_TRADE_ENABLE = offlineConfig.getBoolean("OfflineTradeEnable", false); + OFFLINE_CRAFT_ENABLE = offlineConfig.getBoolean("OfflineCraftEnable", false); + OFFLINE_SET_NAME_COLOR = offlineConfig.getBoolean("OfflineNameColorEnable", false); + OFFLINE_NAME_COLOR = Integer.decode("0x" + offlineConfig.getString("OfflineNameColor", "ff00ff")); + + OFFLINE_MODE_IN_PEACE_ZONE = offlineConfig.getBoolean("OfflineModeInPeaceZone", false); + OFFLINE_MODE_SET_INVULNERABLE = offlineConfig.getBoolean("OfflineModeSetInvulnerable", false); + + OFFLINE_COMMAND1 = offlineConfig.getBoolean("OfflineCommand1", true); + OFFLINE_COMMAND2 = offlineConfig.getBoolean("OfflineCommand2", false); + OFFLINE_LOGOUT = offlineConfig.getBoolean("OfflineLogout", false); + OFFLINE_SLEEP_EFFECT = offlineConfig.getBoolean("OfflineSleepEffect", true); + + RESTORE_OFFLINERS = offlineConfig.getBoolean("RestoreOffliners", false); + OFFLINE_MAX_DAYS = offlineConfig.getInt("OfflineMaxDays", 10); + OFFLINE_DISCONNECT_FINISHED = offlineConfig.getBoolean("OfflineDisconnectFinished", true); } public static void loadDMConfig() { - try + final PropertiesParser dmConfig = new PropertiesParser(EVENT_DM_CONFIG_FILE); + + DM_ALLOW_INTERFERENCE = dmConfig.getBoolean("DMAllowInterference", false); + DM_ALLOW_POTIONS = dmConfig.getBoolean("DMAllowPotions", false); + DM_ALLOW_SUMMON = dmConfig.getBoolean("DMAllowSummon", false); + DM_JOIN_CURSED = dmConfig.getBoolean("DMJoinWithCursedWeapon", false); + DM_ON_START_REMOVE_ALL_EFFECTS = dmConfig.getBoolean("DMOnStartRemoveAllEffects", true); + DM_ON_START_UNSUMMON_PET = dmConfig.getBoolean("DMOnStartUnsummonPet", true); + DM_REVIVE_DELAY = dmConfig.getLong("DMReviveDelay", 20000); + if (DM_REVIVE_DELAY < 1000) { - final Properties DMSettings = new Properties(); - final InputStream is = new FileInputStream(new File(EVENT_DM_CONFIG_FILE)); - DMSettings.load(is); - is.close(); - - DM_ALLOW_INTERFERENCE = Boolean.parseBoolean(DMSettings.getProperty("DMAllowInterference", "false")); - DM_ALLOW_POTIONS = Boolean.parseBoolean(DMSettings.getProperty("DMAllowPotions", "false")); - DM_ALLOW_SUMMON = Boolean.parseBoolean(DMSettings.getProperty("DMAllowSummon", "false")); - DM_JOIN_CURSED = Boolean.parseBoolean(DMSettings.getProperty("DMJoinWithCursedWeapon", "false")); - DM_ON_START_REMOVE_ALL_EFFECTS = Boolean.parseBoolean(DMSettings.getProperty("DMOnStartRemoveAllEffects", "true")); - DM_ON_START_UNSUMMON_PET = Boolean.parseBoolean(DMSettings.getProperty("DMOnStartUnsummonPet", "true")); - DM_REVIVE_DELAY = Long.parseLong(DMSettings.getProperty("DMReviveDelay", "20000")); - if (DM_REVIVE_DELAY < 1000) - { - DM_REVIVE_DELAY = 1000; // can't be set less then 1 second - } - - DM_REVIVE_RECOVERY = Boolean.parseBoolean(DMSettings.getProperty("DMReviveRecovery", "false")); - - DM_COMMAND = Boolean.parseBoolean(DMSettings.getProperty("DMCommand", "false")); - DM_ENABLE_KILL_REWARD = Boolean.parseBoolean(DMSettings.getProperty("DMEnableKillReward", "false")); - DM_KILL_REWARD_ID = Integer.parseInt(DMSettings.getProperty("DMKillRewardID", "6392")); - DM_KILL_REWARD_AMOUNT = Integer.parseInt(DMSettings.getProperty("DMKillRewardAmount", "1")); - - DM_ANNOUNCE_REWARD = Boolean.parseBoolean(DMSettings.getProperty("DMAnnounceReward", "false")); - DM_SPAWN_OFFSET = Integer.parseInt(DMSettings.getProperty("DMSpawnOffset", "100")); - - DM_STATS_LOGGER = Boolean.parseBoolean(DMSettings.getProperty("DMStatsLogger", "true")); - - DM_ALLOW_HEALER_CLASSES = Boolean.parseBoolean(DMSettings.getProperty("DMAllowedHealerClasses", "true")); - - DM_REMOVE_BUFFS_ON_DIE = Boolean.parseBoolean(DMSettings.getProperty("DMRemoveBuffsOnPlayerDie", "false")); - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + EVENT_DM_CONFIG_FILE + " File."); + DM_REVIVE_DELAY = 1000; // can't be set less then 1 second } + + DM_REVIVE_RECOVERY = dmConfig.getBoolean("DMReviveRecovery", false); + + DM_COMMAND = dmConfig.getBoolean("DMCommand", false); + DM_ENABLE_KILL_REWARD = dmConfig.getBoolean("DMEnableKillReward", false); + DM_KILL_REWARD_ID = dmConfig.getInt("DMKillRewardID", 6392); + DM_KILL_REWARD_AMOUNT = dmConfig.getInt("DMKillRewardAmount", 1); + + DM_ANNOUNCE_REWARD = dmConfig.getBoolean("DMAnnounceReward", false); + DM_SPAWN_OFFSET = dmConfig.getInt("DMSpawnOffset", 100); + + DM_STATS_LOGGER = dmConfig.getBoolean("DMStatsLogger", true); + + DM_ALLOW_HEALER_CLASSES = dmConfig.getBoolean("DMAllowedHealerClasses", true); + + DM_REMOVE_BUFFS_ON_DIE = dmConfig.getBoolean("DMRemoveBuffsOnPlayerDie", false); } public static void loadCTFConfig() { - try - { - final Properties CTFSettings = new Properties(); - final InputStream is = new FileInputStream(new File(EVENT_CTF_CONFIG_FILE)); - CTFSettings.load(is); - is.close(); - - CTF_EVEN_TEAMS = CTFSettings.getProperty("CTFEvenTeams", "BALANCE"); - CTF_ALLOW_INTERFERENCE = Boolean.parseBoolean(CTFSettings.getProperty("CTFAllowInterference", "false")); - CTF_ALLOW_POTIONS = Boolean.parseBoolean(CTFSettings.getProperty("CTFAllowPotions", "false")); - CTF_ALLOW_SUMMON = Boolean.parseBoolean(CTFSettings.getProperty("CTFAllowSummon", "false")); - CTF_ON_START_REMOVE_ALL_EFFECTS = Boolean.parseBoolean(CTFSettings.getProperty("CTFOnStartRemoveAllEffects", "true")); - CTF_ON_START_UNSUMMON_PET = Boolean.parseBoolean(CTFSettings.getProperty("CTFOnStartUnsummonPet", "true")); - CTF_ANNOUNCE_TEAM_STATS = Boolean.parseBoolean(CTFSettings.getProperty("CTFAnnounceTeamStats", "false")); - CTF_ANNOUNCE_REWARD = Boolean.parseBoolean(CTFSettings.getProperty("CTFAnnounceReward", "false")); - CTF_JOIN_CURSED = Boolean.parseBoolean(CTFSettings.getProperty("CTFJoinWithCursedWeapon", "true")); - CTF_REVIVE_RECOVERY = Boolean.parseBoolean(CTFSettings.getProperty("CTFReviveRecovery", "false")); - CTF_COMMAND = Boolean.parseBoolean(CTFSettings.getProperty("CTFCommand", "true")); - CTF_AURA = Boolean.parseBoolean(CTFSettings.getProperty("CTFAura", "true")); - - CTF_STATS_LOGGER = Boolean.parseBoolean(CTFSettings.getProperty("CTFStatsLogger", "true")); - - CTF_SPAWN_OFFSET = Integer.parseInt(CTFSettings.getProperty("CTFSpawnOffset", "100")); - - CTF_REMOVE_BUFFS_ON_DIE = Boolean.parseBoolean(CTFSettings.getProperty("CTFRemoveBuffsOnPlayerDie", "false")); - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + EVENT_CTF_CONFIG_FILE + " File."); - } + final PropertiesParser ctfConfig = new PropertiesParser(EVENT_CTF_CONFIG_FILE); + + CTF_EVEN_TEAMS = ctfConfig.getString("CTFEvenTeams", "BALANCE"); + CTF_ALLOW_INTERFERENCE = ctfConfig.getBoolean("CTFAllowInterference", false); + CTF_ALLOW_POTIONS = ctfConfig.getBoolean("CTFAllowPotions", false); + CTF_ALLOW_SUMMON = ctfConfig.getBoolean("CTFAllowSummon", false); + CTF_ON_START_REMOVE_ALL_EFFECTS = ctfConfig.getBoolean("CTFOnStartRemoveAllEffects", true); + CTF_ON_START_UNSUMMON_PET = ctfConfig.getBoolean("CTFOnStartUnsummonPet", true); + CTF_ANNOUNCE_TEAM_STATS = ctfConfig.getBoolean("CTFAnnounceTeamStats", false); + CTF_ANNOUNCE_REWARD = ctfConfig.getBoolean("CTFAnnounceReward", false); + CTF_JOIN_CURSED = ctfConfig.getBoolean("CTFJoinWithCursedWeapon", true); + CTF_REVIVE_RECOVERY = ctfConfig.getBoolean("CTFReviveRecovery", false); + CTF_COMMAND = ctfConfig.getBoolean("CTFCommand", true); + CTF_AURA = ctfConfig.getBoolean("CTFAura", true); + + CTF_STATS_LOGGER = ctfConfig.getBoolean("CTFStatsLogger", true); + + CTF_SPAWN_OFFSET = ctfConfig.getInt("CTFSpawnOffset", 100); + + CTF_REMOVE_BUFFS_ON_DIE = ctfConfig.getBoolean("CTFRemoveBuffsOnPlayerDie", false); } public static void loadCustomServerConfig() { - try + final PropertiesParser customServerConfig = new PropertiesParser(OTHER_CONFIG_FILE); + + /** Custom Tables **/ + CUSTOM_SPAWNLIST_TABLE = customServerConfig.getBoolean("CustomSpawnlistTable", true); + SAVE_GMSPAWN_ON_CUSTOM = customServerConfig.getBoolean("SaveGmSpawnOnCustom", true); + DELETE_GMSPAWN_ON_CUSTOM = customServerConfig.getBoolean("DeleteGmSpawnOnCustom", true); + + ONLINE_PLAYERS_ON_LOGIN = customServerConfig.getBoolean("OnlineOnLogin", false); + + /** Protector **/ + PROTECTOR_PLAYER_PK = customServerConfig.getBoolean("ProtectorPlayerPK", false); + PROTECTOR_PLAYER_PVP = customServerConfig.getBoolean("ProtectorPlayerPVP", false); + PROTECTOR_RADIUS_ACTION = customServerConfig.getInt("ProtectorRadiusAction", 500); + PROTECTOR_SKILLID = customServerConfig.getInt("ProtectorSkillId", 1069); + PROTECTOR_SKILLLEVEL = customServerConfig.getInt("ProtectorSkillLevel", 42); + PROTECTOR_SKILLTIME = customServerConfig.getInt("ProtectorSkillTime", 800); + PROTECTOR_MESSAGE = customServerConfig.getString("ProtectorMessage", "Protector, not spawnkilling here, go read the rules !!!"); + + /** Donator color name **/ + DONATOR_NAME_COLOR_ENABLED = customServerConfig.getBoolean("DonatorNameColorEnabled", false); + DONATOR_NAME_COLOR = Integer.decode("0x" + customServerConfig.getString("DonatorColorName", "00FFFF")); + DONATOR_TITLE_COLOR = Integer.decode("0x" + customServerConfig.getString("DonatorTitleColor", "00FF00")); + DONATOR_XPSP_RATE = customServerConfig.getFloat("DonatorXpSpRate", 1.5f); + DONATOR_ADENA_RATE = customServerConfig.getFloat("DonatorAdenaRate", 1.5f); + DONATOR_DROP_RATE = customServerConfig.getFloat("DonatorDropRate", 1.5f); + DONATOR_SPOIL_RATE = customServerConfig.getFloat("DonatorSpoilRate", 1.5f); + + /** Welcome Htm **/ + WELCOME_HTM = customServerConfig.getBoolean("WelcomeHtm", false); + + /** Server Name **/ + ALT_SERVER_NAME_ENABLED = customServerConfig.getBoolean("ServerNameEnabled", false); + ANNOUNCE_TO_ALL_SPAWN_RB = customServerConfig.getBoolean("AnnounceToAllSpawnRb", false); + ANNOUNCE_TRY_BANNED_ACCOUNT = customServerConfig.getBoolean("AnnounceTryBannedAccount", false); + ALT_Server_Name = customServerConfig.getString("ServerName", ""); + DIFFERENT_Z_CHANGE_OBJECT = customServerConfig.getInt("DifferentZchangeObject", 650); + DIFFERENT_Z_NEW_MOVIE = customServerConfig.getInt("DifferentZnewmovie", 1000); + + ALLOW_SIMPLE_STATS_VIEW = customServerConfig.getBoolean("AllowSimpleStatsView", false); + ALLOW_DETAILED_STATS_VIEW = customServerConfig.getBoolean("AllowDetailedStatsView", false); + ALLOW_ONLINE_VIEW = customServerConfig.getBoolean("AllowOnlineView", false); + + KEEP_SUBCLASS_SKILLS = customServerConfig.getBoolean("KeepSubClassSkills", false); + + ALLOWED_SKILLS = customServerConfig.getString("AllowedSkills", "541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,617,618,619"); + ALLOWED_SKILLS_LIST = new ArrayList<>(); + for (String id : ALLOWED_SKILLS.trim().split(",")) { - final Properties CustomServerSettings = new Properties(); - final InputStream is = new FileInputStream(new File(OTHER_CONFIG_FILE)); - CustomServerSettings.load(is); - is.close(); - - /** Custom Tables **/ - CUSTOM_SPAWNLIST_TABLE = Boolean.parseBoolean(CustomServerSettings.getProperty("CustomSpawnlistTable", "true")); - SAVE_GMSPAWN_ON_CUSTOM = Boolean.parseBoolean(CustomServerSettings.getProperty("SaveGmSpawnOnCustom", "true")); - DELETE_GMSPAWN_ON_CUSTOM = Boolean.parseBoolean(CustomServerSettings.getProperty("DeleteGmSpawnOnCustom", "true")); - - ONLINE_PLAYERS_ON_LOGIN = Boolean.parseBoolean(CustomServerSettings.getProperty("OnlineOnLogin", "false")); - - /** Protector **/ - PROTECTOR_PLAYER_PK = Boolean.parseBoolean(CustomServerSettings.getProperty("ProtectorPlayerPK", "false")); - PROTECTOR_PLAYER_PVP = Boolean.parseBoolean(CustomServerSettings.getProperty("ProtectorPlayerPVP", "false")); - PROTECTOR_RADIUS_ACTION = Integer.parseInt(CustomServerSettings.getProperty("ProtectorRadiusAction", "500")); - PROTECTOR_SKILLID = Integer.parseInt(CustomServerSettings.getProperty("ProtectorSkillId", "1069")); - PROTECTOR_SKILLLEVEL = Integer.parseInt(CustomServerSettings.getProperty("ProtectorSkillLevel", "42")); - PROTECTOR_SKILLTIME = Integer.parseInt(CustomServerSettings.getProperty("ProtectorSkillTime", "800")); - PROTECTOR_MESSAGE = CustomServerSettings.getProperty("ProtectorMessage", "Protector, not spawnkilling here, go read the rules !!!"); - - /** Donator color name **/ - DONATOR_NAME_COLOR_ENABLED = Boolean.parseBoolean(CustomServerSettings.getProperty("DonatorNameColorEnabled", "false")); - DONATOR_NAME_COLOR = Integer.decode("0x" + CustomServerSettings.getProperty("DonatorColorName", "00FFFF")); - DONATOR_TITLE_COLOR = Integer.decode("0x" + CustomServerSettings.getProperty("DonatorTitleColor", "00FF00")); - DONATOR_XPSP_RATE = Float.parseFloat(CustomServerSettings.getProperty("DonatorXpSpRate", "1.5")); - DONATOR_ADENA_RATE = Float.parseFloat(CustomServerSettings.getProperty("DonatorAdenaRate", "1.5")); - DONATOR_DROP_RATE = Float.parseFloat(CustomServerSettings.getProperty("DonatorDropRate", "1.5")); - DONATOR_SPOIL_RATE = Float.parseFloat(CustomServerSettings.getProperty("DonatorSpoilRate", "1.5")); - - /** Welcome Htm **/ - WELCOME_HTM = Boolean.parseBoolean(CustomServerSettings.getProperty("WelcomeHtm", "false")); - - /** Server Name **/ - ALT_SERVER_NAME_ENABLED = Boolean.parseBoolean(CustomServerSettings.getProperty("ServerNameEnabled", "false")); - ANNOUNCE_TO_ALL_SPAWN_RB = Boolean.parseBoolean(CustomServerSettings.getProperty("AnnounceToAllSpawnRb", "false")); - ANNOUNCE_TRY_BANNED_ACCOUNT = Boolean.parseBoolean(CustomServerSettings.getProperty("AnnounceTryBannedAccount", "false")); - ALT_Server_Name = CustomServerSettings.getProperty("ServerName"); - DIFFERENT_Z_CHANGE_OBJECT = Integer.parseInt(CustomServerSettings.getProperty("DifferentZchangeObject", "650")); - DIFFERENT_Z_NEW_MOVIE = Integer.parseInt(CustomServerSettings.getProperty("DifferentZnewmovie", "1000")); - - ALLOW_SIMPLE_STATS_VIEW = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowSimpleStatsView", "false")); - ALLOW_DETAILED_STATS_VIEW = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowDetailedStatsView", "false")); - ALLOW_ONLINE_VIEW = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowOnlineView", "false")); - - KEEP_SUBCLASS_SKILLS = Boolean.parseBoolean(CustomServerSettings.getProperty("KeepSubClassSkills", "false")); - - ALLOWED_SKILLS = CustomServerSettings.getProperty("AllowedSkills", "541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,617,618,619"); - ALLOWED_SKILLS_LIST = new ArrayList<>(); - for (String id : ALLOWED_SKILLS.trim().split(",")) - { - ALLOWED_SKILLS_LIST.add(Integer.parseInt(id.trim())); - } - CASTLE_SHIELD = Boolean.parseBoolean(CustomServerSettings.getProperty("CastleShieldRestriction", "true")); - CLANHALL_SHIELD = Boolean.parseBoolean(CustomServerSettings.getProperty("ClanHallShieldRestriction", "true")); - APELLA_ARMORS = Boolean.parseBoolean(CustomServerSettings.getProperty("ApellaArmorsRestriction", "true")); - OATH_ARMORS = Boolean.parseBoolean(CustomServerSettings.getProperty("OathArmorsRestriction", "true")); - CASTLE_CROWN = Boolean.parseBoolean(CustomServerSettings.getProperty("CastleLordsCrownRestriction", "true")); - CASTLE_CIRCLETS = Boolean.parseBoolean(CustomServerSettings.getProperty("CastleCircletsRestriction", "true")); - CHAR_TITLE = Boolean.parseBoolean(CustomServerSettings.getProperty("CharTitle", "false")); - ADD_CHAR_TITLE = CustomServerSettings.getProperty("CharAddTitle", "Welcome"); - - NOBLE_CUSTOM_ITEMS = Boolean.parseBoolean(CustomServerSettings.getProperty("EnableNobleCustomItem", "true")); - NOOBLE_CUSTOM_ITEM_ID = Integer.parseInt(CustomServerSettings.getProperty("NoobleCustomItemId", "6673")); - HERO_CUSTOM_ITEMS = Boolean.parseBoolean(CustomServerSettings.getProperty("EnableHeroCustomItem", "true")); - HERO_CUSTOM_ITEM_ID = Integer.parseInt(CustomServerSettings.getProperty("HeroCustomItemId", "3481")); - HERO_CUSTOM_DAY = Integer.parseInt(CustomServerSettings.getProperty("HeroCustomDay", "0")); - - ALLOW_CREATE_LVL = Boolean.parseBoolean(CustomServerSettings.getProperty("CustomStartingLvl", "false")); - CHAR_CREATE_LVL = Integer.parseInt(CustomServerSettings.getProperty("CharLvl", "80")); - SPAWN_CHAR = Boolean.parseBoolean(CustomServerSettings.getProperty("CustomSpawn", "false")); - SPAWN_X = Integer.parseInt(CustomServerSettings.getProperty("SpawnX", "")); - SPAWN_Y = Integer.parseInt(CustomServerSettings.getProperty("SpawnY", "")); - SPAWN_Z = Integer.parseInt(CustomServerSettings.getProperty("SpawnZ", "")); - ALLOW_LOW_LEVEL_TRADE = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowLowLevelTrade", "true")); - ALLOW_HERO_SUBSKILL = Boolean.parseBoolean(CustomServerSettings.getProperty("CustomHeroSubSkill", "false")); - HERO_COUNT = Integer.parseInt(CustomServerSettings.getProperty("HeroCount", "1")); - CRUMA_TOWER_LEVEL_RESTRICT = Integer.parseInt(CustomServerSettings.getProperty("CrumaTowerLevelRestrict", "56")); - ALLOW_RAID_BOSS_PETRIFIED = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowRaidBossPetrified", "true")); - ALT_PLAYER_PROTECTION_LEVEL = Integer.parseInt(CustomServerSettings.getProperty("AltPlayerProtectionLevel", "0")); - MONSTER_RETURN_DELAY = Integer.parseInt(CustomServerSettings.getProperty("MonsterReturnDelay", "1200")); - SCROLL_STACKABLE = Boolean.parseBoolean(CustomServerSettings.getProperty("ScrollStackable", "false")); - ALLOW_CHAR_KILL_PROTECT = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowLowLvlProtect", "false")); - CLAN_LEADER_COLOR_ENABLED = Boolean.parseBoolean(CustomServerSettings.getProperty("ClanLeaderNameColorEnabled", "true")); - CLAN_LEADER_COLORED = Integer.parseInt(CustomServerSettings.getProperty("ClanLeaderColored", "1")); - CLAN_LEADER_COLOR = Integer.decode("0x" + CustomServerSettings.getProperty("ClanLeaderColor", "00FFFF")); - CLAN_LEADER_COLOR_CLAN_LEVEL = Integer.parseInt(CustomServerSettings.getProperty("ClanLeaderColorAtClanLevel", "1")); - SAVE_RAIDBOSS_STATUS_INTO_DB = Boolean.parseBoolean(CustomServerSettings.getProperty("SaveRBStatusIntoDB", "false")); - DISABLE_WEIGHT_PENALTY = Boolean.parseBoolean(CustomServerSettings.getProperty("DisableWeightPenalty", "false")); - ALLOW_FARM1_COMMAND = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowFarm1Command", "false")); - ALLOW_FARM2_COMMAND = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowFarm2Command", "false")); - ALLOW_PVP1_COMMAND = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowPvP1Command", "false")); - ALLOW_PVP2_COMMAND = Boolean.parseBoolean(CustomServerSettings.getProperty("AllowPvP2Command", "false")); - FARM1_X = Integer.parseInt(CustomServerSettings.getProperty("farm1_X", "81304")); - FARM1_Y = Integer.parseInt(CustomServerSettings.getProperty("farm1_Y", "14589")); - FARM1_Z = Integer.parseInt(CustomServerSettings.getProperty("farm1_Z", "-3469")); - PVP1_X = Integer.parseInt(CustomServerSettings.getProperty("pvp1_X", "81304")); - PVP1_Y = Integer.parseInt(CustomServerSettings.getProperty("pvp1_Y", "14589")); - PVP1_Z = Integer.parseInt(CustomServerSettings.getProperty("pvp1_Z", "-3469")); - FARM2_X = Integer.parseInt(CustomServerSettings.getProperty("farm2_X", "81304")); - FARM2_Y = Integer.parseInt(CustomServerSettings.getProperty("farm2_Y", "14589")); - FARM2_Z = Integer.parseInt(CustomServerSettings.getProperty("farm2_Z", "-3469")); - PVP2_X = Integer.parseInt(CustomServerSettings.getProperty("pvp2_X", "81304")); - PVP2_Y = Integer.parseInt(CustomServerSettings.getProperty("pvp2_Y", "14589")); - PVP2_Z = Integer.parseInt(CustomServerSettings.getProperty("pvp2_Z", "-3469")); - FARM1_CUSTOM_MESSAGE = CustomServerSettings.getProperty("Farm1CustomMeesage", "You have been teleported to Farm Zone 1!"); - FARM2_CUSTOM_MESSAGE = CustomServerSettings.getProperty("Farm2CustomMeesage", "You have been teleported to Farm Zone 2!"); - PVP1_CUSTOM_MESSAGE = CustomServerSettings.getProperty("PvP1CustomMeesage", "You have been teleported to PvP Zone 1!"); - PVP2_CUSTOM_MESSAGE = CustomServerSettings.getProperty("PvP2CustomMeesage", "You have been teleported to PvP Zone 2!"); - - GM_TRADE_RESTRICTED_ITEMS = Boolean.parseBoolean(CustomServerSettings.getProperty("GMTradeRestrictedItems", "false")); - GM_RESTART_FIGHTING = Boolean.parseBoolean(CustomServerSettings.getProperty("GMRestartFighting", "false")); - PM_MESSAGE_ON_START = Boolean.parseBoolean(CustomServerSettings.getProperty("PMWelcomeShow", "false")); - SERVER_TIME_ON_START = Boolean.parseBoolean(CustomServerSettings.getProperty("ShowServerTimeOnStart", "false")); - PM_SERVER_NAME = CustomServerSettings.getProperty("PMServerName", "Server"); - PM_TEXT1 = CustomServerSettings.getProperty("PMText1", "Have Fun and Nice Stay on"); - PM_TEXT2 = CustomServerSettings.getProperty("PMText2", "Vote for us every 24h"); - NEW_PLAYER_EFFECT = Boolean.parseBoolean(CustomServerSettings.getProperty("NewPlayerEffect", "true")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + OTHER_CONFIG_FILE + " File."); + ALLOWED_SKILLS_LIST.add(Integer.parseInt(id.trim())); } + CASTLE_SHIELD = customServerConfig.getBoolean("CastleShieldRestriction", true); + CLANHALL_SHIELD = customServerConfig.getBoolean("ClanHallShieldRestriction", true); + APELLA_ARMORS = customServerConfig.getBoolean("ApellaArmorsRestriction", true); + OATH_ARMORS = customServerConfig.getBoolean("OathArmorsRestriction", true); + CASTLE_CROWN = customServerConfig.getBoolean("CastleLordsCrownRestriction", true); + CASTLE_CIRCLETS = customServerConfig.getBoolean("CastleCircletsRestriction", true); + CHAR_TITLE = customServerConfig.getBoolean("CharTitle", false); + ADD_CHAR_TITLE = customServerConfig.getString("CharAddTitle", "Welcome"); + + NOBLE_CUSTOM_ITEMS = customServerConfig.getBoolean("EnableNobleCustomItem", true); + NOOBLE_CUSTOM_ITEM_ID = customServerConfig.getInt("NoobleCustomItemId", 6673); + HERO_CUSTOM_ITEMS = customServerConfig.getBoolean("EnableHeroCustomItem", true); + HERO_CUSTOM_ITEM_ID = customServerConfig.getInt("HeroCustomItemId", 3481); + HERO_CUSTOM_DAY = customServerConfig.getInt("HeroCustomDay", 0); + + ALLOW_CREATE_LVL = customServerConfig.getBoolean("CustomStartingLvl", false); + CHAR_CREATE_LVL = customServerConfig.getInt("CharLvl", 80); + SPAWN_CHAR = customServerConfig.getBoolean("CustomSpawn", false); + SPAWN_X = customServerConfig.getInt("SpawnX", 50821); + SPAWN_Y = customServerConfig.getInt("SpawnY", 186527); + SPAWN_Z = customServerConfig.getInt("SpawnZ", -3625); + ALLOW_LOW_LEVEL_TRADE = customServerConfig.getBoolean("AllowLowLevelTrade", true); + ALLOW_HERO_SUBSKILL = customServerConfig.getBoolean("CustomHeroSubSkill", false); + HERO_COUNT = customServerConfig.getInt("HeroCount", 1); + CRUMA_TOWER_LEVEL_RESTRICT = customServerConfig.getInt("CrumaTowerLevelRestrict", 56); + ALLOW_RAID_BOSS_PETRIFIED = customServerConfig.getBoolean("AllowRaidBossPetrified", true); + ALT_PLAYER_PROTECTION_LEVEL = customServerConfig.getInt("AltPlayerProtectionLevel", 0); + MONSTER_RETURN_DELAY = customServerConfig.getInt("MonsterReturnDelay", 1200); + SCROLL_STACKABLE = customServerConfig.getBoolean("ScrollStackable", false); + ALLOW_CHAR_KILL_PROTECT = customServerConfig.getBoolean("AllowLowLvlProtect", false); + CLAN_LEADER_COLOR_ENABLED = customServerConfig.getBoolean("ClanLeaderNameColorEnabled", true); + CLAN_LEADER_COLORED = customServerConfig.getInt("ClanLeaderColored", 1); + CLAN_LEADER_COLOR = Integer.decode("0x" + customServerConfig.getString("ClanLeaderColor", "00FFFF")); + CLAN_LEADER_COLOR_CLAN_LEVEL = customServerConfig.getInt("ClanLeaderColorAtClanLevel", 1); + SAVE_RAIDBOSS_STATUS_INTO_DB = customServerConfig.getBoolean("SaveRBStatusIntoDB", false); + DISABLE_WEIGHT_PENALTY = customServerConfig.getBoolean("DisableWeightPenalty", false); + ALLOW_FARM1_COMMAND = customServerConfig.getBoolean("AllowFarm1Command", false); + ALLOW_FARM2_COMMAND = customServerConfig.getBoolean("AllowFarm2Command", false); + ALLOW_PVP1_COMMAND = customServerConfig.getBoolean("AllowPvP1Command", false); + ALLOW_PVP2_COMMAND = customServerConfig.getBoolean("AllowPvP2Command", false); + FARM1_X = customServerConfig.getInt("farm1_X", 81304); + FARM1_Y = customServerConfig.getInt("farm1_Y", 14589); + FARM1_Z = customServerConfig.getInt("farm1_Z", -3469); + PVP1_X = customServerConfig.getInt("pvp1_X", 81304); + PVP1_Y = customServerConfig.getInt("pvp1_Y", 14589); + PVP1_Z = customServerConfig.getInt("pvp1_Z", -3469); + FARM2_X = customServerConfig.getInt("farm2_X", 81304); + FARM2_Y = customServerConfig.getInt("farm2_Y", 14589); + FARM2_Z = customServerConfig.getInt("farm2_Z", -3469); + PVP2_X = customServerConfig.getInt("pvp2_X", 81304); + PVP2_Y = customServerConfig.getInt("pvp2_Y", 14589); + PVP2_Z = customServerConfig.getInt("pvp2_Z", -3469); + FARM1_CUSTOM_MESSAGE = customServerConfig.getString("Farm1CustomMeesage", "You have been teleported to Farm Zone 1!"); + FARM2_CUSTOM_MESSAGE = customServerConfig.getString("Farm2CustomMeesage", "You have been teleported to Farm Zone 2!"); + PVP1_CUSTOM_MESSAGE = customServerConfig.getString("PvP1CustomMeesage", "You have been teleported to PvP Zone 1!"); + PVP2_CUSTOM_MESSAGE = customServerConfig.getString("PvP2CustomMeesage", "You have been teleported to PvP Zone 2!"); + + GM_TRADE_RESTRICTED_ITEMS = customServerConfig.getBoolean("GMTradeRestrictedItems", false); + GM_RESTART_FIGHTING = customServerConfig.getBoolean("GMRestartFighting", false); + PM_MESSAGE_ON_START = customServerConfig.getBoolean("PMWelcomeShow", false); + SERVER_TIME_ON_START = customServerConfig.getBoolean("ShowServerTimeOnStart", false); + PM_SERVER_NAME = customServerConfig.getString("PMServerName", "Server"); + PM_TEXT1 = customServerConfig.getString("PMText1", "Have Fun and Nice Stay on"); + PM_TEXT2 = customServerConfig.getString("PMText2", "Vote for us every 24h"); + NEW_PLAYER_EFFECT = customServerConfig.getBoolean("NewPlayerEffect", true); } public static void loadPvpConfig() { - try + final PropertiesParser pvpConfig = new PropertiesParser(PVP_CONFIG_FILE); + + KARMA_MIN_KARMA = pvpConfig.getInt("MinKarma", 240); + KARMA_MAX_KARMA = pvpConfig.getInt("MaxKarma", 10000); + KARMA_XP_DIVIDER = pvpConfig.getInt("XPDivider", 260); + KARMA_LOST_BASE = pvpConfig.getInt("BaseKarmaLost", 0); + + KARMA_DROP_GM = pvpConfig.getBoolean("CanGMDropEquipment", false); + KARMA_AWARD_PK_KILL = pvpConfig.getBoolean("AwardPKKillPVPPoint", true); + + KARMA_PK_LIMIT = pvpConfig.getInt("MinimumPKRequiredToDrop", 5); + + KARMA_NONDROPPABLE_PET_ITEMS = pvpConfig.getString("ListOfPetItems", "2375,3500,3501,3502,4422,4423,4424,4425,6648,6649,6650"); + KARMA_NONDROPPABLE_ITEMS = pvpConfig.getString("ListOfNonDroppableItems", "57,1147,425,1146,461,10,2368,7,6,2370,2369,6842,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621"); + + KARMA_LIST_NONDROPPABLE_PET_ITEMS = new ArrayList<>(); + for (String id : KARMA_NONDROPPABLE_PET_ITEMS.split(",")) { - final Properties pvpSettings = new Properties(); - final InputStream is = new FileInputStream(new File(PVP_CONFIG_FILE)); - pvpSettings.load(is); - is.close(); - - /* KARMA SYSTEM */ - KARMA_MIN_KARMA = Integer.parseInt(pvpSettings.getProperty("MinKarma", "240")); - KARMA_MAX_KARMA = Integer.parseInt(pvpSettings.getProperty("MaxKarma", "10000")); - KARMA_XP_DIVIDER = Integer.parseInt(pvpSettings.getProperty("XPDivider", "260")); - KARMA_LOST_BASE = Integer.parseInt(pvpSettings.getProperty("BaseKarmaLost", "0")); - - KARMA_DROP_GM = Boolean.parseBoolean(pvpSettings.getProperty("CanGMDropEquipment", "false")); - KARMA_AWARD_PK_KILL = Boolean.parseBoolean(pvpSettings.getProperty("AwardPKKillPVPPoint", "true")); - - KARMA_PK_LIMIT = Integer.parseInt(pvpSettings.getProperty("MinimumPKRequiredToDrop", "5")); - - KARMA_NONDROPPABLE_PET_ITEMS = pvpSettings.getProperty("ListOfPetItems", "2375,3500,3501,3502,4422,4423,4424,4425,6648,6649,6650"); - KARMA_NONDROPPABLE_ITEMS = pvpSettings.getProperty("ListOfNonDroppableItems", "57,1147,425,1146,461,10,2368,7,6,2370,2369,6842,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621"); - - KARMA_LIST_NONDROPPABLE_PET_ITEMS = new ArrayList<>(); - for (String id : KARMA_NONDROPPABLE_PET_ITEMS.split(",")) - { - KARMA_LIST_NONDROPPABLE_PET_ITEMS.add(Integer.parseInt(id)); - } - - KARMA_LIST_NONDROPPABLE_ITEMS = new ArrayList<>(); - for (String id : KARMA_NONDROPPABLE_ITEMS.split(",")) - { - KARMA_LIST_NONDROPPABLE_ITEMS.add(Integer.parseInt(id)); - } - - PVP_NORMAL_TIME = Integer.parseInt(pvpSettings.getProperty("PvPVsNormalTime", "15000")); - PVP_PVP_TIME = Integer.parseInt(pvpSettings.getProperty("PvPVsPvPTime", "30000")); - ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = Boolean.parseBoolean(pvpSettings.getProperty("AltKarmaPlayerCanBeKilledInPeaceZone", "false")); - ALT_GAME_KARMA_PLAYER_CAN_SHOP = Boolean.parseBoolean(pvpSettings.getProperty("AltKarmaPlayerCanShop", "true")); - ALT_GAME_KARMA_PLAYER_CAN_USE_GK = Boolean.parseBoolean(pvpSettings.getProperty("AltKarmaPlayerCanUseGK", "false")); - ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = Boolean.parseBoolean(pvpSettings.getProperty("AltKarmaPlayerCanTeleport", "true")); - ALT_GAME_KARMA_PLAYER_CAN_TRADE = Boolean.parseBoolean(pvpSettings.getProperty("AltKarmaPlayerCanTrade", "true")); - ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = Boolean.parseBoolean(pvpSettings.getProperty("AltKarmaPlayerCanUseWareHouse", "true")); - ALT_KARMA_TELEPORT_TO_FLORAN = Boolean.parseBoolean(pvpSettings.getProperty("AltKarmaTeleportToFloran", "false")); - /** Custom Reword **/ - PVP_REWARD_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("PvpRewardEnabled", "false")); - PVP_REWARD_ID = Integer.parseInt(pvpSettings.getProperty("PvpRewardItemId", "6392")); - PVP_REWARD_AMOUNT = Integer.parseInt(pvpSettings.getProperty("PvpRewardAmmount", "1")); - - PK_REWARD_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("PKRewardEnabled", "false")); - PK_REWARD_ID = Integer.parseInt(pvpSettings.getProperty("PKRewardItemId", "6392")); - PK_REWARD_AMOUNT = Integer.parseInt(pvpSettings.getProperty("PKRewardAmmount", "1")); - - REWARD_PROTECT = Integer.parseInt(pvpSettings.getProperty("RewardProtect", "1")); - - // PVP Name Color System configs - Start - PVP_COLOR_SYSTEM_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("EnablePvPColorSystem", "false")); - PVP_AMOUNT1 = Integer.parseInt(pvpSettings.getProperty("PvpAmount1", "500")); - PVP_AMOUNT2 = Integer.parseInt(pvpSettings.getProperty("PvpAmount2", "1000")); - PVP_AMOUNT3 = Integer.parseInt(pvpSettings.getProperty("PvpAmount3", "1500")); - PVP_AMOUNT4 = Integer.parseInt(pvpSettings.getProperty("PvpAmount4", "2500")); - PVP_AMOUNT5 = Integer.parseInt(pvpSettings.getProperty("PvpAmount5", "5000")); - NAME_COLOR_FOR_PVP_AMOUNT1 = Integer.decode("0x" + pvpSettings.getProperty("ColorForAmount1", "00FF00")); - NAME_COLOR_FOR_PVP_AMOUNT2 = Integer.decode("0x" + pvpSettings.getProperty("ColorForAmount2", "00FF00")); - NAME_COLOR_FOR_PVP_AMOUNT3 = Integer.decode("0x" + pvpSettings.getProperty("ColorForAmount3", "00FF00")); - NAME_COLOR_FOR_PVP_AMOUNT4 = Integer.decode("0x" + pvpSettings.getProperty("ColorForAmount4", "00FF00")); - NAME_COLOR_FOR_PVP_AMOUNT5 = Integer.decode("0x" + pvpSettings.getProperty("ColorForAmount5", "00FF00")); - - // PK Title Color System configs - Start - PK_COLOR_SYSTEM_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("EnablePkColorSystem", "false")); - PK_AMOUNT1 = Integer.parseInt(pvpSettings.getProperty("PkAmount1", "500")); - PK_AMOUNT2 = Integer.parseInt(pvpSettings.getProperty("PkAmount2", "1000")); - PK_AMOUNT3 = Integer.parseInt(pvpSettings.getProperty("PkAmount3", "1500")); - PK_AMOUNT4 = Integer.parseInt(pvpSettings.getProperty("PkAmount4", "2500")); - PK_AMOUNT5 = Integer.parseInt(pvpSettings.getProperty("PkAmount5", "5000")); - TITLE_COLOR_FOR_PK_AMOUNT1 = Integer.decode("0x" + pvpSettings.getProperty("TitleForAmount1", "00FF00")); - TITLE_COLOR_FOR_PK_AMOUNT2 = Integer.decode("0x" + pvpSettings.getProperty("TitleForAmount2", "00FF00")); - TITLE_COLOR_FOR_PK_AMOUNT3 = Integer.decode("0x" + pvpSettings.getProperty("TitleForAmount3", "00FF00")); - TITLE_COLOR_FOR_PK_AMOUNT4 = Integer.decode("0x" + pvpSettings.getProperty("TitleForAmount4", "00FF00")); - TITLE_COLOR_FOR_PK_AMOUNT5 = Integer.decode("0x" + pvpSettings.getProperty("TitleForAmount5", "00FF00")); - - FLAGED_PLAYER_USE_BUFFER = Boolean.parseBoolean(pvpSettings.getProperty("AltKarmaFlagPlayerCanUseBuffer", "false")); - - FLAGED_PLAYER_CAN_USE_GK = Boolean.parseBoolean(pvpSettings.getProperty("FlaggedPlayerCanUseGK", "false")); - PVPEXPSP_SYSTEM = Boolean.parseBoolean(pvpSettings.getProperty("AllowAddExpSpAtPvP", "false")); - ADD_EXP = Integer.parseInt(pvpSettings.getProperty("AddExpAtPvp", "0")); - ADD_SP = Integer.parseInt(pvpSettings.getProperty("AddSpAtPvp", "0")); - ALLOW_SOE_IN_PVP = Boolean.parseBoolean(pvpSettings.getProperty("AllowSoEInPvP", "true")); - ALLOW_POTS_IN_PVP = Boolean.parseBoolean(pvpSettings.getProperty("AllowPotsInPvP", "true")); - /** Enable Pk Info mod. Displays number of times player has killed other */ - ENABLE_PK_INFO = Boolean.parseBoolean(pvpSettings.getProperty("EnablePkInfo", "false")); - // Get the AnnounceAllKill, AnnouncePvpKill and AnnouncePkKill values - ANNOUNCE_ALL_KILL = Boolean.parseBoolean(pvpSettings.getProperty("AnnounceAllKill", "false")); - ANNOUNCE_PVP_KILL = Boolean.parseBoolean(pvpSettings.getProperty("AnnouncePvPKill", "false")); - ANNOUNCE_PK_KILL = Boolean.parseBoolean(pvpSettings.getProperty("AnnouncePkKill", "false")); - - DUEL_SPAWN_X = Integer.parseInt(pvpSettings.getProperty("DuelSpawnX", "-102495")); - DUEL_SPAWN_Y = Integer.parseInt(pvpSettings.getProperty("DuelSpawnY", "-209023")); - DUEL_SPAWN_Z = Integer.parseInt(pvpSettings.getProperty("DuelSpawnZ", "-3326")); - PVP_PK_TITLE = Boolean.parseBoolean(pvpSettings.getProperty("PvpPkTitle", "false")); - PVP_TITLE_PREFIX = pvpSettings.getProperty("PvPTitlePrefix", " "); - PK_TITLE_PREFIX = pvpSettings.getProperty("PkTitlePrefix", " | "); - - WAR_LEGEND_AURA = Boolean.parseBoolean(pvpSettings.getProperty("WarLegendAura", "false")); - KILLS_TO_GET_WAR_LEGEND_AURA = Integer.parseInt(pvpSettings.getProperty("KillsToGetWarLegendAura", "30")); - - ANTI_FARM_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmEnabled", "false")); - ANTI_FARM_CLAN_ALLY_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmClanAlly", "false")); - ANTI_FARM_LVL_DIFF_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmLvlDiff", "false")); - ANTI_FARM_MAX_LVL_DIFF = Integer.parseInt(pvpSettings.getProperty("AntiFarmMaxLvlDiff", "40")); - ANTI_FARM_PDEF_DIFF_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmPdefDiff", "false")); - ANTI_FARM_MAX_PDEF_DIFF = Integer.parseInt(pvpSettings.getProperty("AntiFarmMaxPdefDiff", "300")); - ANTI_FARM_PATK_DIFF_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmPatkDiff", "false")); - ANTI_FARM_MAX_PATK_DIFF = Integer.parseInt(pvpSettings.getProperty("AntiFarmMaxPatkDiff", "300")); - ANTI_FARM_PARTY_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmParty", "false")); - ANTI_FARM_IP_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmIP", "false")); - ANTI_FARM_SUMMON = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmSummon", "false")); + KARMA_LIST_NONDROPPABLE_PET_ITEMS.add(Integer.parseInt(id)); } - catch (Exception e) + + KARMA_LIST_NONDROPPABLE_ITEMS = new ArrayList<>(); + for (String id : KARMA_NONDROPPABLE_ITEMS.split(",")) { - e.printStackTrace(); - throw new Error("Failed to Load " + PVP_CONFIG_FILE + " File."); + KARMA_LIST_NONDROPPABLE_ITEMS.add(Integer.parseInt(id)); } + + PVP_NORMAL_TIME = pvpConfig.getInt("PvPVsNormalTime", 15000); + PVP_PVP_TIME = pvpConfig.getInt("PvPVsPvPTime", 30000); + ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = pvpConfig.getBoolean("AltKarmaPlayerCanBeKilledInPeaceZone", false); + ALT_GAME_KARMA_PLAYER_CAN_SHOP = pvpConfig.getBoolean("AltKarmaPlayerCanShop", true); + ALT_GAME_KARMA_PLAYER_CAN_USE_GK = pvpConfig.getBoolean("AltKarmaPlayerCanUseGK", false); + ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = pvpConfig.getBoolean("AltKarmaPlayerCanTeleport", true); + ALT_GAME_KARMA_PLAYER_CAN_TRADE = pvpConfig.getBoolean("AltKarmaPlayerCanTrade", true); + ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = pvpConfig.getBoolean("AltKarmaPlayerCanUseWareHouse", true); + ALT_KARMA_TELEPORT_TO_FLORAN = pvpConfig.getBoolean("AltKarmaTeleportToFloran", false); + + /** Custom Reward **/ + PVP_REWARD_ENABLED = pvpConfig.getBoolean("PvpRewardEnabled", false); + PVP_REWARD_ID = pvpConfig.getInt("PvpRewardItemId", 6392); + PVP_REWARD_AMOUNT = pvpConfig.getInt("PvpRewardAmmount", 1); + + PK_REWARD_ENABLED = pvpConfig.getBoolean("PKRewardEnabled", false); + PK_REWARD_ID = pvpConfig.getInt("PKRewardItemId", 6392); + PK_REWARD_AMOUNT = pvpConfig.getInt("PKRewardAmmount", 1); + + REWARD_PROTECT = pvpConfig.getInt("RewardProtect", 1); + + // PVP Name Color System configs - Start + PVP_COLOR_SYSTEM_ENABLED = pvpConfig.getBoolean("EnablePvPColorSystem", false); + PVP_AMOUNT1 = pvpConfig.getInt("PvpAmount1", 500); + PVP_AMOUNT2 = pvpConfig.getInt("PvpAmount2", 1000); + PVP_AMOUNT3 = pvpConfig.getInt("PvpAmount3", 1500); + PVP_AMOUNT4 = pvpConfig.getInt("PvpAmount4", 2500); + PVP_AMOUNT5 = pvpConfig.getInt("PvpAmount5", 5000); + NAME_COLOR_FOR_PVP_AMOUNT1 = Integer.decode("0x" + pvpConfig.getString("ColorForAmount1", "00FF00")); + NAME_COLOR_FOR_PVP_AMOUNT2 = Integer.decode("0x" + pvpConfig.getString("ColorForAmount2", "00FF00")); + NAME_COLOR_FOR_PVP_AMOUNT3 = Integer.decode("0x" + pvpConfig.getString("ColorForAmount3", "00FF00")); + NAME_COLOR_FOR_PVP_AMOUNT4 = Integer.decode("0x" + pvpConfig.getString("ColorForAmount4", "00FF00")); + NAME_COLOR_FOR_PVP_AMOUNT5 = Integer.decode("0x" + pvpConfig.getString("ColorForAmount5", "00FF00")); + + // PK Title Color System configs - Start + PK_COLOR_SYSTEM_ENABLED = pvpConfig.getBoolean("EnablePkColorSystem", false); + PK_AMOUNT1 = pvpConfig.getInt("PkAmount1", 500); + PK_AMOUNT2 = pvpConfig.getInt("PkAmount2", 1000); + PK_AMOUNT3 = pvpConfig.getInt("PkAmount3", 1500); + PK_AMOUNT4 = pvpConfig.getInt("PkAmount4", 2500); + PK_AMOUNT5 = pvpConfig.getInt("PkAmount5", 5000); + TITLE_COLOR_FOR_PK_AMOUNT1 = Integer.decode("0x" + pvpConfig.getString("TitleForAmount1", "00FF00")); + TITLE_COLOR_FOR_PK_AMOUNT2 = Integer.decode("0x" + pvpConfig.getString("TitleForAmount2", "00FF00")); + TITLE_COLOR_FOR_PK_AMOUNT3 = Integer.decode("0x" + pvpConfig.getString("TitleForAmount3", "00FF00")); + TITLE_COLOR_FOR_PK_AMOUNT4 = Integer.decode("0x" + pvpConfig.getString("TitleForAmount4", "00FF00")); + TITLE_COLOR_FOR_PK_AMOUNT5 = Integer.decode("0x" + pvpConfig.getString("TitleForAmount5", "00FF00")); + + FLAGED_PLAYER_USE_BUFFER = pvpConfig.getBoolean("AltKarmaFlagPlayerCanUseBuffer", false); + + FLAGED_PLAYER_CAN_USE_GK = pvpConfig.getBoolean("FlaggedPlayerCanUseGK", false); + PVPEXPSP_SYSTEM = pvpConfig.getBoolean("AllowAddExpSpAtPvP", false); + ADD_EXP = pvpConfig.getInt("AddExpAtPvp", 0); + ADD_SP = pvpConfig.getInt("AddSpAtPvp", 0); + ALLOW_SOE_IN_PVP = pvpConfig.getBoolean("AllowSoEInPvP", true); + ALLOW_POTS_IN_PVP = pvpConfig.getBoolean("AllowPotsInPvP", true); + + /** Enable Pk Info mod. Displays number of times player has killed other */ + ENABLE_PK_INFO = pvpConfig.getBoolean("EnablePkInfo", false); + + // Get the AnnounceAllKill, AnnouncePvpKill and AnnouncePkKill values + ANNOUNCE_ALL_KILL = pvpConfig.getBoolean("AnnounceAllKill", false); + ANNOUNCE_PVP_KILL = pvpConfig.getBoolean("AnnouncePvPKill", false); + ANNOUNCE_PK_KILL = pvpConfig.getBoolean("AnnouncePkKill", false); + + DUEL_SPAWN_X = pvpConfig.getInt("DuelSpawnX", -102495); + DUEL_SPAWN_Y = pvpConfig.getInt("DuelSpawnY", -209023); + DUEL_SPAWN_Z = pvpConfig.getInt("DuelSpawnZ", -3326); + PVP_PK_TITLE = pvpConfig.getBoolean("PvpPkTitle", false); + PVP_TITLE_PREFIX = pvpConfig.getString("PvPTitlePrefix", " "); + PK_TITLE_PREFIX = pvpConfig.getString("PkTitlePrefix", " | "); + + WAR_LEGEND_AURA = pvpConfig.getBoolean("WarLegendAura", false); + KILLS_TO_GET_WAR_LEGEND_AURA = pvpConfig.getInt("KillsToGetWarLegendAura", 30); + + ANTI_FARM_ENABLED = pvpConfig.getBoolean("AntiFarmEnabled", false); + ANTI_FARM_CLAN_ALLY_ENABLED = pvpConfig.getBoolean("AntiFarmClanAlly", false); + ANTI_FARM_LVL_DIFF_ENABLED = pvpConfig.getBoolean("AntiFarmLvlDiff", false); + ANTI_FARM_MAX_LVL_DIFF = pvpConfig.getInt("AntiFarmMaxLvlDiff", 40); + ANTI_FARM_PDEF_DIFF_ENABLED = pvpConfig.getBoolean("AntiFarmPdefDiff", false); + ANTI_FARM_MAX_PDEF_DIFF = pvpConfig.getInt("AntiFarmMaxPdefDiff", 300); + ANTI_FARM_PATK_DIFF_ENABLED = pvpConfig.getBoolean("AntiFarmPatkDiff", false); + ANTI_FARM_MAX_PATK_DIFF = pvpConfig.getInt("AntiFarmMaxPatkDiff", 300); + ANTI_FARM_PARTY_ENABLED = pvpConfig.getBoolean("AntiFarmParty", false); + ANTI_FARM_IP_ENABLED = pvpConfig.getBoolean("AntiFarmIP", false); + ANTI_FARM_SUMMON = pvpConfig.getBoolean("AntiFarmSummon", false); } public static void loadOlympConfig() { - try + final PropertiesParser olympiadConfig = new PropertiesParser(OLYMP_CONFIG_FILE); + + ALT_OLY_START_TIME = olympiadConfig.getInt("AltOlyStartTime", 18); + ALT_OLY_MIN = olympiadConfig.getInt("AltOlyMin", 0); + ALT_OLY_CPERIOD = olympiadConfig.getLong("AltOlyCPeriod", 21600000); + ALT_OLY_BATTLE = olympiadConfig.getLong("AltOlyBattle", 360000); + ALT_OLY_WPERIOD = olympiadConfig.getLong("AltOlyWPeriod", 604800000); + ALT_OLY_VPERIOD = olympiadConfig.getLong("AltOlyVPeriod", 86400000); + ALT_OLY_CLASSED = olympiadConfig.getInt("AltOlyClassedParticipants", 5); + ALT_OLY_NONCLASSED = olympiadConfig.getInt("AltOlyNonClassedParticipants", 9); + ALT_OLY_BATTLE_REWARD_ITEM = olympiadConfig.getInt("AltOlyBattleRewItem", 6651); + ALT_OLY_CLASSED_RITEM_C = olympiadConfig.getInt("AltOlyClassedRewItemCount", 50); + ALT_OLY_NONCLASSED_RITEM_C = olympiadConfig.getInt("AltOlyNonClassedRewItemCount", 30); + ALT_OLY_COMP_RITEM = olympiadConfig.getInt("AltOlyCompRewItem", 6651); + ALT_OLY_GP_PER_POINT = olympiadConfig.getInt("AltOlyGPPerPoint", 1000); + ALT_OLY_MIN_POINT_FOR_EXCH = olympiadConfig.getInt("AltOlyMinPointForExchange", 50); + ALT_OLY_HERO_POINTS = olympiadConfig.getInt("AltOlyHeroPoints", 100); + ALT_OLY_RESTRICTED_ITEMS = olympiadConfig.getString("AltOlyRestrictedItems", "0"); + LIST_OLY_RESTRICTED_ITEMS = new ArrayList<>(); + for (String id : ALT_OLY_RESTRICTED_ITEMS.split(",")) { - final Properties OLYMPSetting = new Properties(); - final InputStream is = new FileInputStream(new File(OLYMP_CONFIG_FILE)); - OLYMPSetting.load(is); - is.close(); - ALT_OLY_START_TIME = Integer.parseInt(OLYMPSetting.getProperty("AltOlyStartTime", "18")); - ALT_OLY_MIN = Integer.parseInt(OLYMPSetting.getProperty("AltOlyMin", "00")); - ALT_OLY_CPERIOD = Long.parseLong(OLYMPSetting.getProperty("AltOlyCPeriod", "21600000")); - ALT_OLY_BATTLE = Long.parseLong(OLYMPSetting.getProperty("AltOlyBattle", "360000")); - ALT_OLY_WPERIOD = Long.parseLong(OLYMPSetting.getProperty("AltOlyWPeriod", "604800000")); - ALT_OLY_VPERIOD = Long.parseLong(OLYMPSetting.getProperty("AltOlyVPeriod", "86400000")); - ALT_OLY_CLASSED = Integer.parseInt(OLYMPSetting.getProperty("AltOlyClassedParticipants", "5")); - ALT_OLY_NONCLASSED = Integer.parseInt(OLYMPSetting.getProperty("AltOlyNonClassedParticipants", "9")); - ALT_OLY_BATTLE_REWARD_ITEM = Integer.parseInt(OLYMPSetting.getProperty("AltOlyBattleRewItem", "6651")); - ALT_OLY_CLASSED_RITEM_C = Integer.parseInt(OLYMPSetting.getProperty("AltOlyClassedRewItemCount", "50")); - ALT_OLY_NONCLASSED_RITEM_C = Integer.parseInt(OLYMPSetting.getProperty("AltOlyNonClassedRewItemCount", "30")); - ALT_OLY_COMP_RITEM = Integer.parseInt(OLYMPSetting.getProperty("AltOlyCompRewItem", "6651")); - ALT_OLY_GP_PER_POINT = Integer.parseInt(OLYMPSetting.getProperty("AltOlyGPPerPoint", "1000")); - ALT_OLY_MIN_POINT_FOR_EXCH = Integer.parseInt(OLYMPSetting.getProperty("AltOlyMinPointForExchange", "50")); - ALT_OLY_HERO_POINTS = Integer.parseInt(OLYMPSetting.getProperty("AltOlyHeroPoints", "100")); - ALT_OLY_RESTRICTED_ITEMS = OLYMPSetting.getProperty("AltOlyRestrictedItems", "0"); - LIST_OLY_RESTRICTED_ITEMS = new ArrayList<>(); - for (String id : ALT_OLY_RESTRICTED_ITEMS.split(",")) - { - LIST_OLY_RESTRICTED_ITEMS.add(Integer.parseInt(id)); - } - ALLOW_EVENTS_DURING_OLY = Boolean.parseBoolean(OLYMPSetting.getProperty("AllowEventsDuringOly", "false")); - - ALT_OLY_RECHARGE_SKILLS = Boolean.parseBoolean(OLYMPSetting.getProperty("AltOlyRechargeSkills", "false")); - - /* Remove cubic at the enter of olympiad */ - REMOVE_CUBIC_OLYMPIAD = Boolean.parseBoolean(OLYMPSetting.getProperty("RemoveCubicOlympiad", "false")); - - ALT_OLY_NUMBER_HEROS_EACH_CLASS = Integer.parseInt(OLYMPSetting.getProperty("AltOlyNumberHerosEachClass", "1")); - ALT_OLY_LOG_FIGHTS = Boolean.parseBoolean(OLYMPSetting.getProperty("AlyOlyLogFights", "false")); - ALT_OLY_SHOW_MONTHLY_WINNERS = Boolean.parseBoolean(OLYMPSetting.getProperty("AltOlyShowMonthlyWinners", "true")); - ALT_OLY_ANNOUNCE_GAMES = Boolean.parseBoolean(OLYMPSetting.getProperty("AltOlyAnnounceGames", "true")); - LIST_OLY_RESTRICTED_SKILLS = new ArrayList<>(); - for (String id : OLYMPSetting.getProperty("AltOlyRestrictedSkills", "0").split(",")) - { - LIST_OLY_RESTRICTED_SKILLS.add(Integer.parseInt(id)); - } - ALT_OLY_AUGMENT_ALLOW = Boolean.parseBoolean(OLYMPSetting.getProperty("AltOlyAugmentAllow", "true")); - ALT_OLY_TELEPORT_COUNTDOWN = Integer.parseInt(OLYMPSetting.getProperty("AltOlyTeleportCountDown", "120")); - - ALT_OLY_USE_CUSTOM_PERIOD_SETTINGS = Boolean.parseBoolean(OLYMPSetting.getProperty("AltOlyUseCustomPeriodSettings", "false")); - ALT_OLY_PERIOD = OlympiadPeriod.valueOf(OLYMPSetting.getProperty("AltOlyPeriod", "MONTH")); - ALT_OLY_PERIOD_MULTIPLIER = Integer.parseInt(OLYMPSetting.getProperty("AltOlyPeriodMultiplier", "1")); - ALT_OLY_COMPETITION_DAYS = new ArrayList<>(); - for (String s : OLYMPSetting.getProperty("AltOlyCompetitionDays", "1,2,3,4,5,6,7").split(",")) - { - ALT_OLY_COMPETITION_DAYS.add(Integer.parseInt(s)); - } + LIST_OLY_RESTRICTED_ITEMS.add(Integer.parseInt(id)); } - catch (Exception e) + ALLOW_EVENTS_DURING_OLY = olympiadConfig.getBoolean("AllowEventsDuringOly", false); + + ALT_OLY_RECHARGE_SKILLS = olympiadConfig.getBoolean("AltOlyRechargeSkills", false); + + /* Remove cubic at the enter of olympiad */ + REMOVE_CUBIC_OLYMPIAD = olympiadConfig.getBoolean("RemoveCubicOlympiad", false); + + ALT_OLY_NUMBER_HEROS_EACH_CLASS = olympiadConfig.getInt("AltOlyNumberHerosEachClass", 1); + ALT_OLY_LOG_FIGHTS = olympiadConfig.getBoolean("AlyOlyLogFights", false); + ALT_OLY_SHOW_MONTHLY_WINNERS = olympiadConfig.getBoolean("AltOlyShowMonthlyWinners", true); + ALT_OLY_ANNOUNCE_GAMES = olympiadConfig.getBoolean("AltOlyAnnounceGames", true); + LIST_OLY_RESTRICTED_SKILLS = new ArrayList<>(); + for (String id : olympiadConfig.getString("AltOlyRestrictedSkills", "0").split(",")) { - e.printStackTrace(); - throw new Error("Failed to Load " + OLYMP_CONFIG_FILE + " File."); + LIST_OLY_RESTRICTED_SKILLS.add(Integer.parseInt(id)); + } + ALT_OLY_AUGMENT_ALLOW = olympiadConfig.getBoolean("AltOlyAugmentAllow", true); + ALT_OLY_TELEPORT_COUNTDOWN = olympiadConfig.getInt("AltOlyTeleportCountDown", 120); + + ALT_OLY_USE_CUSTOM_PERIOD_SETTINGS = olympiadConfig.getBoolean("AltOlyUseCustomPeriodSettings", false); + ALT_OLY_PERIOD = OlympiadPeriod.valueOf(olympiadConfig.getString("AltOlyPeriod", "MONTH")); + ALT_OLY_PERIOD_MULTIPLIER = olympiadConfig.getInt("AltOlyPeriodMultiplier", 1); + ALT_OLY_COMPETITION_DAYS = new ArrayList<>(); + for (String s : olympiadConfig.getString("AltOlyCompetitionDays", "1,2,3,4,5,6,7").split(",")) + { + ALT_OLY_COMPETITION_DAYS.add(Integer.parseInt(s)); } } public static void loadEnchantConfig() { - try + final PropertiesParser enchantConfig = new PropertiesParser(ENCHANT_CONFIG_FILE); + + String[] propertySplit = enchantConfig.getString("NormalWeaponEnchantLevel", "").split(";"); + for (String readData : propertySplit) { - final Properties ENCHANTSetting = new Properties(); - final InputStream is = new FileInputStream(new File(ENCHANT_CONFIG_FILE)); - ENCHANTSetting.load(is); - is.close(); - - String[] propertySplit = ENCHANTSetting.getProperty("NormalWeaponEnchantLevel", "").split(";"); - for (String readData : propertySplit) + final String[] writeData = readData.split(","); + if (writeData.length != 2) { - final String[] writeData = readData.split(","); - if (writeData.length != 2) + LOGGER.info("invalid config property"); + } + else + { + try { - LOGGER.info("invalid config property"); + NORMAL_WEAPON_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); } - else + catch (NumberFormatException nfe) { - try + if (!readData.equals("")) { - NORMAL_WEAPON_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } + LOGGER.info("invalid config property"); } } } - - propertySplit = ENCHANTSetting.getProperty("BlessWeaponEnchantLevel", "").split(";"); - for (String readData : propertySplit) - { - final String[] writeData = readData.split(","); - if (writeData.length != 2) - { - LOGGER.info("invalid config property"); - } - else - { - try - { - BLESS_WEAPON_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } - } - } - } - - propertySplit = ENCHANTSetting.getProperty("CrystalWeaponEnchantLevel", "").split(";"); - for (String readData : propertySplit) - { - final String[] writeData = readData.split(","); - if (writeData.length != 2) - { - LOGGER.info("invalid config property"); - } - else - { - try - { - CRYSTAL_WEAPON_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } - } - } - } - - propertySplit = ENCHANTSetting.getProperty("NormalArmorEnchantLevel", "").split(";"); - for (String readData : propertySplit) - { - final String[] writeData = readData.split(","); - if (writeData.length != 2) - { - LOGGER.info("invalid config property"); - } - else - { - try - { - NORMAL_ARMOR_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } - } - } - } - - propertySplit = ENCHANTSetting.getProperty("BlessArmorEnchantLevel", "").split(";"); - for (String readData : propertySplit) - { - final String[] writeData = readData.split(","); - if (writeData.length != 2) - { - LOGGER.info("invalid config property"); - } - else - { - try - { - BLESS_ARMOR_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } - } - } - } - - propertySplit = ENCHANTSetting.getProperty("CrystalArmorEnchantLevel", "").split(";"); - for (String readData : propertySplit) - { - final String[] writeData = readData.split(","); - if (writeData.length != 2) - { - LOGGER.info("invalid config property"); - } - else - { - try - { - CRYSTAL_ARMOR_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } - } - } - } - - propertySplit = ENCHANTSetting.getProperty("NormalJewelryEnchantLevel", "").split(";"); - for (String readData : propertySplit) - { - final String[] writeData = readData.split(","); - if (writeData.length != 2) - { - LOGGER.info("invalid config property"); - } - else - { - try - { - NORMAL_JEWELRY_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } - } - } - } - - propertySplit = ENCHANTSetting.getProperty("BlessJewelryEnchantLevel", "").split(";"); - for (String readData : propertySplit) - { - final String[] writeData = readData.split(","); - if (writeData.length != 2) - { - LOGGER.info("invalid config property"); - } - else - { - try - { - BLESS_JEWELRY_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } - } - } - } - - propertySplit = ENCHANTSetting.getProperty("CrystalJewelryEnchantLevel", "").split(";"); - for (String readData : propertySplit) - { - final String[] writeData = readData.split(","); - if (writeData.length != 2) - { - LOGGER.info("invalid config property"); - } - else - { - try - { - CRYSTAL_JEWELRY_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); - } - catch (NumberFormatException nfe) - { - if (!readData.equals("")) - { - LOGGER.info("invalid config property"); - } - } - } - } - - /** limit of safe enchant normal **/ - ENCHANT_SAFE_MAX = Integer.parseInt(ENCHANTSetting.getProperty("EnchantSafeMax", "3")); - - /** limit of safe enchant full **/ - ENCHANT_SAFE_MAX_FULL = Integer.parseInt(ENCHANTSetting.getProperty("EnchantSafeMaxFull", "4")); - - /** limit of max enchant **/ - ENCHANT_WEAPON_MAX = Integer.parseInt(ENCHANTSetting.getProperty("EnchantWeaponMax", "25")); - ENCHANT_ARMOR_MAX = Integer.parseInt(ENCHANTSetting.getProperty("EnchantArmorMax", "25")); - ENCHANT_JEWELRY_MAX = Integer.parseInt(ENCHANTSetting.getProperty("EnchantJewelryMax", "25")); - - /** CRYSTAL SCROLL enchant limits **/ - CRYSTAL_ENCHANT_MIN = Integer.parseInt(ENCHANTSetting.getProperty("CrystalEnchantMin", "20")); - CRYSTAL_ENCHANT_MAX = Integer.parseInt(ENCHANTSetting.getProperty("CrystalEnchantMax", "0")); - - /** bonus for dwarf **/ - ENABLE_DWARF_ENCHANT_BONUS = Boolean.parseBoolean(ENCHANTSetting.getProperty("EnableDwarfEnchantBonus", "false")); - DWARF_ENCHANT_MIN_LEVEL = Integer.parseInt(ENCHANTSetting.getProperty("DwarfEnchantMinLevel", "80")); - DWARF_ENCHANT_BONUS = Integer.parseInt(ENCHANTSetting.getProperty("DwarfEnchantBonus", "15")); - - /** augmentation chance **/ - AUGMENTATION_NG_SKILL_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationNGSkillChance", "15")); - AUGMENTATION_MID_SKILL_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationMidSkillChance", "30")); - AUGMENTATION_HIGH_SKILL_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationHighSkillChance", "45")); - AUGMENTATION_TOP_SKILL_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationTopSkillChance", "60")); - AUGMENTATION_BASESTAT_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationBaseStatChance", "1")); - - /** augmentation glow **/ - AUGMENTATION_NG_GLOW_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationNGGlowChance", "0")); - AUGMENTATION_MID_GLOW_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationMidGlowChance", "40")); - AUGMENTATION_HIGH_GLOW_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationHighGlowChance", "70")); - AUGMENTATION_TOP_GLOW_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("AugmentationTopGlowChance", "100")); - - /** augmentation configs **/ - DELETE_AUGM_PASSIVE_ON_CHANGE = Boolean.parseBoolean(ENCHANTSetting.getProperty("DeleteAgmentPassiveEffectOnChangeWep", "true")); - DELETE_AUGM_ACTIVE_ON_CHANGE = Boolean.parseBoolean(ENCHANTSetting.getProperty("DeleteAgmentActiveEffectOnChangeWep", "true")); - - /** enchant hero weapon **/ - ENCHANT_HERO_WEAPON = Boolean.parseBoolean(ENCHANTSetting.getProperty("EnableEnchantHeroWeapons", "false")); - - /** soul crystal **/ - SOUL_CRYSTAL_BREAK_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("SoulCrystalBreakChance", "10")); - SOUL_CRYSTAL_LEVEL_CHANCE = Integer.parseInt(ENCHANTSetting.getProperty("SoulCrystalLevelChance", "32")); - SOUL_CRYSTAL_MAX_LEVEL = Integer.parseInt(ENCHANTSetting.getProperty("SoulCrystalMaxLevel", "13")); - - /** count enchant **/ - CUSTOM_ENCHANT_VALUE = Integer.parseInt(ENCHANTSetting.getProperty("CustomEnchantValue", "1")); - ALT_OLY_ENCHANT_LIMIT = Integer.parseInt(ENCHANTSetting.getProperty("AltOlyMaxEnchant", "-1")); - BREAK_ENCHANT = Integer.parseInt(ENCHANTSetting.getProperty("BreakEnchant", "0")); - - MAX_ITEM_ENCHANT_KICK = Integer.parseInt(ENCHANTSetting.getProperty("EnchantKick", "0")); - GM_OVER_ENCHANT = Integer.parseInt(ENCHANTSetting.getProperty("GMOverEnchant", "0")); - } - catch (Exception e) + + propertySplit = enchantConfig.getString("BlessWeaponEnchantLevel", "").split(";"); + for (String readData : propertySplit) { - e.printStackTrace(); - throw new Error("Failed to Load " + ENCHANT_CONFIG_FILE + " File."); + final String[] writeData = readData.split(","); + if (writeData.length != 2) + { + LOGGER.info("invalid config property"); + } + else + { + try + { + BLESS_WEAPON_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); + } + catch (NumberFormatException nfe) + { + if (!readData.equals("")) + { + LOGGER.info("invalid config property"); + } + } + } } + + propertySplit = enchantConfig.getString("CrystalWeaponEnchantLevel", "").split(";"); + for (String readData : propertySplit) + { + final String[] writeData = readData.split(","); + if (writeData.length != 2) + { + LOGGER.info("invalid config property"); + } + else + { + try + { + CRYSTAL_WEAPON_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); + } + catch (NumberFormatException nfe) + { + if (!readData.equals("")) + { + LOGGER.info("invalid config property"); + } + } + } + } + + propertySplit = enchantConfig.getString("NormalArmorEnchantLevel", "").split(";"); + for (String readData : propertySplit) + { + final String[] writeData = readData.split(","); + if (writeData.length != 2) + { + LOGGER.info("invalid config property"); + } + else + { + try + { + NORMAL_ARMOR_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); + } + catch (NumberFormatException nfe) + { + if (!readData.equals("")) + { + LOGGER.info("invalid config property"); + } + } + } + } + + propertySplit = enchantConfig.getString("BlessArmorEnchantLevel", "").split(";"); + for (String readData : propertySplit) + { + final String[] writeData = readData.split(","); + if (writeData.length != 2) + { + LOGGER.info("invalid config property"); + } + else + { + try + { + BLESS_ARMOR_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); + } + catch (NumberFormatException nfe) + { + if (!readData.equals("")) + { + LOGGER.info("invalid config property"); + } + } + } + } + + propertySplit = enchantConfig.getString("CrystalArmorEnchantLevel", "").split(";"); + for (String readData : propertySplit) + { + final String[] writeData = readData.split(","); + if (writeData.length != 2) + { + LOGGER.info("invalid config property"); + } + else + { + try + { + CRYSTAL_ARMOR_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); + } + catch (NumberFormatException nfe) + { + if (!readData.equals("")) + { + LOGGER.info("invalid config property"); + } + } + } + } + + propertySplit = enchantConfig.getString("NormalJewelryEnchantLevel", "").split(";"); + for (String readData : propertySplit) + { + final String[] writeData = readData.split(","); + if (writeData.length != 2) + { + LOGGER.info("invalid config property"); + } + else + { + try + { + NORMAL_JEWELRY_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); + } + catch (NumberFormatException nfe) + { + if (!readData.equals("")) + { + LOGGER.info("invalid config property"); + } + } + } + } + + propertySplit = enchantConfig.getString("BlessJewelryEnchantLevel", "").split(";"); + for (String readData : propertySplit) + { + final String[] writeData = readData.split(","); + if (writeData.length != 2) + { + LOGGER.info("invalid config property"); + } + else + { + try + { + BLESS_JEWELRY_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); + } + catch (NumberFormatException nfe) + { + if (!readData.equals("")) + { + LOGGER.info("invalid config property"); + } + } + } + } + + propertySplit = enchantConfig.getString("CrystalJewelryEnchantLevel", "").split(";"); + for (String readData : propertySplit) + { + final String[] writeData = readData.split(","); + if (writeData.length != 2) + { + LOGGER.info("invalid config property"); + } + else + { + try + { + CRYSTAL_JEWELRY_ENCHANT_LEVEL.put(Integer.parseInt(writeData[0]), Integer.parseInt(writeData[1])); + } + catch (NumberFormatException nfe) + { + if (!readData.equals("")) + { + LOGGER.info("invalid config property"); + } + } + } + } + + /** limit of safe enchant normal **/ + ENCHANT_SAFE_MAX = enchantConfig.getInt("EnchantSafeMax", 3); + + /** limit of safe enchant full **/ + ENCHANT_SAFE_MAX_FULL = enchantConfig.getInt("EnchantSafeMaxFull", 4); + + /** limit of max enchant **/ + ENCHANT_WEAPON_MAX = enchantConfig.getInt("EnchantWeaponMax", 25); + ENCHANT_ARMOR_MAX = enchantConfig.getInt("EnchantArmorMax", 25); + ENCHANT_JEWELRY_MAX = enchantConfig.getInt("EnchantJewelryMax", 25); + + /** CRYSTAL SCROLL enchant limits **/ + CRYSTAL_ENCHANT_MIN = enchantConfig.getInt("CrystalEnchantMin", 20); + CRYSTAL_ENCHANT_MAX = enchantConfig.getInt("CrystalEnchantMax", 0); + + /** bonus for dwarf **/ + ENABLE_DWARF_ENCHANT_BONUS = enchantConfig.getBoolean("EnableDwarfEnchantBonus", false); + DWARF_ENCHANT_MIN_LEVEL = enchantConfig.getInt("DwarfEnchantMinLevel", 80); + DWARF_ENCHANT_BONUS = enchantConfig.getInt("DwarfEnchantBonus", 15); + + /** augmentation chance **/ + AUGMENTATION_NG_SKILL_CHANCE = enchantConfig.getInt("AugmentationNGSkillChance", 15); + AUGMENTATION_MID_SKILL_CHANCE = enchantConfig.getInt("AugmentationMidSkillChance", 30); + AUGMENTATION_HIGH_SKILL_CHANCE = enchantConfig.getInt("AugmentationHighSkillChance", 45); + AUGMENTATION_TOP_SKILL_CHANCE = enchantConfig.getInt("AugmentationTopSkillChance", 60); + AUGMENTATION_BASESTAT_CHANCE = enchantConfig.getInt("AugmentationBaseStatChance", 1); + + /** augmentation glow **/ + AUGMENTATION_NG_GLOW_CHANCE = enchantConfig.getInt("AugmentationNGGlowChance", 0); + AUGMENTATION_MID_GLOW_CHANCE = enchantConfig.getInt("AugmentationMidGlowChance", 40); + AUGMENTATION_HIGH_GLOW_CHANCE = enchantConfig.getInt("AugmentationHighGlowChance", 70); + AUGMENTATION_TOP_GLOW_CHANCE = enchantConfig.getInt("AugmentationTopGlowChance", 100); + + /** augmentation configs **/ + DELETE_AUGM_PASSIVE_ON_CHANGE = enchantConfig.getBoolean("DeleteAgmentPassiveEffectOnChangeWep", true); + DELETE_AUGM_ACTIVE_ON_CHANGE = enchantConfig.getBoolean("DeleteAgmentActiveEffectOnChangeWep", true); + + /** enchant hero weapon **/ + ENCHANT_HERO_WEAPON = enchantConfig.getBoolean("EnableEnchantHeroWeapons", false); + + /** soul crystal **/ + SOUL_CRYSTAL_BREAK_CHANCE = enchantConfig.getInt("SoulCrystalBreakChance", 10); + SOUL_CRYSTAL_LEVEL_CHANCE = enchantConfig.getInt("SoulCrystalLevelChance", 32); + SOUL_CRYSTAL_MAX_LEVEL = enchantConfig.getInt("SoulCrystalMaxLevel", 13); + + /** count enchant **/ + CUSTOM_ENCHANT_VALUE = enchantConfig.getInt("CustomEnchantValue", 1); + ALT_OLY_ENCHANT_LIMIT = enchantConfig.getInt("AltOlyMaxEnchant", -1); + BREAK_ENCHANT = enchantConfig.getInt("BreakEnchant", 0); + + MAX_ITEM_ENCHANT_KICK = enchantConfig.getInt("EnchantKick", 0); + GM_OVER_ENCHANT = enchantConfig.getInt("GMOverEnchant", 0); } public static void loadFloodConfig() { - try - { - FLOOD_PROTECTOR_USE_ITEM = new FloodProtectorConfig("UseItemFloodProtector"); - FLOOD_PROTECTOR_ROLL_DICE = new FloodProtectorConfig("RollDiceFloodProtector"); - FLOOD_PROTECTOR_FIREWORK = new FloodProtectorConfig("FireworkFloodProtector"); - FLOOD_PROTECTOR_ITEM_PET_SUMMON = new FloodProtectorConfig("ItemPetSummonFloodProtector"); - FLOOD_PROTECTOR_HERO_VOICE = new FloodProtectorConfig("HeroVoiceFloodProtector"); - FLOOD_PROTECTOR_GLOBAL_CHAT = new FloodProtectorConfig("GlobalChatFloodProtector"); - FLOOD_PROTECTOR_SUBCLASS = new FloodProtectorConfig("SubclassFloodProtector"); - FLOOD_PROTECTOR_DROP_ITEM = new FloodProtectorConfig("DropItemFloodProtector"); - FLOOD_PROTECTOR_SERVER_BYPASS = new FloodProtectorConfig("ServerBypassFloodProtector"); - FLOOD_PROTECTOR_MULTISELL = new FloodProtectorConfig("MultiSellFloodProtector"); - FLOOD_PROTECTOR_TRANSACTION = new FloodProtectorConfig("TransactionFloodProtector"); - FLOOD_PROTECTOR_MANUFACTURE = new FloodProtectorConfig("ManufactureFloodProtector"); - FLOOD_PROTECTOR_MANOR = new FloodProtectorConfig("ManorFloodProtector"); - FLOOD_PROTECTOR_CHARACTER_SELECT = new FloodProtectorConfig("CharacterSelectFloodProtector"); - - FLOOD_PROTECTOR_UNKNOWN_PACKETS = new FloodProtectorConfig("UnknownPacketsFloodProtector"); - FLOOD_PROTECTOR_PARTY_INVITATION = new FloodProtectorConfig("PartyInvitationFloodProtector"); - FLOOD_PROTECTOR_SAY_ACTION = new FloodProtectorConfig("SayActionFloodProtector"); - FLOOD_PROTECTOR_MOVE_ACTION = new FloodProtectorConfig("MoveActionFloodProtector"); - FLOOD_PROTECTOR_GENERIC_ACTION = new FloodProtectorConfig("GenericActionFloodProtector", true); - FLOOD_PROTECTOR_MACRO = new FloodProtectorConfig("MacroFloodProtector", true); - FLOOD_PROTECTOR_POTION = new FloodProtectorConfig("PotionFloodProtector", true); - - try - { - final L2Properties security = new L2Properties(); - final FileInputStream is = new FileInputStream(new File(PROTECT_FLOOD_CONFIG_FILE)); - security.load(is); - - loadFloodProtectorConfigs(security); - is.close(); - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + PROTECT_FLOOD_CONFIG_FILE); - } - - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + PROTECT_FLOOD_CONFIG_FILE + " File."); - } + FLOOD_PROTECTOR_USE_ITEM = new FloodProtectorConfig("UseItemFloodProtector"); + FLOOD_PROTECTOR_ROLL_DICE = new FloodProtectorConfig("RollDiceFloodProtector"); + FLOOD_PROTECTOR_FIREWORK = new FloodProtectorConfig("FireworkFloodProtector"); + FLOOD_PROTECTOR_ITEM_PET_SUMMON = new FloodProtectorConfig("ItemPetSummonFloodProtector"); + FLOOD_PROTECTOR_HERO_VOICE = new FloodProtectorConfig("HeroVoiceFloodProtector"); + FLOOD_PROTECTOR_GLOBAL_CHAT = new FloodProtectorConfig("GlobalChatFloodProtector"); + FLOOD_PROTECTOR_SUBCLASS = new FloodProtectorConfig("SubclassFloodProtector"); + FLOOD_PROTECTOR_DROP_ITEM = new FloodProtectorConfig("DropItemFloodProtector"); + FLOOD_PROTECTOR_SERVER_BYPASS = new FloodProtectorConfig("ServerBypassFloodProtector"); + FLOOD_PROTECTOR_MULTISELL = new FloodProtectorConfig("MultiSellFloodProtector"); + FLOOD_PROTECTOR_TRANSACTION = new FloodProtectorConfig("TransactionFloodProtector"); + FLOOD_PROTECTOR_MANUFACTURE = new FloodProtectorConfig("ManufactureFloodProtector"); + FLOOD_PROTECTOR_MANOR = new FloodProtectorConfig("ManorFloodProtector"); + FLOOD_PROTECTOR_CHARACTER_SELECT = new FloodProtectorConfig("CharacterSelectFloodProtector"); + + FLOOD_PROTECTOR_UNKNOWN_PACKETS = new FloodProtectorConfig("UnknownPacketsFloodProtector"); + FLOOD_PROTECTOR_PARTY_INVITATION = new FloodProtectorConfig("PartyInvitationFloodProtector"); + FLOOD_PROTECTOR_SAY_ACTION = new FloodProtectorConfig("SayActionFloodProtector"); + FLOOD_PROTECTOR_MOVE_ACTION = new FloodProtectorConfig("MoveActionFloodProtector"); + FLOOD_PROTECTOR_GENERIC_ACTION = new FloodProtectorConfig("GenericActionFloodProtector", true); + FLOOD_PROTECTOR_MACRO = new FloodProtectorConfig("MacroFloodProtector", true); + FLOOD_PROTECTOR_POTION = new FloodProtectorConfig("PotionFloodProtector", true); + + final PropertiesParser floodProtectConfig = new PropertiesParser(PROTECT_FLOOD_CONFIG_FILE); + loadFloodProtectorConfigs(floodProtectConfig); } /** * Loads single flood protector configuration. - * @param properties L2Properties file reader + * @param properties PropertiesParser file reader * @param config flood protector configuration instance * @param configString flood protector configuration string that determines for which flood protector configuration should be read * @param defaultInterval default flood protector interval */ - private static void loadFloodProtectorConfig(L2Properties properties, FloodProtectorConfig config, String configString, String defaultInterval) + private static void loadFloodProtectorConfig(PropertiesParser properties, FloodProtectorConfig config, String configString, float defaultInterval) { - config.FLOOD_PROTECTION_INTERVAL = Float.parseFloat(properties.getProperty(StringUtil.concat("FloodProtector", configString, "Interval"), defaultInterval)); - config.LOG_FLOODING = Boolean.parseBoolean(properties.getProperty(StringUtil.concat("FloodProtector", configString, "LogFlooding"), "false")); - config.PUNISHMENT_LIMIT = Integer.parseInt(properties.getProperty(StringUtil.concat("FloodProtector", configString, "PunishmentLimit"), "0")); - config.PUNISHMENT_TYPE = properties.getProperty(StringUtil.concat("FloodProtector", configString, "PunishmentType"), "none"); - config.PUNISHMENT_TIME = Integer.parseInt(properties.getProperty(StringUtil.concat("FloodProtector", configString, "PunishmentTime"), "0")); + config.FLOOD_PROTECTION_INTERVAL = properties.getFloat(StringUtil.concat("FloodProtector", configString, "Interval"), defaultInterval); + config.LOG_FLOODING = properties.getBoolean(StringUtil.concat("FloodProtector", configString, "LogFlooding"), false); + config.PUNISHMENT_LIMIT = properties.getInt(StringUtil.concat("FloodProtector", configString, "PunishmentLimit"), 0); + config.PUNISHMENT_TYPE = properties.getString(StringUtil.concat("FloodProtector", configString, "PunishmentType"), "none"); + config.PUNISHMENT_TIME = properties.getInt(StringUtil.concat("FloodProtector", configString, "PunishmentTime"), 0); } - public static void loadPOtherConfig() + public static void loadProtectedOtherConfig() { - try - { - final Properties POtherSetting = new Properties(); - final InputStream is = new FileInputStream(new File(PROTECT_OTHER_CONFIG_FILE)); - POtherSetting.load(is); - is.close(); - - CHECK_NAME_ON_LOGIN = Boolean.parseBoolean(POtherSetting.getProperty("CheckNameOnEnter", "true")); - CHECK_SKILLS_ON_ENTER = Boolean.parseBoolean(POtherSetting.getProperty("CheckSkillsOnEnter", "true")); - - /** l2walker protection **/ - L2WALKER_PROTECTION = Boolean.parseBoolean(POtherSetting.getProperty("L2WalkerProtection", "false")); - - /** enchant protected **/ - PROTECTED_ENCHANT = Boolean.parseBoolean(POtherSetting.getProperty("ProtectorEnchant", "false")); - - ONLY_GM_TELEPORT_FREE = Boolean.parseBoolean(POtherSetting.getProperty("OnlyGMTeleportFree", "false")); - ONLY_GM_ITEMS_FREE = Boolean.parseBoolean(POtherSetting.getProperty("OnlyGMItemsFree", "false")); - - BYPASS_VALIDATION = Boolean.parseBoolean(POtherSetting.getProperty("BypassValidation", "true")); - - ALLOW_DUALBOX_OLY = Boolean.parseBoolean(POtherSetting.getProperty("AllowDualBoxInOly", "true")); - ALLOW_DUALBOX_EVENT = Boolean.parseBoolean(POtherSetting.getProperty("AllowDualBoxInEvent", "true")); - ALLOWED_BOXES = Integer.parseInt(POtherSetting.getProperty("AllowedBoxes", "99")); - ALLOW_DUALBOX = Boolean.parseBoolean(POtherSetting.getProperty("AllowDualBox", "true")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + PROTECT_OTHER_CONFIG_FILE + " File."); - } + final PropertiesParser protectedOtherConfig = new PropertiesParser(PROTECT_OTHER_CONFIG_FILE); + + CHECK_NAME_ON_LOGIN = protectedOtherConfig.getBoolean("CheckNameOnEnter", true); + CHECK_SKILLS_ON_ENTER = protectedOtherConfig.getBoolean("CheckSkillsOnEnter", true); + + /** l2walker protection **/ + L2WALKER_PROTECTION = protectedOtherConfig.getBoolean("L2WalkerProtection", false); + + /** enchant protected **/ + PROTECTED_ENCHANT = protectedOtherConfig.getBoolean("ProtectorEnchant", false); + + ONLY_GM_TELEPORT_FREE = protectedOtherConfig.getBoolean("OnlyGMTeleportFree", false); + ONLY_GM_ITEMS_FREE = protectedOtherConfig.getBoolean("OnlyGMItemsFree", false); + + BYPASS_VALIDATION = protectedOtherConfig.getBoolean("BypassValidation", true); + + ALLOW_DUALBOX_OLY = protectedOtherConfig.getBoolean("AllowDualBoxInOly", true); + ALLOW_DUALBOX_EVENT = protectedOtherConfig.getBoolean("AllowDualBoxInEvent", true); + ALLOWED_BOXES = protectedOtherConfig.getInt("AllowedBoxes", 99); + ALLOW_DUALBOX = protectedOtherConfig.getBoolean("AllowDualBox", true); } - public static void loadPHYSICSConfig() + public static void loadPhysicsConfig() { - try + final PropertiesParser physicsSetting = new PropertiesParser(PHYSICS_CONFIG_FILE); + + ENABLE_CLASS_DAMAGE_SETTINGS = physicsSetting.getBoolean("EnableClassDamageSettings", true); + ENABLE_CLASS_DAMAGE_SETTINGS_IN_OLY = physicsSetting.getBoolean("EnableClassDamageSettingsInOly", true); + ENABLE_CLASS_DAMAGE_LOGGER = physicsSetting.getBoolean("EnableClassDamageLogger", false); + + BLOW_ATTACK_FRONT = physicsSetting.getInt("BlowAttackFront", 50); + BLOW_ATTACK_SIDE = physicsSetting.getInt("BlowAttackSide", 60); + BLOW_ATTACK_BEHIND = physicsSetting.getInt("BlowAttackBehind", 70); + + BACKSTAB_ATTACK_FRONT = physicsSetting.getInt("BackstabAttackFront", 0); + BACKSTAB_ATTACK_SIDE = physicsSetting.getInt("BackstabAttackSide", 0); + BACKSTAB_ATTACK_BEHIND = physicsSetting.getInt("BackstabAttackBehind", 70); + + // Max patk speed and matk speed + MAX_PATK_SPEED = physicsSetting.getInt("MaxPAtkSpeed", 1500); + MAX_MATK_SPEED = physicsSetting.getInt("MaxMAtkSpeed", 1999); + + if (MAX_PATK_SPEED < 1) { - final Properties PHYSICSSetting = new Properties(); - final InputStream is = new FileInputStream(new File(PHYSICS_CONFIG_FILE)); - PHYSICSSetting.load(is); - is.close(); - - ENABLE_CLASS_DAMAGE_SETTINGS = Boolean.parseBoolean(PHYSICSSetting.getProperty("EnableClassDamageSettings", "true")); - ENABLE_CLASS_DAMAGE_SETTINGS_IN_OLY = Boolean.parseBoolean(PHYSICSSetting.getProperty("EnableClassDamageSettingsInOly", "true")); - ENABLE_CLASS_DAMAGE_LOGGER = Boolean.parseBoolean(PHYSICSSetting.getProperty("EnableClassDamageLogger", "false")); - - BLOW_ATTACK_FRONT = Integer.parseInt(PHYSICSSetting.getProperty("BlowAttackFront", "50")); - BLOW_ATTACK_SIDE = Integer.parseInt(PHYSICSSetting.getProperty("BlowAttackSide", "60")); - BLOW_ATTACK_BEHIND = Integer.parseInt(PHYSICSSetting.getProperty("BlowAttackBehind", "70")); - - BACKSTAB_ATTACK_FRONT = Integer.parseInt(PHYSICSSetting.getProperty("BackstabAttackFront", "0")); - BACKSTAB_ATTACK_SIDE = Integer.parseInt(PHYSICSSetting.getProperty("BackstabAttackSide", "0")); - BACKSTAB_ATTACK_BEHIND = Integer.parseInt(PHYSICSSetting.getProperty("BackstabAttackBehind", "70")); - - // Max patk speed and matk speed - MAX_PATK_SPEED = Integer.parseInt(PHYSICSSetting.getProperty("MaxPAtkSpeed", "1500")); - MAX_MATK_SPEED = Integer.parseInt(PHYSICSSetting.getProperty("MaxMAtkSpeed", "1999")); - - if (MAX_PATK_SPEED < 1) - { - MAX_PATK_SPEED = Integer.MAX_VALUE; - } - - if (MAX_MATK_SPEED < 1) - { - MAX_MATK_SPEED = Integer.MAX_VALUE; - } - - MAX_PCRIT_RATE = Integer.parseInt(PHYSICSSetting.getProperty("MaxPCritRate", "500")); - MAX_MCRIT_RATE = Integer.parseInt(PHYSICSSetting.getProperty("MaxMCritRate", "300")); - MCRIT_RATE_MUL = Float.parseFloat(PHYSICSSetting.getProperty("McritMulDif", "1")); - - MAGIC_CRITICAL_POWER = Float.parseFloat(PHYSICSSetting.getProperty("MagicCriticalPower", "3.0")); - - STUN_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("StunChanceModifier", "1.0")); - BLEED_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("BleedChanceModifier", "1.0")); - POISON_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("PoisonChanceModifier", "1.0")); - PARALYZE_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("ParalyzeChanceModifier", "1.0")); - ROOT_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("RootChanceModifier", "1.0")); - SLEEP_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("SleepChanceModifier", "1.0")); - FEAR_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("FearChanceModifier", "1.0")); - CONFUSION_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("ConfusionChanceModifier", "1.0")); - DEBUFF_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("DebuffChanceModifier", "1.0")); - BUFF_CHANCE_MODIFIER = Float.parseFloat(PHYSICSSetting.getProperty("BuffChanceModifier", "1.0")); - - ALT_MAGES_PHYSICAL_DAMAGE_MULTI = Float.parseFloat(PHYSICSSetting.getProperty("AltPDamageMages", "1.00")); - ALT_MAGES_MAGICAL_DAMAGE_MULTI = Float.parseFloat(PHYSICSSetting.getProperty("AltMDamageMages", "1.00")); - ALT_FIGHTERS_PHYSICAL_DAMAGE_MULTI = Float.parseFloat(PHYSICSSetting.getProperty("AltPDamageFighters", "1.00")); - ALT_FIGHTERS_MAGICAL_DAMAGE_MULTI = Float.parseFloat(PHYSICSSetting.getProperty("AltMDamageFighters", "1.00")); - ALT_PETS_PHYSICAL_DAMAGE_MULTI = Float.parseFloat(PHYSICSSetting.getProperty("AltPDamagePets", "1.00")); - ALT_PETS_MAGICAL_DAMAGE_MULTI = Float.parseFloat(PHYSICSSetting.getProperty("AltMDamagePets", "1.00")); - ALT_NPC_PHYSICAL_DAMAGE_MULTI = Float.parseFloat(PHYSICSSetting.getProperty("AltPDamageNpc", "1.00")); - ALT_NPC_MAGICAL_DAMAGE_MULTI = Float.parseFloat(PHYSICSSetting.getProperty("AltMDamageNpc", "1.00")); - ALT_DAGGER_DMG_VS_HEAVY = Float.parseFloat(PHYSICSSetting.getProperty("DaggerVSHeavy", "2.50")); - ALT_DAGGER_DMG_VS_ROBE = Float.parseFloat(PHYSICSSetting.getProperty("DaggerVSRobe", "1.80")); - ALT_DAGGER_DMG_VS_LIGHT = Float.parseFloat(PHYSICSSetting.getProperty("DaggerVSLight", "2.00")); - RUN_SPD_BOOST = Integer.parseInt(PHYSICSSetting.getProperty("RunSpeedBoost", "0")); - MAX_RUN_SPEED = Integer.parseInt(PHYSICSSetting.getProperty("MaxRunSpeed", "250")); - - ALLOW_RAID_LETHAL = Boolean.parseBoolean(PHYSICSSetting.getProperty("AllowLethalOnRaids", "false")); - - ALLOW_LETHAL_PROTECTION_MOBS = Boolean.parseBoolean(PHYSICSSetting.getProperty("AllowLethalProtectionMobs", "false")); - - LETHAL_PROTECTED_MOBS = PHYSICSSetting.getProperty("LethalProtectedMobs", ""); - - LIST_LETHAL_PROTECTED_MOBS = new ArrayList<>(); - for (String id : LETHAL_PROTECTED_MOBS.split(",")) - { - LIST_LETHAL_PROTECTED_MOBS.add(Integer.parseInt(id)); - } - - SEND_SKILLS_CHANCE_TO_PLAYERS = Boolean.parseBoolean(PHYSICSSetting.getProperty("SendSkillsChanceToPlayers", "false")); - - /* Remove equip during subclass change */ - REMOVE_WEAPON_SUBCLASS = Boolean.parseBoolean(PHYSICSSetting.getProperty("RemoveWeaponSubclass", "false")); - REMOVE_CHEST_SUBCLASS = Boolean.parseBoolean(PHYSICSSetting.getProperty("RemoveChestSubclass", "false")); - REMOVE_LEG_SUBCLASS = Boolean.parseBoolean(PHYSICSSetting.getProperty("RemoveLegSubclass", "false")); - - DISABLE_BOW_CLASSES_STRING = PHYSICSSetting.getProperty("DisableBowForClasses", ""); - DISABLE_BOW_CLASSES = new ArrayList<>(); - for (String class_id : DISABLE_BOW_CLASSES_STRING.split(",")) - { - if (!class_id.equals("")) - { - DISABLE_BOW_CLASSES.add(Integer.parseInt(class_id)); - } - } - - LEAVE_BUFFS_ON_DIE = Boolean.parseBoolean(PHYSICSSetting.getProperty("LeaveBuffsOnDie", "true")); - + MAX_PATK_SPEED = Integer.MAX_VALUE; } - catch (Exception e) + + if (MAX_MATK_SPEED < 1) { - e.printStackTrace(); - throw new Error("Failed to Load " + PHYSICS_CONFIG_FILE + " File."); + MAX_MATK_SPEED = Integer.MAX_VALUE; } + + MAX_PCRIT_RATE = physicsSetting.getInt("MaxPCritRate", 500); + MAX_MCRIT_RATE = physicsSetting.getInt("MaxMCritRate", 300); + MCRIT_RATE_MUL = physicsSetting.getFloat("McritMulDif", 1f); + + MAGIC_CRITICAL_POWER = physicsSetting.getFloat("MagicCriticalPower", 3f); + + STUN_CHANCE_MODIFIER = physicsSetting.getFloat("StunChanceModifier", 1f); + BLEED_CHANCE_MODIFIER = physicsSetting.getFloat("BleedChanceModifier", 1f); + POISON_CHANCE_MODIFIER = physicsSetting.getFloat("PoisonChanceModifier", 1f); + PARALYZE_CHANCE_MODIFIER = physicsSetting.getFloat("ParalyzeChanceModifier", 1f); + ROOT_CHANCE_MODIFIER = physicsSetting.getFloat("RootChanceModifier", 1f); + SLEEP_CHANCE_MODIFIER = physicsSetting.getFloat("SleepChanceModifier", 1f); + FEAR_CHANCE_MODIFIER = physicsSetting.getFloat("FearChanceModifier", 1f); + CONFUSION_CHANCE_MODIFIER = physicsSetting.getFloat("ConfusionChanceModifier", 1f); + DEBUFF_CHANCE_MODIFIER = physicsSetting.getFloat("DebuffChanceModifier", 1f); + BUFF_CHANCE_MODIFIER = physicsSetting.getFloat("BuffChanceModifier", 1f); + + ALT_MAGES_PHYSICAL_DAMAGE_MULTI = physicsSetting.getFloat("AltPDamageMages", 1f); + ALT_MAGES_MAGICAL_DAMAGE_MULTI = physicsSetting.getFloat("AltMDamageMages", 1f); + ALT_FIGHTERS_PHYSICAL_DAMAGE_MULTI = physicsSetting.getFloat("AltPDamageFighters", 1f); + ALT_FIGHTERS_MAGICAL_DAMAGE_MULTI = physicsSetting.getFloat("AltMDamageFighters", 1f); + ALT_PETS_PHYSICAL_DAMAGE_MULTI = physicsSetting.getFloat("AltPDamagePets", 1f); + ALT_PETS_MAGICAL_DAMAGE_MULTI = physicsSetting.getFloat("AltMDamagePets", 1f); + ALT_NPC_PHYSICAL_DAMAGE_MULTI = physicsSetting.getFloat("AltPDamageNpc", 1f); + ALT_NPC_MAGICAL_DAMAGE_MULTI = physicsSetting.getFloat("AltMDamageNpc", 1f); + ALT_DAGGER_DMG_VS_HEAVY = physicsSetting.getFloat("DaggerVSHeavy", 2.5f); + ALT_DAGGER_DMG_VS_ROBE = physicsSetting.getFloat("DaggerVSRobe", 1.8f); + ALT_DAGGER_DMG_VS_LIGHT = physicsSetting.getFloat("DaggerVSLight", 2f); + RUN_SPD_BOOST = physicsSetting.getInt("RunSpeedBoost", 0); + MAX_RUN_SPEED = physicsSetting.getInt("MaxRunSpeed", 250); + + ALLOW_RAID_LETHAL = physicsSetting.getBoolean("AllowLethalOnRaids", false); + + ALLOW_LETHAL_PROTECTION_MOBS = physicsSetting.getBoolean("AllowLethalProtectionMobs", false); + + LETHAL_PROTECTED_MOBS = physicsSetting.getString("LethalProtectedMobs", ""); + + LIST_LETHAL_PROTECTED_MOBS = new ArrayList<>(); + for (String id : LETHAL_PROTECTED_MOBS.split(",")) + { + LIST_LETHAL_PROTECTED_MOBS.add(Integer.parseInt(id)); + } + + SEND_SKILLS_CHANCE_TO_PLAYERS = physicsSetting.getBoolean("SendSkillsChanceToPlayers", false); + + /* Remove equip during subclass change */ + REMOVE_WEAPON_SUBCLASS = physicsSetting.getBoolean("RemoveWeaponSubclass", false); + REMOVE_CHEST_SUBCLASS = physicsSetting.getBoolean("RemoveChestSubclass", false); + REMOVE_LEG_SUBCLASS = physicsSetting.getBoolean("RemoveLegSubclass", false); + + DISABLE_BOW_CLASSES_STRING = physicsSetting.getString("DisableBowForClasses", ""); + DISABLE_BOW_CLASSES = new ArrayList<>(); + for (String class_id : DISABLE_BOW_CLASSES_STRING.split(",")) + { + if (!class_id.equals("")) + { + DISABLE_BOW_CLASSES.add(Integer.parseInt(class_id)); + } + } + + LEAVE_BUFFS_ON_DIE = physicsSetting.getBoolean("LeaveBuffsOnDie", true); } public static void loadgeodataConfig() { - try - { - final Properties geodataSetting = new Properties(); - final InputStream is = new FileInputStream(new File(GEODATA_CONFIG_FILE)); - geodataSetting.load(is); - is.close(); - - GEODATA_PATH = geodataSetting.getProperty("GeoDataPath", "./data/geodata/"); - COORD_SYNCHRONIZE = Integer.parseInt(geodataSetting.getProperty("CoordSynchronize", "-1")); - - PART_OF_CHARACTER_HEIGHT = Integer.parseInt(geodataSetting.getProperty("PartOfCharacterHeight", "75")); - MAX_OBSTACLE_HEIGHT = Integer.parseInt(geodataSetting.getProperty("MaxObstacleHeight", "32")); - - PATHFINDING = Boolean.parseBoolean(geodataSetting.getProperty("PathFinding", "true")); - PATHFIND_BUFFERS = geodataSetting.getProperty("PathFindBuffers", "100x6;128x6;192x6;256x4;320x4;384x4;500x2"); - BASE_WEIGHT = Integer.parseInt(geodataSetting.getProperty("BaseWeight", "10")); - DIAGONAL_WEIGHT = Integer.parseInt(geodataSetting.getProperty("DiagonalWeight", "14")); - OBSTACLE_MULTIPLIER = Integer.parseInt(geodataSetting.getProperty("ObstacleMultiplier", "10")); - HEURISTIC_WEIGHT = Integer.parseInt(geodataSetting.getProperty("HeuristicWeight", "20")); - MAX_ITERATIONS = Integer.parseInt(geodataSetting.getProperty("MaxIterations", "3500")); - - FALL_DAMAGE = Boolean.parseBoolean(geodataSetting.getProperty("FallDamage", "false")); - ALLOW_WATER = Boolean.parseBoolean(geodataSetting.getProperty("AllowWater", "false")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + GEODATA_CONFIG_FILE + " File."); - } + final PropertiesParser geoengineConfig = new PropertiesParser(GEOENGINE_CONFIG_FILE); + + GEODATA_PATH = geoengineConfig.getString("GeoDataPath", "./data/geodata/"); + COORD_SYNCHRONIZE = geoengineConfig.getInt("CoordSynchronize", -1); + + PART_OF_CHARACTER_HEIGHT = geoengineConfig.getInt("PartOfCharacterHeight", 75); + MAX_OBSTACLE_HEIGHT = geoengineConfig.getInt("MaxObstacleHeight", 32); + + PATHFINDING = geoengineConfig.getBoolean("PathFinding", true); + PATHFIND_BUFFERS = geoengineConfig.getString("PathFindBuffers", "100x6;128x6;192x6;256x4;320x4;384x4;500x2"); + BASE_WEIGHT = geoengineConfig.getInt("BaseWeight", 10); + DIAGONAL_WEIGHT = geoengineConfig.getInt("DiagonalWeight", 14); + OBSTACLE_MULTIPLIER = geoengineConfig.getInt("ObstacleMultiplier", 10); + HEURISTIC_WEIGHT = geoengineConfig.getInt("HeuristicWeight", 20); + MAX_ITERATIONS = geoengineConfig.getInt("MaxIterations", 3500); + + FALL_DAMAGE = geoengineConfig.getBoolean("FallDamage", false); + ALLOW_WATER = geoengineConfig.getBoolean("AllowWater", false); } public static void loadBossConfig() { - try + final PropertiesParser bossConfig = new PropertiesParser(RAIDBOSS_CONFIG_FILE); + + ALT_RAIDS_STATS_BONUS = bossConfig.getBoolean("AltRaidsStatsBonus", true); + + RBLOCKRAGE = bossConfig.getInt("RBlockRage", 5000); + + if ((RBLOCKRAGE > 0) && (RBLOCKRAGE < 100)) { - final Properties bossSettings = new Properties(); - final InputStream is = new FileInputStream(new File(RAIDBOSS_CONFIG_FILE)); - bossSettings.load(is); - is.close(); - - ALT_RAIDS_STATS_BONUS = Boolean.parseBoolean(bossSettings.getProperty("AltRaidsStatsBonus", "true")); - - RBLOCKRAGE = Integer.parseInt(bossSettings.getProperty("RBlockRage", "5000")); - - if ((RBLOCKRAGE > 0) && (RBLOCKRAGE < 100)) + LOGGER.info("ATTENTION: RBlockRage, if enabled (>0), must be >=100"); + LOGGER.info(" -- RBlockRage setted to 100 by default"); + RBLOCKRAGE = 100; + } + + RBS_SPECIFIC_LOCK_RAGE = new HashMap<>(); + final String RaidBossesSpecificLockRage = bossConfig.getString("RaidBossesSpecificLockRage", ""); + if (!RaidBossesSpecificLockRage.equals("")) + { + final String[] lockedBosses = RaidBossesSpecificLockRage.split(";"); + for (String actualBossRage : lockedBosses) { - LOGGER.info("ATTENTION: RBlockRage, if enabled (>0), must be >=100"); - LOGGER.info(" -- RBlockRage setted to 100 by default"); - RBLOCKRAGE = 100; - } - - RBS_SPECIFIC_LOCK_RAGE = new HashMap<>(); - - final String RBS_SPECIFIC_LOCK_RAGE_String = bossSettings.getProperty("RaidBossesSpecificLockRage", ""); - - if (!RBS_SPECIFIC_LOCK_RAGE_String.equals("")) - { - - final String[] locked_bosses = RBS_SPECIFIC_LOCK_RAGE_String.split(";"); - - for (String actual_boss_rage : locked_bosses) + final String[] bossRage = actualBossRage.split(","); + int rage = Integer.parseInt(bossRage[1]); + if ((rage > 0) && (rage < 100)) { - final String[] boss_rage = actual_boss_rage.split(","); - - int specific_rage = Integer.parseInt(boss_rage[1]); - - if ((specific_rage > 0) && (specific_rage < 100)) - { - LOGGER.info("ATTENTION: RaidBossesSpecificLockRage Value for boss " + boss_rage[0] + ", if enabled (>0), must be >=100"); - LOGGER.info(" -- RaidBossesSpecificLockRage Value for boss " + boss_rage[0] + " setted to 100 by default"); - specific_rage = 100; - } - - RBS_SPECIFIC_LOCK_RAGE.put(Integer.parseInt(boss_rage[0]), specific_rage); + LOGGER.info("ATTENTION: RaidBossesSpecificLockRage Value for boss " + bossRage[0] + ", if enabled (>0), must be >=100"); + LOGGER.info(" -- RaidBossesSpecificLockRage Value for boss " + bossRage[0] + " setted to 100 by default"); + rage = 100; } + RBS_SPECIFIC_LOCK_RAGE.put(Integer.parseInt(bossRage[0]), rage); } - - PLAYERS_CAN_HEAL_RB = Boolean.parseBoolean(bossSettings.getProperty("PlayersCanHealRb", "true")); - - // ============================================================ - ALLOW_DIRECT_TP_TO_BOSS_ROOM = Boolean.parseBoolean(bossSettings.getProperty("AllowDirectTeleportToBossRoom", "false")); - // Antharas - ANTHARAS_OLD = Boolean.parseBoolean(bossSettings.getProperty("AntharasOldScript", "true")); - ANTHARAS_CLOSE = Integer.parseInt(bossSettings.getProperty("AntharasClose", "1200")); - ANTHARAS_DESPAWN_TIME = Integer.parseInt(bossSettings.getProperty("AntharasDespawnTime", "240")); - ANTHARAS_RESP_FIRST = Integer.parseInt(bossSettings.getProperty("AntharasRespFirst", "192")); - ANTHARAS_RESP_SECOND = Integer.parseInt(bossSettings.getProperty("AntharasRespSecond", "145")); - ANTHARAS_WAIT_TIME = Integer.parseInt(bossSettings.getProperty("AntharasWaitTime", "30")); - ANTHARAS_POWER_MULTIPLIER = Float.parseFloat(bossSettings.getProperty("AntharasPowerMultiplier", "1.0")); - // ============================================================ - // Baium - BAIUM_SLEEP = Integer.parseInt(bossSettings.getProperty("BaiumSleep", "1800")); - BAIUM_RESP_FIRST = Integer.parseInt(bossSettings.getProperty("BaiumRespFirst", "121")); - BAIUM_RESP_SECOND = Integer.parseInt(bossSettings.getProperty("BaiumRespSecond", "8")); - BAIUM_POWER_MULTIPLIER = Float.parseFloat(bossSettings.getProperty("BaiumPowerMultiplier", "1.0")); - // ============================================================ - // Core - CORE_RESP_MINION = Integer.parseInt(bossSettings.getProperty("CoreRespMinion", "60")); - CORE_RESP_FIRST = Integer.parseInt(bossSettings.getProperty("CoreRespFirst", "37")); - CORE_RESP_SECOND = Integer.parseInt(bossSettings.getProperty("CoreRespSecond", "42")); - CORE_LEVEL = Integer.parseInt(bossSettings.getProperty("CoreLevel", "0")); - CORE_RING_CHANCE = Integer.parseInt(bossSettings.getProperty("CoreRingChance", "0")); - CORE_POWER_MULTIPLIER = Float.parseFloat(bossSettings.getProperty("CorePowerMultiplier", "1.0")); - // ============================================================ - // Queen Ant - QA_RESP_NURSE = Integer.parseInt(bossSettings.getProperty("QueenAntRespNurse", "60")); - QA_RESP_ROYAL = Integer.parseInt(bossSettings.getProperty("QueenAntRespRoyal", "120")); - QA_RESP_FIRST = Integer.parseInt(bossSettings.getProperty("QueenAntRespFirst", "19")); - QA_RESP_SECOND = Integer.parseInt(bossSettings.getProperty("QueenAntRespSecond", "35")); - QA_LEVEL = Integer.parseInt(bossSettings.getProperty("QALevel", "0")); - QA_RING_CHANCE = Integer.parseInt(bossSettings.getProperty("QARingChance", "0")); - QA_POWER_MULTIPLIER = Float.parseFloat(bossSettings.getProperty("QueenAntPowerMultiplier", "1.0")); - // ============================================================ - // ZAKEN - ZAKEN_RESP_FIRST = Integer.parseInt(bossSettings.getProperty("ZakenRespFirst", "60")); - ZAKEN_RESP_SECOND = Integer.parseInt(bossSettings.getProperty("ZakenRespSecond", "8")); - ZAKEN_LEVEL = Integer.parseInt(bossSettings.getProperty("ZakenLevel", "0")); - ZAKEN_EARRING_CHANCE = Integer.parseInt(bossSettings.getProperty("ZakenEarringChance", "0")); - ZAKEN_POWER_MULTIPLIER = Float.parseFloat(bossSettings.getProperty("ZakenPowerMultiplier", "1.0")); - // ============================================================ - // ORFEN - ORFEN_RESP_FIRST = Integer.parseInt(bossSettings.getProperty("OrfenRespFirst", "20")); - ORFEN_RESP_SECOND = Integer.parseInt(bossSettings.getProperty("OrfenRespSecond", "8")); - ORFEN_LEVEL = Integer.parseInt(bossSettings.getProperty("OrfenLevel", "0")); - ORFEN_EARRING_CHANCE = Integer.parseInt(bossSettings.getProperty("OrfenEarringChance", "0")); - ORFEN_POWER_MULTIPLIER = Float.parseFloat(bossSettings.getProperty("OrfenPowerMultiplier", "1.0")); - // ============================================================ - // VALAKAS - VALAKAS_RESP_FIRST = Integer.parseInt(bossSettings.getProperty("ValakasRespFirst", "192")); - VALAKAS_RESP_SECOND = Integer.parseInt(bossSettings.getProperty("ValakasRespSecond", "44")); - VALAKAS_WAIT_TIME = Integer.parseInt(bossSettings.getProperty("ValakasWaitTime", "30")); - VALAKAS_POWER_MULTIPLIER = Float.parseFloat(bossSettings.getProperty("ValakasPowerMultiplier", "1.0")); - VALAKAS_DESPAWN_TIME = Integer.parseInt(bossSettings.getProperty("ValakasDespawnTime", "15")); - // ============================================================ - // FRINTEZZA - FRINTEZZA_RESP_FIRST = Integer.parseInt(bossSettings.getProperty("FrintezzaRespFirst", "48")); - FRINTEZZA_RESP_SECOND = Integer.parseInt(bossSettings.getProperty("FrintezzaRespSecond", "8")); - FRINTEZZA_POWER_MULTIPLIER = Float.parseFloat(bossSettings.getProperty("FrintezzaPowerMultiplier", "1.0")); - - BYPASS_FRINTEZZA_PARTIES_CHECK = Boolean.parseBoolean(bossSettings.getProperty("BypassPartiesCheck", "false")); - FRINTEZZA_MIN_PARTIES = Integer.parseInt(bossSettings.getProperty("FrintezzaMinParties", "4")); - FRINTEZZA_MAX_PARTIES = Integer.parseInt(bossSettings.getProperty("FrintezzaMaxParties", "5")); - // ============================================================ - - LEVEL_DIFF_MULTIPLIER_MINION = Float.parseFloat(bossSettings.getProperty("LevelDiffMultiplierMinion", "0.5")); - - RAID_INFO_IDS = bossSettings.getProperty("RaidInfoIDs", ""); - RAID_INFO_IDS_LIST = new ArrayList<>(); - for (String id : RAID_INFO_IDS.split(",")) - { - RAID_INFO_IDS_LIST.add(Integer.parseInt(id)); - } - - // High Priestess van Halter - HPH_FIXINTERVALOFHALTER = Integer.parseInt(bossSettings.getProperty("FixIntervalOfHalter", "172800")); - if ((HPH_FIXINTERVALOFHALTER < 300) || (HPH_FIXINTERVALOFHALTER > 864000)) - { - HPH_FIXINTERVALOFHALTER = 172800; - } - HPH_FIXINTERVALOFHALTER *= 6000; - - HPH_RANDOMINTERVALOFHALTER = Integer.parseInt(bossSettings.getProperty("RandomIntervalOfHalter", "86400")); - if ((HPH_RANDOMINTERVALOFHALTER < 300) || (HPH_RANDOMINTERVALOFHALTER > 864000)) - { - HPH_RANDOMINTERVALOFHALTER = 86400; - } - HPH_RANDOMINTERVALOFHALTER *= 6000; - - HPH_APPTIMEOFHALTER = Integer.parseInt(bossSettings.getProperty("AppTimeOfHalter", "20")); - if ((HPH_APPTIMEOFHALTER < 5) || (HPH_APPTIMEOFHALTER > 60)) - { - HPH_APPTIMEOFHALTER = 20; - } - HPH_APPTIMEOFHALTER *= 6000; - - HPH_ACTIVITYTIMEOFHALTER = Integer.parseInt(bossSettings.getProperty("ActivityTimeOfHalter", "21600")); - if ((HPH_ACTIVITYTIMEOFHALTER < 7200) || (HPH_ACTIVITYTIMEOFHALTER > 86400)) - { - HPH_ACTIVITYTIMEOFHALTER = 21600; - } - HPH_ACTIVITYTIMEOFHALTER *= 1000; - - HPH_FIGHTTIMEOFHALTER = Integer.parseInt(bossSettings.getProperty("FightTimeOfHalter", "7200")); - if ((HPH_FIGHTTIMEOFHALTER < 7200) || (HPH_FIGHTTIMEOFHALTER > 21600)) - { - HPH_FIGHTTIMEOFHALTER = 7200; - } - HPH_FIGHTTIMEOFHALTER *= 6000; - - HPH_CALLROYALGUARDHELPERCOUNT = Integer.parseInt(bossSettings.getProperty("CallRoyalGuardHelperCount", "6")); - if ((HPH_CALLROYALGUARDHELPERCOUNT < 1) || (HPH_CALLROYALGUARDHELPERCOUNT > 6)) - { - HPH_CALLROYALGUARDHELPERCOUNT = 6; - } - - HPH_CALLROYALGUARDHELPERINTERVAL = Integer.parseInt(bossSettings.getProperty("CallRoyalGuardHelperInterval", "10")); - if ((HPH_CALLROYALGUARDHELPERINTERVAL < 1) || (HPH_CALLROYALGUARDHELPERINTERVAL > 60)) - { - HPH_CALLROYALGUARDHELPERINTERVAL = 10; - } - HPH_CALLROYALGUARDHELPERINTERVAL *= 6000; - - HPH_INTERVALOFDOOROFALTER = Integer.parseInt(bossSettings.getProperty("IntervalOfDoorOfAlter", "5400")); - if ((HPH_INTERVALOFDOOROFALTER < 60) || (HPH_INTERVALOFDOOROFALTER > 5400)) - { - HPH_INTERVALOFDOOROFALTER = 5400; - } - HPH_INTERVALOFDOOROFALTER *= 6000; - - HPH_TIMEOFLOCKUPDOOROFALTAR = Integer.parseInt(bossSettings.getProperty("TimeOfLockUpDoorOfAltar", "180")); - if ((HPH_TIMEOFLOCKUPDOOROFALTAR < 60) || (HPH_TIMEOFLOCKUPDOOROFALTAR > 600)) - { - HPH_TIMEOFLOCKUPDOOROFALTAR = 180; - } - HPH_TIMEOFLOCKUPDOOROFALTAR *= 6000; - } - catch (Exception e) + + PLAYERS_CAN_HEAL_RB = bossConfig.getBoolean("PlayersCanHealRb", true); + + ALLOW_DIRECT_TP_TO_BOSS_ROOM = bossConfig.getBoolean("AllowDirectTeleportToBossRoom", false); + // Antharas + ANTHARAS_OLD = bossConfig.getBoolean("AntharasOldScript", true); + ANTHARAS_CLOSE = bossConfig.getInt("AntharasClose", 1200); + ANTHARAS_DESPAWN_TIME = bossConfig.getInt("AntharasDespawnTime", 240); + ANTHARAS_RESP_FIRST = bossConfig.getInt("AntharasRespFirst", 192); + ANTHARAS_RESP_SECOND = bossConfig.getInt("AntharasRespSecond", 145); + ANTHARAS_WAIT_TIME = bossConfig.getInt("AntharasWaitTime", 30); + ANTHARAS_POWER_MULTIPLIER = bossConfig.getFloat("AntharasPowerMultiplier", 1f); + // Baium + BAIUM_SLEEP = bossConfig.getInt("BaiumSleep", 1800); + BAIUM_RESP_FIRST = bossConfig.getInt("BaiumRespFirst", 121); + BAIUM_RESP_SECOND = bossConfig.getInt("BaiumRespSecond", 8); + BAIUM_POWER_MULTIPLIER = bossConfig.getFloat("BaiumPowerMultiplier", 1f); + // Core + CORE_RESP_MINION = bossConfig.getInt("CoreRespMinion", 60); + CORE_RESP_FIRST = bossConfig.getInt("CoreRespFirst", 37); + CORE_RESP_SECOND = bossConfig.getInt("CoreRespSecond", 42); + CORE_LEVEL = bossConfig.getInt("CoreLevel", 0); + CORE_RING_CHANCE = bossConfig.getInt("CoreRingChance", 0); + CORE_POWER_MULTIPLIER = bossConfig.getFloat("CorePowerMultiplier", 1f); + // Queen Ant + QA_RESP_NURSE = bossConfig.getInt("QueenAntRespNurse", 60); + QA_RESP_ROYAL = bossConfig.getInt("QueenAntRespRoyal", 120); + QA_RESP_FIRST = bossConfig.getInt("QueenAntRespFirst", 19); + QA_RESP_SECOND = bossConfig.getInt("QueenAntRespSecond", 35); + QA_LEVEL = bossConfig.getInt("QALevel", 0); + QA_RING_CHANCE = bossConfig.getInt("QARingChance", 0); + QA_POWER_MULTIPLIER = bossConfig.getFloat("QueenAntPowerMultiplier", 1f); + // Zaken + ZAKEN_RESP_FIRST = bossConfig.getInt("ZakenRespFirst", 60); + ZAKEN_RESP_SECOND = bossConfig.getInt("ZakenRespSecond", 8); + ZAKEN_LEVEL = bossConfig.getInt("ZakenLevel", 0); + ZAKEN_EARRING_CHANCE = bossConfig.getInt("ZakenEarringChance", 0); + ZAKEN_POWER_MULTIPLIER = bossConfig.getFloat("ZakenPowerMultiplier", 1f); + // Orfen + ORFEN_RESP_FIRST = bossConfig.getInt("OrfenRespFirst", 20); + ORFEN_RESP_SECOND = bossConfig.getInt("OrfenRespSecond", 8); + ORFEN_LEVEL = bossConfig.getInt("OrfenLevel", 0); + ORFEN_EARRING_CHANCE = bossConfig.getInt("OrfenEarringChance", 0); + ORFEN_POWER_MULTIPLIER = bossConfig.getFloat("OrfenPowerMultiplier", 1f); + // Valakas + VALAKAS_RESP_FIRST = bossConfig.getInt("ValakasRespFirst", 192); + VALAKAS_RESP_SECOND = bossConfig.getInt("ValakasRespSecond", 44); + VALAKAS_WAIT_TIME = bossConfig.getInt("ValakasWaitTime", 30); + VALAKAS_POWER_MULTIPLIER = bossConfig.getFloat("ValakasPowerMultiplier", 1f); + VALAKAS_DESPAWN_TIME = bossConfig.getInt("ValakasDespawnTime", 15); + // Frintezza + FRINTEZZA_RESP_FIRST = bossConfig.getInt("FrintezzaRespFirst", 48); + FRINTEZZA_RESP_SECOND = bossConfig.getInt("FrintezzaRespSecond", 8); + FRINTEZZA_POWER_MULTIPLIER = bossConfig.getFloat("FrintezzaPowerMultiplier", 1f); + BYPASS_FRINTEZZA_PARTIES_CHECK = bossConfig.getBoolean("BypassPartiesCheck", false); + FRINTEZZA_MIN_PARTIES = bossConfig.getInt("FrintezzaMinParties", 4); + FRINTEZZA_MAX_PARTIES = bossConfig.getInt("FrintezzaMaxParties", 5); + + LEVEL_DIFF_MULTIPLIER_MINION = bossConfig.getFloat("LevelDiffMultiplierMinion", 0.5f); + + RAID_INFO_IDS = bossConfig.getString("RaidInfoIDs", ""); + RAID_INFO_IDS_LIST = new ArrayList<>(); + for (String id : RAID_INFO_IDS.split(",")) { - e.printStackTrace(); - throw new Error("Failed to Load " + RAIDBOSS_CONFIG_FILE + " File."); + RAID_INFO_IDS_LIST.add(Integer.parseInt(id)); } + + // High Priestess van Halter + HPH_FIXINTERVALOFHALTER = bossConfig.getInt("FixIntervalOfHalter", 172800); + if ((HPH_FIXINTERVALOFHALTER < 300) || (HPH_FIXINTERVALOFHALTER > 864000)) + { + HPH_FIXINTERVALOFHALTER = 172800; + } + HPH_FIXINTERVALOFHALTER *= 6000; + + HPH_RANDOMINTERVALOFHALTER = bossConfig.getInt("RandomIntervalOfHalter", 86400); + if ((HPH_RANDOMINTERVALOFHALTER < 300) || (HPH_RANDOMINTERVALOFHALTER > 864000)) + { + HPH_RANDOMINTERVALOFHALTER = 86400; + } + HPH_RANDOMINTERVALOFHALTER *= 6000; + + HPH_APPTIMEOFHALTER = bossConfig.getInt("AppTimeOfHalter", 20); + if ((HPH_APPTIMEOFHALTER < 5) || (HPH_APPTIMEOFHALTER > 60)) + { + HPH_APPTIMEOFHALTER = 20; + } + HPH_APPTIMEOFHALTER *= 6000; + + HPH_ACTIVITYTIMEOFHALTER = bossConfig.getInt("ActivityTimeOfHalter", 21600); + if ((HPH_ACTIVITYTIMEOFHALTER < 7200) || (HPH_ACTIVITYTIMEOFHALTER > 86400)) + { + HPH_ACTIVITYTIMEOFHALTER = 21600; + } + HPH_ACTIVITYTIMEOFHALTER *= 1000; + + HPH_FIGHTTIMEOFHALTER = bossConfig.getInt("FightTimeOfHalter", 7200); + if ((HPH_FIGHTTIMEOFHALTER < 7200) || (HPH_FIGHTTIMEOFHALTER > 21600)) + { + HPH_FIGHTTIMEOFHALTER = 7200; + } + HPH_FIGHTTIMEOFHALTER *= 6000; + + HPH_CALLROYALGUARDHELPERCOUNT = bossConfig.getInt("CallRoyalGuardHelperCount", 6); + if ((HPH_CALLROYALGUARDHELPERCOUNT < 1) || (HPH_CALLROYALGUARDHELPERCOUNT > 6)) + { + HPH_CALLROYALGUARDHELPERCOUNT = 6; + } + + HPH_CALLROYALGUARDHELPERINTERVAL = bossConfig.getInt("CallRoyalGuardHelperInterval", 10); + if ((HPH_CALLROYALGUARDHELPERINTERVAL < 1) || (HPH_CALLROYALGUARDHELPERINTERVAL > 60)) + { + HPH_CALLROYALGUARDHELPERINTERVAL = 10; + } + HPH_CALLROYALGUARDHELPERINTERVAL *= 6000; + + HPH_INTERVALOFDOOROFALTER = bossConfig.getInt("IntervalOfDoorOfAlter", 5400); + if ((HPH_INTERVALOFDOOROFALTER < 60) || (HPH_INTERVALOFDOOROFALTER > 5400)) + { + HPH_INTERVALOFDOOROFALTER = 5400; + } + HPH_INTERVALOFDOOROFALTER *= 6000; + + HPH_TIMEOFLOCKUPDOOROFALTAR = bossConfig.getInt("TimeOfLockUpDoorOfAltar", 180); + if ((HPH_TIMEOFLOCKUPDOOROFALTAR < 60) || (HPH_TIMEOFLOCKUPDOOROFALTAR > 600)) + { + HPH_TIMEOFLOCKUPDOOROFALTAR = 180; + } + HPH_TIMEOFLOCKUPDOOROFALTAR *= 6000; } public static void loadCharacterConfig() { - try + final PropertiesParser characterConfig = new PropertiesParser(CHARACTER_CONFIG_FILE); + + AUTO_LOOT = characterConfig.getBoolean("AutoLoot", true); + AUTO_LOOT_HERBS = characterConfig.getBoolean("AutoLootHerbs", true); + AUTO_LOOT_BOSS = characterConfig.getBoolean("AutoLootBoss", true); + AUTO_LEARN_SKILLS = characterConfig.getBoolean("AutoLearnSkills", false); + AUTO_LEARN_DIVINE_INSPIRATION = characterConfig.getBoolean("AutoLearnDivineInspiration", false); + LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); + SP_BOOK_NEEDED = characterConfig.getBoolean("SpBookNeeded", true); + ES_SP_BOOK_NEEDED = characterConfig.getBoolean("EnchantSkillSpBookNeeded", true); + DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); + ALT_GAME_SKILL_LEARN = characterConfig.getBoolean("AltGameSkillLearn", false); + ALLOWED_SUBCLASS = characterConfig.getInt("AllowedSubclass", 3); + BASE_SUBCLASS_LEVEL = characterConfig.getByte("BaseSubclassLevel", (byte) 40); + MAX_SUBCLASS_LEVEL = characterConfig.getByte("MaxSubclassLevel", (byte) 81); + ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); + ALT_RESTORE_EFFECTS_ON_SUBCLASS_CHANGE = characterConfig.getBoolean("AltRestoreEffectOnSub", false); + ALT_PARTY_RANGE = characterConfig.getInt("AltPartyRange", 1500); + ALT_WEIGHT_LIMIT = characterConfig.getDouble("AltWeightLimit", 1); + ALT_GAME_DELEVEL = characterConfig.getBoolean("Delevel", true); + ALT_GAME_MAGICFAILURES = characterConfig.getBoolean("MagicFailures", false); + ALT_GAME_CANCEL_CAST = characterConfig.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || characterConfig.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all"); + ALT_GAME_CANCEL_BOW = characterConfig.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || characterConfig.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all"); + ALT_GAME_SHIELD_BLOCKS = characterConfig.getBoolean("AltShieldBlocks", false); + ALT_PERFECT_SHLD_BLOCK = characterConfig.getInt("AltPerfectShieldBlockRate", 10); + ALT_GAME_MOB_ATTACK_AI = characterConfig.getBoolean("AltGameMobAttackAI", false); + ALT_MOB_AGRO_IN_PEACEZONE = characterConfig.getBoolean("AltMobAgroInPeaceZone", true); + ALT_GAME_FREIGHTS = characterConfig.getBoolean("AltGameFreights", false); + ALT_GAME_FREIGHT_PRICE = characterConfig.getInt("AltGameFreightPrice", 1000); + ALT_GAME_EXPONENT_XP = characterConfig.getFloat("AltGameExponentXp", 0f); + ALT_GAME_EXPONENT_SP = characterConfig.getFloat("AltGameExponentSp", 0f); + ALT_GAME_TIREDNESS = characterConfig.getBoolean("AltGameTiredness", false); + ALT_GAME_FREE_TELEPORT = characterConfig.getBoolean("AltFreeTeleporting", false); + ALT_RECOMMEND = characterConfig.getBoolean("AltRecommend", false); + ALT_RECOMMENDATIONS_NUMBER = characterConfig.getInt("AltMaxRecommendationNumber", 255); + MAX_CHARACTERS_NUMBER_PER_ACCOUNT = characterConfig.getInt("CharMaxNumber", 0); + MAX_LEVEL_NEWBIE = characterConfig.getInt("MaxLevelNewbie", 20); + MAX_LEVEL_NEWBIE_STATUS = characterConfig.getInt("MaxLevelNewbieStatus", 40); + DISABLE_TUTORIAL = characterConfig.getBoolean("DisableTutorial", false); + STARTING_ADENA = characterConfig.getInt("StartingAdena", 100); + STARTING_AA = characterConfig.getInt("StartingAncientAdena", 0); + CUSTOM_STARTER_ITEMS_ENABLED = characterConfig.getBoolean("CustomStarterItemsEnabled", false); + if (CUSTOM_STARTER_ITEMS_ENABLED) { - final L2Properties characterSettings = new L2Properties(CHARACTER_CONFIG_FILE); + STARTING_CUSTOM_ITEMS_M.clear(); + String[] propertySplit = characterConfig.getString("StartingCustomItemsMage", "57,0").split(";"); + for (String reward : propertySplit) + { + final String[] rewardSplit = reward.split(","); + if (rewardSplit.length != 2) + { + LOGGER.warning("StartingCustomItemsMage[Config.load()]: invalid config property -> StartingCustomItemsMage \"" + reward + "\""); + } + else + { + try + { + STARTING_CUSTOM_ITEMS_M.add(new int[] + { + Integer.parseInt(rewardSplit[0]), + Integer.parseInt(rewardSplit[1]) + }); + } + catch (NumberFormatException nfe) + { + if (!reward.isEmpty()) + { + LOGGER.warning("StartingCustomItemsMage[Config.load()]: invalid config property -> StartingCustomItemsMage \"" + reward + "\""); + } + } + } + } - AUTO_LOOT = characterSettings.getProperty("AutoLoot").equalsIgnoreCase("true"); - AUTO_LOOT_HERBS = characterSettings.getProperty("AutoLootHerbs").equalsIgnoreCase("true"); - AUTO_LOOT_BOSS = characterSettings.getProperty("AutoLootBoss").equalsIgnoreCase("true"); - AUTO_LEARN_SKILLS = Boolean.parseBoolean(characterSettings.getProperty("AutoLearnSkills", "false")); - AUTO_LEARN_DIVINE_INSPIRATION = Boolean.parseBoolean(characterSettings.getProperty("AutoLearnDivineInspiration", "false")); - LIFE_CRYSTAL_NEEDED = Boolean.parseBoolean(characterSettings.getProperty("LifeCrystalNeeded", "true")); - SP_BOOK_NEEDED = Boolean.parseBoolean(characterSettings.getProperty("SpBookNeeded", "true")); - ES_SP_BOOK_NEEDED = Boolean.parseBoolean(characterSettings.getProperty("EnchantSkillSpBookNeeded", "true")); - DIVINE_SP_BOOK_NEEDED = Boolean.parseBoolean(characterSettings.getProperty("DivineInspirationSpBookNeeded", "true")); - ALT_GAME_SKILL_LEARN = Boolean.parseBoolean(characterSettings.getProperty("AltGameSkillLearn", "false")); - ALLOWED_SUBCLASS = Integer.parseInt(characterSettings.getProperty("AllowedSubclass", "3")); - BASE_SUBCLASS_LEVEL = Byte.parseByte(characterSettings.getProperty("BaseSubclassLevel", "40")); - MAX_SUBCLASS_LEVEL = Byte.parseByte(characterSettings.getProperty("MaxSubclassLevel", "81")); - ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(characterSettings.getProperty("AltSubClassWithoutQuests", "false")); - ALT_RESTORE_EFFECTS_ON_SUBCLASS_CHANGE = Boolean.parseBoolean(characterSettings.getProperty("AltRestoreEffectOnSub", "false")); - ALT_PARTY_RANGE = Integer.parseInt(characterSettings.getProperty("AltPartyRange", "1500")); - ALT_WEIGHT_LIMIT = Double.parseDouble(characterSettings.getProperty("AltWeightLimit", "1")); - ALT_GAME_DELEVEL = Boolean.parseBoolean(characterSettings.getProperty("Delevel", "true")); - ALT_GAME_MAGICFAILURES = Boolean.parseBoolean(characterSettings.getProperty("MagicFailures", "false")); - ALT_GAME_CANCEL_CAST = characterSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || characterSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all"); - ALT_GAME_CANCEL_BOW = characterSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || characterSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all"); - ALT_GAME_SHIELD_BLOCKS = Boolean.parseBoolean(characterSettings.getProperty("AltShieldBlocks", "false")); - ALT_PERFECT_SHLD_BLOCK = Integer.parseInt(characterSettings.getProperty("AltPerfectShieldBlockRate", "10")); - ALT_GAME_MOB_ATTACK_AI = Boolean.parseBoolean(characterSettings.getProperty("AltGameMobAttackAI", "false")); - ALT_MOB_AGRO_IN_PEACEZONE = Boolean.parseBoolean(characterSettings.getProperty("AltMobAgroInPeaceZone", "true")); - ALT_GAME_FREIGHTS = Boolean.parseBoolean(characterSettings.getProperty("AltGameFreights", "false")); - ALT_GAME_FREIGHT_PRICE = Integer.parseInt(characterSettings.getProperty("AltGameFreightPrice", "1000")); - ALT_GAME_EXPONENT_XP = Float.parseFloat(characterSettings.getProperty("AltGameExponentXp", "0.")); - ALT_GAME_EXPONENT_SP = Float.parseFloat(characterSettings.getProperty("AltGameExponentSp", "0.")); - ALT_GAME_TIREDNESS = Boolean.parseBoolean(characterSettings.getProperty("AltGameTiredness", "false")); - ALT_GAME_FREE_TELEPORT = Boolean.parseBoolean(characterSettings.getProperty("AltFreeTeleporting", "false")); - ALT_RECOMMEND = Boolean.parseBoolean(characterSettings.getProperty("AltRecommend", "false")); - ALT_RECOMMENDATIONS_NUMBER = Integer.parseInt(characterSettings.getProperty("AltMaxRecommendationNumber", "255")); - MAX_CHARACTERS_NUMBER_PER_ACCOUNT = Integer.parseInt(characterSettings.getProperty("CharMaxNumber", "0")); - MAX_LEVEL_NEWBIE = Integer.parseInt(characterSettings.getProperty("MaxLevelNewbie", "20")); - MAX_LEVEL_NEWBIE_STATUS = Integer.parseInt(characterSettings.getProperty("MaxLevelNewbieStatus", "40")); - DISABLE_TUTORIAL = Boolean.parseBoolean(characterSettings.getProperty("DisableTutorial", "false")); - STARTING_ADENA = Integer.parseInt(characterSettings.getProperty("StartingAdena", "100")); - STARTING_AA = Integer.parseInt(characterSettings.getProperty("StartingAncientAdena", "0")); - CUSTOM_STARTER_ITEMS_ENABLED = Boolean.parseBoolean(characterSettings.getProperty("CustomStarterItemsEnabled", "false")); - if (CUSTOM_STARTER_ITEMS_ENABLED) + STARTING_CUSTOM_ITEMS_F.clear(); + propertySplit = characterConfig.getString("StartingCustomItemsFighter", "57,0").split(";"); + for (String reward : propertySplit) { - STARTING_CUSTOM_ITEMS_M.clear(); - String[] propertySplit = characterSettings.getProperty("StartingCustomItemsMage", "57,0").split(";"); - for (String reward : propertySplit) + final String[] rewardSplit = reward.split(","); + if (rewardSplit.length != 2) { - final String[] rewardSplit = reward.split(","); - if (rewardSplit.length != 2) - { - LOGGER.warning("StartingCustomItemsMage[Config.load()]: invalid config property -> StartingCustomItemsMage \"" + reward + "\""); - } - else - { - try - { - STARTING_CUSTOM_ITEMS_M.add(new int[] - { - Integer.parseInt(rewardSplit[0]), - Integer.parseInt(rewardSplit[1]) - }); - } - catch (NumberFormatException nfe) - { - if (!reward.isEmpty()) - { - LOGGER.warning("StartingCustomItemsMage[Config.load()]: invalid config property -> StartingCustomItemsMage \"" + reward + "\""); - } - } - } + LOGGER.warning("StartingCustomItemsFighter[Config.load()]: invalid config property -> StartingCustomItemsFighter \"" + reward + "\""); } - - STARTING_CUSTOM_ITEMS_F.clear(); - propertySplit = characterSettings.getProperty("StartingCustomItemsFighter", "57,0").split(";"); - for (String reward : propertySplit) + else { - final String[] rewardSplit = reward.split(","); - if (rewardSplit.length != 2) + try { - LOGGER.warning("StartingCustomItemsFighter[Config.load()]: invalid config property -> StartingCustomItemsFighter \"" + reward + "\""); + STARTING_CUSTOM_ITEMS_F.add(new int[] + { + Integer.parseInt(rewardSplit[0]), + Integer.parseInt(rewardSplit[1]) + }); } - else + catch (NumberFormatException nfe) { - try + if (!reward.isEmpty()) { - STARTING_CUSTOM_ITEMS_F.add(new int[] - { - Integer.parseInt(rewardSplit[0]), - Integer.parseInt(rewardSplit[1]) - }); - } - catch (NumberFormatException nfe) - { - if (!reward.isEmpty()) - { - LOGGER.warning("StartingCustomItemsFighter[Config.load()]: invalid config property -> StartingCustomItemsFighter \"" + reward + "\""); - } + LOGGER.warning("StartingCustomItemsFighter[Config.load()]: invalid config property -> StartingCustomItemsFighter \"" + reward + "\""); } } } } - INVENTORY_MAXIMUM_NO_DWARF = Integer.parseInt(characterSettings.getProperty("MaximumSlotsForNoDwarf", "80")); - INVENTORY_MAXIMUM_DWARF = Integer.parseInt(characterSettings.getProperty("MaximumSlotsForDwarf", "100")); - INVENTORY_MAXIMUM_GM = Integer.parseInt(characterSettings.getProperty("MaximumSlotsForGMPlayer", "250")); - MAX_ITEM_IN_PACKET = Math.max(INVENTORY_MAXIMUM_NO_DWARF, Math.max(INVENTORY_MAXIMUM_DWARF, INVENTORY_MAXIMUM_GM)); - WAREHOUSE_SLOTS_DWARF = Integer.parseInt(characterSettings.getProperty("MaximumWarehouseSlotsForDwarf", "120")); - WAREHOUSE_SLOTS_NO_DWARF = Integer.parseInt(characterSettings.getProperty("MaximumWarehouseSlotsForNoDwarf", "100")); - WAREHOUSE_SLOTS_CLAN = Integer.parseInt(characterSettings.getProperty("MaximumWarehouseSlotsForClan", "150")); - FREIGHT_SLOTS = Integer.parseInt(characterSettings.getProperty("MaximumFreightSlots", "20")); - MAX_PVTSTORE_SLOTS_DWARF = Integer.parseInt(characterSettings.getProperty("MaxPvtStoreSlotsDwarf", "5")); - MAX_PVTSTORE_SLOTS_OTHER = Integer.parseInt(characterSettings.getProperty("MaxPvtStoreSlotsOther", "4")); - HP_REGEN_MULTIPLIER = Double.parseDouble(characterSettings.getProperty("HpRegenMultiplier", "100")) / 100; - MP_REGEN_MULTIPLIER = Double.parseDouble(characterSettings.getProperty("MpRegenMultiplier", "100")) / 100; - CP_REGEN_MULTIPLIER = Double.parseDouble(characterSettings.getProperty("CpRegenMultiplier", "100")) / 100; - ENABLE_KEYBOARD_MOVEMENT = Boolean.parseBoolean(characterSettings.getProperty("KeyboardMovement", "true")); - UNSTUCK_INTERVAL = Integer.parseInt(characterSettings.getProperty("UnstuckInterval", "300")); - PLAYER_SPAWN_PROTECTION = Integer.parseInt(characterSettings.getProperty("PlayerSpawnProtection", "0")); - PLAYER_TELEPORT_PROTECTION = Integer.parseInt(characterSettings.getProperty("PlayerTeleportProtection", "0")); - PLAYER_FAKEDEATH_UP_PROTECTION = Integer.parseInt(characterSettings.getProperty("PlayerFakeDeathUpProtection", "0")); - DEEPBLUE_DROP_RULES = Boolean.parseBoolean(characterSettings.getProperty("UseDeepBlueDropRules", "true")); - PARTY_XP_CUTOFF_METHOD = characterSettings.getProperty("PartyXpCutoffMethod", "percentage"); - PARTY_XP_CUTOFF_PERCENT = Double.parseDouble(characterSettings.getProperty("PartyXpCutoffPercent", "3.")); - PARTY_XP_CUTOFF_LEVEL = Integer.parseInt(characterSettings.getProperty("PartyXpCutoffLevel", "30")); - RESPAWN_RESTORE_CP = Double.parseDouble(characterSettings.getProperty("RespawnRestoreCP", "0")) / 100; - RESPAWN_RESTORE_HP = Double.parseDouble(characterSettings.getProperty("RespawnRestoreHP", "70")) / 100; - RESPAWN_RESTORE_MP = Double.parseDouble(characterSettings.getProperty("RespawnRestoreMP", "70")) / 100; - RESPAWN_RANDOM_ENABLED = Boolean.parseBoolean(characterSettings.getProperty("RespawnRandomInTown", "false")); - RESPAWN_RANDOM_MAX_OFFSET = Integer.parseInt(characterSettings.getProperty("RespawnRandomMaxOffset", "50")); - PETITIONING_ALLOWED = Boolean.parseBoolean(characterSettings.getProperty("PetitioningAllowed", "true")); - MAX_PETITIONS_PER_PLAYER = Integer.parseInt(characterSettings.getProperty("MaxPetitionsPerPlayer", "5")); - MAX_PETITIONS_PENDING = Integer.parseInt(characterSettings.getProperty("MaxPetitionsPending", "25")); - DEATH_PENALTY_CHANCE = Integer.parseInt(characterSettings.getProperty("DeathPenaltyChance", "20")); - EFFECT_CANCELING = Boolean.parseBoolean(characterSettings.getProperty("CancelLesserEffect", "true")); - STORE_SKILL_COOLTIME = Boolean.parseBoolean(characterSettings.getProperty("StoreSkillCooltime", "true")); - BUFFS_MAX_AMOUNT = Byte.parseByte(characterSettings.getProperty("MaxBuffAmount", "24")); - DEBUFFS_MAX_AMOUNT = Byte.parseByte(characterSettings.getProperty("MaxDebuffAmount", "6")); - ENABLE_MODIFY_SKILL_DURATION = Boolean.parseBoolean(characterSettings.getProperty("EnableModifySkillDuration", "false")); - if (ENABLE_MODIFY_SKILL_DURATION) - { - SKILL_DURATION_LIST = new HashMap<>(); - - String[] propertySplit; - propertySplit = characterSettings.getProperty("SkillDurationList", "").split(";"); - - for (String skill : propertySplit) - { - final String[] skillSplit = skill.split(","); - if (skillSplit.length != 2) - { - LOGGER.info("[SkillDurationList]: invalid config property -> SkillDurationList \"" + skill + "\""); - } - else - { - try - { - SKILL_DURATION_LIST.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1])); - } - catch (NumberFormatException nfe) - { - if (!skill.equals("")) - { - LOGGER.info("[SkillDurationList]: invalid config property -> SkillList \"" + skillSplit[0] + "\"" + skillSplit[1]); - } - } - } - } - } - ALLOW_CLASS_MASTERS = Boolean.parseBoolean(characterSettings.getProperty("AllowClassMasters", "false")); - CLASS_MASTER_STRIDER_UPDATE = Boolean.parseBoolean(characterSettings.getProperty("AllowClassMastersStriderUpdate", "false")); - ALLOW_CLASS_MASTERS_FIRST_CLASS = Boolean.parseBoolean(characterSettings.getProperty("AllowClassMastersFirstClass", "true")); - ALLOW_CLASS_MASTERS_SECOND_CLASS = Boolean.parseBoolean(characterSettings.getProperty("AllowClassMastersSecondClass", "true")); - ALLOW_CLASS_MASTERS_THIRD_CLASS = Boolean.parseBoolean(characterSettings.getProperty("AllowClassMastersThirdClass", "true")); - CLASS_MASTER_SETTINGS = new ClassMasterSettings(characterSettings.getProperty("ConfigClassMaster")); - ALLOW_REMOTE_CLASS_MASTERS = Boolean.parseBoolean(characterSettings.getProperty("AllowRemoteClassMasters", "false")); } - catch (Exception e) + INVENTORY_MAXIMUM_NO_DWARF = characterConfig.getInt("MaximumSlotsForNoDwarf", 80); + INVENTORY_MAXIMUM_DWARF = characterConfig.getInt("MaximumSlotsForDwarf", 100); + INVENTORY_MAXIMUM_GM = characterConfig.getInt("MaximumSlotsForGMPlayer", 250); + MAX_ITEM_IN_PACKET = Math.max(INVENTORY_MAXIMUM_NO_DWARF, Math.max(INVENTORY_MAXIMUM_DWARF, INVENTORY_MAXIMUM_GM)); + WAREHOUSE_SLOTS_DWARF = characterConfig.getInt("MaximumWarehouseSlotsForDwarf", 120); + WAREHOUSE_SLOTS_NO_DWARF = characterConfig.getInt("MaximumWarehouseSlotsForNoDwarf", 100); + WAREHOUSE_SLOTS_CLAN = characterConfig.getInt("MaximumWarehouseSlotsForClan", 150); + FREIGHT_SLOTS = characterConfig.getInt("MaximumFreightSlots", 20); + MAX_PVTSTORE_SLOTS_DWARF = characterConfig.getInt("MaxPvtStoreSlotsDwarf", 5); + MAX_PVTSTORE_SLOTS_OTHER = characterConfig.getInt("MaxPvtStoreSlotsOther", 4); + HP_REGEN_MULTIPLIER = characterConfig.getDouble("HpRegenMultiplier", 100) / 100; + MP_REGEN_MULTIPLIER = characterConfig.getDouble("MpRegenMultiplier", 100) / 100; + CP_REGEN_MULTIPLIER = characterConfig.getDouble("CpRegenMultiplier", 100) / 100; + ENABLE_KEYBOARD_MOVEMENT = characterConfig.getBoolean("KeyboardMovement", true); + UNSTUCK_INTERVAL = characterConfig.getInt("UnstuckInterval", 300); + PLAYER_SPAWN_PROTECTION = characterConfig.getInt("PlayerSpawnProtection", 0); + PLAYER_TELEPORT_PROTECTION = characterConfig.getInt("PlayerTeleportProtection", 0); + PLAYER_FAKEDEATH_UP_PROTECTION = characterConfig.getInt("PlayerFakeDeathUpProtection", 0); + DEEPBLUE_DROP_RULES = characterConfig.getBoolean("UseDeepBlueDropRules", true); + PARTY_XP_CUTOFF_METHOD = characterConfig.getString("PartyXpCutoffMethod", "percentage"); + PARTY_XP_CUTOFF_PERCENT = characterConfig.getDouble("PartyXpCutoffPercent", 3); + PARTY_XP_CUTOFF_LEVEL = characterConfig.getInt("PartyXpCutoffLevel", 30); + RESPAWN_RESTORE_CP = characterConfig.getDouble("RespawnRestoreCP", 0) / 100; + RESPAWN_RESTORE_HP = characterConfig.getDouble("RespawnRestoreHP", 70) / 100; + RESPAWN_RESTORE_MP = characterConfig.getDouble("RespawnRestoreMP", 70) / 100; + RESPAWN_RANDOM_ENABLED = characterConfig.getBoolean("RespawnRandomInTown", false); + RESPAWN_RANDOM_MAX_OFFSET = characterConfig.getInt("RespawnRandomMaxOffset", 50); + PETITIONING_ALLOWED = characterConfig.getBoolean("PetitioningAllowed", true); + MAX_PETITIONS_PER_PLAYER = characterConfig.getInt("MaxPetitionsPerPlayer", 5); + MAX_PETITIONS_PENDING = characterConfig.getInt("MaxPetitionsPending", 25); + DEATH_PENALTY_CHANCE = characterConfig.getInt("DeathPenaltyChance", 20); + EFFECT_CANCELING = characterConfig.getBoolean("CancelLesserEffect", true); + STORE_SKILL_COOLTIME = characterConfig.getBoolean("StoreSkillCooltime", true); + BUFFS_MAX_AMOUNT = characterConfig.getByte("MaxBuffAmount", (byte) 24); + DEBUFFS_MAX_AMOUNT = characterConfig.getByte("MaxDebuffAmount", (byte) 6); + ENABLE_MODIFY_SKILL_DURATION = characterConfig.getBoolean("EnableModifySkillDuration", false); + if (ENABLE_MODIFY_SKILL_DURATION) { - LOGGER.warning("Failed to load " + CHARACTER_CONFIG_FILE + " file."); + SKILL_DURATION_LIST = new HashMap<>(); + + String[] propertySplit; + propertySplit = characterConfig.getString("SkillDurationList", "").split(";"); + + for (String skill : propertySplit) + { + final String[] skillSplit = skill.split(","); + if (skillSplit.length != 2) + { + LOGGER.info("[SkillDurationList]: invalid config property -> SkillDurationList \"" + skill + "\""); + } + else + { + try + { + SKILL_DURATION_LIST.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1])); + } + catch (NumberFormatException nfe) + { + if (!skill.equals("")) + { + LOGGER.info("[SkillDurationList]: invalid config property -> SkillList \"" + skillSplit[0] + "\"" + skillSplit[1]); + } + } + } + } } + ALLOW_CLASS_MASTERS = characterConfig.getBoolean("AllowClassMasters", false); + CLASS_MASTER_STRIDER_UPDATE = characterConfig.getBoolean("AllowClassMastersStriderUpdate", false); + ALLOW_CLASS_MASTERS_FIRST_CLASS = characterConfig.getBoolean("AllowClassMastersFirstClass", true); + ALLOW_CLASS_MASTERS_SECOND_CLASS = characterConfig.getBoolean("AllowClassMastersSecondClass", true); + ALLOW_CLASS_MASTERS_THIRD_CLASS = characterConfig.getBoolean("AllowClassMastersThirdClass", true); + CLASS_MASTER_SETTINGS = new ClassMasterSettings(characterConfig.getString("ConfigClassMaster", "")); + ALLOW_REMOTE_CLASS_MASTERS = characterConfig.getBoolean("AllowRemoteClassMasters", false); } public static void loadDaemonsConf() { - try - { - final L2Properties daemonsSettings = new L2Properties(DAEMONS_CONFIG_FILE); - - DEADLOCKCHECK_INTIAL_TIME = Long.parseLong(daemonsSettings.getProperty("DeadLockCheck", "0")); - DEADLOCKCHECK_DELAY_TIME = Long.parseLong(daemonsSettings.getProperty("DeadLockDelay", "0")); - } - catch (Exception e) - { - LOGGER.warning("Failed to load " + DAEMONS_CONFIG_FILE + " file."); - } + final PropertiesParser deamonsConfig = new PropertiesParser(DAEMONS_CONFIG_FILE); + + DEADLOCKCHECK_INTIAL_TIME = deamonsConfig.getLong("DeadLockCheck", 0); + DEADLOCKCHECK_DELAY_TIME = deamonsConfig.getLong("DeadLockDelay", 0); } /** @@ -3469,13 +3046,13 @@ public class Config LineNumberReader lnr = null; try { - final File filter_file = new File(FILTER_FILE); - if (!filter_file.exists()) + final File file = new File(FILTER_FILE); + if (!file.exists()) { return; } - lnr = new LineNumberReader(new BufferedReader(new FileReader(filter_file))); + lnr = new LineNumberReader(new BufferedReader(new FileReader(file))); String line = null; while ((line = lnr.readLine()) != null) { @@ -3508,100 +3085,80 @@ public class Config } } - public static void loadHexed() + public static void loadHexId() { - try - { - final Properties Settings = new Properties(); - final InputStream is = new FileInputStream(new File(HEXID_FILE)); - Settings.load(is); - is.close(); - SERVER_ID = Integer.parseInt(Settings.getProperty("ServerID")); - HEX_ID = new BigInteger(Settings.getProperty("HexID"), 16).toByteArray(); - } - catch (Exception e) - { - LOGGER.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one."); - } + final PropertiesParser hexIdConfig = new PropertiesParser(HEXID_FILE); + + SERVER_ID = hexIdConfig.getInt("ServerID", 1); + HEX_ID = new BigInteger(hexIdConfig.getString("HexID", null), 16).toByteArray(); } public static void loadLoginStartConfig() { - try - { - final Properties serverSettings = new Properties(); - final InputStream is = new FileInputStream(new File(LOGIN_CONFIG_FILE)); - serverSettings.load(is); - is.close(); - - GAME_SERVER_LOGIN_HOST = serverSettings.getProperty("LoginHostname", "*"); - GAME_SERVER_LOGIN_PORT = Integer.parseInt(serverSettings.getProperty("LoginPort", "9013")); - - LOGIN_BIND_ADDRESS = serverSettings.getProperty("LoginserverHostname", "*"); - PORT_LOGIN = Integer.parseInt(serverSettings.getProperty("LoginserverPort", "2106")); - - ACCEPT_NEW_GAMESERVER = Boolean.parseBoolean(serverSettings.getProperty("AcceptNewGameServer", "true")); - - LOGIN_TRY_BEFORE_BAN = Integer.parseInt(serverSettings.getProperty("LoginTryBeforeBan", "10")); - LOGIN_BLOCK_AFTER_BAN = Integer.parseInt(serverSettings.getProperty("LoginBlockAfterBan", "600")); - - INTERNAL_HOSTNAME = serverSettings.getProperty("InternalHostname", "localhost"); - EXTERNAL_HOSTNAME = serverSettings.getProperty("ExternalHostname", "localhost"); - - DATABASE_DRIVER = serverSettings.getProperty("Driver", "org.mariadb.jdbc.Driver"); - DATABASE_URL = serverSettings.getProperty("URL", "jdbc:mariadb://localhost/l2jdb"); - DATABASE_LOGIN = serverSettings.getProperty("Login", "root"); - DATABASE_PASSWORD = serverSettings.getProperty("Password", ""); - DATABASE_MAX_CONNECTIONS = Integer.parseInt(serverSettings.getProperty("MaximumDbConnections", "10")); - - BACKUP_DATABASE = Boolean.parseBoolean(serverSettings.getProperty("BackupDatabase", "false")); - MYSQL_BIN_PATH = serverSettings.getProperty("MySqlBinLocation", "C:/xampp/mysql/bin/"); - BACKUP_PATH = serverSettings.getProperty("BackupPath", "../backup/"); - BACKUP_DAYS = Integer.parseInt(serverSettings.getProperty("BackupDays", "30")); - - // Anti Brute force attack on login - BRUT_AVG_TIME = Integer.parseInt(serverSettings.getProperty("BrutAvgTime", "30")); // in Seconds - BRUT_LOGON_ATTEMPTS = Integer.parseInt(serverSettings.getProperty("BrutLogonAttempts", "15")); - BRUT_BAN_IP_TIME = Integer.parseInt(serverSettings.getProperty("BrutBanIpTime", "900")); // in Seconds - - SHOW_LICENCE = Boolean.parseBoolean(serverSettings.getProperty("ShowLicence", "false")); - IP_UPDATE_TIME = Integer.parseInt(serverSettings.getProperty("IpUpdateTime", "15")); - FORCE_GGAUTH = Boolean.parseBoolean(serverSettings.getProperty("ForceGGAuth", "false")); - - AUTO_CREATE_ACCOUNTS = Boolean.parseBoolean(serverSettings.getProperty("AutoCreateAccounts", "true")); - - FLOOD_PROTECTION = Boolean.parseBoolean(serverSettings.getProperty("EnableFloodProtection", "true")); - FAST_CONNECTION_LIMIT = Integer.parseInt(serverSettings.getProperty("FastConnectionLimit", "15")); - NORMAL_CONNECTION_TIME = Integer.parseInt(serverSettings.getProperty("NormalConnectionTime", "700")); - FAST_CONNECTION_TIME = Integer.parseInt(serverSettings.getProperty("FastConnectionTime", "350")); - MAX_CONNECTION_PER_IP = Integer.parseInt(serverSettings.getProperty("MaxConnectionPerIP", "50")); - - NETWORK_IP_LIST = serverSettings.getProperty("NetworkList", ""); - SESSION_TTL = Long.parseLong(serverSettings.getProperty("SessionTTL", "25000")); - MAX_LOGINSESSIONS = Integer.parseInt(serverSettings.getProperty("MaxSessions", "200")); - } - catch (Exception e) - { - e.printStackTrace(); - throw new Error("Failed to Load " + LOGIN_CONFIG_FILE + " File."); - } + final PropertiesParser serverSettings = new PropertiesParser(LOGIN_CONFIG_FILE); + + GAME_SERVER_LOGIN_HOST = serverSettings.getString("LoginHostname", "*"); + GAME_SERVER_LOGIN_PORT = serverSettings.getInt("LoginPort", 9013); + + LOGIN_BIND_ADDRESS = serverSettings.getString("LoginserverHostname", "*"); + PORT_LOGIN = serverSettings.getInt("LoginserverPort", 2106); + + ACCEPT_NEW_GAMESERVER = serverSettings.getBoolean("AcceptNewGameServer", true); + + LOGIN_TRY_BEFORE_BAN = serverSettings.getInt("LoginTryBeforeBan", 10); + LOGIN_BLOCK_AFTER_BAN = serverSettings.getInt("LoginBlockAfterBan", 600); + + INTERNAL_HOSTNAME = serverSettings.getString("InternalHostname", "localhost"); + EXTERNAL_HOSTNAME = serverSettings.getString("ExternalHostname", "localhost"); + + DATABASE_DRIVER = serverSettings.getString("Driver", "org.mariadb.jdbc.Driver"); + DATABASE_URL = serverSettings.getString("URL", "jdbc:mariadb://localhost/l2jdb"); + DATABASE_LOGIN = serverSettings.getString("Login", "root"); + DATABASE_PASSWORD = serverSettings.getString("Password", ""); + DATABASE_MAX_CONNECTIONS = serverSettings.getInt("MaximumDbConnections", 10); + + BACKUP_DATABASE = serverSettings.getBoolean("BackupDatabase", false); + MYSQL_BIN_PATH = serverSettings.getString("MySqlBinLocation", "C:/xampp/mysql/bin/"); + BACKUP_PATH = serverSettings.getString("BackupPath", "../backup/"); + BACKUP_DAYS = serverSettings.getInt("BackupDays", 30); + + // Anti Brute force attack on login + BRUT_AVG_TIME = serverSettings.getInt("BrutAvgTime", 30); // in Seconds + BRUT_LOGON_ATTEMPTS = serverSettings.getInt("BrutLogonAttempts", 15); + BRUT_BAN_IP_TIME = serverSettings.getInt("BrutBanIpTime", 900); // in Seconds + + SHOW_LICENCE = serverSettings.getBoolean("ShowLicence", false); + IP_UPDATE_TIME = serverSettings.getInt("IpUpdateTime", 15); + FORCE_GGAUTH = serverSettings.getBoolean("ForceGGAuth", false); + + AUTO_CREATE_ACCOUNTS = serverSettings.getBoolean("AutoCreateAccounts", true); + + FLOOD_PROTECTION = serverSettings.getBoolean("EnableFloodProtection", true); + FAST_CONNECTION_LIMIT = serverSettings.getInt("FastConnectionLimit", 15); + NORMAL_CONNECTION_TIME = serverSettings.getInt("NormalConnectionTime", 700); + FAST_CONNECTION_TIME = serverSettings.getInt("FastConnectionTime", 350); + MAX_CONNECTION_PER_IP = serverSettings.getInt("MaxConnectionPerIP", 50); + + NETWORK_IP_LIST = serverSettings.getString("NetworkList", ""); + SESSION_TTL = serverSettings.getLong("SessionTTL", 25000); + MAX_LOGINSESSIONS = serverSettings.getInt("MaxSessions", 200); } public static void loadBanFile() { - File conf_file = new File(BANNED_IP_FILE); - if (!conf_file.exists()) + File file = new File(BANNED_IP_FILE); + if (!file.exists()) { // old file position - conf_file = new File(LEGACY_BANNED_IP); + file = new File(LEGACY_BANNED_IP); } - if (conf_file.exists() && conf_file.isFile()) + if (file.exists() && file.isFile()) { FileInputStream fis = null; try { - fis = new FileInputStream(conf_file); + fis = new FileInputStream(file); LineNumberReader reader = null; String line; @@ -3636,7 +3193,7 @@ public class Config } catch (NumberFormatException e) { - LOGGER.warning("Skipped: Incorrect ban duration (" + parts[1] + ") on (" + conf_file.getName() + "). Line: " + reader.getLineNumber()); + LOGGER.warning("Skipped: Incorrect ban duration (" + parts[1] + ") on (" + file.getName() + "). Line: " + reader.getLineNumber()); continue; } } @@ -3647,21 +3204,21 @@ public class Config } catch (UnknownHostException e) { - LOGGER.warning("Skipped: Invalid address (" + parts[0] + ") on (" + conf_file.getName() + "). Line: " + reader.getLineNumber()); + LOGGER.warning("Skipped: Invalid address (" + parts[0] + ") on (" + file.getName() + "). Line: " + reader.getLineNumber()); } } } } catch (IOException e) { - LOGGER.warning("Error while reading the bans file (" + conf_file.getName() + "). Details: " + e); + LOGGER.warning("Error while reading the bans file (" + file.getName() + "). Details: " + e); } LOGGER.info("Loaded " + LoginController.getInstance().getBannedIps().size() + " IP Bans."); } catch (FileNotFoundException e) { - LOGGER.warning("Failed to load banned IPs file (" + conf_file.getName() + ") for reading. Reason: " + e); + LOGGER.warning("Failed to load banned IPs file (" + file.getName() + ") for reading. Reason: " + e); } finally { @@ -3680,7 +3237,7 @@ public class Config } else { - LOGGER.info("IP Bans file (" + conf_file.getName() + ") is missing or is a directory, skipped."); + LOGGER.info("IP Bans file (" + file.getName() + ") is missing or is a directory, skipped."); } } @@ -3691,39 +3248,26 @@ public class Config public static void saveHexid(int serverId, String hexId, String fileName) { - OutputStream out = null; try { final Properties hexSetting = new Properties(); final File file = new File(fileName); - if (file.createNewFile()) + // Create a new empty file only if it doesn't exist + if (!file.exists()) { - out = new FileOutputStream(file); - hexSetting.setProperty("ServerID", String.valueOf(serverId)); - hexSetting.setProperty("HexID", hexId); - hexSetting.store(out, "the hexID to auth into login"); + try (OutputStream out = new FileOutputStream(file)) + { + hexSetting.setProperty("ServerID", String.valueOf(serverId)); + hexSetting.setProperty("HexID", hexId); + hexSetting.store(out, "The HexId to Auth into LoginServer"); + LOGGER.log(Level.INFO, "Gameserver: Generated new HexID file for server id " + serverId + "."); + } } } catch (Exception e) { - LOGGER.warning("Failed to save hex id to " + fileName + " File."); - e.printStackTrace(); - } - finally - { - - if (out != null) - { - try - { - out.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - + LOGGER.warning(StringUtil.concat("Failed to save hex id to ", fileName, " File.")); + LOGGER.warning("Config: " + e.getMessage()); } } @@ -3737,31 +3281,31 @@ public class Config * Loads flood protector configurations. * @param properties */ - private static void loadFloodProtectorConfigs(L2Properties properties) + private static void loadFloodProtectorConfigs(PropertiesParser properties) { - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_USE_ITEM, "UseItem", "1"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_ROLL_DICE, "RollDice", "42"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_FIREWORK, "Firework", "42"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_ITEM_PET_SUMMON, "ItemPetSummon", "16"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_HERO_VOICE, "HeroVoice", "100"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_GLOBAL_CHAT, "GlobalChat", "5"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_SUBCLASS, "Subclass", "20"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_DROP_ITEM, "DropItem", "10"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_SERVER_BYPASS, "ServerBypass", "5"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MULTISELL, "MultiSell", "1"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_TRANSACTION, "Transaction", "10"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MANUFACTURE, "Manufacture", "3"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MANOR, "Manor", "30"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_CHARACTER_SELECT, "CharacterSelect", "30"); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_USE_ITEM, "UseItem", 1); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_ROLL_DICE, "RollDice", 42); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_FIREWORK, "Firework", 42); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_ITEM_PET_SUMMON, "ItemPetSummon", 16); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_HERO_VOICE, "HeroVoice", 100); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_GLOBAL_CHAT, "GlobalChat", 5); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_SUBCLASS, "Subclass", 20); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_DROP_ITEM, "DropItem", 10); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_SERVER_BYPASS, "ServerBypass", 5); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MULTISELL, "MultiSell", 1); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_TRANSACTION, "Transaction", 10); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MANUFACTURE, "Manufacture", 3); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MANOR, "Manor", 30); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_CHARACTER_SELECT, "CharacterSelect", 30); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_UNKNOWN_PACKETS, "UnknownPackets", "5"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_PARTY_INVITATION, "PartyInvitation", "30"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_SAY_ACTION, "SayAction", "100"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MOVE_ACTION, "MoveAction", "30"); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_UNKNOWN_PACKETS, "UnknownPackets", 5); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_PARTY_INVITATION, "PartyInvitation", 30); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_SAY_ACTION, "SayAction", 100); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MOVE_ACTION, "MoveAction", 30); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_GENERIC_ACTION, "GenericAction", "5"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MACRO, "Macro", "10"); - loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_POTION, "Potion", "4"); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_GENERIC_ACTION, "GenericAction", 5); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_MACRO, "Macro", 10); + loadFloodProtectorConfig(properties, FLOOD_PROTECTOR_POTION, "Potion", 4); } public static void load(ServerMode serverMode) @@ -3769,7 +3313,7 @@ public class Config SERVER_MODE = serverMode; if (SERVER_MODE == ServerMode.GAME) { - loadHexed(); + loadHexId(); // Load network loadServerConfig(); @@ -3787,7 +3331,7 @@ public class Config // Head functions loadCustomServerConfig(); - loadPHYSICSConfig(); + loadPhysicsConfig(); loadAccessConfig(); loadPvpConfig(); loadCraftConfig(); @@ -3800,7 +3344,7 @@ public class Config // Protect loadFloodConfig(); - loadPOtherConfig(); + loadProtectedOtherConfig(); // Geoengine loadgeodataConfig(); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/ClassMasterSettings.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/ClassMasterSettings.java index b65714dd50..02b3547b33 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/ClassMasterSettings.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/ClassMasterSettings.java @@ -26,58 +26,52 @@ public class ClassMasterSettings private final Map> _rewardItems; private final Map _allowedClassChange; - public ClassMasterSettings(String _configLine) + public ClassMasterSettings(String configLine) { _claimItems = new HashMap<>(); _rewardItems = new HashMap<>(); _allowedClassChange = new HashMap<>(); - if (_configLine != null) + if (configLine != null) { - parseConfigLine(_configLine.trim()); + parseConfigLine(configLine.trim()); } } - private void parseConfigLine(String _configLine) + private void parseConfigLine(String configLine) { - final StringTokenizer st = new StringTokenizer(_configLine, ";"); - + final StringTokenizer st = new StringTokenizer(configLine, ";"); while (st.hasMoreTokens()) { final int job = Integer.parseInt(st.nextToken()); - _allowedClassChange.put(job, true); - - Map _items = new HashMap<>(); + Map items = new HashMap<>(); if (st.hasMoreTokens()) { final StringTokenizer st2 = new StringTokenizer(st.nextToken(), "[],"); - while (st2.hasMoreTokens()) { final StringTokenizer st3 = new StringTokenizer(st2.nextToken(), "()"); - final int _itemId = Integer.parseInt(st3.nextToken()); - final int _quantity = Integer.parseInt(st3.nextToken()); - _items.put(_itemId, _quantity); + final int itemId = Integer.parseInt(st3.nextToken()); + final int quantity = Integer.parseInt(st3.nextToken()); + items.put(itemId, quantity); } } + _claimItems.put(job, items); - _claimItems.put(job, _items); - _items = new HashMap<>(); - + items = new HashMap<>(); if (st.hasMoreTokens()) { final StringTokenizer st2 = new StringTokenizer(st.nextToken(), "[],"); - while (st2.hasMoreTokens()) { final StringTokenizer st3 = new StringTokenizer(st2.nextToken(), "()"); - final int _itemId = Integer.parseInt(st3.nextToken()); - final int _quantity = Integer.parseInt(st3.nextToken()); - _items.put(_itemId, _quantity); + final int itemId = Integer.parseInt(st3.nextToken()); + final int quantity = Integer.parseInt(st3.nextToken()); + items.put(itemId, quantity); } } - _rewardItems.put(job, _items); + _rewardItems.put(job, items); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/L2Properties.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/L2Properties.java deleted file mode 100644 index a8b4450d31..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/L2Properties.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.util; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.Reader; -import java.util.Properties; -import java.util.logging.Logger; - -import org.l2jmobius.Config; - -public class L2Properties extends Properties -{ - protected static final Logger LOGGER = Logger.getLogger(Config.class.getName()); - - private boolean _warn = false; - - public L2Properties() - { - } - - public L2Properties setLog(boolean warn) - { - _warn = warn; - - return this; - } - - public L2Properties(String name) throws IOException - { - load(new FileInputStream(name)); - } - - public L2Properties(File file) throws IOException - { - load(new FileInputStream(file)); - } - - public L2Properties(InputStream inStream) - { - load(inStream); - } - - public L2Properties(Reader reader) - { - load(reader); - } - - public void load(String name) throws IOException - { - load(new FileInputStream(name)); - } - - public void load(File file) throws IOException - { - load(new FileInputStream(file)); - } - - @Override - public synchronized void load(InputStream inStream) - { - try - { - super.load(inStream); - } - catch (IOException e) - { - e.printStackTrace(); - } - finally - { - if (inStream != null) - { - try - { - inStream.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - } - } - - @Override - public synchronized void load(Reader reader) - { - try - { - super.load(reader); - } - catch (IOException e) - { - e.printStackTrace(); - } - finally - { - if (reader != null) - { - try - { - reader.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - } - } - - @Override - public String getProperty(String key) - { - final String property = super.getProperty(key); - - if (property == null) - { - if (_warn) - { - LOGGER.warning("L2Properties: Missing property for key - " + key); - } - return null; - } - return property.trim(); - } - - @Override - public String getProperty(String key, String defaultValue) - { - final String property = super.getProperty(key, defaultValue); - - if (property == null) - { - if (_warn) - { - LOGGER.warning("L2Properties: Missing defaultValue for key - " + key); - } - return null; - } - return property.trim(); - } -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/PropertiesParser.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/PropertiesParser.java new file mode 100644 index 0000000000..c63d8a40dd --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/PropertiesParser.java @@ -0,0 +1,381 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.util; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.lang.reflect.Array; +import java.nio.charset.Charset; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; +import java.util.logging.Logger; + +/** + * Simplifies loading of property files and adds logging if a non existing property is requested. + * @author NosBit + */ +public class PropertiesParser +{ + private static final Logger LOGGER = Logger.getLogger(PropertiesParser.class.getName()); + + private final Properties _properties = new Properties(); + private final File _file; + + public PropertiesParser(String name) + { + this(new File(name)); + } + + public PropertiesParser(File file) + { + _file = file; + try (FileInputStream fileInputStream = new FileInputStream(file)) + { + try (InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, Charset.defaultCharset())) + { + _properties.load(inputStreamReader); + } + } + catch (Exception e) + { + LOGGER.warning("[" + _file.getName() + "] There was an error loading config reason: " + e.getMessage()); + } + } + + public boolean containskey(String key) + { + return _properties.containsKey(key); + } + + private String getValue(String key) + { + final String value = _properties.getProperty(key); + return value != null ? value.trim() : null; + } + + public boolean getBoolean(String key, boolean defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + + if (value.equalsIgnoreCase("true")) + { + return true; + } + else if (value.equalsIgnoreCase("false")) + { + return false; + } + else + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"boolean\" using default value: " + defaultValue); + return defaultValue; + } + } + + public byte getByte(String key, byte defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + + try + { + return Byte.parseByte(value); + } + catch (NumberFormatException e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"byte\" using default value: " + defaultValue); + return defaultValue; + } + } + + public short getShort(String key, short defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + + try + { + return Short.parseShort(value); + } + catch (NumberFormatException e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"short\" using default value: " + defaultValue); + return defaultValue; + } + } + + public int getInt(String key, int defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + + try + { + return Integer.parseInt(value); + } + catch (NumberFormatException e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"int\" using default value: " + defaultValue); + return defaultValue; + } + } + + public long getLong(String key, long defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + + try + { + return Long.parseLong(value); + } + catch (NumberFormatException e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"long\" using default value: " + defaultValue); + return defaultValue; + } + } + + public float getFloat(String key, float defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + + try + { + return Float.parseFloat(value); + } + catch (NumberFormatException e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"float\" using default value: " + defaultValue); + return defaultValue; + } + } + + public double getDouble(String key, double defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + + try + { + return Double.parseDouble(value); + } + catch (NumberFormatException e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"double\" using default value: " + defaultValue); + return defaultValue; + } + } + + public String getString(String key, String defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + return value; + } + + public > T getEnum(String key, Class clazz, T defaultValue) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue); + return defaultValue; + } + + try + { + return Enum.valueOf(clazz, value); + } + catch (IllegalArgumentException e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be enum value of \"" + clazz.getSimpleName() + "\" using default value: " + defaultValue); + return defaultValue; + } + } + + /** + * @param durationPattern + * @param defaultValue + * @return {@link Duration} object by the durationPattern specified, {@code null} in case of malformed pattern. + */ + public Duration getDuration(String durationPattern, String defaultValue) + { + return getDuration(durationPattern, defaultValue, null); + } + + /** + * @param durationPattern + * @param defaultValue + * @param defaultDuration + * @return {@link Duration} object by the durationPattern specified, the defaultDuration in case of malformed pattern. + */ + public Duration getDuration(String durationPattern, String defaultValue, Duration defaultDuration) + { + final String value = getString(durationPattern, defaultValue); + try + { + return TimeUtil.parseDuration(value); + } + catch (IllegalStateException e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + durationPattern + " specified value: " + value + " should be time patttern using default value: " + defaultValue); + } + return defaultDuration; + } + + /** + * @param key + * @param separator + * @param defaultValues + * @return int array + */ + public int[] getIntArray(String key, String separator, int... defaultValues) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValues); + return defaultValues; + } + + try + { + final String[] data = value.trim().split(separator); + final int[] result = new int[data.length]; + for (int i = 0; i < data.length; i++) + { + result[i] = Integer.decode(data[i].trim()); + } + return result; + } + catch (Exception e) + { + LOGGER.warning("[+_file.getName()+] Invalid value specified for key: " + key + " specified value: " + value + " should be array using default value: " + defaultValues); + return defaultValues; + } + } + + /** + * @param + * @param key + * @param separator + * @param clazz + * @param defaultValues + * @return enum array + */ + @SafeVarargs + public final > T[] getEnumArray(String key, String separator, Class clazz, T... defaultValues) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValues); + return defaultValues; + } + + try + { + final String[] data = value.trim().split(separator); + @SuppressWarnings("unchecked") + final T[] result = (T[]) Array.newInstance(clazz, data.length); + for (int i = 0; i < data.length; i++) + { + result[i] = Enum.valueOf(clazz, data[i]); + } + return result; + } + catch (Exception e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be array using default value: " + defaultValues); + return defaultValues; + } + } + + /** + * @param + * @param key + * @param separator + * @param clazz + * @param defaultValues + * @return list + */ + @SafeVarargs + public final > List getEnumList(String key, String separator, Class clazz, T... defaultValues) + { + final String value = getValue(key); + if (value == null) + { + LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValues); + return Arrays.asList(defaultValues); + } + + try + { + final String[] data = value.trim().split(separator); + final List result = new ArrayList<>(data.length); + for (String element : data) + { + result.add(Enum.valueOf(clazz, element)); + } + return result; + } + catch (Exception e) + { + LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be array using default value: " + defaultValues); + return Arrays.asList(defaultValues); + } + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java index f87c8a1cc4..3cac7410a7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java @@ -407,7 +407,7 @@ public class GameServer LOGGER.info("IdFactory: Free ObjectID's remaining: " + IdFactory.size()); - if (Config.L2JMOD_ALLOW_WEDDING) + if (Config.ALLOW_WEDDING) { CoupleManager.getInstance(); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/ManorSeedData.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/ManorSeedData.java index 577f47af29..b9084e1a57 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/ManorSeedData.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/ManorSeedData.java @@ -292,7 +292,7 @@ public class ManorSeedData implements IXmlReader final SeedDataHolder seed = _seeds.get(seedId); if (seed != null) { - return seed.getSeedLimit(); + return (int) seed.getSeedLimit(); } return 0; } @@ -303,7 +303,7 @@ public class ManorSeedData implements IXmlReader { if (seed.getCropId() == cropId) { - return seed.getCropLimit(); + return (int) seed.getCropLimit(); } } return 0; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java index 4fc436f2d9..513873f7f6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java @@ -61,7 +61,7 @@ public class VoicedCommandHandler registerVoicedCommandHandler(new DMCmd()); } - if (Config.L2JMOD_ALLOW_WEDDING) + if (Config.ALLOW_WEDDING) { registerVoicedCommandHandler(new Wedding()); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminKill.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminKill.java index fc94418084..ab06212cec 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminKill.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminKill.java @@ -141,9 +141,9 @@ public class AdminKill implements IAdminCommandHandler target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar); } - else if (Config.L2JMOD_CHAMPION_ENABLE && target.isChampion()) + else if (Config.CHAMPION_ENABLE && target.isChampion()) { - target.reduceCurrentHp((target.getMaxHp() * Config.L2JMOD_CHAMPION_HP) + 1, activeChar); + target.reduceCurrentHp((target.getMaxHp() * Config.CHAMPION_HP) + 1, activeChar); } else { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminMenu.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminMenu.java index a2874aa203..92fd2dfc49 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminMenu.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminMenu.java @@ -269,9 +269,9 @@ public class AdminMenu implements IAdminCommandHandler target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar); filename = "charmanage.htm"; } - else if (Config.L2JMOD_CHAMPION_ENABLE && target.isChampion()) + else if (Config.CHAMPION_ENABLE && target.isChampion()) { - target.reduceCurrentHp((target.getMaxHp() * Config.L2JMOD_CHAMPION_HP) + 1, activeChar); + target.reduceCurrentHp((target.getMaxHp() * Config.CHAMPION_HP) + 1, activeChar); } else { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java index 55440793ba..72ecfb1fba 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java @@ -93,7 +93,7 @@ public class Wedding implements IVoicedCommandHandler if (activeChar.isMarried()) { activeChar.sendMessage("You are now divorced."); - adenaAmount = (activeChar.getAdena() / 100) * Config.L2JMOD_WEDDING_DIVORCE_COSTS; + adenaAmount = (activeChar.getAdena() / 100) * Config.WEDDING_DIVORCE_COSTS; activeChar.getInventory().reduceAdena("Wedding", adenaAmount, activeChar, null); } else @@ -150,7 +150,7 @@ public class Wedding implements IVoicedCommandHandler { activeChar.sendMessage("You are already engaged."); - if (Config.L2JMOD_WEDDING_PUNISH_INFIDELITY) + if (Config.WEDDING_PUNISH_INFIDELITY) { activeChar.startAbnormalEffect((short) 0x2000); // give player a Big Head // lets recycle the sevensigns debuffs @@ -208,7 +208,7 @@ public class Wedding implements IVoicedCommandHandler return false; } - if ((ptarget.getAppearance().isFemale() == activeChar.getAppearance().isFemale()) && !Config.L2JMOD_WEDDING_SAMESEX) + if ((ptarget.getAppearance().isFemale() == activeChar.getAppearance().isFemale()) && !Config.WEDDING_SAMESEX) { activeChar.sendMessage("Gay marriage is not allowed on this server!"); return false; @@ -379,10 +379,10 @@ public class Wedding implements IVoicedCommandHandler return false; } - final int teleportTimer = Config.L2JMOD_WEDDING_TELEPORT_DURATION * 1000; + final int teleportTimer = Config.WEDDING_TELEPORT_DURATION * 1000; activeChar.sendMessage("After " + (teleportTimer / 60000) + " min. you will be teleported to your fiance."); - activeChar.getInventory().reduceAdena("Wedding", Config.L2JMOD_WEDDING_TELEPORT_PRICE, activeChar, null); + activeChar.getInventory().reduceAdena("Wedding", Config.WEDDING_TELEPORT_PRICE, activeChar, null); activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); // SoE Animation section diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 9b6f16b8b1..8d65a7c923 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -565,10 +565,10 @@ public class Attackable extends NpcInstance } setChampion(false); - if (Config.L2JMOD_CHAMPION_ENABLE) + if (Config.CHAMPION_ENABLE) { // Set champion on next spawn. - if (!(this instanceof GrandBossInstance) && !(this instanceof RaidBossInstance) && (this instanceof MonsterInstance) /* && !getTemplate().isQuestMonster */ && (Config.L2JMOD_CHAMPION_FREQUENCY > 0) && (getLevel() >= Config.L2JMOD_CHAMP_MIN_LVL) && (getLevel() <= Config.L2JMOD_CHAMP_MAX_LVL) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_FREQUENCY)) + if (!(this instanceof GrandBossInstance) && !(this instanceof RaidBossInstance) && (this instanceof MonsterInstance) /* && !getTemplate().isQuestMonster */ && (Config.CHAMPION_FREQUENCY > 0) && (getLevel() >= Config.CHAMP_MIN_LVL) && (getLevel() <= Config.CHAMP_MAX_LVL) && (Rnd.get(100) < Config.CHAMPION_FREQUENCY)) { setChampion(true); } @@ -773,10 +773,10 @@ public class Attackable extends NpcInstance exp *= 1 - penalty; sp = tmp[1]; - if (Config.L2JMOD_CHAMPION_ENABLE && isChampion()) + if (Config.CHAMPION_ENABLE && isChampion()) { - exp *= Config.L2JMOD_CHAMPION_REWARDS; - sp *= Config.L2JMOD_CHAMPION_REWARDS; + exp *= Config.CHAMPION_REWARDS; + sp *= Config.CHAMPION_REWARDS; } // Check for an over-hit enabled strike and Donator options @@ -917,10 +917,10 @@ public class Attackable extends NpcInstance exp = tmp[0]; sp = tmp[1]; - if (Config.L2JMOD_CHAMPION_ENABLE && isChampion()) + if (Config.CHAMPION_ENABLE && isChampion()) { - exp *= Config.L2JMOD_CHAMPION_REWARDS; - sp *= Config.L2JMOD_CHAMPION_REWARDS; + exp *= Config.CHAMPION_REWARDS; + sp *= Config.CHAMPION_REWARDS; } exp *= partyMul; @@ -1395,9 +1395,9 @@ public class Attackable extends NpcInstance } } - if (Config.L2JMOD_CHAMPION_ENABLE && isChampion()) + if (Config.CHAMPION_ENABLE && isChampion()) { - dropChance *= Config.L2JMOD_CHAMPION_REWARDS; + dropChance *= Config.CHAMPION_REWARDS; } // Round drop chance @@ -1457,9 +1457,9 @@ public class Attackable extends NpcInstance // Prepare for next iteration if dropChance > DropData.MAX_CHANCE dropChance -= DropData.MAX_CHANCE; } - if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362)))) + if (Config.CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362)))) { - itemCount *= Config.L2JMOD_CHAMPION_ADENAS_REWARDS; + itemCount *= Config.CHAMPION_ADENAS_REWARDS; } if ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362)) @@ -1555,9 +1555,9 @@ public class Attackable extends NpcInstance categoryDropChance *= Config.RATE_DROP_ITEMS; } - if (Config.L2JMOD_CHAMPION_ENABLE && isChampion()) + if (Config.CHAMPION_ENABLE && isChampion()) { - categoryDropChance *= Config.L2JMOD_CHAMPION_REWARDS; + categoryDropChance *= Config.CHAMPION_REWARDS; } // Set our limits for chance of drop @@ -1690,9 +1690,9 @@ public class Attackable extends NpcInstance } } - if (Config.L2JMOD_CHAMPION_ENABLE && isChampion()) + if (Config.CHAMPION_ENABLE && isChampion()) { - dropChance *= Config.L2JMOD_CHAMPION_REWARDS; + dropChance *= Config.CHAMPION_REWARDS; } if (dropChance < DropData.MAX_CHANCE) @@ -1750,9 +1750,9 @@ public class Attackable extends NpcInstance // Prepare for next iteration if dropChance > DropData.MAX_CHANCE dropChance -= DropData.MAX_CHANCE; } - if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362)))) + if (Config.CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362)))) { - itemCount *= Config.L2JMOD_CHAMPION_ADENAS_REWARDS; + itemCount *= Config.CHAMPION_ADENAS_REWARDS; } if ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362)) @@ -1937,13 +1937,13 @@ public class Attackable extends NpcInstance } // Apply Special Item drop with rnd qty for champions - if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && (player.getLevel() <= (getLevel() + 3)) && (Config.L2JMOD_CHAMPION_REWARD > 0) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_REWARD)) + if (Config.CHAMPION_ENABLE && isChampion() && (player.getLevel() <= (getLevel() + 3)) && (Config.CHAMPION_REWARD > 0) && (Rnd.get(100) < Config.CHAMPION_REWARD)) { - int champqty = Rnd.get(Config.L2JMOD_CHAMPION_REWARD_QTY); + int champqty = Rnd.get(Config.CHAMPION_REWARD_QTY); champqty++; // quantity should actually vary between 1 and whatever admin specified as max, inclusive. // Give this or these Item(s) to the PlayerInstance that has killed the Attackable - final RewardItem item = new RewardItem(Config.L2JMOD_CHAMPION_REWARD_ID, champqty); + final RewardItem item = new RewardItem(Config.CHAMPION_REWARD_ID, champqty); if (Config.AUTO_LOOT) { final Item itemTemplate = ItemTable.getInstance().getTemplate(item.getItemId()); @@ -3166,7 +3166,7 @@ public class Attackable extends NpcInstance final List harvested = new ArrayList<>(); - harvested.add(new RewardItem(ManorSeedData.getInstance().getCropType(_seedType), count * Config.RATE_DROP_MANOR)); + harvested.add(new RewardItem(ManorSeedData.getInstance().getCropType(_seedType), (int) (count * Config.RATE_DROP_MANOR))); _harvestItems = harvested.toArray(new RewardItem[harvested.size()]); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 0b3ed6d14a..85c7808f82 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -9460,9 +9460,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return; } - if (Config.L2JMOD_CHAMPION_ENABLE && _champion && (Config.L2JMOD_CHAMPION_HP != 0)) + if (Config.CHAMPION_ENABLE && _champion && (Config.CHAMPION_HP != 0)) { - getStatus().reduceHp(i / Config.L2JMOD_CHAMPION_HP, attacker, awake); + getStatus().reduceHp(i / Config.CHAMPION_HP, attacker, awake); } else if (_advanceFlag) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 0681020818..5617ca60c8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -11751,15 +11751,15 @@ public class PlayerInstance extends Playable { if (marriedType() == 1) { - getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_LESBO); + getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_LESBO); } else if (marriedType() == 2) { - getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_GEY); + getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_GEY); } else { - getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_NORMAL); + getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_NORMAL); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/WeddingManagerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/WeddingManagerInstance.java index c11dba4598..0dd2b00113 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/WeddingManagerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/WeddingManagerInstance.java @@ -86,7 +86,7 @@ public class WeddingManagerInstance extends NpcInstance private void showMessageWindow(PlayerInstance player) { final String filename = "data/html/mods/Wedding_start.htm"; - final String replace = String.valueOf(Config.L2JMOD_WEDDING_PRICE); + final String replace = String.valueOf(Config.WEDDING_PRICE); final NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(filename); @@ -141,20 +141,20 @@ public class WeddingManagerInstance extends NpcInstance int type; if (player.getAppearance().isFemale() && ptarget.getAppearance().isFemale()) { - player.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_LESBO); - ptarget.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_LESBO); + player.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_LESBO); + ptarget.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_LESBO); type = 1; } else if (!player.getAppearance().isFemale() && !ptarget.getAppearance().isFemale()) { - player.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_GEY); - ptarget.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_GEY); + player.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_GEY); + ptarget.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_GEY); type = 2; } else { - player.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_NORMAL); - ptarget.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_NORMAL); + player.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_NORMAL); + ptarget.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_NORMAL); type = 0; } @@ -171,7 +171,7 @@ public class WeddingManagerInstance extends NpcInstance ptarget.setMaryRequest(false); ptarget.setmarriedType(type); - if (Config.WEDDING_GIVE_CUPID_BOW) + if (Config.GIVE_CUPID_BOW) { player.addItem("Cupids Bow", 9140, 1, player, true); player.getInventory().updateDatabase(); @@ -230,7 +230,7 @@ public class WeddingManagerInstance extends NpcInstance else if (player.isMaryRequest()) { // check for formalwear - if (Config.L2JMOD_WEDDING_FORMALWEAR) + if (Config.WEDDING_FORMALWEAR) { final Inventory inv3 = player.getInventory(); final ItemInstance item3 = inv3.getPaperdollItem(10); @@ -247,7 +247,7 @@ public class WeddingManagerInstance extends NpcInstance } } - if (Config.L2JMOD_WEDDING_FORMALWEAR && !player.isWearingFormalWear()) + if (Config.WEDDING_FORMALWEAR && !player.isWearingFormalWear()) { filename = "data/html/mods/Wedding_noformal.htm"; sendHtmlMessage(player, filename, replace); @@ -264,7 +264,7 @@ public class WeddingManagerInstance extends NpcInstance else if (command.startsWith("AskWedding")) { // check for formalwear - if (Config.L2JMOD_WEDDING_FORMALWEAR) + if (Config.WEDDING_FORMALWEAR) { final Inventory inv3 = player.getInventory(); final ItemInstance item3 = inv3.getPaperdollItem(10); @@ -282,16 +282,16 @@ public class WeddingManagerInstance extends NpcInstance } } - if (Config.L2JMOD_WEDDING_FORMALWEAR && !player.isWearingFormalWear()) + if (Config.WEDDING_FORMALWEAR && !player.isWearingFormalWear()) { filename = "data/html/mods/Wedding_noformal.htm"; sendHtmlMessage(player, filename, replace); return; } - else if (player.getAdena() < Config.L2JMOD_WEDDING_PRICE) + else if (player.getAdena() < Config.WEDDING_PRICE) { filename = "data/html/mods/Wedding_adena.htm"; - replace = String.valueOf(Config.L2JMOD_WEDDING_PRICE); + replace = String.valueOf(Config.WEDDING_PRICE); sendHtmlMessage(player, filename, replace); return; } @@ -301,7 +301,7 @@ public class WeddingManagerInstance extends NpcInstance ptarget.setMaryRequest(true); replace = ptarget.getName(); filename = "data/html/mods/Wedding_requested.htm"; - player.getInventory().reduceAdena("Wedding", Config.L2JMOD_WEDDING_PRICE, player, player.getLastFolkNPC()); + player.getInventory().reduceAdena("Wedding", Config.WEDDING_PRICE, player, player.getLastFolkNPC()); sendHtmlMessage(player, filename, replace); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 2d37904213..9a3722fa62 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -368,9 +368,9 @@ public class CreatureStat float bonusAtk = 1; - if (Config.L2JMOD_CHAMPION_ENABLE && _creature.isChampion()) + if (Config.CHAMPION_ENABLE && _creature.isChampion()) { - bonusAtk = Config.L2JMOD_CHAMPION_ATK; + bonusAtk = Config.CHAMPION_ATK; } double attack = _creature.getTemplate().getBaseMAtk() * bonusAtk; @@ -478,9 +478,9 @@ public class CreatureStat float bonusSpdAtk = 1; - if (Config.L2JMOD_CHAMPION_ENABLE && _creature.isChampion()) + if (Config.CHAMPION_ENABLE && _creature.isChampion()) { - bonusSpdAtk = Config.L2JMOD_CHAMPION_SPD_ATK; + bonusSpdAtk = Config.CHAMPION_SPD_ATK; } double val = calcStat(Stat.MAGIC_ATTACK_SPEED, _creature.getTemplate().getBaseMAtkSpd() * bonusSpdAtk, null, null); @@ -644,9 +644,9 @@ public class CreatureStat float bonusAtk = 1; - if (Config.L2JMOD_CHAMPION_ENABLE && _creature.isChampion()) + if (Config.CHAMPION_ENABLE && _creature.isChampion()) { - bonusAtk = Config.L2JMOD_CHAMPION_ATK; + bonusAtk = Config.CHAMPION_ATK; } return (int) calcStat(Stat.POWER_ATTACK, _creature.getTemplate().getBasePAtk() * bonusAtk, target, null); @@ -725,9 +725,9 @@ public class CreatureStat float bonusAtk = 1; - if (Config.L2JMOD_CHAMPION_ENABLE && _creature.isChampion()) + if (Config.CHAMPION_ENABLE && _creature.isChampion()) { - bonusAtk = Config.L2JMOD_CHAMPION_SPD_ATK; + bonusAtk = Config.CHAMPION_SPD_ATK; } double val = calcStat(Stat.POWER_ATTACK_SPEED, _creature.getTemplate().getBasePAtkSpd() * bonusAtk, null, null); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/SeedDataHolder.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/SeedDataHolder.java index ab0e24d268..c2b5d9599f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/SeedDataHolder.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/SeedDataHolder.java @@ -83,12 +83,12 @@ public class SeedDataHolder return _isAlternative; } - public int getSeedLimit() + public float getSeedLimit() { return _seedLimit * Config.RATE_DROP_MANOR; } - public int getCropLimit() + public float getCropLimit() { return _cropLimit * Config.RATE_DROP_MANOR; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/Formulas.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/Formulas.java index c2edfd954f..fa27fddd4e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/Formulas.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/Formulas.java @@ -1003,9 +1003,9 @@ public class Formulas double hpRegenMultiplier = creature.isRaid() ? Config.RAID_HP_REGEN_MULTIPLIER : Config.HP_REGEN_MULTIPLIER; double hpRegenBonus = 0; - if (Config.L2JMOD_CHAMPION_ENABLE && creature.isChampion()) + if (Config.CHAMPION_ENABLE && creature.isChampion()) { - hpRegenMultiplier *= Config.L2JMOD_CHAMPION_HP_REGEN; + hpRegenMultiplier *= Config.CHAMPION_HP_REGEN; } if (creature instanceof PlayerInstance) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 43fe7f5d20..76546e031f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -69,7 +69,7 @@ public class DlgAnswer extends GameClientPacket { player.gatesAnswer(_answer, 0); } - else if ((_messageId == 614) && Config.L2JMOD_ALLOW_WEDDING) + else if ((_messageId == 614) && Config.ALLOW_WEDDING) { player.EngageAnswer(_answer); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index b0a3f1f773..cafccb5203 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -144,7 +144,7 @@ public class EnterWorld extends GameClientPacket player.broadcastKarma(); // include UserInfo // Engage and notify Partner - if (Config.L2JMOD_ALLOW_WEDDING) + if (Config.ALLOW_WEDDING) { engage(player); notifyPartner(player); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java index 2f798a2bd3..c462cbfcaf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java @@ -83,9 +83,9 @@ public class NpcInfo extends GameServerPacket _name = cha.getTemplate().getName(); } - if (Config.L2JMOD_CHAMPION_ENABLE && cha.isChampion()) + if (Config.CHAMPION_ENABLE && cha.isChampion()) { - _title = Config.L2JMOD_CHAMP_TITLE; + _title = Config.CHAMP_TITLE; } else if (cha.getTemplate().isServerSideTitle()) { @@ -122,7 +122,7 @@ public class NpcInfo extends GameServerPacket { t1 += " " + _title; } - _title = cha.isChampion() ? Config.L2JMOD_CHAMP_TITLE + " " + t1 : t1; + _title = cha.isChampion() ? Config.CHAMP_TITLE + " " + t1 : t1; } _x = _creature.getX();