[SPOILER="Config.java"]
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package com.l2jserver;
import gnu.trove.list.array.TIntArrayList;
import gnu.trove.map.hash.TIntFloatHashMap;
import gnu.trove.map.hash.TIntIntHashMap;
import gnu.trove.map.hash.TIntObjectHashMap;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.LineNumberReader;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
import com.l2jserver.gameserver.util.FloodProtectorConfig;
import com.l2jserver.util.L2Properties;
import com.l2jserver.util.StringUtil;
/**
* This class loads all the game server related configurations from files.<br>
* The files are usually located in game/config folder in game server's root folder.<br>
* Each configuration has a default value (that should reflect retail behavior).
*/
public final class Config
{
private static final Logger _log = Logger.getLogger(Config.class.getName());
// --------------------------------------------------
// L2J Property File Definitions
// --------------------------------------------------
public static final String CHARACTER_CONFIG_FILE = "./config/Character.properties";
public static final String FEATURE_CONFIG_FILE = "./config/Feature.properties";
public static final String FORTSIEGE_CONFIGURATION_FILE = "./config/fortsiege.properties";
public static final String GENERAL_CONFIG_FILE = "./config/General.properties";
public static final String HEXID_FILE = "./config/hexid.txt";
public static final String ID_CONFIG_FILE = "./config/idfactory.properties";
public static final String SERVER_VERSION_FILE = "./config/l2j-version.properties";
public static final String DATAPACK_VERSION_FILE = "./config/l2jdp-version.properties";
public static final String L2JMOD_CONFIG_FILE = "./config/l2jmods.properties";
public static final String LOGIN_CONFIGURATION_FILE = "./config/loginserver.properties";
public static final String NPC_CONFIG_FILE = "./config/NPC.properties";
public static final String PVP_CONFIG_FILE = "./config/pvp.properties";
public static final String RATES_CONFIG_FILE = "./config/rates.properties";
public static final String CONFIGURATION_FILE = "./config/server.properties";
public static final String IP_CONFIG_FILE = "./config/ipconfig.xml";
public static final String SIEGE_CONFIGURATION_FILE = "./config/siege.properties";
public static final String TW_CONFIGURATION_FILE = "./config/territorywar.properties";
public static final String TELNET_FILE = "./config/telnet.properties";
public static final String FLOOD_PROTECTOR_FILE = "./config/floodprotector.properties";
public static final String MMO_CONFIG_FILE = "./config/mmo.properties";
public static final String OLYMPIAD_CONFIG_FILE = "./config/olympiad.properties";
public static final String COMMUNITY_CONFIGURATION_FILE = "./config/CommunityServer.properties";
public static final String GRANDBOSS_CONFIG_FILE = "./config/Grandboss.properties";
public static final String GRACIASEEDS_CONFIG_FILE = "./config/GraciaSeeds.properties";
public static final String COMMUNITY_BOARD_PVP = "./config/CommunityBoardPvP.properties";
public static final String CHAT_FILTER_FILE = "./config/chatfilter.txt";
public static final String SECURITY_CONFIG_FILE = "./config/security.properties";
public static final String EMAIL_CONFIG_FILE = "./config/email.properties";
public static final String CH_SIEGE_FILE = "./config/ConquerableHallSiege.properties";
// --------------------------------------------------
// L2J Variable Definitions
// --------------------------------------------------
public static boolean ALT_GAME_DELEVEL;
public static boolean DECREASE_SKILL_LEVEL;
public static double ALT_WEIGHT_LIMIT;
public static int RUN_SPD_BOOST;
public static int DEATH_PENALTY_CHANCE;
public static double RESPAWN_RESTORE_CP;
public static double RESPAWN_RESTORE_HP;
public static double RESPAWN_RESTORE_MP;
public static boolean ALT_GAME_TIREDNESS;
public static boolean ENABLE_MODIFY_SKILL_DURATION;
public static TIntIntHashMap SKILL_DURATION_LIST;
public static boolean ENABLE_MODIFY_SKILL_REUSE;
public static TIntIntHashMap SKILL_REUSE_LIST;
public static boolean AUTO_LEARN_SKILLS;
public static boolean AUTO_LEARN_FS_SKILLS;
public static boolean AUTO_LOOT_HERBS;
public static byte BUFFS_MAX_AMOUNT;
public static byte TRIGGERED_BUFFS_MAX_AMOUNT;
public static byte DANCES_MAX_AMOUNT;
public static boolean DANCE_CANCEL_BUFF;
public static boolean DANCE_CONSUME_ADDITIONAL_MP;
public static boolean AUTO_LEARN_DIVINE_INSPIRATION;
public static boolean ALT_GAME_CANCEL_BOW;
public static boolean ALT_GAME_CANCEL_CAST;
public static boolean EFFECT_CANCELING;
public static boolean ALT_GAME_MAGICFAILURES;
public static int PLAYER_FAKEDEATH_UP_PROTECTION;
public static boolean STORE_SKILL_COOLTIME;
public static boolean SUBCLASS_STORE_SKILL_COOLTIME;
public static boolean SUMMON_STORE_SKILL_COOLTIME;
public static boolean ALT_GAME_SHIELD_BLOCKS;
public static int ALT_PERFECT_SHLD_BLOCK;
public static boolean ALLOW_CLASS_MASTERS;
public static ClassMasterSettings CLASS_MASTER_SETTINGS;
public static boolean ALLOW_ENTIRE_TREE;
public static boolean ALTERNATE_CLASS_MASTER;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean ES_SP_BOOK_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SKILL_LEARN;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
public static boolean ALT_GAME_SUBCLASS_EVERYWHERE;
public static boolean ALLOW_TRANSFORM_WITHOUT_QUEST;
public static int FEE_DELETE_TRANSFER_SKILLS;
public static int FEE_DELETE_SUBCLASS_SKILLS;
public static boolean RESTORE_SERVITOR_ON_RECONNECT;
public static boolean RESTORE_PET_ON_RECONNECT;
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
public static int MAX_PCRIT_RATE;
public static int MAX_MCRIT_RATE;
public static int MAX_PATK_SPEED;
public static int MAX_MATK_SPEED;
public static int MAX_EVASION;
public static int MIN_DEBUFF_CHANCE;
public static int MAX_DEBUFF_CHANCE;
public static byte MAX_SUBCLASS;
public static byte BASE_SUBCLASS_LEVEL;
public static byte MAX_SUBCLASS_LEVEL;
public static int MAX_PVTSTORESELL_SLOTS_DWARF;
public static int MAX_PVTSTORESELL_SLOTS_OTHER;
public static int MAX_PVTSTOREBUY_SLOTS_DWARF;
public static int MAX_PVTSTOREBUY_SLOTS_OTHER;
public static int INVENTORY_MAXIMUM_NO_DWARF;
public static int INVENTORY_MAXIMUM_DWARF;
public static int INVENTORY_MAXIMUM_GM;
public static int INVENTORY_MAXIMUM_QUEST_ITEMS;
public static int WAREHOUSE_SLOTS_DWARF;
public static int WAREHOUSE_SLOTS_NO_DWARF;
public static int WAREHOUSE_SLOTS_CLAN;
public static int ALT_FREIGHT_SLOTS;
public static int ALT_FREIGHT_PRICE;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_SHOP;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_TELEPORT;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_USE_GK;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_TRADE;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE;
public static int MAX_PERSONAL_FAME_POINTS;
public static int FORTRESS_ZONE_FAME_TASK_FREQUENCY;
public static int FORTRESS_ZONE_FAME_AQUIRE_POINTS;
public static int CASTLE_ZONE_FAME_TASK_FREQUENCY;
public static int CASTLE_ZONE_FAME_AQUIRE_POINTS;
public static boolean FAME_FOR_DEAD_PLAYERS;
public static boolean IS_CRAFTING_ENABLED;
public static boolean CRAFT_MASTERWORK;
public static int DWARF_RECIPE_LIMIT;
public static int COMMON_RECIPE_LIMIT;
public static boolean ALT_GAME_CREATION;
public static double ALT_GAME_CREATION_SPEED;
public static double ALT_GAME_CREATION_XP_RATE;
public static double ALT_GAME_CREATION_RARE_XPSP_RATE;
public static double ALT_GAME_CREATION_SP_RATE;
public static boolean ALT_BLACKSMITH_USE_RECIPES;
public static int ALT_CLAN_JOIN_DAYS;
public static int ALT_CLAN_CREATE_DAYS;
public static int ALT_CLAN_DISSOLVE_DAYS;
public static int ALT_ALLY_JOIN_DAYS_WHEN_LEAVED;
public static int ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED;
public static int ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED;
public static int ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED;
public static int ALT_MAX_NUM_OF_CLANS_IN_ALLY;
public static int ALT_CLAN_MEMBERS_FOR_WAR;
public static boolean ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH;
public static boolean REMOVE_CASTLE_CIRCLETS;
public static int ALT_PARTY_RANGE;
public static int ALT_PARTY_RANGE2;
public static boolean ALT_LEAVE_PARTY_LEADER;
public static boolean INITIAL_EQUIPMENT_EVENT;
public static long STARTING_ADENA;
public static byte STARTING_LEVEL;
public static int STARTING_SP;
public static long MAX_ADENA;
public static boolean AUTO_LOOT;
public static boolean AUTO_LOOT_RAIDS;
public static int LOOT_RAIDS_PRIVILEGE_INTERVAL;
public static int LOOT_RAIDS_PRIVILEGE_CC_SIZE;
public static int UNSTUCK_INTERVAL;
public static int TELEPORT_WATCHDOG_TIMEOUT;
public static int PLAYER_SPAWN_PROTECTION;
public static ArrayList<Integer> SPAWN_PROTECTION_ALLOWED_ITEMS;
public static int PLAYER_TELEPORT_PROTECTION;
public static boolean RANDOM_RESPAWN_IN_TOWN_ENABLED;
public static boolean OFFSET_ON_TELEPORT_ENABLED;
public static int MAX_OFFSET_ON_TELEPORT;
public static boolean RESTORE_PLAYER_INSTANCE;
public static boolean ALLOW_SUMMON_TO_INSTANCE;
public static boolean PETITIONING_ALLOWED;
public static int MAX_PETITIONS_PER_PLAYER;
public static int MAX_PETITIONS_PENDING;
public static boolean ALT_GAME_FREE_TELEPORT;
public static int DELETE_DAYS;
public static float ALT_GAME_EXPONENT_XP;
public static float ALT_GAME_EXPONENT_SP;
public static String PARTY_XP_CUTOFF_METHOD;
public static double PARTY_XP_CUTOFF_PERCENT;
public static int PARTY_XP_CUTOFF_LEVEL;
public static boolean DISABLE_TUTORIAL;
public static boolean EXPERTISE_PENALTY;
public static boolean STORE_RECIPE_SHOPLIST;
public static boolean STORE_UI_SETTINGS;
public static String[] FORBIDDEN_NAMES;
public static boolean SILENCE_MODE_EXCLUDE;
// --------------------------------------------------
// ClanHall Settings
// --------------------------------------------------
public static long CH_TELE_FEE_RATIO;
public static int CH_TELE1_FEE;
public static int CH_TELE2_FEE;
public static long CH_ITEM_FEE_RATIO;
public static int CH_ITEM1_FEE;
public static int CH_ITEM2_FEE;
public static int CH_ITEM3_FEE;
public static long CH_MPREG_FEE_RATIO;
public static int CH_MPREG1_FEE;
public static int CH_MPREG2_FEE;
public static int CH_MPREG3_FEE;
public static int CH_MPREG4_FEE;
public static int CH_MPREG5_FEE;
public static long CH_HPREG_FEE_RATIO;
public static int CH_HPREG1_FEE;
public static int CH_HPREG2_FEE;
public static int CH_HPREG3_FEE;
public static int CH_HPREG4_FEE;
public static int CH_HPREG5_FEE;
public static int CH_HPREG6_FEE;
public static int CH_HPREG7_FEE;
public static int CH_HPREG8_FEE;
public static int CH_HPREG9_FEE;
public static int CH_HPREG10_FEE;
public static int CH_HPREG11_FEE;
public static int CH_HPREG12_FEE;
public static int CH_HPREG13_FEE;
public static long CH_EXPREG_FEE_RATIO;
public static int CH_EXPREG1_FEE;
public static int CH_EXPREG2_FEE;
public static int CH_EXPREG3_FEE;
public static int CH_EXPREG4_FEE;
public static int CH_EXPREG5_FEE;
public static int CH_EXPREG6_FEE;
public static int CH_EXPREG7_FEE;
public static long CH_SUPPORT_FEE_RATIO;
public static int CH_SUPPORT1_FEE;
public static int CH_SUPPORT2_FEE;
public static int CH_SUPPORT3_FEE;
public static int CH_SUPPORT4_FEE;
public static int CH_SUPPORT5_FEE;
public static int CH_SUPPORT6_FEE;
public static int CH_SUPPORT7_FEE;
public static int CH_SUPPORT8_FEE;
public static long CH_CURTAIN_FEE_RATIO;
public static int CH_CURTAIN1_FEE;
public static int CH_CURTAIN2_FEE;
public static long CH_FRONT_FEE_RATIO;
public static int CH_FRONT1_FEE;
public static int CH_FRONT2_FEE;
public static boolean CH_BUFF_FREE;
// --------------------------------------------------
// Castle Settings
// --------------------------------------------------
public static long CS_TELE_FEE_RATIO;
public static int CS_TELE1_FEE;
public static int CS_TELE2_FEE;
public static long CS_MPREG_FEE_RATIO;
public static int CS_MPREG1_FEE;
public static int CS_MPREG2_FEE;
public static int CS_MPREG3_FEE;
public static int CS_MPREG4_FEE;
public static long CS_HPREG_FEE_RATIO;
public static int CS_HPREG1_FEE;
public static int CS_HPREG2_FEE;
public static int CS_HPREG3_FEE;
public static int CS_HPREG4_FEE;
public static int CS_HPREG5_FEE;
public static long CS_EXPREG_FEE_RATIO;
public static int CS_EXPREG1_FEE;
public static int CS_EXPREG2_FEE;
public static int CS_EXPREG3_FEE;
public static int CS_EXPREG4_FEE;
public static long CS_SUPPORT_FEE_RATIO;
public static int CS_SUPPORT1_FEE;
public static int CS_SUPPORT2_FEE;
public static int CS_SUPPORT3_FEE;
public static int CS_SUPPORT4_FEE;
public static List<String> CL_SET_SIEGE_TIME_LIST;
public static List<Integer> SIEGE_HOUR_LIST_MORNING;
public static List<Integer> SIEGE_HOUR_LIST_AFTERNOON;
// --------------------------------------------------
// Fortress Settings
// --------------------------------------------------
public static long FS_TELE_FEE_RATIO;
public static int FS_TELE1_FEE;
public static int FS_TELE2_FEE;
public static long FS_MPREG_FEE_RATIO;
public static int FS_MPREG1_FEE;
public static int FS_MPREG2_FEE;
public static long FS_HPREG_FEE_RATIO;
public static int FS_HPREG1_FEE;
public static int FS_HPREG2_FEE;
public static long FS_EXPREG_FEE_RATIO;
public static int FS_EXPREG1_FEE;
public static int FS_EXPREG2_FEE;
public static long FS_SUPPORT_FEE_RATIO;
public static int FS_SUPPORT1_FEE;
public static int FS_SUPPORT2_FEE;
public static int FS_BLOOD_OATH_COUNT;
public static int FS_UPDATE_FRQ;
public static int FS_MAX_SUPPLY_LEVEL;
public static int FS_FEE_FOR_CASTLE;
public static int FS_MAX_OWN_TIME;
// --------------------------------------------------
// Feature Settings
// --------------------------------------------------
public static int TAKE_FORT_POINTS;
public static int LOOSE_FORT_POINTS;
public static int TAKE_CASTLE_POINTS;
public static int LOOSE_CASTLE_POINTS;
public static int CASTLE_DEFENDED_POINTS;
public static int FESTIVAL_WIN_POINTS;
public static int HERO_POINTS;
public static int ROYAL_GUARD_COST;
public static int KNIGHT_UNIT_COST;
public static int KNIGHT_REINFORCE_COST;
public static int BALLISTA_POINTS;
public static int BLOODALLIANCE_POINTS;
public static int BLOODOATH_POINTS;
public static int KNIGHTSEPAULETTE_POINTS;
public static int REPUTATION_SCORE_PER_KILL;
public static int JOIN_ACADEMY_MIN_REP_SCORE;
public static int JOIN_ACADEMY_MAX_REP_SCORE;
public static int RAID_RANKING_1ST;
public static int RAID_RANKING_2ND;
public static int RAID_RANKING_3RD;
public static int RAID_RANKING_4TH;
public static int RAID_RANKING_5TH;
public static int RAID_RANKING_6TH;
public static int RAID_RANKING_7TH;
public static int RAID_RANKING_8TH;
public static int RAID_RANKING_9TH;
public static int RAID_RANKING_10TH;
public static int RAID_RANKING_UP_TO_50TH;
public static int RAID_RANKING_UP_TO_100TH;
public static int CLAN_LEVEL_6_COST;
public static int CLAN_LEVEL_7_COST;
public static int CLAN_LEVEL_8_COST;
public static int CLAN_LEVEL_9_COST;
public static int CLAN_LEVEL_10_COST;
public static int CLAN_LEVEL_11_COST;
public static int CLAN_LEVEL_6_REQUIREMENT;
public static int CLAN_LEVEL_7_REQUIREMENT;
public static int CLAN_LEVEL_8_REQUIREMENT;
public static int CLAN_LEVEL_9_REQUIREMENT;
public static int CLAN_LEVEL_10_REQUIREMENT;
public static int CLAN_LEVEL_11_REQUIREMENT;
public static boolean ALLOW_WYVERN_DURING_SIEGE;
// --------------------------------------------------
// General Settings
// --------------------------------------------------
public static boolean EVERYBODY_HAS_ADMIN_RIGHTS;
public static boolean DISPLAY_SERVER_VERSION;
public static boolean SERVER_LIST_BRACKET;
public static int SERVER_LIST_TYPE;
public static int SERVER_LIST_AGE;
public static boolean SERVER_GMONLY;
public static boolean GM_HERO_AURA;
public static boolean GM_STARTUP_INVULNERABLE;
public static boolean GM_STARTUP_INVISIBLE;
public static boolean GM_STARTUP_SILENCE;
public static boolean GM_STARTUP_AUTO_LIST;
public static boolean GM_STARTUP_DIET_MODE;
public static String GM_ADMIN_MENU_STYLE;
public static boolean GM_ITEM_RESTRICTION;
public static boolean GM_SKILL_RESTRICTION;
public static boolean GM_TRADE_RESTRICTED_ITEMS;
public static boolean GM_RESTART_FIGHTING;
public static boolean GM_ANNOUNCER_NAME;
public static boolean GM_CRITANNOUNCER_NAME;
public static boolean GM_GIVE_SPECIAL_SKILLS;
public static boolean GM_GIVE_SPECIAL_AURA_SKILLS;
public static boolean BYPASS_VALIDATION;
public static boolean GAMEGUARD_ENFORCE;
public static boolean GAMEGUARD_PROHIBITACTION;
public static boolean LOG_CHAT;
public static boolean LOG_AUTO_ANNOUNCEMENTS;
public static boolean LOG_ITEMS;
public static boolean LOG_ITEMS_SMALL_LOG;
public static boolean LOG_ITEM_ENCHANTS;
public static boolean LOG_SKILL_ENCHANTS;
public static boolean GMAUDIT;
public static boolean LOG_GAME_DAMAGE;
public static int LOG_GAME_DAMAGE_THRESHOLD;
public static boolean SKILL_CHECK_ENABLE;
public static boolean SKILL_CHECK_REMOVE;
public static boolean SKILL_CHECK_GM;
public static boolean DEBUG;
public static boolean PACKET_HANDLER_DEBUG;
public static boolean DEVELOPER;
public static boolean ACCEPT_GEOEDITOR_CONN;
public static boolean ALT_DEV_NO_HANDLERS;
public static boolean ALT_DEV_NO_QUESTS;
public static boolean ALT_DEV_NO_SPAWNS;
public static int THREAD_P_EFFECTS;
public static int THREAD_P_GENERAL;
public static int GENERAL_PACKET_THREAD_CORE_SIZE;
public static int IO_PACKET_THREAD_CORE_SIZE;
public static int GENERAL_THREAD_CORE_SIZE;
public static int AI_MAX_THREAD;
public static int CLIENT_PACKET_QUEUE_SIZE;
public static int CLIENT_PACKET_QUEUE_MAX_BURST_SIZE;
public static int CLIENT_PACKET_QUEUE_MAX_PACKETS_PER_SECOND;
public static int CLIENT_PACKET_QUEUE_MEASURE_INTERVAL;
public static int CLIENT_PACKET_QUEUE_MAX_AVERAGE_PACKETS_PER_SECOND;
public static int CLIENT_PACKET_QUEUE_MAX_FLOODS_PER_MIN;
public static int CLIENT_PACKET_QUEUE_MAX_OVERFLOWS_PER_MIN;
public static int CLIENT_PACKET_QUEUE_MAX_UNDERFLOWS_PER_MIN;
public static int CLIENT_PACKET_QUEUE_MAX_UNKNOWN_PER_MIN;
public static boolean DEADLOCK_DETECTOR;
public static int DEADLOCK_CHECK_INTERVAL;
public static boolean RESTART_ON_DEADLOCK;
public static boolean ALLOW_DISCARDITEM;
public static int AUTODESTROY_ITEM_AFTER;
public static int HERB_AUTO_DESTROY_TIME;
public static TIntArrayList LIST_PROTECTED_ITEMS;
public static boolean DATABASE_CLEAN_UP;
public static long CONNECTION_CLOSE_TIME;
public static int CHAR_STORE_INTERVAL;
public static boolean LAZY_ITEMS_UPDATE;
public static boolean UPDATE_ITEMS_ON_CHAR_STORE;
public static boolean DESTROY_DROPPED_PLAYER_ITEM;
public static boolean DESTROY_EQUIPABLE_PLAYER_ITEM;
public static boolean SAVE_DROPPED_ITEM;
public static boolean EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD;
public static int SAVE_DROPPED_ITEM_INTERVAL;
public static boolean CLEAR_DROPPED_ITEM_TABLE;
public static boolean AUTODELETE_INVALID_QUEST_DATA;
public static boolean PRECISE_DROP_CALCULATION;
public static boolean MULTIPLE_ITEM_DROP;
public static boolean FORCE_INVENTORY_UPDATE;
public static boolean LAZY_CACHE;
public static boolean CACHE_CHAR_NAMES;
public static int MIN_NPC_ANIMATION;
public static int MAX_NPC_ANIMATION;
public static int MIN_MONSTER_ANIMATION;
public static int MAX_MONSTER_ANIMATION;
public static int COORD_SYNCHRONIZE;
public static boolean ENABLE_FALLING_DAMAGE;
public static boolean GRIDS_ALWAYS_ON;
public static int GRID_NEIGHBOR_TURNON_TIME;
public static int GRID_NEIGHBOR_TURNOFF_TIME;
public static int WORLD_X_MIN;
public static int WORLD_X_MAX;
public static int WORLD_Y_MIN;
public static int WORLD_Y_MAX;
public static int GEODATA;
public static boolean GEODATA_CELLFINDING;
public static String PATHFIND_BUFFERS;
public static float LOW_WEIGHT;
public static float MEDIUM_WEIGHT;
public static float HIGH_WEIGHT;
public static boolean ADVANCED_DIAGONAL_STRATEGY;
public static float DIAGONAL_WEIGHT;
public static int MAX_POSTFILTER_PASSES;
public static boolean DEBUG_PATH;
public static boolean FORCE_GEODATA;
public static boolean MOVE_BASED_KNOWNLIST;
public static long KNOWNLIST_UPDATE_INTERVAL;
public static int PEACE_ZONE_MODE;
public static String DEFAULT_GLOBAL_CHAT;
public static String DEFAULT_TRADE_CHAT;
public static boolean ALLOW_WAREHOUSE;
public static boolean WAREHOUSE_CACHE;
public static int WAREHOUSE_CACHE_TIME;
public static boolean ALLOW_REFUND;
public static boolean ALLOW_MAIL;
public static boolean ALLOW_ATTACHMENTS;
public static boolean ALLOW_WEAR;
public static int WEAR_DELAY;
public static int WEAR_PRICE;
public static boolean ALLOW_LOTTERY;
public static boolean ALLOW_RACE;
public static boolean ALLOW_WATER;
public static boolean ALLOW_RENTPET;
public static boolean ALLOWFISHING;
public static boolean ALLOW_BOAT;
public static int BOAT_BROADCAST_RADIUS;
public static boolean ALLOW_CURSED_WEAPONS;
public static boolean ALLOW_MANOR;
public static boolean ALLOW_NPC_WALKERS;
public static boolean ALLOW_PET_WALKERS;
public static boolean SERVER_NEWS;
public static int COMMUNITY_TYPE;
public static boolean BBS_SHOW_PLAYERLIST;
public static String BBS_DEFAULT;
public static boolean SHOW_LEVEL_COMMUNITYBOARD;
public static boolean SHOW_STATUS_COMMUNITYBOARD;
public static int NAME_PAGE_SIZE_COMMUNITYBOARD;
public static int NAME_PER_ROW_COMMUNITYBOARD;
public static boolean USE_SAY_FILTER;
public static String CHAT_FILTER_CHARS;
public static int[] BAN_CHAT_CHANNELS;
public static int ALT_OLY_START_TIME;
public static int ALT_OLY_MIN;
public static long ALT_OLY_CPERIOD;
public static long ALT_OLY_BATTLE;
public static long ALT_OLY_WPERIOD;
public static long ALT_OLY_VPERIOD;
public static int ALT_OLY_START_POINTS;
public static int ALT_OLY_WEEKLY_POINTS;
public static int ALT_OLY_CLASSED;
public static int ALT_OLY_NONCLASSED;
public static int ALT_OLY_TEAMS;
public static int ALT_OLY_REG_DISPLAY;
public static int[][] ALT_OLY_CLASSED_REWARD;
public static int[][] ALT_OLY_NONCLASSED_REWARD;
public static int[][] ALT_OLY_TEAM_REWARD;
public static int ALT_OLY_COMP_RITEM;
public static int ALT_OLY_MIN_MATCHES;
public static int ALT_OLY_GP_PER_POINT;
public static int ALT_OLY_HERO_POINTS;
public static int ALT_OLY_RANK1_POINTS;
public static int ALT_OLY_RANK2_POINTS;
public static int ALT_OLY_RANK3_POINTS;
public static int ALT_OLY_RANK4_POINTS;
public static int ALT_OLY_RANK5_POINTS;
public static int ALT_OLY_MAX_POINTS;
public static int ALT_OLY_DIVIDER_CLASSED;
public static int ALT_OLY_DIVIDER_NON_CLASSED;
public static int ALT_OLY_MAX_WEEKLY_MATCHES;
public static int ALT_OLY_MAX_WEEKLY_MATCHES_NON_CLASSED;
public static int ALT_OLY_MAX_WEEKLY_MATCHES_CLASSED;
public static int ALT_OLY_MAX_WEEKLY_MATCHES_TEAM;
public static boolean ALT_OLY_LOG_FIGHTS;
public static boolean ALT_OLY_SHOW_MONTHLY_WINNERS;
public static boolean ALT_OLY_ANNOUNCE_GAMES;
public static TIntArrayList LIST_OLY_RESTRICTED_ITEMS;
public static int ALT_OLY_ENCHANT_LIMIT;
public static int ALT_OLY_WAIT_TIME;
public static int ALT_MANOR_REFRESH_TIME;
public static int ALT_MANOR_REFRESH_MIN;
public static int ALT_MANOR_APPROVE_TIME;
public static int ALT_MANOR_APPROVE_MIN;
public static int ALT_MANOR_MAINTENANCE_PERIOD;
public static boolean ALT_MANOR_SAVE_ALL_ACTIONS;
public static int ALT_MANOR_SAVE_PERIOD_RATE;
public static long ALT_LOTTERY_PRIZE;
public static long ALT_LOTTERY_TICKET_PRICE;
public static float ALT_LOTTERY_5_NUMBER_RATE;
public static float ALT_LOTTERY_4_NUMBER_RATE;
public static float ALT_LOTTERY_3_NUMBER_RATE;
public static long ALT_LOTTERY_2_AND_1_NUMBER_PRIZE;
public static boolean ALT_ITEM_AUCTION_ENABLED;
public static int ALT_ITEM_AUCTION_EXPIRED_AFTER;
public static long ALT_ITEM_AUCTION_TIME_EXTENDS_ON_BID;
public static int FS_TIME_ATTACK;
public static int FS_TIME_COOLDOWN;
public static int FS_TIME_ENTRY;
public static int FS_TIME_WARMUP;
public static int FS_PARTY_MEMBER_COUNT;
public static int RIFT_MIN_PARTY_SIZE;
public static int RIFT_SPAWN_DELAY;
public static int RIFT_MAX_JUMPS;
public static int RIFT_AUTO_JUMPS_TIME_MIN;
public static int RIFT_AUTO_JUMPS_TIME_MAX;
public static float RIFT_BOSS_ROOM_TIME_MUTIPLY;
public static int RIFT_ENTER_COST_RECRUIT;
public static int RIFT_ENTER_COST_SOLDIER;
public static int RIFT_ENTER_COST_OFFICER;
public static int RIFT_ENTER_COST_CAPTAIN;
public static int RIFT_ENTER_COST_COMMANDER;
public static int RIFT_ENTER_COST_HERO;
public static int DEFAULT_PUNISH;
public static int DEFAULT_PUNISH_PARAM;
public static boolean ONLY_GM_ITEMS_FREE;
public static boolean JAIL_IS_PVP;
public static boolean JAIL_DISABLE_CHAT;
public static boolean JAIL_DISABLE_TRANSACTION;
public static boolean CUSTOM_SPAWNLIST_TABLE;
public static boolean SAVE_GMSPAWN_ON_CUSTOM;
public static boolean CUSTOM_NPC_TABLE;
public static boolean CUSTOM_NPC_SKILLS_TABLE;
public static boolean CUSTOM_TELEPORT_TABLE;
public static boolean CUSTOM_DROPLIST_TABLE;
public static boolean CUSTOM_MERCHANT_TABLES;
public static boolean CUSTOM_NPCBUFFER_TABLES;
public static boolean CUSTOM_SKILLS_LOAD;
public static boolean CUSTOM_ITEMS_LOAD;
public static boolean CUSTOM_MULTISELL_LOAD;
public static int ALT_BIRTHDAY_GIFT;
public static String ALT_BIRTHDAY_MAIL_SUBJECT;
public static String ALT_BIRTHDAY_MAIL_TEXT;
public static boolean ENABLE_BLOCK_CHECKER_EVENT;
public static int MIN_BLOCK_CHECKER_TEAM_MEMBERS;
public static boolean HBCE_FAIR_PLAY;
public static int PLAYER_MOVEMENT_BLOCK_TIME;
public static boolean CLEAR_CREST_CACHE;
public static int NORMAL_ENCHANT_COST_MULTIPLIER;
public static int SAFE_ENCHANT_COST_MULTIPLIER;
public static boolean BUFF_PEACE;
public static boolean MANI_BUFF;
// --------------------------------------------------
// FloodProtector Settings
// --------------------------------------------------
public static FloodProtectorConfig FLOOD_PROTECTOR_USE_ITEM;
public static FloodProtectorConfig FLOOD_PROTECTOR_ROLL_DICE;
public static FloodProtectorConfig FLOOD_PROTECTOR_FIREWORK;
public static FloodProtectorConfig FLOOD_PROTECTOR_ITEM_PET_SUMMON;
public static FloodProtectorConfig FLOOD_PROTECTOR_HERO_VOICE;
public static FloodProtectorConfig FLOOD_PROTECTOR_GLOBAL_CHAT;
public static FloodProtectorConfig FLOOD_PROTECTOR_SUBCLASS;
public static FloodProtectorConfig FLOOD_PROTECTOR_DROP_ITEM;
public static FloodProtectorConfig FLOOD_PROTECTOR_SERVER_BYPASS;
public static FloodProtectorConfig FLOOD_PROTECTOR_MULTISELL;
public static FloodProtectorConfig FLOOD_PROTECTOR_TRANSACTION;
public static FloodProtectorConfig FLOOD_PROTECTOR_MANUFACTURE;
public static FloodProtectorConfig FLOOD_PROTECTOR_MANOR;
public static FloodProtectorConfig FLOOD_PROTECTOR_SENDMAIL;
public static FloodProtectorConfig FLOOD_PROTECTOR_CHARACTER_SELECT;
public static FloodProtectorConfig FLOOD_PROTECTOR_ITEM_AUCTION;
// --------------------------------------------------
// L2JMods Settings
// --------------------------------------------------
public static boolean L2JMOD_CHAMPION_ENABLE;
public static boolean L2JMOD_CHAMPION_PASSIVE;
public static int L2JMOD_CHAMPION_FREQUENCY;
public static String L2JMOD_CHAMP_TITLE;
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 float 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_LOWER_LVL_ITEM_CHANCE;
public static int L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE;
public static int L2JMOD_CHAMPION_REWARD_ID;
public static int L2JMOD_CHAMPION_REWARD_QTY;
public static boolean L2JMOD_CHAMPION_ENABLE_VITALITY;
public static boolean L2JMOD_CHAMPION_ENABLE_IN_INSTANCES;
public static boolean TVT_EVENT_ENABLED;
public static boolean TVT_EVENT_IN_INSTANCE;
public static String TVT_EVENT_INSTANCE_FILE;
public static String[] TVT_EVENT_INTERVAL;
public static int TVT_EVENT_PARTICIPATION_TIME;
public static int TVT_EVENT_RUNNING_TIME;
public static int TVT_EVENT_PARTICIPATION_NPC_ID;
public static int[] TVT_EVENT_PARTICIPATION_NPC_COORDINATES = new int[4];
public static int[] TVT_EVENT_PARTICIPATION_FEE = new int[2];
public static int TVT_EVENT_MIN_PLAYERS_IN_TEAMS;
public static int TVT_EVENT_MAX_PLAYERS_IN_TEAMS;
public static int TVT_EVENT_RESPAWN_TELEPORT_DELAY;
public static int TVT_EVENT_START_LEAVE_TELEPORT_DELAY;
public static String TVT_EVENT_TEAM_1_NAME;
public static int[] TVT_EVENT_TEAM_1_COORDINATES = new int[3];
public static String TVT_EVENT_TEAM_2_NAME;
public static int[] TVT_EVENT_TEAM_2_COORDINATES = new int[3];
public static List<int[]> TVT_EVENT_REWARDS;
public static boolean TVT_EVENT_TARGET_TEAM_MEMBERS_ALLOWED;
public static boolean TVT_EVENT_SCROLL_ALLOWED;
public static boolean TVT_EVENT_POTIONS_ALLOWED;
public static boolean TVT_EVENT_SUMMON_BY_ITEM_ALLOWED;
public static List<Integer> TVT_DOORS_IDS_TO_OPEN;
public static List<Integer> TVT_DOORS_IDS_TO_CLOSE;
public static boolean TVT_REWARD_TEAM_TIE;
public static byte TVT_EVENT_MIN_LVL;
public static byte TVT_EVENT_MAX_LVL;
public static int TVT_EVENT_EFFECTS_REMOVAL;
public static TIntIntHashMap TVT_EVENT_FIGHTER_BUFFS;
public static TIntIntHashMap TVT_EVENT_MAGE_BUFFS;
public static int TVT_EVENT_MAX_PARTICIPANTS_PER_IP;
public static boolean TVT_ALLOW_VOICED_COMMAND;
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 boolean L2JMOD_WEDDING_SAMESEX;
public static boolean L2JMOD_WEDDING_FORMALWEAR;
public static int L2JMOD_WEDDING_DIVORCE_COSTS;
public static boolean L2JMOD_HELLBOUND_STATUS;
public static boolean BANKING_SYSTEM_ENABLED;
public static int BANKING_SYSTEM_GOLDBARS;
public static int BANKING_SYSTEM_ADENA;
public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_CLAN;
public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE;
public static boolean OFFLINE_TRADE_ENABLE;
public static boolean OFFLINE_CRAFT_ENABLE;
public static boolean OFFLINE_MODE_IN_PEACE_ZONE;
public static boolean OFFLINE_MODE_NO_DAMAGE;
public static boolean RESTORE_OFFLINERS;
public static int OFFLINE_MAX_DAYS;
public static boolean OFFLINE_DISCONNECT_FINISHED;
public static boolean OFFLINE_SET_NAME_COLOR;
public static int OFFLINE_NAME_COLOR;
public static boolean OFFLINE_FAME;
public static boolean L2JMOD_ENABLE_MANA_POTIONS_SUPPORT;
public static boolean L2JMOD_DISPLAY_SERVER_TIME;
public static boolean WELCOME_MESSAGE_ENABLED;
public static String WELCOME_MESSAGE_TEXT;
public static int WELCOME_MESSAGE_TIME;
public static boolean L2JMOD_ANTIFEED_ENABLE;
public static boolean L2JMOD_ANTIFEED_DUALBOX;
public static boolean L2JMOD_ANTIFEED_DISCONNECTED_AS_DUALBOX;
public static int L2JMOD_ANTIFEED_INTERVAL;
public static boolean ANNOUNCE_PK_PVP;
public static boolean ANNOUNCE_PK_PVP_NORMAL_MESSAGE;
public static String ANNOUNCE_PK_MSG;
public static String ANNOUNCE_PVP_MSG;
public static boolean L2JMOD_CHAT_ADMIN;
public static boolean L2JMOD_MULTILANG_ENABLE;
public static List<String> L2JMOD_MULTILANG_ALLOWED = new ArrayList<>();
public static String L2JMOD_MULTILANG_DEFAULT;
public static boolean L2JMOD_MULTILANG_VOICED_ALLOW;
public static boolean L2JMOD_MULTILANG_SM_ENABLE;
public static List<String> L2JMOD_MULTILANG_SM_ALLOWED = new ArrayList<>();
public static boolean L2JMOD_MULTILANG_NS_ENABLE;
public static List<String> L2JMOD_MULTILANG_NS_ALLOWED = new ArrayList<>();
public static boolean L2WALKER_PROTECTION;
public static boolean L2JMOD_DEBUG_VOICE_COMMAND;
public static int L2JMOD_DUALBOX_CHECK_MAX_PLAYERS_PER_IP;
public static int L2JMOD_DUALBOX_CHECK_MAX_OLYMPIAD_PARTICIPANTS_PER_IP;
public static int L2JMOD_DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP;
public static TIntIntHashMap L2JMOD_DUALBOX_CHECK_WHITELIST;
public static boolean L2JMOD_ALLOW_CHANGE_PASSWORD;
// --------------------------------------------------
// NPC Settings
// --------------------------------------------------
public static boolean ANNOUNCE_MAMMON_SPAWN;
public static boolean ALT_MOB_AGRO_IN_PEACEZONE;
public static boolean ALT_ATTACKABLE_NPCS;
public static boolean ALT_GAME_VIEWNPC;
public static int MAX_DRIFT_RANGE;
public static boolean DEEPBLUE_DROP_RULES;
public static boolean DEEPBLUE_DROP_RULES_RAID;
public static boolean SHOW_NPC_LVL;
public static boolean SHOW_CREST_WITHOUT_QUEST;
public static boolean ENABLE_RANDOM_ENCHANT_EFFECT;
public static int MIN_NPC_LVL_DMG_PENALTY;
public static TIntFloatHashMap NPC_DMG_PENALTY;
public static TIntFloatHashMap NPC_CRIT_DMG_PENALTY;
public static TIntFloatHashMap NPC_SKILL_DMG_PENALTY;
public static int MIN_NPC_LVL_MAGIC_PENALTY;
public static TIntFloatHashMap NPC_SKILL_CHANCE_PENALTY;
public static int DECAY_TIME_TASK;
public static int NPC_DECAY_TIME;
public static int RAID_BOSS_DECAY_TIME;
public static int SPOILED_DECAY_TIME;
public static boolean GUARD_ATTACK_AGGRO_MOB;
public static boolean ALLOW_WYVERN_UPGRADER;
public static TIntArrayList LIST_PET_RENT_NPC;
public static double RAID_HP_REGEN_MULTIPLIER;
public static double RAID_MP_REGEN_MULTIPLIER;
public static double RAID_PDEFENCE_MULTIPLIER;
public static double RAID_MDEFENCE_MULTIPLIER;
public static double RAID_PATTACK_MULTIPLIER;
public static double RAID_MATTACK_MULTIPLIER;
public static double RAID_MINION_RESPAWN_TIMER;
public static TIntIntHashMap MINIONS_RESPAWN_TIME;
public static float RAID_MIN_RESPAWN_MULTIPLIER;
public static float RAID_MAX_RESPAWN_MULTIPLIER;
public static boolean RAID_DISABLE_CURSE;
public static int RAID_CHAOS_TIME;
public static int GRAND_CHAOS_TIME;
public static int MINION_CHAOS_TIME;
public static int INVENTORY_MAXIMUM_PET;
public static double PET_HP_REGEN_MULTIPLIER;
public static double PET_MP_REGEN_MULTIPLIER;
public static TIntArrayList NON_TALKING_NPCS;
// --------------------------------------------------
// PvP Settings
// --------------------------------------------------
public static int KARMA_MIN_KARMA;
public static int KARMA_MAX_KARMA;
public static int KARMA_XP_DIVIDER;
public static int KARMA_LOST_BASE;
public static boolean KARMA_DROP_GM;
public static boolean KARMA_AWARD_PK_KILL;
public static int KARMA_PK_LIMIT;
public static String KARMA_NONDROPPABLE_PET_ITEMS;
public static String KARMA_NONDROPPABLE_ITEMS;
public static int[] KARMA_LIST_NONDROPPABLE_PET_ITEMS;
public static int[] KARMA_LIST_NONDROPPABLE_ITEMS;
// --------------------------------------------------
// Rate Settings
// --------------------------------------------------
public static float RATE_XP;
public static float RATE_SP;
public static float RATE_PARTY_XP;
public static float RATE_PARTY_SP;
public static float RATE_CONSUMABLE_COST;
public static float RATE_HB_TRUST_INCREASE;
public static float RATE_HB_TRUST_DECREASE;
public static float RATE_EXTRACTABLE;
public static float RATE_DROP_ITEMS;
public static float RATE_DROP_ITEMS_BY_RAID;
public static float RATE_DROP_SPOIL;
public static int RATE_DROP_MANOR;
public static float RATE_QUEST_DROP;
public static float RATE_QUEST_REWARD;
public static float RATE_QUEST_REWARD_XP;
public static float RATE_QUEST_REWARD_SP;
public static float RATE_QUEST_REWARD_ADENA;
public static boolean RATE_QUEST_REWARD_USE_MULTIPLIERS;
public static float RATE_QUEST_REWARD_POTION;
public static float RATE_QUEST_REWARD_SCROLL;
public static float RATE_QUEST_REWARD_RECIPE;
public static float RATE_QUEST_REWARD_MATERIAL;
public static TIntFloatHashMap RATE_DROP_ITEMS_ID;
public static float RATE_KARMA_EXP_LOST;
public static float RATE_SIEGE_GUARDS_PRICE;
public static float RATE_DROP_COMMON_HERBS;
public static float RATE_DROP_HP_HERBS;
public static float RATE_DROP_MP_HERBS;
public static float RATE_DROP_SPECIAL_HERBS;
public static int PLAYER_DROP_LIMIT;
public static int PLAYER_RATE_DROP;
public static int PLAYER_RATE_DROP_ITEM;
public static int PLAYER_RATE_DROP_EQUIP;
public static int PLAYER_RATE_DROP_EQUIP_WEAPON;
public static float PET_XP_RATE;
public static int PET_FOOD_RATE;
public static float SINEATER_XP_RATE;
public static int KARMA_DROP_LIMIT;
public static int KARMA_RATE_DROP;
public static int KARMA_RATE_DROP_ITEM;
public static int KARMA_RATE_DROP_EQUIP;
public static int KARMA_RATE_DROP_EQUIP_WEAPON;
public static double[] PLAYER_XP_PERCENT_LOST;
// --------------------------------------------------
// Seven Signs Settings
// --------------------------------------------------
public static boolean ALT_GAME_CASTLE_DAWN;
public static boolean ALT_GAME_CASTLE_DUSK;
public static boolean ALT_GAME_REQUIRE_CLAN_CASTLE;
public static int ALT_FESTIVAL_MIN_PLAYER;
public static int ALT_MAXIMUM_PLAYER_CONTRIB;
public static long ALT_FESTIVAL_MANAGER_START;
public static long ALT_FESTIVAL_LENGTH;
public static long ALT_FESTIVAL_CYCLE_LENGTH;
public static long ALT_FESTIVAL_FIRST_SPAWN;
public static long ALT_FESTIVAL_FIRST_SWARM;
public static long ALT_FESTIVAL_SECOND_SPAWN;
public static long ALT_FESTIVAL_SECOND_SWARM;
public static long ALT_FESTIVAL_CHEST_SPAWN;
public static double ALT_SIEGE_DAWN_GATES_PDEF_MULT;
public static double ALT_SIEGE_DUSK_GATES_PDEF_MULT;
public static double ALT_SIEGE_DAWN_GATES_MDEF_MULT;
public static double ALT_SIEGE_DUSK_GATES_MDEF_MULT;
public static boolean ALT_STRICT_SEVENSIGNS;
public static boolean ALT_SEVENSIGNS_LAZY_UPDATE;
// --------------------------------------------------
// Server Settings
// --------------------------------------------------
public static int PORT_GAME;
public static int PORT_LOGIN;
public static String LOGIN_BIND_ADDRESS;
public static int LOGIN_TRY_BEFORE_BAN;
public static int LOGIN_BLOCK_AFTER_BAN;
public static String GAMESERVER_HOSTNAME;
public static String DATABASE_DRIVER;
public static String DATABASE_URL;
public static String DATABASE_LOGIN;
public static String DATABASE_PASSWORD;
public static int DATABASE_MAX_CONNECTIONS;
public static int DATABASE_MAX_IDLE_TIME;
public static int MAXIMUM_ONLINE_USERS;
public static String CNAME_TEMPLATE;
public static String PET_NAME_TEMPLATE;
public static String CLAN_NAME_TEMPLATE;
public static int MAX_CHARACTERS_NUMBER_PER_ACCOUNT;
public static File DATAPACK_ROOT;
public static boolean ACCEPT_ALTERNATE_ID;
public static int REQUEST_ID;
public static boolean RESERVE_HOST_ON_LOGIN = false;
public static TIntArrayList PROTOCOL_LIST;
public static boolean LOG_LOGIN_CONTROLLER;
public static boolean LOGIN_SERVER_SCHEDULE_RESTART;
public static long LOGIN_SERVER_SCHEDULE_RESTART_TIME;
// --------------------------------------------------
// CommunityServer Settings
// --------------------------------------------------
public static boolean ENABLE_COMMUNITY_BOARD;
public static String COMMUNITY_SERVER_ADDRESS;
public static int COMMUNITY_SERVER_PORT;
public static byte[] COMMUNITY_SERVER_HEX_ID;
public static int COMMUNITY_SERVER_SQL_DP_ID;
// --------------------------------------------------
// MMO Settings
// --------------------------------------------------
public static int MMO_SELECTOR_SLEEP_TIME;
public static int MMO_MAX_SEND_PER_PASS;
public static int MMO_MAX_READ_PER_PASS;
public static int MMO_HELPER_BUFFER_COUNT;
public static boolean MMO_TCP_NODELAY;
// --------------------------------------------------
// Vitality Settings
// --------------------------------------------------
public static boolean ENABLE_VITALITY;
public static boolean RECOVER_VITALITY_ON_RECONNECT;
public static boolean ENABLE_DROP_VITALITY_HERBS;
public static float RATE_VITALITY_LEVEL_1;
public static float RATE_VITALITY_LEVEL_2;
public static float RATE_VITALITY_LEVEL_3;
public static float RATE_VITALITY_LEVEL_4;
public static float RATE_DROP_VITALITY_HERBS;
public static float RATE_RECOVERY_VITALITY_PEACE_ZONE;
public static float RATE_VITALITY_LOST;
public static float RATE_VITALITY_GAIN;
public static float RATE_RECOVERY_ON_RECONNECT;
public static int STARTING_VITALITY_POINTS;
// --------------------------------------------------
// No classification assigned to the following yet
// --------------------------------------------------
public static int MAX_ITEM_IN_PACKET;
public static boolean CHECK_KNOWN;
public static int GAME_SERVER_LOGIN_PORT;
public static String GAME_SERVER_LOGIN_HOST;
public static String[] GAME_SERVER_SUBNETS;
public static String[] GAME_SERVER_HOSTS;
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 String SERVER_VERSION;
public static String SERVER_BUILD_DATE;
public static String DATAPACK_VERSION;
public static int PVP_NORMAL_TIME;
public static int PVP_PVP_TIME;
public static enum IdFactoryType
{
Compaction,
BitSet,
Stack
}
public static IdFactoryType IDFACTORY_TYPE;
public static boolean BAD_ID_CHECKING;
public static enum ObjectMapType
{
L2ObjectHashMap,
WorldObjectMap
}
public static enum ObjectSetType
{
L2ObjectHashSet,
WorldObjectSet
}
public static ObjectMapType MAP_TYPE;
public static ObjectSetType SET_TYPE;
public static double ENCHANT_CHANCE;
public static int MAX_ENCHANT_LEVEL;
public static double ENCHANT_CHANCE_ELEMENT_STONE;
public static double ENCHANT_CHANCE_ELEMENT_CRYSTAL;
public static double ENCHANT_CHANCE_ELEMENT_JEWEL;
public static double ENCHANT_CHANCE_ELEMENT_ENERGY;
public static int ENCHANT_SAFE_MAX;
public static int ENCHANT_SAFE_MAX_FULL;
public static int[] ENCHANT_BLACKLIST;
public static int AUGMENTATION_NG_SKILL_CHANCE;
public static int AUGMENTATION_NG_GLOW_CHANCE;
public static int AUGMENTATION_MID_SKILL_CHANCE;
public static int AUGMENTATION_MID_GLOW_CHANCE;
public static int AUGMENTATION_HIGH_SKILL_CHANCE;
public static int AUGMENTATION_HIGH_GLOW_CHANCE;
public static int AUGMENTATION_TOP_SKILL_CHANCE;
public static int AUGMENTATION_TOP_GLOW_CHANCE;
public static int AUGMENTATION_BASESTAT_CHANCE;
public static int AUGMENTATION_ACC_SKILL_CHANCE;
public static int[] AUGMENTATION_BLACKLIST;
public static double HP_REGEN_MULTIPLIER;
public static double MP_REGEN_MULTIPLIER;
public static double CP_REGEN_MULTIPLIER;
public static boolean IS_TELNET_ENABLED;
public static boolean SHOW_LICENCE;
public static boolean ACCEPT_NEW_GAMESERVER;
public static int SERVER_ID;
public static byte[] HEX_ID;
public static boolean AUTO_CREATE_ACCOUNTS;
public static boolean FLOOD_PROTECTION;
public static int FAST_CONNECTION_LIMIT;
public static int NORMAL_CONNECTION_TIME;
public static int FAST_CONNECTION_TIME;
public static int MAX_CONNECTION_PER_IP;
// GrandBoss Settings
public static int Antharas_Wait_Time;
public static int Valakas_Wait_Time;
public static int Interval_Of_Antharas_Spawn;
public static int Random_Of_Antharas_Spawn;
public static int Interval_Of_Valakas_Spawn;
public static int Random_Of_Valakas_Spawn;
public static int Interval_Of_Baium_Spawn;
public static int Random_Of_Baium_Spawn;
public static int Interval_Of_Core_Spawn;
public static int Random_Of_Core_Spawn;
public static int Interval_Of_Orfen_Spawn;
public static int Random_Of_Orfen_Spawn;
public static int Interval_Of_QueenAnt_Spawn;
public static int Random_Of_QueenAnt_Spawn;
public static int Interval_Of_Zaken_Spawn;
public static int Random_Of_Zaken_Spawn;
public static int BELETH_MIN_PLAYERS;
public static int INTERVAL_OF_BELETH_SPAWN;
public static int RANDOM_OF_BELETH_SPAWN;
// Gracia Seeds Settings
public static int SOD_TIAT_KILL_COUNT;
public static long SOD_STAGE_2_LENGTH;
// chatfilter
public static ArrayList<String> FILTER_LIST;
// Security
public static boolean SECOND_AUTH_ENABLED;
public static int SECOND_AUTH_MAX_ATTEMPTS;
public static long SECOND_AUTH_BAN_TIME;
public static String SECOND_AUTH_REC_LINK;
// Email
public static String EMAIL_SERVERINFO_NAME;
public static String EMAIL_SERVERINFO_ADDRESS;
public static boolean EMAIL_SYS_ENABLED;
public static String EMAIL_SYS_HOST;
public static int EMAIL_SYS_PORT;
public static boolean EMAIL_SYS_SMTP_AUTH;
public static String EMAIL_SYS_FACTORY;
public static boolean EMAIL_SYS_FACTORY_CALLBACK;
public static String EMAIL_SYS_USERNAME;
public static String EMAIL_SYS_PASSWORD;
public static String EMAIL_SYS_ADDRESS;
public static String EMAIL_SYS_SELECTQUERY;
public static String EMAIL_SYS_DBFIELD;
// Conquerable Halls Settings
public static int CHS_CLAN_MINLEVEL;
public static int CHS_MAX_ATTACKERS;
public static int CHS_MAX_FLAGS_PER_CLAN;
public static boolean CHS_ENABLE_FAME;
public static int CHS_FAME_AMOUNT;
public static int CHS_FAME_FREQUENCY;
/**
* This class initializes all global variables for configuration.<br>
* If the key doesn't appear in properties file, a default value is set by this class. {@link #CONFIGURATION_FILE} (properties file) for configuring your server.
*/
public static void load()
{
if (Server.serverMode == Server.MODE_GAMESERVER)
{
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_SENDMAIL = new FloodProtectorConfig("SendMailFloodProtector");
FLOOD_PROTECTOR_CHARACTER_SELECT = new FloodProtectorConfig("CharacterSelectFloodProtector");
FLOOD_PROTECTOR_ITEM_AUCTION = new FloodProtectorConfig("ItemAuctionFloodProtector");
_log.info("Loading GameServer Configuration Files...");
final File server = new File(CONFIGURATION_FILE);
try (InputStream is = new FileInputStream(server))
{
L2Properties serverSettings = new L2Properties();
serverSettings.load(is);
GAMESERVER_HOSTNAME = serverSettings.getProperty("GameserverHostname");
PORT_GAME = Integer.parseInt(serverSettings.getProperty("GameserverPort", "7777"));
GAME_SERVER_LOGIN_PORT = Integer.parseInt(serverSettings.getProperty("LoginPort", "9014"));
GAME_SERVER_LOGIN_HOST = serverSettings.getProperty("LoginHost", "127.0.0.1");
REQUEST_ID = Integer.parseInt(serverSettings.getProperty("RequestServerID", "0"));
ACCEPT_ALTERNATE_ID = Boolean.parseBoolean(serverSettings.getProperty("AcceptAlternateID", "True"));
DATABASE_DRIVER = serverSettings.getProperty("Driver", "com.mysql.jdbc.Driver");
DATABASE_URL = serverSettings.getProperty("URL", "jdbc:mysql://localhost/l2jgs");
DATABASE_LOGIN = serverSettings.getProperty("Login", "root");
DATABASE_PASSWORD = serverSettings.getProperty("Password", "");
DATABASE_MAX_CONNECTIONS = Integer.parseInt(serverSettings.getProperty("MaximumDbConnections", "10"));
DATABASE_MAX_IDLE_TIME = Integer.parseInt(serverSettings.getProperty("MaximumDbIdleTime", "0"));
DATAPACK_ROOT = new File(serverSettings.getProperty("DatapackRoot", ".")).getCanonicalFile();
CNAME_TEMPLATE = serverSettings.getProperty("CnameTemplate", ".*");
PET_NAME_TEMPLATE = serverSettings.getProperty("PetNameTemplate", ".*");
CLAN_NAME_TEMPLATE = serverSettings.getProperty("ClanNameTemplate", ".*");
MAX_CHARACTERS_NUMBER_PER_ACCOUNT = Integer.parseInt(serverSettings.getProperty("CharMaxNumber", "7"));
MAXIMUM_ONLINE_USERS = Integer.parseInt(serverSettings.getProperty("MaximumOnlineUsers", "100"));
String[] protocols = serverSettings.getProperty("AllowedProtocolRevisions", "267;268;271;273").split(";");
PROTOCOL_LIST = new TIntArrayList(protocols.length);
for (String protocol : protocols)
{
try
{
PROTOCOL_LIST.add(Integer.parseInt(protocol.trim()));
}
catch (NumberFormatException e)
{
_log.info("Wrong config protocol version: " + protocol + ". Skipped.");
}
}
}
catch (Exception e)
{
_log.warning("Config: " + e.getMessage());
throw new Error("Failed to Load " + CONFIGURATION_FILE + " File.");
}
File file = new File(IP_CONFIG_FILE);
Document doc = null;
ArrayList<String> subnets = new ArrayList<>(5);
ArrayList<String> hosts = new ArrayList<>(5);
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setIgnoringComments(true);
doc = factory.newDocumentBuilder().parse(file);
for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
{
NamedNodeMap attrs;
Node att;
if ("gameserver".equalsIgnoreCase(n.getNodeName()))
{
for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
{
if ("define".equalsIgnoreCase(d.getNodeName()))
{
attrs = d.getAttributes();
att = attrs.getNamedItem("subnet");
if (att == null)
{
continue;
}
subnets.add(att.getNodeValue());
att = attrs.getNamedItem("address");
if (att == null)
{
continue;
}
hosts.add(att.getNodeValue());
if (hosts.size() != subnets.size())
{
throw new Error("Failed to Load " + IP_CONFIG_FILE + " File - subnets does not match server addresses.");
}
}
}
attrs = n.getAttributes();
att = attrs.getNamedItem("address");
if (att == null)
{
throw new Error("Failed to Load " + IP_CONFIG_FILE + " File - default server address is missing.");
}
subnets.add("0.0.0.0/0");
hosts.add(att.getNodeValue());
}
}
GAME_SERVER_SUBNETS = subnets.toArray(new String[subnets.size()]);
GAME_SERVER_HOSTS = hosts.toArray(new String[hosts.size()]);
}
catch (Exception e)
{
_log.warning("Config: " + e.getMessage());
throw new Error("Failed to Load " + IP_CONFIG_FILE + " File.");
}
// Load Community Properties file (if exists)
final File community = new File(COMMUNITY_CONFIGURATION_FILE);
try (InputStream is = new FileInputStream(community))
{
L2Properties communityServerSettings = new L2Properties();
communityServerSettings.load(is);
ENABLE_COMMUNITY_BOARD = Boolean.parseBoolean(communityServerSettings.getProperty("EnableCommunityBoard", "False"));
COMMUNITY_SERVER_ADDRESS = communityServerSettings.getProperty("CommunityServerHostname", "localhost");
COMMUNITY_SERVER_PORT = Integer.parseInt(communityServerSettings.getProperty("CommunityServerPort", "9013"));
COMMUNITY_SERVER_HEX_ID = new BigInteger(communityServerSettings.getProperty("CommunityServerHexId"), 16).toByteArray();
COMMUNITY_SERVER_SQL_DP_ID = Integer.parseInt(communityServerSettings.getProperty("CommunityServerSqlDpId", "200"));
}
catch (Exception e)
{
_log.warning("Config: " + e.getMessage());
throw new Error("Failed to Load " + COMMUNITY_CONFIGURATION_FILE + " File.");
}
// Load Feature L2Properties file (if exists)
final File feature = new File(FEATURE_CONFIG_FILE);
try (InputStream is = new FileInputStream(feature))
{
L2Properties Feature = new L2Properties();
Feature.load(is);
CH_TELE_FEE_RATIO = Long.parseLong(Feature.getProperty("ClanHallTeleportFunctionFeeRatio", "604800000"));
CH_TELE1_FEE = Integer.parseInt(Feature.getProperty("ClanHallTeleportFunctionFeeLvl1", "7000"));
CH_TELE2_FEE = Integer.parseInt(Feature.getProperty("ClanHallTeleportFunctionFeeLvl2", "14000"));
CH_SUPPORT_FEE_RATIO = Long.parseLong(Feature.getProperty("ClanHallSupportFunctionFeeRatio", "86400000"));
CH_SUPPORT1_FEE = Integer.parseInt(Feature.getProperty("ClanHallSupportFeeLvl1", "2500"));
CH_SUPPORT2_FEE = Integer.parseInt(Feature.getProperty("ClanHallSupportFeeLvl2", "5000"));
CH_SUPPORT3_FEE = Integer.parseInt(Feature.getProperty("ClanHallSupportFeeLvl3", "7000"));
CH_SUPPORT4_FEE = Integer.parseInt(Feature.getProperty("ClanHallSupportFeeLvl4", "11000"));
CH_SUPPORT5_FEE = Integer.parseInt(Feature.getProperty("ClanHallSupportFeeLvl5", "21000"));
CH_SUPPORT6_FEE = Integer.parseInt(Feature.getProperty("ClanHallSupportFeeLvl6", "36000"));
CH_SUPPORT7_FEE = Integer.parseInt(Feature.getProperty("ClanHallSupportFeeLvl7", "37000"));
CH_SUPPORT8_FEE = Integer.parseInt(Feature.getProperty("ClanHallSupportFeeLvl8", "52000"));
CH_MPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("ClanHallMpRegenerationFunctionFeeRatio", "86400000"));
CH_MPREG1_FEE = Integer.parseInt(Feature.getProperty("ClanHallMpRegenerationFeeLvl1", "2000"));
CH_MPREG2_FEE = Integer.parseInt(Feature.getProperty("ClanHallMpRegenerationFeeLvl2", "3750"));
CH_MPREG3_FEE = Integer.parseInt(Feature.getProperty("ClanHallMpRegenerationFeeLvl3", "6500"));
CH_MPREG4_FEE = Integer.parseInt(Feature.getProperty("ClanHallMpRegenerationFeeLvl4", "13750"));
CH_MPREG5_FEE = Integer.parseInt(Feature.getProperty("ClanHallMpRegenerationFeeLvl5", "20000"));
CH_HPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("ClanHallHpRegenerationFunctionFeeRatio", "86400000"));
CH_HPREG1_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl1", "700"));
CH_HPREG2_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl2", "800"));
CH_HPREG3_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl3", "1000"));
CH_HPREG4_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl4", "1166"));
CH_HPREG5_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl5", "1500"));
CH_HPREG6_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl6", "1750"));
CH_HPREG7_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl7", "2000"));
CH_HPREG8_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl8", "2250"));
CH_HPREG9_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl9", "2500"));
CH_HPREG10_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl10", "3250"));
CH_HPREG11_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl11", "3270"));
CH_HPREG12_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl12", "4250"));
CH_HPREG13_FEE = Integer.parseInt(Feature.getProperty("ClanHallHpRegenerationFeeLvl13", "5166"));
CH_EXPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("ClanHallExpRegenerationFunctionFeeRatio", "86400000"));
CH_EXPREG1_FEE = Integer.parseInt(Feature.getProperty("ClanHallExpRegenerationFeeLvl1", "3000"));
CH_EXPREG2_FEE = Integer.parseInt(Feature.getProperty("ClanHallExpRegenerationFeeLvl2", "6000"));
CH_EXPREG3_FEE = Integer.parseInt(Feature.getProperty("ClanHallExpRegenerationFeeLvl3", "9000"));
CH_EXPREG4_FEE = Integer.parseInt(Feature.getProperty("ClanHallExpRegenerationFeeLvl4", "15000"));
CH_EXPREG5_FEE = Integer.parseInt(Feature.getProperty("ClanHallExpRegenerationFeeLvl5", "21000"));
CH_EXPREG6_FEE = Integer.parseInt(Feature.getProperty("ClanHallExpRegenerationFeeLvl6", "23330"));
CH_EXPREG7_FEE = Integer.parseInt(Feature.getProperty("ClanHallExpRegenerationFeeLvl7", "30000"));
CH_ITEM_FEE_RATIO = Long.parseLong(Feature.getProperty("ClanHallItemCreationFunctionFeeRatio", "86400000"));
CH_ITEM1_FEE = Integer.parseInt(Feature.getProperty("ClanHallItemCreationFunctionFeeLvl1", "30000"));
CH_ITEM2_FEE = Integer.parseInt(Feature.getProperty("ClanHallItemCreationFunctionFeeLvl2", "70000"));
CH_ITEM3_FEE = Integer.parseInt(Feature.getProperty("ClanHallItemCreationFunctionFeeLvl3", "140000"));
CH_CURTAIN_FEE_RATIO = Long.parseLong(Feature.getProperty("ClanHallCurtainFunctionFeeRatio", "604800000"));
CH_CURTAIN1_FEE = Integer.parseInt(Feature.getProperty("ClanHallCurtainFunctionFeeLvl1", "2000"));
CH_CURTAIN2_FEE = Integer.parseInt(Feature.getProperty("ClanHallCurtainFunctionFeeLvl2", "2500"));
CH_FRONT_FEE_RATIO = Long.parseLong(Feature.getProperty("ClanHallFrontPlatformFunctionFeeRatio", "259200000"));
CH_FRONT1_FEE = Integer.parseInt(Feature.getProperty("ClanHallFrontPlatformFunctionFeeLvl1", "1300"));
CH_FRONT2_FEE = Integer.parseInt(Feature.getProperty("ClanHallFrontPlatformFunctionFeeLvl2", "4000"));
CH_BUFF_FREE = Boolean.parseBoolean(Feature.getProperty("AltClanHallMpBuffFree", "False"));
CL_SET_SIEGE_TIME_LIST = new ArrayList<>();
SIEGE_HOUR_LIST_MORNING = new ArrayList<>();
SIEGE_HOUR_LIST_AFTERNOON = new ArrayList<>();
String[] sstl = Feature.getProperty("CLSetSiegeTimeList", "").split(",");
if (sstl.length != 0)
{
boolean isHour = false;
for (String st : sstl)
{
if (st.equalsIgnoreCase("day") || st.equalsIgnoreCase("hour") || st.equalsIgnoreCase("minute"))
{
if (st.equalsIgnoreCase("hour"))
{
isHour = true;
}
CL_SET_SIEGE_TIME_LIST.add(st.toLowerCase());
}
else
{
_log.warning(StringUtil.concat("[CLSetSiegeTimeList]: invalid config property -> CLSetSiegeTimeList \"", st, "\""));
}
}
if (isHour)
{
String[] shl = Feature.getProperty("SiegeHourList", "").split(",");
for (String st : shl)
{
if (!st.equalsIgnoreCase(""))
{
int val = Integer.parseInt(st);
if ((val > 23) || (val < 0))
{
_log.warning(StringUtil.concat("[SiegeHourList]: invalid config property -> SiegeHourList \"", st, "\""));
}
else if (val < 12)
{
SIEGE_HOUR_LIST_MORNING.add(val);
}
else
{
val -= 12;
SIEGE_HOUR_LIST_AFTERNOON.add(val);
}
}
}
if (Config.SIEGE_HOUR_LIST_AFTERNOON.isEmpty() && Config.SIEGE_HOUR_LIST_AFTERNOON.isEmpty())
{
_log.warning("[SiegeHourList]: invalid config property -> SiegeHourList is empty");
CL_SET_SIEGE_TIME_LIST.remove("hour");
}
}
}
CS_TELE_FEE_RATIO = Long.parseLong(Feature.getProperty("CastleTeleportFunctionFeeRatio", "604800000"));
CS_TELE1_FEE = Integer.parseInt(Feature.getProperty("CastleTeleportFunctionFeeLvl1", "7000"));
CS_TELE2_FEE = Integer.parseInt(Feature.getProperty("CastleTeleportFunctionFeeLvl2", "14000"));
CS_SUPPORT_FEE_RATIO = Long.parseLong(Feature.getProperty("CastleSupportFunctionFeeRatio", "86400000"));
CS_SUPPORT1_FEE = Integer.parseInt(Feature.getProperty("CastleSupportFeeLvl1", "7000"));
CS_SUPPORT2_FEE = Integer.parseInt(Feature.getProperty("CastleSupportFeeLvl2", "21000"));
CS_SUPPORT3_FEE = Integer.parseInt(Feature.getProperty("CastleSupportFeeLvl3", "37000"));
CS_SUPPORT4_FEE = Integer.parseInt(Feature.getProperty("CastleSupportFeeLvl4", "52000"));
CS_MPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("CastleMpRegenerationFunctionFeeRatio", "86400000"));
CS_MPREG1_FEE = Integer.parseInt(Feature.getProperty("CastleMpRegenerationFeeLvl1", "2000"));
CS_MPREG2_FEE = Integer.parseInt(Feature.getProperty("CastleMpRegenerationFeeLvl2", "6500"));
CS_MPREG3_FEE = Integer.parseInt(Feature.getProperty("CastleMpRegenerationFeeLvl3", "13750"));
CS_MPREG4_FEE = Integer.parseInt(Feature.getProperty("CastleMpRegenerationFeeLvl4", "20000"));
CS_HPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("CastleHpRegenerationFunctionFeeRatio", "86400000"));
CS_HPREG1_FEE = Integer.parseInt(Feature.getProperty("CastleHpRegenerationFeeLvl1", "1000"));
CS_HPREG2_FEE = Integer.parseInt(Feature.getProperty("CastleHpRegenerationFeeLvl2", "1500"));
CS_HPREG3_FEE = Integer.parseInt(Feature.getProperty("CastleHpRegenerationFeeLvl3", "2250"));
CS_HPREG4_FEE = Integer.parseInt(Feature.getProperty("CastleHpRegenerationFeeLvl4", "3270"));
CS_HPREG5_FEE = Integer.parseInt(Feature.getProperty("CastleHpRegenerationFeeLvl5", "5166"));
CS_EXPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("CastleExpRegenerationFunctionFeeRatio", "86400000"));
CS_EXPREG1_FEE = Integer.parseInt(Feature.getProperty("CastleExpRegenerationFeeLvl1", "9000"));
CS_EXPREG2_FEE = Integer.parseInt(Feature.getProperty("CastleExpRegenerationFeeLvl2", "150...
СЕО Оптимизация сайтов