/**
* License
* THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
* CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE").
* THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW.
* ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR
* COPYRIGHT LAW IS PROHIBITED.
*
* BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
* AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE
* MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED
* HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
*
*/
package l1j.server;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Calendar;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import l1j.server.server.utils.IntRange;
public final class Config {
private static final Logger _log = Logger.getLogger(Config.class.getName());
/** Debug/release mode */
public static final boolean DEBUG = false;
/** Thread pools size */
public static int THREAD_P_EFFECTS;
public static int THREAD_P_GENERAL;
public static int AI_MAX_THREAD;
public static int THREAD_P_TYPE_GENERAL;
public static int THREAD_P_SIZE_GENERAL;
/** Server control */
public static String GAME_SERVER_HOST_NAME;
public static int GAME_SERVER_PORT;
public static String DB_DRIVER;
public static String DB_URL;
public static String DB_LOGIN;
public static String DB_PASSWORD;
public static String TIME_ZONE;
public static int CLIENT_LANGUAGE;
public static String CLIENT_LANGUAGE_CODE;
public static String[] LANGUAGE_CODE_ARRAY = { "UTF8", "EUCKR", "UTF8", "BIG5", "SJIS", "GBK" };
public static boolean HOSTNAME_LOOKUPS;
public static int AUTOMATIC_KICK;
public static boolean AUTO_CREATE_ACCOUNTS;
public static short MAX_ONLINE_USERS;
public static boolean CACHE_MAP_FILES;
public static boolean LOAD_V2_MAP_FILES;
public static boolean CHECK_MOVE_INTERVAL;
public static boolean CHECK_ATTACK_INTERVAL;
public static boolean CHECK_SPELL_INTERVAL;
public static short INJUSTICE_COUNT;
public static int JUSTICE_COUNT;
public static int CHECK_STRICTNESS;
public static int ILLEGAL_SPEEDUP_PUNISHMENT;
public static int AUTOSAVE_INTERVAL;
public static int AUTOSAVE_INTERVAL_INVENTORY;
public static int SKILLTIMER_IMPLTYPE;
public static int NPCAI_IMPLTYPE;
public static boolean TELNET_SERVER;
public static int TELNET_SERVER_PORT;
public static int PC_RECOGNIZE_RANGE;
public static boolean CHARACTER_CONFIG_IN_SERVER_SIDE;
public static boolean ALLOW_2PC;
public static int LEVEL_DOWN_RANGE;
public static boolean SEND_PACKET_BEFORE_TELEPORT;
public static boolean DETECT_DB_RESOURCE_LEAKS;
public static boolean CmdActive;
public static int Announcements_Cycle_Time;
public static boolean Announcements_Cycle_Modify_Time;
/** Rate control */
public static double RATE_XP;
public static double RATE_LA;
public static double RATE_KARMA;
public static double RATE_DROP_ADENA;
public static double RATE_DROP_ITEMS;
public static int ENCHANT_CHANCE_WEAPON;
public static int ENCHANT_CHANCE_ARMOR;
public static int ATTR_ENCHANT_CHANCE;
public static double RATE_WEIGHT_LIMIT;
public static double RATE_WEIGHT_LIMIT_PET;
public static double RATE_SHOP_SELLING_PRICE;
public static double RATE_SHOP_PURCHASING_PRICE;
public static int CREATE_CHANCE_DIARY;
public static int CREATE_CHANCE_RECOLLECTION;
public static int CREATE_CHANCE_MYSTERIOUS;
public static int CREATE_CHANCE_PROCESSING;
public static int CREATE_CHANCE_PROCESSING_DIAMOND;
public static int CREATE_CHANCE_DANTES;
public static int CREATE_CHANCE_ANCIENT_AMULET;
public static int CREATE_CHANCE_HISTORY_BOOK;
public static int MAGIC_STONE_TYPE; // 附魔石類型
public static int MAGIC_STONE_LEVEL; // 附魔石階級
/** AltSettings control */
public static short GLOBAL_CHAT_LEVEL;
public static short WHISPER_CHAT_LEVEL;
public static byte AUTO_LOOT;
public static int LOOTING_RANGE;
public static boolean ALT_NONPVP;
public static boolean ALT_ATKMSG;
public static boolean CHANGE_TITLE_BY_ONESELF;
public static int MAX_CLAN_MEMBER;
public static boolean CLAN_ALLIANCE;
public static int MAX_PT;
public static int MAX_CHAT_PT;
public static boolean SIM_WAR_PENALTY;
public static boolean GET_BACK;
public static String ALT_ITEM_DELETION_TYPE;
public static int ALT_ITEM_DELETION_TIME;
public static int ALT_ITEM_DELETION_RANGE;
public static boolean ALT_GMSHOP;
public static int ALT_GMSHOP_MIN_ID;
public static int ALT_GMSHOP_MAX_ID;
public static boolean ALT_HALLOWEENIVENT;
public static boolean ALT_JPPRIVILEGED;
public static boolean ALT_TALKINGSCROLLQUEST;
public static boolean ALT_WHO_COMMAND;
public static boolean ALT_REVIVAL_POTION;
public static int ALT_WAR_TIME;
public static int ALT_WAR_TIME_UNIT;
public static int ALT_WAR_INTERVAL;
public static int ALT_WAR_INTERVAL_UNIT;
public static int ALT_RATE_OF_DUTY;
public static boolean SPAWN_HOME_POINT;
public static int SPAWN_HOME_POINT_RANGE;
public static int SPAWN_HOME_POINT_COUNT;
public static int SPAWN_HOME_POINT_DELAY;
public static boolean INIT_BOSS_SPAWN;
public static int ELEMENTAL_STONE_AMOUNT;
public static int HOUSE_TAX_INTERVAL;
public static int MAX_DOLL_COUNT;
public static boolean RETURN_TO_NATURE;
public static int MAX_NPC_ITEM;
public static int MAX_PERSONAL_WAREHOUSE_ITEM;
public static int MAX_CLAN_WAREHOUSE_ITEM;
public static boolean DELETE_CHARACTER_AFTER_7DAYS;
public static int NPC_DELETION_TIME;
public static int DEFAULT_CHARACTER_SLOT;
public static int GDROPITEM_TIME;
/** CharSettings control */
public static int PRINCE_MAX_HP;
public static int PRINCE_MAX_MP;
public static int KNIGHT_MAX_HP;
public static int KNIGHT_MAX_MP;
public static int ELF_MAX_HP;
public static int ELF_MAX_MP;
public static int WIZARD_MAX_HP;
public static int WIZARD_MAX_MP;
public static int DARKELF_MAX_HP;
public static int DARKELF_MAX_MP;
public static int DRAGONKNIGHT_MAX_HP;
public static int DRAGONKNIGHT_MAX_MP;
public static int ILLUSIONIST_MAX_HP;
public static int ILLUSIONIST_MAX_MP;
public static int LV50_EXP;
public static int LV51_EXP;
public static int LV52_EXP;
public static int LV53_EXP;
public static int LV54_EXP;
public static int LV55_EXP;
public static int LV56_EXP;
public static int LV57_EXP;
public static int LV58_EXP;
public static int LV59_EXP;
public static int LV60_EXP;
public static int LV61_EXP;
public static int LV62_EXP;
public static int LV63_EXP;
public static int LV64_EXP;
public static int LV65_EXP;
public static int LV66_EXP;
public static int LV67_EXP;
public static int LV68_EXP;
public static int LV69_EXP;
public static int LV70_EXP;
public static int LV71_EXP;
public static int LV72_EXP;
public static int LV73_EXP;
public static int LV74_EXP;
public static int LV75_EXP;
public static int LV76_EXP;
public static int LV77_EXP;
public static int LV78_EXP;
public static int LV79_EXP;
public static int LV80_EXP;
public static int LV81_EXP;
public static int LV82_EXP;
public static int LV83_EXP;
public static int LV84_EXP;
public static int LV85_EXP;
public static int LV86_EXP;
public static int LV87_EXP;
public static int LV88_EXP;
public static int LV89_EXP;
public static int LV90_EXP;
public static int LV91_EXP;
public static int LV92_EXP;
public static int LV93_EXP;
public static int LV94_EXP;
public static int LV95_EXP;
public static int LV96_EXP;
public static int LV97_EXP;
public static int LV98_EXP;
public static int LV99_EXP;
/** FightSettings control */
public static boolean FIGHT_IS_ACTIVE;
public static boolean NOVICE_PROTECTION_IS_ACTIVE;
public static int NOVICE_MAX_LEVEL;
public static int NOVICE_PROTECTION_LEVEL_RANGE;
/**Record Settings*/
public static byte LOGGING_WEAPON_ENCHANT;
public static byte LOGGING_ARMOR_ENCHANT;
public static boolean LOGGING_CHAT_NORMAL;
public static boolean LOGGING_CHAT_WHISPER;
public static boolean LOGGING_CHAT_SHOUT;
public static boolean LOGGING_CHAT_WORLD;
public static boolean LOGGING_CHAT_CLAN;
public static boolean LOGGING_CHAT_PARTY;
public static boolean LOGGING_CHAT_COMBINED;
public static boolean LOGGING_CHAT_CHAT_PARTY;
public static boolean writeTradeLog;
public static boolean writeRobotsLog;
public static boolean writeDropLog;
public static int MysqlAutoBackup;
public static boolean CompressGzip;
/** Configuration files */
public static final String SERVER_CONFIG_FILE = "./config/server.properties";
public static final String RATES_CONFIG_FILE = "./config/rates.properties";
public static final String ALT_SETTINGS_FILE = "./config/altsettings.properties";
public static final String CHAR_SETTINGS_CONFIG_FILE = "./config/charsettings.properties";
public static final String FIGHT_SETTINGS_CONFIG_FILE = "./config/fights.properties";
public static final String RECORD_SETTINGS_CONFIG_FILE = "./config/record.properties";
/** 其他設定 */
// 吸收每個 NPC 的 MP 上限
public static final int MANA_DRAIN_LIMIT_PER_NPC = 40;
// 每一次攻擊吸收的 MP 上限(馬那、鋼鐵馬那)
public static final int MANA_DRAIN_LIMIT_PER_SOM_ATTACK = 9;
public static void load() {
_log.info("loading gameserver config");
// server.properties
try {
Properties serverSettings = new Properties();
InputStream is = new FileInputStream(new File(SERVER_CONFIG_FILE));
serverSettings.load(is);
is.close();
GAME_SERVER_HOST_NAME = serverSettings.getProperty("GameserverHostname", "*");
GAME_SERVER_PORT = Integer.parseInt(serverSettings.getProperty("GameserverPort", "2000"));
DB_DRIVER = serverSettings.getProperty("Driver", "com.mysql.jdbc.Driver");
DB_URL = serverSettings.getProperty("URL", "jdbc:mysql://localhost/l1jdb?useUnicode=true&characterEncoding=utf8");
DB_LOGIN = serverSettings.getProperty("Login", "root");
DB_PASSWORD = serverSettings.getProperty("Password", "");
THREAD_P_TYPE_GENERAL = Integer.parseInt(serverSettings.getProperty("GeneralThreadPoolType", "0"), 10);
THREAD_P_SIZE_GENERAL = Integer.parseInt(serverSettings.getProperty("GeneralThreadPoolSize", "0"), 10);
CLIENT_LANGUAGE = Integer.parseInt(serverSettings.getProperty("ClientLanguage", "4"));
CLIENT_LANGUAGE_CODE = LANGUAGE_CODE_ARRAY[CLIENT_LANGUAGE];
TIME_ZONE = serverSettings.getProperty("TimeZone", "Asia/Taipei");
HOSTNAME_LOOKUPS = Boolean.parseBoolean(serverSettings.getProperty("HostnameLookups", "false"));
AUTOMATIC_KICK = Integer.parseInt(serverSettings.getProperty("AutomaticKick", "10"));
AUTO_CREATE_ACCOUNTS = Boolean.parseBoolean(serverSettings.getProperty("AutoCreateAccounts", "true"));
MAX_ONLINE_USERS = Short.parseShort(serverSettings.getProperty("MaximumOnlineUsers", "30"));
CACHE_MAP_FILES = Boolean.parseBoolean(serverSettings.getProperty("CacheMapFiles", "false"));
LOAD_V2_MAP_FILES = Boolean.parseBoolean(serverSettings.getProperty("LoadV2MapFiles", "false"));
CHECK_MOVE_INTERVAL = Boolean.parseBoolean(serverSettings.getProperty("CheckMoveInterval", "false"));
CHECK_ATTACK_INTERVAL = Boolean.parseBoolean(serverSettings.getProperty("CheckAttackInterval", "false"));
CHECK_SPELL_INTERVAL = Boolean.parseBoolean(serverSettings.getProperty("CheckSpellInterval", "false"));
INJUSTICE_COUNT = Short.parseShort(serverSettings.getProperty("InjusticeCount", "10"));
JUSTICE_COUNT = Integer.parseInt(serverSettings.getProperty("JusticeCount", "4"));
CHECK_STRICTNESS = Integer.parseInt(serverSettings.getProperty("CheckStrictness", "102"));
ILLEGAL_SPEEDUP_PUNISHMENT = Integer.parseInt(serverSettings.getProperty("Punishment", "0"));
AUTOSAVE_INTERVAL = Integer.parseInt(serverSettings.getProperty("AutosaveInterval", "1200"), 10);
AUTOSAVE_INTERVAL_INVENTORY = Integer.parseInt(serverSettings.getProperty("AutosaveIntervalOfInventory", "300"), 10);
SKILLTIMER_IMPLTYPE = Integer.parseInt(serverSettings.getProperty("SkillTimerImplType", "1"));
NPCAI_IMPLTYPE = Integer.parseInt(serverSettings.getProperty("NpcAIImplType", "1"));
TELNET_SERVER = Boolean.parseBoolean(serverSettings.getProperty("TelnetServer", "false"));
TELNET_SERVER_PORT = Integer.parseInt(serverSettings.getProperty("TelnetServerPort", "23"));
PC_RECOGNIZE_RANGE = Integer.parseInt(serverSettings.getProperty("PcRecognizeRange", "20"));
CHARACTER_CONFIG_IN_SERVER_SIDE = Boolean.parseBoolean(serverSettings.getProperty("CharacterConfigInServerSide", "true"));
ALLOW_2PC = Boolean.parseBoolean(serverSettings.getProperty("Allow2PC", "true"));
LEVEL_DOWN_RANGE = Integer.parseInt(serverSettings.getProperty("LevelDownRange", "0"));
SEND_PACKET_BEFORE_TELEPORT = Boolean.parseBoolean(serverSettings.getProperty("SendPacketBeforeTeleport", "false"));
DETECT_DB_RESOURCE_LEAKS = Boolean.parseBoolean(serverSettings.getProperty("EnableDatabaseResourceLeaksDetection", "false"));
CmdActive = Boolean.parseBoolean(serverSettings.getProperty("CmdActive", "false"));
Announcements_Cycle_Time = Integer.parseInt(serverSettings.getProperty("AnnouncementsCycleTime", "10"));
Announcements_Cycle_Modify_Time = Boolean.parseBoolean(serverSettings.getProperty("AnnounceTimeDisplay", "True"));
}
catch (Exception e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new Error("Failed to Load " + SERVER_CONFIG_FILE + " File.");
}
// rates.properties
try {
Properties rateSettings = new Properties();
InputStream is = new FileInputStream(new File(RATES_CONFIG_FILE));
rateSettings.load(is);
is.close();
RATE_XP = Double.parseDouble(rateSettings.getProperty("RateXp", "1.0"));
RATE_LA = Double.parseDouble(rateSettings.getProperty("RateLawful", "1.0"));
RATE_KARMA = Double.parseDouble(rateSettings.getProperty("RateKarma", "1.0"));
RATE_DROP_ADENA = Double.parseDouble(rateSettings.getProperty("RateDropAdena", "1.0"));
RATE_DROP_ITEMS = Double.parseDouble(rateSettings.getProperty("RateDropItems", "1.0"));
ENCHANT_CHANCE_WEAPON = Integer.parseInt(rateSettings.getProperty("EnchantChanceWeapon", "68"));
ENCHANT_CHANCE_ARMOR = Integer.parseInt(rateSettings.getProperty("EnchantChanceArmor", "52"));
ATTR_ENCHANT_CHANCE = Integer.parseInt(rateSettings.getProperty("AttrEnchantChance", "10"));
RATE_WEIGHT_LIMIT = Double.parseDouble(rateSettings.getProperty("RateWeightLimit", "1"));
RATE_WEIGHT_LIMIT_PET = Double.parseDouble(rateSettings.getProperty("RateWeightLimitforPet", "1"));
RATE_SHOP_SELLING_PRICE = Double.parseDouble(rateSettings.getProperty("RateShopSellingPrice", "1.0"));
RATE_SHOP_PURCHASING_PRICE = Double.parseDouble(rateSettings.getProperty("RateShopPurchasingPrice", "1.0"));
CREATE_CHANCE_DIARY = Integer.parseInt(rateSettings.getProperty("CreateChanceDiary", "33"));
CREATE_CHANCE_RECOLLECTION = Integer.parseInt(rateSettings.getProperty("CreateChanceRecollection", "90"));
CREATE_CHANCE_MYSTERIOUS = Integer.parseInt(rateSettings.getProperty("CreateChanceMysterious", "90"));
CREATE_CHANCE_PROCESSING = Integer.parseInt(rateSettings.getProperty("CreateChanceProcessing", "90"));
CREATE_CHANCE_PROCESSING_DIAMOND = Integer.parseInt(rateSettings.getProperty("CreateChanceProcessingDiamond", "90"));
CREATE_CHANCE_DANTES = Integer.parseInt(rateSettings.getProperty("CreateChanceDantes", "50"));
CREATE_CHANCE_ANCIENT_AMULET = Integer.parseInt(rateSettings.getProperty("CreateChanceAncientAmulet", "90"));
CREATE_CHANCE_HISTORY_BOOK = Integer.parseInt(rateSettings.getProperty("CreateChanceHistoryBook", "50"));
MAGIC_STONE_TYPE = Integer.parseInt(rateSettings.getProperty("MagicStoneAttr", "50"));
MAGIC_STONE_LEVEL = Integer.parseInt(rateSettings.getProperty("MagicStoneLevel", "50"));
}
catch (Exception e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new Error("Failed to Load " + RATES_CONFIG_FILE + " File.");
}
// altsettings.properties
try {
Properties altSettings = new Properties();
InputStream is = new FileInputStream(new File(ALT_SETTINGS_FILE));
altSettings.load(is);
is.close();
GLOBAL_CHAT_LEVEL = Short.parseShort(altSettings.getProperty("GlobalChatLevel", "30"));
WHISPER_CHAT_LEVEL = Short.parseShort(altSettings.getProperty("WhisperChatLevel", "5"));
AUTO_LOOT = Byte.parseByte(altSettings.getProperty("AutoLoot", "2"));
LOOTING_RANGE = Integer.parseInt(altSettings.getProperty("LootingRange", "3"));
ALT_NONPVP = Boolean.parseBoolean(altSettings.getProperty("NonPvP", "true"));
ALT_ATKMSG = Boolean.parseBoolean(altSettings.getProperty("AttackMessageOn", "true"));
CHANGE_TITLE_BY_ONESELF = Boolean.parseBoolean(altSettings.getProperty("ChangeTitleByOneself", "false"));
MAX_CLAN_MEMBER = Integer.parseInt(altSettings.getProperty("MaxClanMember", "0"));
CLAN_ALLIANCE = Boolean.parseBoolean(altSettings.getProperty("ClanAlliance", "true"));
MAX_PT = Integer.parseInt(altSettings.getProperty("MaxPT", "8"));
MAX_CHAT_PT = Integer.parseInt(altSettings.getProperty("MaxChatPT", "8"));
SIM_WAR_PENALTY = Boolean.parseBoolean(altSettings.getProperty("SimWarPenalty", "true"));
GET_BACK = Boolean.parseBoolean(altSettings.getProperty("GetBack", "false"));
ALT_ITEM_DELETION_TYPE = altSettings.getProperty("ItemDeletionType", "auto");
ALT_ITEM_DELETION_TIME = Integer.parseInt(altSettings.getProperty("ItemDeletionTime", "10"));
ALT_ITEM_DELETION_RANGE = Integer.parseInt(altSettings.getProperty("ItemDeletionRange", "5"));
ALT_GMSHOP = Boolean.parseBoolean(altSettings.getProperty("GMshop", "false"));
ALT_GMSHOP_MIN_ID = Integer.parseInt(altSettings.getProperty("GMshopMinID", "0xffffffff")); // 設定錯誤時就取消GM商店
ALT_GMSHOP_MAX_ID = Integer.parseInt(altSettings.getProperty("GMshopMaxID", "0xffffffff")); // 設定錯誤時就取消GM商店
ALT_HALLOWEENIVENT = Boolean.parseBoolean(altSettings.getProperty("HalloweenIvent", "true"));
ALT_JPPRIVILEGED = Boolean.parseBoolean(altSettings.getProperty("JpPrivileged", "false"));
ALT_TALKINGSCROLLQUEST = Boolean.parseBoolean(altSettings.getProperty("TalkingScrollQuest", "false"));
ALT_WHO_COMMAND = Boolean.parseBoolean(altSettings.getProperty("WhoCommand", "false"));
ALT_REVIVAL_POTION = Boolean.parseBoolean(altSettings.getProperty("RevivalPotion", "false"));
GDROPITEM_TIME = Integer.parseInt(altSettings.getProperty("GDropItemTime", "10"));
String strWar;
strWar = altSettings.getProperty("WarTime", "2h");
if (strWar.indexOf("d") >= 0) {
ALT_WAR_TIME_UNIT = Calendar.DATE;
strWar = strWar.replace("d", "");
}
else if (strWar.indexOf("h") >= 0) {
ALT_WAR_TIME_UNIT = Calendar.HOUR_OF_DAY;
strWar = strWar.replace("h", "");
}
else if (strWar.indexOf("m") >= 0) {
ALT_WAR_TIME_UNIT = Calendar.MINUTE;
strWar = strWar.replace("m", "");
}
ALT_WAR_TIME = Integer.parseInt(strWar);
strWar = altSettings.getProperty("WarInterval", "4d");
if (strWar.indexOf("d") >= 0) {
ALT_WAR_INTERVAL_UNIT = Calendar.DATE;
strWar = strWar.replace("d", "");
}
else if (strWar.indexOf("h") >= 0) {
ALT_WAR_INTERVAL_UNIT = Calendar.HOUR_OF_DAY;
strWar = strWar.replace("h", "");
}
else if (strWar.indexOf("m") >= 0) {
ALT_WAR_INTERVAL_UNIT = Calendar.MINUTE;
strWar = strWar.replace("m", "");
}
ALT_WAR_INTERVAL = Integer.parseInt(strWar);
SPAWN_HOME_POINT = Boolean.parseBoolean(altSettings.getProperty("SpawnHomePoint", "true"));
SPAWN_HOME_POINT_COUNT = Integer.parseInt(altSettings.getProperty("SpawnHomePointCount", "2"));
SPAWN_HOME_POINT_DELAY = Integer.parseInt(altSettings.getProperty("SpawnHomePointDelay", "100"));
SPAWN_HOME_POINT_RANGE = Integer.parseInt(altSettings.getProperty("SpawnHomePointRange", "8"));
INIT_BOSS_SPAWN = Boolean.parseBoolean(altSettings.getProperty("InitBossSpawn", "true"));
ELEMENTAL_STONE_AMOUNT = Integer.parseInt(altSettings.getProperty("ElementalStoneAmount", "300"));
HOUSE_TAX_INTERVAL = Integer.parseInt(altSettings.getProperty("HouseTaxInterval", "10"));
MAX_DOLL_COUNT = Integer.parseInt(altSettings.getProperty("MaxDollCount", "1"));
RETURN_TO_NATURE = Boolean.parseBoolean(altSettings.getProperty("ReturnToNature", "false"));
MAX_NPC_ITEM = Integer.parseInt(altSettings.getProperty("MaxNpcItem", "8"));
MAX_PERSONAL_WAREHOUSE_ITEM = Integer.parseInt(altSettings.getProperty("MaxPersonalWarehouseItem", "100"));
MAX_CLAN_WAREHOUSE_ITEM = Integer.parseInt(altSettings.getProperty("MaxClanWarehouseItem", "200"));
DELETE_CHARACTER_AFTER_7DAYS = Boolean.parseBoolean(altSettings.getProperty("DeleteCharacterAfter7Days", "True"));
NPC_DELETION_TIME = Integer.parseInt(altSettings.getProperty("NpcDeletionTime", "10"));
DEFAULT_CHARACTER_SLOT = Integer.parseInt(altSettings.getProperty("DefaultCharacterSlot", "6"));
}
catch (Exception e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new Error("Failed to Load " + ALT_SETTINGS_FILE + " File.");
}
// charsettings.properties
try {
Properties charSettings = new Properties();
InputStream is = new FileInputStream(new File(CHAR_SETTINGS_CONFIG_FILE));
charSettings.load(is);
is.close();
PRINCE_MAX_HP = Integer.parseInt(charSettings.getProperty("PrinceMaxHP", "1000"));
PRINCE_MAX_MP = Integer.parseInt(charSettings.getProperty("PrinceMaxMP", "800"));
KNIGHT_MAX_HP = Integer.parseInt(charSettings.getProperty("KnightMaxHP", "1400"));
KNIGHT_MAX_MP = Integer.parseInt(charSettings.getProperty("KnightMaxMP", "600"));
ELF_MAX_HP = Integer.parseInt(charSettings.getProperty("ElfMaxHP", "1000"));
ELF_MAX_MP = Integer.parseInt(charSettings.getProperty("ElfMaxMP", "900"));
WIZARD_MAX_HP = Integer.parseInt(charSettings.getProperty("WizardMaxHP", "800"));
WIZARD_MAX_MP = Integer.parseInt(charSettings.getProperty("WizardMaxMP", "1200"));
DARKELF_MAX_HP = Integer.parseInt(charSettings.getProperty("DarkelfMaxHP", "1000"));
DARKELF_MAX_MP = Integer.parseInt(charSettings.getProperty("DarkelfMaxMP", "900"));
DRAGONKNIGHT_MAX_HP = Integer.parseInt(charSettings.getProperty("DragonKnightMaxHP", "1400"));
DRAGONKNIGHT_MAX_MP = Integer.parseInt(charSettings.getProperty("DragonKnightMaxMP", "600"));
ILLUSIONIST_MAX_HP = Integer.parseInt(charSettings.getProperty("IllusionistMaxHP", "900"));
ILLUSIONIST_MAX_MP = Integer.parseInt(charSettings.getProperty("IllusionistMaxMP", "1100"));
LV50_EXP = Integer.parseInt(charSettings.getProperty("Lv50Exp", "1"));
LV51_EXP = Integer.parseInt(charSettings.getProperty("Lv51Exp", "1"));
LV52_EXP = Integer.parseInt(charSettings.getProperty("Lv52Exp", "1"));
LV53_EXP = Integer.parseInt(charSettings.getProperty("Lv53Exp", "1"));
LV54_EXP = Integer.parseInt(charSettings.getProperty("Lv54Exp", "1"));
LV55_EXP = Integer.parseInt(charSettings.getProperty("Lv55Exp", "1"));
LV56_EXP = Integer.parseInt(charSettings.getProperty("Lv56Exp", "1"));
LV57_EXP = Integer.parseInt(charSettings.getProperty("Lv57Exp", "1"));
LV58_EXP = Integer.parseInt(charSettings.getProperty("Lv58Exp", "1"));
LV59_EXP = Integer.parseInt(charSettings.getProperty("Lv59Exp", "1"));
LV60_EXP = Integer.parseInt(charSettings.getProperty("Lv60Exp", "1"));
LV61_EXP = Integer.parseInt(charSettings.getProperty("Lv61Exp", "1"));
LV62_EXP = Integer.parseInt(charSettings.getProperty("Lv62Exp", "1"));
LV63_EXP = Integer.parseInt(charSettings.getProperty("Lv63Exp", "1"));
LV64_EXP = Integer.parseInt(charSettings.getProperty("Lv64Exp", "1"));
LV65_EXP = Integer.parseInt(charSettings.getProperty("Lv65Exp", "2"));
LV66_EXP = Integer.parseInt(charSettings.getProperty("Lv66Exp", "2"));
LV67_EXP = Integer.parseInt(charSettings.getProperty("Lv67Exp", "2"));
LV68_EXP = Integer.parseInt(charSettings.getProperty("Lv68Exp", "2"));
LV69_EXP = Integer.parseInt(charSettings.getProperty("Lv69Exp", "2"));
LV70_EXP = Integer.parseInt(charSettings.getProperty("Lv70Exp", "4"));
LV71_EXP = Integer.parseInt(charSettings.getProperty("Lv71Exp", "4"));
LV72_EXP = Integer.parseInt(charSettings.getProperty("Lv72Exp", "4"));
LV73_EXP = Integer.parseInt(charSettings.getProperty("Lv73Exp", "4"));
LV74_EXP = Integer.parseInt(charSettings.getProperty("Lv74Exp", "4"));
LV75_EXP = Integer.parseInt(charSettings.getProperty("Lv75Exp", "8"));
LV76_EXP = Integer.parseInt(charSettings.getProperty("Lv76Exp", "8"));
LV77_EXP = Integer.parseInt(charSettings.getProperty("Lv77Exp", "8"));
LV78_EXP = Integer.parseInt(charSettings.getProperty("Lv78Exp", "8"));
LV79_EXP = Integer.parseInt(charSettings.getProperty("Lv79Exp", "16"));
LV80_EXP = Integer.parseInt(charSettings.getProperty("Lv80Exp", "32"));
LV81_EXP = Integer.parseInt(charSettings.getProperty("Lv81Exp", "64"));
LV82_EXP = Integer.parseInt(charSettings.getProperty("Lv82Exp", "128"));
LV83_EXP = Integer.parseInt(charSettings.getProperty("Lv83Exp", "256"));
LV84_EXP = Integer.parseInt(charSettings.getProperty("Lv84Exp", "512"));
LV85_EXP = Integer.parseInt(charSettings.getProperty("Lv85Exp", "1024"));
LV86_EXP = Integer.parseInt(charSettings.getProperty("Lv86Exp", "2048"));
LV87_EXP = Integer.parseInt(charSettings.getProperty("Lv87Exp", "4096"));
LV88_EXP = Integer.parseInt(charSettings.getProperty("Lv88Exp", "8192"));
LV89_EXP = Integer.parseInt(charSettings.getProperty("Lv89Exp", "16384"));
LV90_EXP = Integer.parseInt(charSettings.getProperty("Lv90Exp", "32768"));
LV91_EXP = Integer.parseInt(charSettings.getProperty("Lv91Exp", "65536"));
LV92_EXP = Integer.parseInt(charSettings.getProperty("Lv92Exp", "131072"));
LV93_EXP = Integer.parseInt(charSettings.getProperty("Lv93Exp", "262144"));
LV94_EXP = Integer.parseInt(charSettings.getProperty("Lv94Exp", "524288"));
LV95_EXP = Integer.parseInt(charSettings.getProperty("Lv95Exp", "1048576"));
LV96_EXP = Integer.parseInt(charSettings.getProperty("Lv96Exp", "2097152"));
LV97_EXP = Integer.parseInt(charSettings.getProperty("Lv97Exp", "4194304"));
LV98_EXP = Integer.parseInt(charSettings.getProperty("Lv98Exp", "8388608"));
LV99_EXP = Integer.parseInt(charSettings.getProperty("Lv99Exp", "16777216"));
}
catch (Exception e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new Error("Failed to Load " + CHAR_SETTINGS_CONFIG_FILE + " File.");
}
// fights.properties
Properties fightSettings = new Properties();
try {
InputStream is = new FileInputStream(new File(FIGHT_SETTINGS_CONFIG_FILE));
fightSettings.load(is);
is.close();
FIGHT_IS_ACTIVE = Boolean.parseBoolean(fightSettings.getProperty("FightIsActive", "False"));
NOVICE_PROTECTION_IS_ACTIVE = Boolean.parseBoolean(fightSettings.getProperty("NoviceProtectionIsActive", "False"));
NOVICE_MAX_LEVEL = Integer.parseInt(fightSettings.getProperty("NoviceMaxLevel", "20"));
NOVICE_PROTECTION_LEVEL_RANGE = Integer.parseInt(fightSettings.getProperty("ProtectionLevelRange", "10"));
}
catch (Exception e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new Error("無法讀取設定檔: " + FIGHT_SETTINGS_CONFIG_FILE);
}
// record.properties
try {
Properties recordSettings = new Properties();
InputStream is = new FileInputStream(new File(RECORD_SETTINGS_CONFIG_FILE));
recordSettings.load(is);
is.close();
LOGGING_WEAPON_ENCHANT = Byte.parseByte(recordSettings.getProperty("LoggingWeaponEnchant", "0"));
LOGGING_ARMOR_ENCHANT = Byte.parseByte(recordSettings.getProperty("LoggingArmorEnchant", "0"));
LOGGING_CHAT_NORMAL = Boolean.parseBoolean(recordSettings.getProperty("LoggingChatNormal", "false"));
LOGGING_CHAT_WHISPER = Boolean.parseBoolean(recordSettings.getProperty("LoggingChatWhisper", "false"));
LOGGING_CHAT_SHOUT = Boolean.parseBoolean(recordSettings.getProperty("LoggingChatShout", "false"));
LOGGING_CHAT_WORLD = Boolean.parseBoolean(recordSettings.getProperty("LoggingChatWorld", "false"));
LOGGING_CHAT_CLAN = Boolean.parseBoolean(recordSettings.getProperty("LoggingChatClan", "false"));
LOGGING_CHAT_PARTY = Boolean.parseBoolean(recordSettings.getProperty("LoggingChatParty", "false"));
LOGGING_CHAT_COMBINED = Boolean.parseBoolean(recordSettings.getProperty("LoggingChatCombined", "false"));
LOGGING_CHAT_CHAT_PARTY = Boolean.parseBoolean(recordSettings.getProperty("LoggingChatChatParty", "false"));
writeTradeLog = Boolean.parseBoolean(recordSettings.getProperty("writeTradeLog", "false"));
writeRobotsLog = Boolean.parseBoolean(recordSettings.getProperty("writeRobotsLog", "false"));
writeDropLog = Boolean.parseBoolean(recordSettings.getProperty("writeDropLog", "false"));
MysqlAutoBackup = Integer.parseInt(recordSettings.getProperty("MysqlAutoBackup", "false"));
CompressGzip = Boolean.parseBoolean(recordSettings.getProperty("CompressGzip", "false"));
}catch (Exception e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new Error("Failed to Load: " + RECORD_SETTINGS_CONFIG_FILE);
}
validate();
}
private static void validate() {
if (!IntRange.includes(Config.ALT_ITEM_DELETION_RANGE, 0, 5)) {
throw new IllegalStateException("ItemDeletionRange 的設定值超出範圍。");
}
if (!IntRange.includes(Config.ALT_ITEM_DELETION_TIME, 1, 35791)) {
throw new IllegalStateException("ItemDeletionTime 的設定值超出範圍。");
}
}
public static boolean setParameterValue(String pName, String pValue) {
// server.properties
if (pName.equalsIgnoreCase("GameserverHostname")) {
GAME_SERVER_HOST_NAME = pValue;
}
else if (pName.equalsIgnoreCase("GameserverPort")) {
GAME_SERVER_PORT = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Driver")) {
DB_DRIVER = pValue;
}
else if (pName.equalsIgnoreCase("URL")) {
DB_URL = pValue;
}
else if (pName.equalsIgnoreCase("Login")) {
DB_LOGIN = pValue;
}
else if (pName.equalsIgnoreCase("Password")) {
DB_PASSWORD = pValue;
}
else if (pName.equalsIgnoreCase("ClientLanguage")) {
CLIENT_LANGUAGE = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("TimeZone")) {
TIME_ZONE = pValue;
}
else if (pName.equalsIgnoreCase("AutomaticKick")) {
AUTOMATIC_KICK = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("AutoCreateAccounts")) {
AUTO_CREATE_ACCOUNTS = Boolean.parseBoolean(pValue);
}
else if (pName.equalsIgnoreCase("MaximumOnlineUsers")) {
MAX_ONLINE_USERS = Short.parseShort(pValue);
}
else if (pName.equalsIgnoreCase("CharacterConfigInServerSide")) {
CHARACTER_CONFIG_IN_SERVER_SIDE = Boolean.parseBoolean(pValue);
}
else if (pName.equalsIgnoreCase("Allow2PC")) {
ALLOW_2PC = Boolean.parseBoolean(pValue);
}
else if (pName.equalsIgnoreCase("LevelDownRange")) {
LEVEL_DOWN_RANGE = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("SendPacketBeforeTeleport")) {
SEND_PACKET_BEFORE_TELEPORT = Boolean.parseBoolean(pValue);
}
else if (pName.equalsIgnoreCase("Punishment")) {
ILLEGAL_SPEEDUP_PUNISHMENT = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("AnnounceTimeDisplay")) {
Announcements_Cycle_Modify_Time = Boolean.parseBoolean(pValue);
}
// rates.properties
else if (pName.equalsIgnoreCase("RateXp")) {
RATE_XP = Double.parseDouble(pValue);
}
else if (pName.equalsIgnoreCase("RateLawful")) {
RATE_LA = Double.parseDouble(pValue);
}
else if (pName.equalsIgnoreCase("RateKarma")) {
RATE_KARMA = Double.parseDouble(pValue);
}
else if (pName.equalsIgnoreCase("RateDropAdena")) {
RATE_DROP_ADENA = Double.parseDouble(pValue);
}
else if (pName.equalsIgnoreCase("RateDropItems")) {
RATE_DROP_ITEMS = Double.parseDouble(pValue);
}
else if (pName.equalsIgnoreCase("EnchantChanceWeapon")) {
ENCHANT_CHANCE_WEAPON = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("EnchantChanceArmor")) {
ENCHANT_CHANCE_ARMOR = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("AttrEnchantChance")) {
ATTR_ENCHANT_CHANCE = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Weightrate")) {
RATE_WEIGHT_LIMIT = Byte.parseByte(pValue);
}
// altsettings.properties
else if (pName.equalsIgnoreCase("GlobalChatLevel")) {
GLOBAL_CHAT_LEVEL = Short.parseShort(pValue);
}
else if (pName.equalsIgnoreCase("WhisperChatLevel")) {
WHISPER_CHAT_LEVEL = Short.parseShort(pValue);
}
else if (pName.equalsIgnoreCase("AutoLoot")) {
AUTO_LOOT = Byte.parseByte(pValue);
}
else if (pName.equalsIgnoreCase("LOOTING_RANGE")) {
LOOTING_RANGE = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("AltNonPvP")) {
ALT_NONPVP = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("AttackMessageOn")) {
ALT_ATKMSG = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("ChangeTitleByOneself")) {
CHANGE_TITLE_BY_ONESELF = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("MaxClanMember")) {
MAX_CLAN_MEMBER = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("ClanAlliance")) {
CLAN_ALLIANCE = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("MaxPT")) {
MAX_PT = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("MaxChatPT")) {
MAX_CHAT_PT = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("SimWarPenalty")) {
SIM_WAR_PENALTY = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("GetBack")) {
GET_BACK = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("AutomaticItemDeletionTime")) {
ALT_ITEM_DELETION_TIME = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("AutomaticItemDeletionRange")) {
ALT_ITEM_DELETION_RANGE = Byte.parseByte(pValue);
}
else if (pName.equalsIgnoreCase("GMshop")) {
ALT_GMSHOP = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("GMshopMinID")) {
ALT_GMSHOP_MIN_ID = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("GMshopMaxID")) {
ALT_GMSHOP_MAX_ID = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("HalloweenIvent")) {
ALT_HALLOWEENIVENT = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("JpPrivileged")) {
ALT_JPPRIVILEGED = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("TalkingScrollQuest")) {
ALT_TALKINGSCROLLQUEST = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("HouseTaxInterval")) {
HOUSE_TAX_INTERVAL = Integer.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("MaxDollCount")) {
MAX_DOLL_COUNT = Integer.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("ReturnToNature")) {
RETURN_TO_NATURE = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("MaxNpcItem")) {
MAX_NPC_ITEM = Integer.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("MaxPersonalWarehouseItem")) {
MAX_PERSONAL_WAREHOUSE_ITEM = Integer.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("MaxClanWarehouseItem")) {
MAX_CLAN_WAREHOUSE_ITEM = Integer.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("DeleteCharacterAfter7Days")) {
DELETE_CHARACTER_AFTER_7DAYS = Boolean.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("NpcDeletionTime")) {
NPC_DELETION_TIME = Integer.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("DefaultCharacterSlot")) {
DEFAULT_CHARACTER_SLOT = Integer.valueOf(pValue);
}
else if (pName.equalsIgnoreCase("GDropItemTime")) {
GDROPITEM_TIME = Integer.parseInt(pValue);
}
// charsettings.properties
else if (pName.equalsIgnoreCase("PrinceMaxHP")) {
PRINCE_MAX_HP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("PrinceMaxMP")) {
PRINCE_MAX_MP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("KnightMaxHP")) {
KNIGHT_MAX_HP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("KnightMaxMP")) {
KNIGHT_MAX_MP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("ElfMaxHP")) {
ELF_MAX_HP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("ElfMaxMP")) {
ELF_MAX_MP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("WizardMaxHP")) {
WIZARD_MAX_HP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("WizardMaxMP")) {
WIZARD_MAX_MP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("DarkelfMaxHP")) {
DARKELF_MAX_HP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("DarkelfMaxMP")) {
DARKELF_MAX_MP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("DragonKnightMaxHP")) {
DRAGONKNIGHT_MAX_HP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("DragonKnightMaxMP")) {
DRAGONKNIGHT_MAX_MP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("IllusionistMaxHP")) {
ILLUSIONIST_MAX_HP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("IllusionistMaxMP")) {
ILLUSIONIST_MAX_MP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv50Exp")) {
LV50_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv51Exp")) {
LV51_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv52Exp")) {
LV52_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv53Exp")) {
LV53_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv54Exp")) {
LV54_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv55Exp")) {
LV55_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv56Exp")) {
LV56_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv57Exp")) {
LV57_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv58Exp")) {
LV58_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv59Exp")) {
LV59_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv60Exp")) {
LV60_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv61Exp")) {
LV61_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv62Exp")) {
LV62_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv63Exp")) {
LV63_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv64Exp")) {
LV64_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv65Exp")) {
LV65_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv66Exp")) {
LV66_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv67Exp")) {
LV67_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv68Exp")) {
LV68_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv69Exp")) {
LV69_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv70Exp")) {
LV70_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv71Exp")) {
LV71_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv72Exp")) {
LV72_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv73Exp")) {
LV73_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv74Exp")) {
LV74_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv75Exp")) {
LV75_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv76Exp")) {
LV76_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv77Exp")) {
LV77_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv78Exp")) {
LV78_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv79Exp")) {
LV79_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv80Exp")) {
LV80_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv81Exp")) {
LV81_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv82Exp")) {
LV82_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv83Exp")) {
LV83_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv84Exp")) {
LV84_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv85Exp")) {
LV85_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv86Exp")) {
LV86_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv87Exp")) {
LV87_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv88Exp")) {
LV88_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv89Exp")) {
LV89_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv90Exp")) {
LV90_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv91Exp")) {
LV91_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv92Exp")) {
LV92_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv93Exp")) {
LV93_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv94Exp")) {
LV94_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv95Exp")) {
LV95_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv96Exp")) {
LV96_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv97Exp")) {
LV97_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv98Exp")) {
LV98_EXP = Integer.parseInt(pValue);
}
else if (pName.equalsIgnoreCase("Lv99Exp")) {
LV99_EXP = Integer.parseInt(pValue);
}
//record.properties
else if (pName.equalsIgnoreCase("LoggingWeaponEnchant")) {
LOGGING_WEAPON_ENCHANT = Byte.parseByte(pValue);
}
else if (pName.equalsIgnoreCase("LoggingArmorEnchant")) {
LOGGING_ARMOR_ENCHANT = Byte.parseByte(pValue);
} else {
return false;
}
return true;
}
private Config() {
}
}