Przeglądaj źródła

Quoting toatsgodsupreme: "Config.java and Properties cleanup. Fixing some non-standard issues in the properties files and setting proper defaults for a number of items that weren't retail like by default. Also added some missing settings pointed out by janiii"

DrHouse 16 lat temu
rodzic
commit
5cf1d89d5d

+ 31 - 23
L2_GameServer/java/config/Character.properties

@@ -102,7 +102,6 @@ maxdanceamount = 12
 # Default: False
 AutoLearnDivineInspiration = False
 
-# ---------------------------------------------------------------------------
 # This is to allow a character to be canceled during bow use, skill use, or both.
 # Available Options: bow, cast, all
 # Default: cast
@@ -134,8 +133,9 @@ StoreSkillCooltime = True
 AltShieldBlocks = False
 
 # This is the percentage for perfect shield block rate.
-# Default: 5
-AltPerfectShieldBlockRate = 5
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
+# Default: 10
+AltPerfectShieldBlockRate = 10
 
 # Allow use of Event Managers for changing occupation without any quests.
 # Default: False
@@ -179,7 +179,7 @@ MaxPCritRate = 500
 
 # Maximum character Magic Critical Rate. (10 = 1%)
 # Default: 300
-MaxMCritRate = 200
+MaxMCritRate = 300
 
 # Maximum character Attack Speed.
 # Default: 1500
@@ -230,11 +230,13 @@ MaximumFreightSlots = 20
 # ---------------------------------------------------------------------------
 # This controls the chance an item has to break if it is enchanted.
 # This chance is in %, so if you set this to 100%, enchants will always succeed.
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
 # Default: 66,66,66
 EnchantChanceWeapon = 66
 EnchantChanceArmor = 66
 EnchantChanceJewelry = 66
 
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
 # Default: 66,66,66
 BlessedEnchantChanceWeapon = 66
 BlessedEnchantChanceArmor = 66
@@ -310,6 +312,7 @@ AltKarmaPlayerCanTrade = True
 # Default: True
 AltKarmaPlayerCanUseWareHouse = True
 
+
 # ---------------------------------------------------------------------------
 # Fame
 # ---------------------------------------------------------------------------
@@ -333,6 +336,7 @@ CastleZoneFameTaskFrequency = 300
 # Default: 125
 CastleZoneFameAquirePoints = 125
 
+
 # ---------------------------------------------------------------------------
 # Crafting
 # ---------------------------------------------------------------------------
@@ -374,41 +378,41 @@ AltBlacksmithUseRecipes = True
 # Clan
 # ---------------------------------------------------------------------------
 # Number of days you have to wait before joining another clan.
-# Default: 1
-DaysBeforeJoinAClan = 1
+# Default: 5
+DaysBeforeJoinAClan = 5
 
 # Number of days you have to wait before creating a new clan.
-# Default: 1
-DaysBeforeCreateAClan = 1
+# Default: 10
+DaysBeforeCreateAClan = 10
 
 # Number of days it takes to dissolve a clan.
 # Default: 7
 DaysToPassToDissolveAClan = 7
 
 # Number of days before joining a new alliance when clan voluntarily leave an alliance.
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
 # Default: 1
 DaysBeforeJoinAllyWhenLeaved = 1
 
 # Number of days before joining a new alliance when clan was dismissed from an alliance.
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
 # Default: 1
 DaysBeforeJoinAllyWhenDismissed = 1
 
 # Number of days before accepting a new clan for alliance when clan was dismissed from an alliance.
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
 # Default: 1
 DaysBeforeAcceptNewClanWhenDismissed = 1
 
 # Number of days before creating a new alliance after dissolving an old alliance.
-# Default: 1
-DaysBeforeCreateNewAllyWhenDissolved = 1
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
+# Default: 10
+DaysBeforeCreateNewAllyWhenDissolved = 10
 
 # Maximum number of clans in alliance.
 # Default: 3
 AltMaxNumOfClansInAlly = 3
 
-# All new characters of the same account are newbies, not just the first one.
-# Default: True
-AltNewCharAlwaysIsNewbie = True
-
 # Allow clan members to withdraw from the clan warehouse.
 # Default: False
 AltMembersCanWithdrawFromClanWH = False
@@ -421,6 +425,7 @@ RemoveCastleCirclets = True
 # Default: 15
 AltClanMembersForWar = 15
 
+
 # ---------------------------------------------------------------------------
 # Party
 # ---------------------------------------------------------------------------
@@ -439,8 +444,9 @@ AltPartyRange2 = 1400
 # Random
 # ---------------------------------------------------------------------------
 # This is the amount of adena that a new character starts their character with.
-# Default: 0
-StartingAdena = 0
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
+# Default: 100
+StartingAdena = 100
 
 # This option, when set to True, will enable automatically picking up items.
 # If set False it will force the player to pickup dropped items from mobs. (This excludes herbs mentioned above.)
@@ -457,17 +463,18 @@ UnstuckInterval = 300
 PlayerSpawnProtection = 0
 
 # This will allow random re-spawning in towns if enabled based on a maximum random offset from the base re-spawn coordinates.
-# Default: True, 20
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
+# Default: True, 50
 RespawnRandomInTown = True
-RespawnRandomMaxOffset = 20
+RespawnRandomMaxOffset = 50
 
-# (THIS SETTING'S DESCRIPTION REQUIRES FURTHER INFORMATION)
-# Restore the player's instance on EnterWorld.
+# Restores the player to their previous instance (ie. an instanced area/dungeon) on EnterWorld.
 # Default: False
 RestorePlayerInstance = False
 
 # Set whether summon skills can be used to summon players inside an instance.
 # When enabled individual instances can have summoning disabled in instance xml's.
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
 # Default: ?
 AllowSummonToInstance = True
 
@@ -482,8 +489,8 @@ MaxPetitionsPerPlayer = 5
 MaxPetitionsPending = 25
 
 # If True, freights can be withdrawn from any place.
-# Default: True
-AltGameFreights = True
+# Default: False
+AltGameFreights = False
 
 # Adena cost for freighting items.
 # Note:
@@ -519,7 +526,8 @@ AltGameExponentSp = 0
 # In that case he will not receive any Exp/SP from party and is not counted for party bonus.
 # If you don't want to have a cutoff point for party members' XP distribution, set the first option to "none".
 # Available Options: auto, level, none
-# Default: auto, 3.0, 30
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
+# Default: auto
 PartyXpCutoffMethod = auto
 
 # This option takes effect when "percentage" method is chosen. Don't use high values for this!

+ 19 - 1
L2_GameServer/java/config/Feature.properties

@@ -21,11 +21,13 @@ SiegeHourList = 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
 
 # Teleport Function price
 # Price = 7 days
+CastleTeleportFunctionFeeRatio = 604800000
 CastleTeleportFunctionFeeLvl1 = 7000
 CastleTeleportFunctionFeeLvl2 = 14000
 
 # Support magic buff price
 # Price = 1 day
+CastleSupportFunctionFeeRatio = 86400000
 CastleSupportFeeLvl1 = 7000
 CastleSupportFeeLvl2 = 21000
 CastleSupportFeeLvl3 = 37000
@@ -33,6 +35,7 @@ CastleSupportFeeLvl4 = 52000
 
 # MP Regeneration price
 # Price = 1 day
+CastleMpRegenerationFunctionFeeRatio = 86400000
 CastleMpRegenerationFeeLvl1 = 2000
 CastleMpRegenerationFeeLvl2 = 6500
 CastleMpRegenerationFeeLvl3 = 13750
@@ -40,6 +43,7 @@ CastleMpRegenerationFeeLvl4 = 20000
 
 # Hp Regeneration price
 # Price = 1 day
+CastleHpRegenerationFunctionFeeRatio = 86400000
 CastleHpRegenerationFeeLvl1 = 1000
 CastleHpRegenerationFeeLvl2 = 1500
 CastleHpRegenerationFeeLvl3 = 2250
@@ -48,6 +52,7 @@ CastleHpRegenerationFeeLvl5 = 5166
 
 # Exp Regeneration price
 # Price = 1 day
+CastleExpRegenerationFunctionFeeRatio = 86400000
 CastleExpRegenerationFeeLvl1 = 9000
 CastleExpRegenerationFeeLvl2 = 15000
 CastleExpRegenerationFeeLvl3 = 21000
@@ -59,11 +64,13 @@ CastleExpRegenerationFeeLvl4 = 30000
 # ---------------------------------------------------------------------------
 # Teleport Function price
 # Price = 7 days
+ClanHallTeleportFunctionFeeRatio = 604800000
 ClanHallTeleportFunctionFeeLvl1 = 7000
 ClanHallTeleportFunctionFeeLvl2 = 14000
 
 # Support magic buff price
 # Price = 1 day
+ClanHallSupportFunctionFeeRatio = 86400000
 ClanHallSupportFeeLvl1 = 2500
 ClanHallSupportFeeLvl2 = 5000
 ClanHallSupportFeeLvl3 = 7000
@@ -75,6 +82,7 @@ ClanHallSupportFeeLvl8 = 364000
 
 # MP Regeneration price
 # Price = 1 day
+ClanHallMpRegenerationFunctionFeeRatio = 86400000
 ClanHallMpRegenerationFeeLvl1 = 2000
 ClanHallMpRegenerationFeeLvl2 = 3750
 ClanHallMpRegenerationFeeLvl3 = 6500
@@ -83,6 +91,7 @@ ClanHallMpRegenerationFeeLvl5 = 20000
 
 # Hp Regeneration price
 # Price = 1 day
+ClanHallHpRegenerationFunctionFeeRatio = 86400000
 ClanHallHpRegenerationFeeLvl1 = 700
 ClanHallHpRegenerationFeeLvl2 = 800
 ClanHallHpRegenerationFeeLvl3 = 1000
@@ -99,6 +108,7 @@ ClanHallHpRegenerationFeeLvl13 = 5166
 
 # Exp Regeneration price
 # Price = 1 day
+ClanHallExpRegenerationFunctionFeeRatio = 86400000
 ClanHallExpRegenerationFeeLvl1 = 3000
 ClanHallExpRegenerationFeeLvl2 = 6000
 ClanHallExpRegenerationFeeLvl3 = 9000
@@ -109,17 +119,20 @@ ClanHallExpRegenerationFeeLvl7 = 30000
 
 # Creation item function
 # Price = 1 day
+ClanHallItemCreationFunctionFeeRatio = 86400000
 ClanHallItemCreationFunctionFeeLvl1 = 30000
 ClanHallItemCreationFunctionFeeLvl2 = 70000
 ClanHallItemCreationFunctionFeeLvl3 = 140000
 
 # Curtains Decoration
 # Price = 7 days
+ClanHallCurtainFunctionFeeRatio = 604800000
 ClanHallCurtainFunctionFeeLvl1 = 2000
 ClanHallCurtainFunctionFeeLvl2 = 2500
 
 # Fixtures Decoration
 # Price = 3 days
+ClanHallFrontPlatformFunctionFeeRatio = 259200000
 ClanHallFrontPlatformFunctionFeeLvl1 = 1300
 ClanHallFrontPlatformFunctionFeeLvl2 = 4000
 
@@ -129,26 +142,31 @@ ClanHallFrontPlatformFunctionFeeLvl2 = 4000
 # ---------------------------------------------------------------------------
 # Teleport Function price
 # Price = 7 days
+FortressTeleportFunctionFeeRatio = 604800000
 FortressTeleportFunctionFeeLvl1 = 1000
 FortressTeleportFunctionFeeLvl2 = 10000
 
 # Support magic buff price
 # Price = 1 day
+FortressSupportFunctionFeeRatio = 86400000
 FortressSupportFeeLvl1 = 7000
 FortressSupportFeeLvl2 = 17000
 
 # MP Regeneration price
 # Price = 1 day
+FortressMpRegenerationFunctionFeeRatio = 86400000
 FortressMpRegenerationFeeLvl1 = 6500
 FortressMpRegenerationFeeLvl2 = 9300
 
 # Hp Regeneration price
 # Price = 1 day
+FortressHpRegenerationFunctionFeeRatio = 86400000
 FortressHpRegenerationFeeLvl1 = 2000
 FortressHpRegenerationFeeLvl2 = 3500
 
 # Exp Regeneration price
 # Price = 1 day
+FortressExpRegenerationFunctionFeeRatio = 86400000
 FortressExpRegenerationFeeLvl1 = 9000
 FortressExpRegenerationFeeLvl2 = 10000
 
@@ -208,7 +226,7 @@ AltFestivalSecondSwarm = 720000
 
 # At what point the chests spawn in.
 # Default: 15 minutes (set in miliseconds; 1000 = 1 second).
-AltFestivalChestspawn = 900000
+AltFestivalChestSpawn = 900000
 
 # This multipliers are used to change P.Def/M.Def of castle gates/walls while Seal of Strife is controlled by one of the sides.
 # Default: 1.1,0.8,1.1,0.8

+ 12 - 18
L2_GameServer/java/config/General.properties

@@ -14,8 +14,10 @@
 # Default: False
 EverybodyHasAdminRights = False
 
-# Show server/DP revision numbers when players enter the game
+# Show server/DP revision when players enter the game
+# Default: True
 DisplayServerRevision = True
+
 # Setting for serverList
 # Displays [] in front of server name on character selection
 # Default: False
@@ -80,8 +82,8 @@ GameGuardEnforce = True
 GameGuardProhibitAction = True
 
 #Logging settings. The following four settings, while enabled, will increase writing to your hard drive(s) considerably. Depending on the size of your server, the amount of players, and other factors, you may suffer a noticable performance hit.
-# Default: True
-LogChat = True
+# Default: False
+LogChat = False
 
 # Default: False
 LogItems = False
@@ -363,8 +365,8 @@ WearPrice = 10
 # ---------------------------------------------------------------------------
 # Misc Settings
 # ---------------------------------------------------------------------------
-# Default: False
-AllowRace = False
+# Default: True
+AllowRace = True
 
 # Default: True
 AllowWater = True
@@ -387,8 +389,8 @@ AllowCursedWeapons = True
 AllowNpcWalkers = True
 
 #Allow Pet manager's pets to walk around.
-# Default: False
-AllowPetWalkers = False
+# Default: True
+AllowPetWalkers = True
 
 # Show "data/html/servnews.htm" when a character enters world.
 # Default: False
@@ -437,18 +439,10 @@ AltOlyMin = 00
 # Default: 21600000
 AltOlyCPeriod = 21600000
 
-# Olympiad Battle Period, Default 6 minutes. (If set different, should be < AltOlyBWait)
+# Olympiad Battle Period, Default 6 minutes.
 # Default: 360000
 AltOlyBattle = 360000
 
-# Olympiad Battle Wait, Default 10 Minutes
-# Default: 600000
-AltOlyBWait = 600000
-
-# Olympiad Initial Wait Period, Default 5 minutes
-# Default: 300000
-AltOlyIWait = 300000
-
 # Olympiad Weekly Period, Default 1 week
 # Default: 604800000
 AltOlyWPeriod = 604800000
@@ -550,8 +544,8 @@ AltManorSavePeriodRate = 2
 # ---------------------------------------------------------------------------
 # Lottery
 # ---------------------------------------------------------------------------
-# Default: False
-AllowLottery = False
+# Default: True
+AllowLottery = True
 
 # Initial Lottery prize.
 # Default: 50000

+ 9 - 8
L2_GameServer/java/config/NPC.properties

@@ -8,6 +8,9 @@
 # ---------------------------------------------------------------------------
 
 
+# ---------------------------------------------------------------------------
+# General
+# ---------------------------------------------------------------------------
 # Default: False
 AnnounceMammonSpawn = False
 
@@ -17,15 +20,17 @@ AnnounceMammonSpawn = False
 AltMobAgroInPeaceZone = True
 
 # Defines whether NPCs are attackable by default
-# Retail: true
+# Retail: True
 AltAttackableNpcs = True
 
 # Allows non-GM players to view NPC stats via shift-click
+# Default: False
 AltGameViewNpc = False
 
 # Maximum distance mobs can randomly go from spawn point.
-# Default: 200
-MaxDriftRange = 200
+# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
+# Default: 300
+MaxDriftRange = 300
 
 # If True, the following deep blue mobs' drop penalties will be applied:
 #	- When player's level is 9 or greater than mob's level, drops got divided by 3.
@@ -33,10 +38,6 @@ MaxDriftRange = 200
 # Default: True
 UseDeepBlueDropRules = True
 
-
-# ---------------------------------------------------------------------------
-# Monster
-# ---------------------------------------------------------------------------
 # Default: False 
 ShowNpcLevel = False
 
@@ -45,7 +46,7 @@ ShowNpcLevel = False
 # Guards
 # ---------------------------------------------------------------------------
 # True - Allows guards to attack aggressive mobs within range.
-# Default: False.
+# Default: False
 GuardAttackAggroMob = False
 
 

+ 0 - 4
L2_GameServer/java/config/loginserver.properties

@@ -64,10 +64,6 @@ LoginTryBeforeBan = 10
 # Default: 600 (10 minutes)
 LoginBlockAfterBan = 600
 
-# IS THIS STILL REQUIRED FOR TELNET ACCESS OR IS THIS A DEPRECIATED VALUE?
-# Default: 100
-GMMinLevel = 100
-
 # If set to True any GameServer can register on your login's free slots
 # Default: False
 AcceptNewGameServer = False

+ 1 - 1
L2_GameServer/java/config/olympiad.properties

@@ -17,7 +17,7 @@ Period = 0
 OlympiadEnd = 0
 
 # Default: 0
-ValdationEnd = 0
+ValidationEnd = 0
 
 # Default: 0
 NextWeeklyChange = 0

+ 2144 - 2419
L2_GameServer/java/net/sf/l2j/Config.java

@@ -30,2427 +30,2152 @@ import javolution.util.FastList;
 import javolution.util.FastMap;
 import net.sf.l2j.gameserver.util.StringUtil;
 
-/**
- * This class contains global server configuration.<br>
- * It has static final fields initialized from configuration files.<br>
- * It's initialized at the very begin of startup, and later JIT will optimize
- * away debug/unused code.
- *
- * @author mkizub
- */
 public final class Config
 {
 	protected static final Logger _log = Logger.getLogger(Config.class.getName());
-	
-	/******************************************************************************************************************************************************/
-    /** L2J Property File Definitions Start Here**/
-	/******************************************************************************************************************************************************/
-	
-    /** Properties file for Character Configurations */
-    public static final String  CHARACTER_CONFIG_FILE							= "./config/Character.properties";
-    /** Properties file for Dynamic Extensions*/
-    public static final String  EXTENSIONS_CONFIG_FILE							= "./config/extensions.properties";
-    /** Properties file for Feature Extensions*/
-    public static final String  FEATURE_CONFIG_FILE								= "./config/Feature.properties";
-    /** Properties file for Fortress Siege */
-    public static final String FORTSIEGE_CONFIGURATION_FILE						= "./config/fortsiege.properties"; 
-    /** Properties file for General Configurations */
-    public static final String  GENERAL_CONFIG_FILE								= "./config/General.properties";
-    /** Text file containing hexadecimal value of server ID */
-    public static final String  HEXID_FILE										= "./config/hexid.txt";
-    /** Properties file for the ID factory */
-    public static final String  ID_CONFIG_FILE									= "./config/idfactory.properties";
-    /** Properties file for l2j server version configurations */
-    public static final String  SERVER_VERSION_FILE								= "./config/l2j-version.properties";
-    /** Properties file for l2j datapack version configurations */
-    public static final String  DATAPACK_VERSION_FILE							= "./config/l2jdp-version.properties";
-    /** Properties file for the L2J Mod Confirugrations */
-    public static final String  L2JMOD_CONFIG_FILE								= "./config/l2jmods.properties";
-    /** Properties file for login server configurations */
-    public static final String  LOGIN_CONFIGURATION_FILE						= "./config/loginserver.properties";
-    /** Properties file for NPC Configurations */
-    public static final String  NPC_CONFIG_FILE									= "./config/NPC.properties";
-    /** Properties file for PVP Configurations */
-    public static final String  PVP_CONFIG_FILE									= "./config/pvp.properties";
-    /** Properties file for rates Configurations */
-    public static final String  RATES_CONFIG_FILE								= "./config/rates.properties";
-    /** Properties file for game server (connection and ingame) configurations */
-    public static final String  CONFIGURATION_FILE								= "./config/server.properties";
-    /** Properties file for siege Configurations */
-    public static final String  SIEGE_CONFIGURATION_FILE						= "./config/siege.properties";
-    /** Properties file for telnet configuration */
-    public static final String  TELNET_FILE										= "./config/telnet.properties";
-
-    /******************************************************************************************************************************************************/
-    /** L2J Property File Definitions End Here**/
-	/******************************************************************************************************************************************************/
-	
-	/******************************************************************************************************************************************************/
-    /** L2J Variable Definitions Start Here**/
-	/******************************************************************************************************************************************************/
-	
-	/** ************************************************** **/
-	/** Character Settings -Begin                          **/
-	/** ************************************************** **/
-	
-    public static int		MASTERACCESS_LEVEL;
-    public static int		MASTERACCESS_NAME_COLOR;
-    public static int		MASTERACCESS_TITLE_COLOR;
-	public static boolean	ALT_GAME_DELEVEL;
-    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 Map<Integer, Integer> SKILL_DURATION_LIST;
-    public static boolean   ENABLE_MODIFY_SKILL_REUSE;
-    public static Map<Integer, Integer> SKILL_REUSE_LIST;
-    public static boolean	AUTO_LEARN_SKILLS;
-    public static boolean	AUTO_LOOT_HERBS;
-    public static byte		BUFFS_MAX_AMOUNT;
-    public static byte		DANCES_MAX_AMOUNT;
-    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	ALT_GAME_SHIELD_BLOCKS;
-    public static int		ALT_PERFECT_SHLD_BLOCK;
-    public static boolean	ALLOW_CLASS_MASTERS;
-    public static boolean	LIFE_CRYSTAL_NEEDED;
-    public static boolean	SP_BOOK_NEEDED;
-    public static boolean	ES_SP_BOOK_NEEDED;
-    public static boolean	ALT_GAME_SKILL_LEARN;
-    public static boolean	ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
-    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 byte		MAX_SUBCLASS;
-    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		WAREHOUSE_SLOTS_DWARF;
-    public static int		WAREHOUSE_SLOTS_NO_DWARF;
-    public static int		WAREHOUSE_SLOTS_CLAN;
-    public static int		FREIGHT_SLOTS;
-    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	IS_CRAFTING_ENABLED;
-    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_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE;
-    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 int		STARTING_ADENA;
-    public static boolean	AUTO_LOOT;
-    public static int		UNSTUCK_INTERVAL;
-    public static int		PLAYER_SPAWN_PROTECTION;
-    public static boolean	RESPAWN_RANDOM_ENABLED;
-    public static int		RESPAWN_RANDOM_MAX_OFFSET;
-    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_FREIGHTS;
-    public static int		ALT_GAME_FREIGHT_PRICE;
-    public static boolean	ALT_GAME_FREE_TELEPORT;
-    public static boolean	ALT_RECOMMEND;
-    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;
-	
-	/** ************************************************** **/
-	/** Character Settings -End                            **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** ClanHall Settings -Begin                           **/
-	/** ************************************************** **/
-    
-    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;
-    
-    /** ************************************************** **/
-	/** ClanHall Settings -End                             **/
-	/** ************************************************** **/
-
-    /** ************************************************** **/
-	/** Castle Settings -Begin                             **/
-	/** ************************************************** **/
-
-    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;
-    
-    /** ************************************************** **/
-	/** Castle Settings -End                               **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** Fortress Settings -Begin                           **/
-	/** ************************************************** **/
-
-    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;
-    
-    /** ************************************************** **/
-	/** Fortress Settings -End                             **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** Feature Settings -Begin                            **/
-	/** ************************************************** **/
-    
-    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 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;
-    
-    /** ************************************************** **/
-	/** Feature Settings -End                              **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** General Settings -Begin                            **/
-	/** ************************************************** **/
-	
-	public static boolean	EVERYBODY_HAS_ADMIN_RIGHTS;
-	public static boolean 	DISPLAY_SERVER_VERSION;
-	public static boolean 	SERVER_LIST_BRACKET;
-    public static boolean	SERVER_LIST_CLOCK;
-    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	BYPASS_VALIDATION;
-    public static boolean	GAMEGUARD_ENFORCE;
-    public static boolean	GAMEGUARD_PROHIBITACTION;
-    public static boolean	LOG_CHAT;
-    public static boolean	LOG_ITEMS;
-    public static boolean	GMAUDIT;
-    public static boolean	LOG_GAME_DAMAGE;
-    public static boolean	DEBUG;
-    public static boolean   PACKET_HANDLER_DEBUG;
-    public static boolean	ASSERT;
-    public static boolean	DEVELOPER;
-    public static boolean	ACCEPT_GEOEDITOR_CONN;
-    public static boolean	TEST_SERVER;
-    public static boolean	ALT_DEV_NO_QUESTS;
-    public static boolean	ALT_DEV_NO_SPAWNS;
-    public static boolean	SERVER_LIST_TESTSERVER;
-    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		PACKET_LIFETIME;
-    public static boolean	DEADLOCK_DETECTOR;
-    public static int		DEADLOCK_CHECK_INTERVAL;
-    public static boolean	RESTART_ON_DEADLOCK;
-    public static int		FLOODPROTECTOR_INITIALSIZE;
-    public static boolean	ALLOW_DISCARDITEM;
-    public static int		AUTODESTROY_ITEM_AFTER;
-    public static int		HERB_AUTO_DESTROY_TIME;
-    public static String	PROTECTED_ITEMS;
-    public static List<Integer> LIST_PROTECTED_ITEMS = new FastList<Integer>();
-    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 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	GRIDS_ALWAYS_ON;
-    public static int		GRID_NEIGHBOR_TURNON_TIME;
-    public static int		GRID_NEIGHBOR_TURNOFF_TIME;
-    public static int		GEODATA;
-    public static boolean	GEODATA_CELLFINDING;
-    public static boolean	FORCE_GEODATA;
-    public static boolean 	MOVE_BASED_KNOWNLIST;
-    public static long		KNOWNLIST_UPDATE_INTERVAL;
-    public static int		ZONE_TOWN;
-    public static boolean	ACTIVATE_POSITION_RECORDER;
-    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_FREIGHT;
-    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 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 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_CLASSED;
-    public static int		ALT_OLY_NONCLASSED;
-    public static int		ALT_OLY_BATTLE_REWARD_ITEM;
-    public static int		ALT_OLY_CLASSED_RITEM_C;
-    public static int		ALT_OLY_NONCLASSED_RITEM_C;
-    public static int		ALT_OLY_COMP_RITEM;
-    public static int		ALT_OLY_GP_PER_POINT;
-    public static int		ALT_OLY_MIN_POINT_FOR_EXCH;
-    public static int		ALT_OLY_HERO_POINTS;
-    public static boolean	ALT_OLY_LOG_FIGHTS;
-    public static boolean	ALT_OLY_SHOW_MONTHLY_WINNERS;
-    public static boolean	ALT_OLY_ANNOUNCE_GAMES;
-    public static List<Integer> LIST_OLY_RESTRICTED_ITEMS = new FastList<Integer>();
-    public static int		ALT_OLY_ENCHANT_LIMIT;
-    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 int		ALT_LOTTERY_PRIZE;
-    public static int		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 int		ALT_LOTTERY_2_AND_1_NUMBER_PRIZE;
-	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	CUSTOM_SPAWNLIST_TABLE;
-    public static boolean	SAVE_GMSPAWN_ON_CUSTOM;
-    public static boolean	DELETE_GMSPAWN_ON_CUSTOM;
-    public static boolean	CUSTOM_NPC_TABLE;
-    public static boolean	CUSTOM_ITEM_TABLES;
-    public static boolean	CUSTOM_ARMORSETS_TABLE;
-    public static boolean	CUSTOM_TELEPORT_TABLE;
-    public static boolean	CUSTOM_DROPLIST_TABLE;
-    public static boolean	CUSTOM_MERCHANT_TABLES;
-	
-	/** ************************************************** **/
-	/** General Settings -End                              **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** L2JMods Settings -Begin                            **/
-	/** ************************************************** **/
-    
-    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	TVT_EVENT_ENABLED;
-    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[3];
-    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 = new FastList<int[]>();
-    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 = new ArrayList<Integer>();
-    public static List<Integer>	TVT_DOORS_IDS_TO_CLOSE = new ArrayList<Integer>();
-    public static boolean	TVT_REWARD_TEAM_TIE;
-    public static byte		TVT_EVENT_MIN_LVL;
-    public static byte		TVT_EVENT_MAX_LVL;
-    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	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	L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT;
-    public static boolean 	L2JMOD_ENABLE_MANA_POTIONS_SUPPORT;
-    
-    /** ************************************************** **/
-	/** L2JMods Settings -End                              **/
-	/** ************************************************** **/
-    
-	/** ************************************************** **/
-	/** NPC Settings -Begin                                **/
-	/** ************************************************** **/
-	
-	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	SHOW_NPC_LVL;
-    public static boolean	GUARD_ATTACK_AGGRO_MOB;
-    public static boolean	ALLOW_WYVERN_UPGRADER;
-    public static String	PET_RENT_NPC;
-    public static List<Integer> LIST_PET_RENT_NPC   = new FastList<Integer>();
-    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_MINION_RESPAWN_TIMER;
-    public static float		RAID_MIN_RESPAWN_MULTIPLIER;
-    public static float		RAID_MAX_RESPAWN_MULTIPLIER;
-    public static int		INVENTORY_MAXIMUM_PET;
-	
-	/** ************************************************** **/
-	/** NPC Settings -End                                  **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** PvP Settings -Begin                                **/
-	/** ************************************************** **/
-    
-    /** Minimum karma gain/loss */
-    public static int		KARMA_MIN_KARMA;
-    /** Maximum karma gain/loss */
-    public static int		KARMA_MAX_KARMA;
-    /** Number to divide the xp received by, to calculate karma lost on xp gain/lost */
-    public static int		KARMA_XP_DIVIDER;
-    /** The Minimum Karma lost if 0 karma is to be removed */
-    public static int		KARMA_LOST_BASE;
-    /** Can a GM drop item ? */
-    public static boolean	KARMA_DROP_GM;
-    /** Should award a pvp point for killing a player with karma ? */
-    public static boolean	KARMA_AWARD_PK_KILL;
-    /** Minimum PK required to drop */
-    public static int		KARMA_PK_LIMIT;
-    /** List of pet items that cannot be dropped (separated by ",") when PVP */
-    public static String	KARMA_NONDROPPABLE_PET_ITEMS;
-    /** List of items that cannot be dropped (separated by ",") when PVP*/
-    public static String	KARMA_NONDROPPABLE_ITEMS;
-    /** List of pet items that cannot be dropped when PVP */
-    public static List<Integer> KARMA_LIST_NONDROPPABLE_PET_ITEMS   = new FastList<Integer>();
-    /** List of items that cannot be dropped when PVP */
-    public static List<Integer> KARMA_LIST_NONDROPPABLE_ITEMS       = new FastList<Integer>();
-    
-    /** ************************************************** **/
-	/** PvP Settings -End                                  **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** Rate Settings -Begin                               **/
-	/** ************************************************** **/
-    
-    /** Rate for eXperience Point rewards */
-    public static float		RATE_XP;
-    /** Rate for Skill Point rewards */
-    public static float		RATE_SP;
-    /** Rate for party eXperience Point rewards */
-    public static float		RATE_PARTY_XP;
-    /** Rate for party Skill Point rewards */
-    public static float		RATE_PARTY_SP;
-    /** Rate for Quest rewards (XP and SP) */
-    public static float		RATE_QUESTS_REWARD;
-    /** Rate for drop adena */
-    public static float		RATE_DROP_ADENA;
-    /** Rate for cost of consumable */
-    public static float		RATE_CONSUMABLE_COST;
-    /** Rate for fish extrakting */
-    public static float		RATE_EXTR_FISH;
-    /** Rate for dropped items */
-    public static float		RATE_DROP_ITEMS;
-    /** Rate for dropped items by Raid Bosses */
-    public static float		RATE_DROP_ITEMS_BY_RAID;
-    /** Rate for spoiled items */
-    public static float		RATE_DROP_SPOIL;
-    /** Rate for manor items */
-    public static int		RATE_DROP_MANOR;
-    /** Rate for quest items */
-    public static float		RATE_DROP_QUEST;
-    /** Rate for karma and experience lose */
-    public static float		RATE_KARMA_EXP_LOST;
-    /** Rate siege guards prices */
-    public static float		RATE_SIEGE_GUARDS_PRICE;
-    /** Rate Common herbs */
-    public static float		RATE_DROP_COMMON_HERBS;
-    /** Rate MP/HP herbs */
-    public static float		RATE_DROP_MP_HP_HERBS;
-    /** Rate Common herbs */
-    public static float		RATE_DROP_GREATER_HERBS;
-    /** Rate Common herbs */
-    public static float		RATE_DROP_SUPERIOR_HERBS;
-    /** Rate Common herbs */
-    public static float		RATE_DROP_SPECIAL_HERBS;
-    /** Limit for player drop */
-    public static int		PLAYER_DROP_LIMIT;
-    /** Rate for drop */
-    public static int		PLAYER_RATE_DROP;
-    /** Rate for player's item drop */
-    public static int		PLAYER_RATE_DROP_ITEM;
-    /** Rate for player's equipment drop */
-    public static int		PLAYER_RATE_DROP_EQUIP;
-    /** Rate for player's equipment and weapon drop */
-    public static int		PLAYER_RATE_DROP_EQUIP_WEAPON;
-    /** Rate for experience rewards of the pet */
-    public static float		PET_XP_RATE;
-    /** Rate for food consumption of the pet */
-    public static int		PET_FOOD_RATE;
-    /** Rate for experience rewards of the Sin Eater */
-    public static float		SINEATER_XP_RATE;
-    /** Karma drop limit */
-    public static int		KARMA_DROP_LIMIT;
-    /** Karma drop rate */
-    public static int		KARMA_RATE_DROP;
-    /** Karma drop rate for item */
-    public static int		KARMA_RATE_DROP_ITEM;
-    /** Karma drop rate for equipment */
-    public static int		KARMA_RATE_DROP_EQUIP;
-    /** Karma drop rate for equipment and weapon */
-    public static int		KARMA_RATE_DROP_EQUIP_WEAPON;
-    
-    /** ************************************************** **/
-	/** Rate Settings -End                                 **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** SevinSigns Settings -Begin                         **/
-	/** ************************************************** **/
-    
-    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;    
-    
-    /** ************************************************** **/
-	/** SevinSigns Settings -End                           **/
-	/** ************************************************** **/
-    
-    /** ************************************************** **/
-	/** Server Settings -Begin                             **/
-	/** ************************************************** **/
-    
-    /** Game Server ports */
-    public static int		PORT_GAME;
-    /** Login Server port */
-    public static int		PORT_LOGIN;
-    /** Login Server bind ip */
-    public static String	LOGIN_BIND_ADDRESS;
-    /** Number of login tries before IP ban gets activated, default 10*/
-    public static int		LOGIN_TRY_BEFORE_BAN;
-    /** Number of seconds the IP ban will last, default 10 minutes */
-    public static int		LOGIN_BLOCK_AFTER_BAN;
-    /** Hostname of the Game Server */
-    public static String	GAMESERVER_HOSTNAME;
-    /** Driver to access to database */
-    public static String	DATABASE_DRIVER;
-    /** Path to access to database */
-    public static String	DATABASE_URL;
-    /** Database login */
-    public static String	DATABASE_LOGIN;
-    /** Database password */
-    public static String	DATABASE_PASSWORD;
-    /** Maximum number of connections to the database */
-    public static int		DATABASE_MAX_CONNECTIONS;
-    /** Maximum number of players allowed to play simultaneously on server */
-    public static int		MAXIMUM_ONLINE_USERS;
-    /** Character name template */
-    public static String	CNAME_TEMPLATE;
-    /** Pet name template */
-    public static String	PET_NAME_TEMPLATE;
-    /** Maximum number of characters per account */
-    public static int		MAX_CHARACTERS_NUMBER_PER_ACCOUNT;
-    /** Datapack root directory */
-    public static File		DATAPACK_ROOT;
-    /** Accept alternate ID for server ? */
-    public static boolean	ACCEPT_ALTERNATE_ID;
-    /** ID for request to the server */
-    public static int		REQUEST_ID;
-    public static boolean	RESERVE_HOST_ON_LOGIN = false;
-    /** Minimal protocol revision */
-    public static int		MIN_PROTOCOL_REVISION;
-    /** Maximal protocol revision */
-    public static int		MAX_PROTOCOL_REVISION;
-    /** Log LoginController.loginValid(...) */
-    public static boolean 	LOG_LOGIN_CONTROLLER;
-	
-    /** ************************************************** **/
-	/** Server Settings -End                           **/
-	/** ************************************************** **/
-
-    /******************************************************************************************************************************************************/
-    /** L2J Variable Definitions End Here**/
-	/******************************************************************************************************************************************************/
-    public static int MAX_ITEM_IN_PACKET;
-
-    public static boolean CHECK_KNOWN;
-
-    /** Game Server login port */
-    public static int        GAME_SERVER_LOGIN_PORT;
-    /** Game Server login Host */
-    public static String     GAME_SERVER_LOGIN_HOST;
-    /** Internal Hostname */
-    public static String     INTERNAL_HOSTNAME;
-    /** External Hostname */
-    public static String     EXTERNAL_HOSTNAME;
-    public static int        PATH_NODE_RADIUS;
-    public static int        NEW_NODE_ID;
-    public static int        SELECTED_NODE_ID;
-    public static int        LINKED_NODE_ID;
-    public static String     NEW_NODE_TYPE;
-
-    /** Time between 2 updates of IP */
-    public static int        IP_UPDATE_TIME;
-
-    // Server version
-    /** Server version */
-    public static String     SERVER_VERSION;
-    /** Date of server build */
-    public static String     SERVER_BUILD_DATE;
-
-    // Datapack version
-    /** Datapack version */
-    public static String     DATAPACK_VERSION;    
-
-    /** List of items that cannot be dropped (seperated by ",") */
-    public static String        NONDROPPABLE_ITEMS;
-    /** List of items that cannot be dropped */
-    public static List<Integer> LIST_NONDROPPABLE_ITEMS       = new FastList<Integer>();
-
-    /** Duration (in ms) while a player stay in PVP mode after hitting an innocent */
-    public static int PVP_NORMAL_TIME;
-    /** Duration (in ms) while a player stay in PVP mode after hitting a purple player */
-    public static int PVP_PVP_TIME;
-
-
-    // Packet information
-    /** Count the amount of packets per minute ? */
-    public static boolean  COUNT_PACKETS           = false;
-    /** Dump packet count ? */
-    public static boolean  DUMP_PACKET_COUNTS      = false;
-    /** Time interval between 2 dumps */
-    public static int      DUMP_INTERVAL_SECONDS   = 60;
-
-    /** Enumeration for type of ID Factory */
-    public static enum IdFactoryType
-    {
-        Compaction,
-        BitSet,
-        Stack
-    }
-
-    /** ID Factory type */
-    public static IdFactoryType IDFACTORY_TYPE;
-    /** Check for bad ID ? */
-    public static boolean BAD_ID_CHECKING;
-
-    /** Enumeration for type of maps object */
-    public static enum ObjectMapType
-    {
-        L2ObjectHashMap,
-        WorldObjectMap
-    }
-
-    /** Enumeration for type of set object */
-    public static enum ObjectSetType
-    {
-        L2ObjectHashSet,
-        WorldObjectSet
-    }
-
-    /** Type of map object */
-    public static ObjectMapType   MAP_TYPE;
-    /** Type of set object */
-    public static ObjectSetType   SET_TYPE;
-
-    /** Chance that an item will successfully be enchanted */
-    public static int ENCHANT_CHANCE_WEAPON;
-    public static int ENCHANT_CHANCE_ARMOR;
-    public static int ENCHANT_CHANCE_JEWELRY;
-    
-    public static int BLESSED_ENCHANT_CHANCE_WEAPON;
-    public static int BLESSED_ENCHANT_CHANCE_ARMOR;
-    public static int BLESSED_ENCHANT_CHANCE_JEWELRY;
-
-    /** Maximum level of enchantment */
-    public static int ENCHANT_MAX_WEAPON;
-    public static int ENCHANT_MAX_ARMOR;
-    public static int ENCHANT_MAX_JEWELRY;
-    /** maximum level of safe enchantment for normal items*/
-    public static int ENCHANT_SAFE_MAX;
-    /** maximum level of safe enchantment for full body armor*/
-    public static int ENCHANT_SAFE_MAX_FULL;
-
-    /** Chance to get a skill while using a NoGrade Life Stone*/
-    public static int AUGMENTATION_NG_SKILL_CHANCE;
-
-    /** Chance to get a Glow effect while using a NoGrade Life Stone(only if you get a skill)*/
-    public static int AUGMENTATION_NG_GLOW_CHANCE;
-
-    /** Chance to get a skill while using a MidGrade Life Stone*/
-    public static int AUGMENTATION_MID_SKILL_CHANCE;
-
-    /** Chance to get a Glow effect while using a MidGrade Life Stone(only if you get a skill)*/
-    public static int AUGMENTATION_MID_GLOW_CHANCE;
-
-    /** Chance to get a skill while using a HighGrade Life Stone*/
-    public static int AUGMENTATION_HIGH_SKILL_CHANCE;
-
-    /** Chance to get a Glow effect while using a HighGrade Life Stone*/
-    public static int AUGMENTATION_HIGH_GLOW_CHANCE;
-
-    /** Chance to get a skill while using a TopGrade Life Stone*/
-    public static int AUGMENTATION_TOP_SKILL_CHANCE;
-
-    /** Chance to get a Glow effect while using a TopGrade Life Stone*/
-    public static int AUGMENTATION_TOP_GLOW_CHANCE;
-
-    /** Chance to get a BaseStatModifier in the augmentation process*/
-    public static int AUGMENTATION_BASESTAT_CHANCE;
-
-    // Character multipliers
-    /** Multiplier for character HP regeneration */
-    public static double  HP_REGEN_MULTIPLIER;
-    /** Mutilplier for character MP regeneration */
-    public static double  MP_REGEN_MULTIPLIER;
-    /** Multiplier for character CP regeneration */
-    public static double  CP_REGEN_MULTIPLIER;
-
-    /** Is telnet enabled ? */
-    public static boolean IS_TELNET_ENABLED;
-
-    /** Show licence or not just after login (if false, will directly go to the Server List */
-    public static boolean SHOW_LICENCE;
-    /** Force GameGuard authorization in loginserver */
-    public static boolean FORCE_GGAUTH;
-
-    /** Accept new game server ? */
-    public static boolean ACCEPT_NEW_GAMESERVER;
-
-    /** Server ID used with the HexID */
-    public static int SERVER_ID;
-    /** Hexadecimal ID of the game server */
-    public static byte[] HEX_ID;
-
-    public static int MINIMUM_UPDATE_DISTANCE;
-    public static int KNOWNLIST_FORGET_DELAY;
-    public static int MINIMUN_UPDATE_TIME;    
-
-    /** Allow auto-create account ? */
-    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;  
-
-    /**
-     * This class initializes all global variables for configuration.<br>
-     * If key doesn't appear in properties file, a default value is setting on by this class.
-     * @see CONFIGURATION_FILE (propertie file) for configuring your server.
-     */
-    public static void load()
-    {
-        if(Server.serverMode == Server.MODE_GAMESERVER)
-        {
-            _log.info("loading gameserver config");
-            InputStream is = null;
-            try
-            {
-	            try {
-	                Properties serverSettings    = new Properties();
-	                is                           = new FileInputStream(new File(CONFIGURATION_FILE));
-	                serverSettings.load(is);
-	                
-	                GAMESERVER_HOSTNAME     = serverSettings.getProperty("GameserverHostname");
-	                PORT_GAME               = Integer.parseInt(serverSettings.getProperty("GameserverPort", "7777"));
-	
-	                EXTERNAL_HOSTNAME       = serverSettings.getProperty("ExternalHostname", "*");
-	                INTERNAL_HOSTNAME       = serverSettings.getProperty("InternalHostname", "*");
-	
-	                GAME_SERVER_LOGIN_PORT  = Integer.parseInt(serverSettings.getProperty("LoginPort","9014"));
-	                GAME_SERVER_LOGIN_HOST  = serverSettings.getProperty("LoginHost","127.0.0.1");
-	
-	                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/l2jdb");
-	                DATABASE_LOGIN              = serverSettings.getProperty("Login", "root");
-	                DATABASE_PASSWORD           = serverSettings.getProperty("Password", "");
-	                DATABASE_MAX_CONNECTIONS    = Integer.parseInt(serverSettings.getProperty("MaximumDbConnections", "10"));
-	
-	                DATAPACK_ROOT           = new File(serverSettings.getProperty("DatapackRoot", ".")).getCanonicalFile();
-	
-	                CNAME_TEMPLATE          = serverSettings.getProperty("CnameTemplate", ".*");
-	                PET_NAME_TEMPLATE       = serverSettings.getProperty("PetNameTemplate", ".*");
-	
-	                MAX_CHARACTERS_NUMBER_PER_ACCOUNT = Integer.parseInt(serverSettings.getProperty("CharMaxNumber", "0"));
-	                MAXIMUM_ONLINE_USERS        = Integer.parseInt(serverSettings.getProperty("MaximumOnlineUsers", "100"));
-	
-	                MIN_PROTOCOL_REVISION   = Integer.parseInt(serverSettings.getProperty("MinProtocolRevision", "660"));
-	                MAX_PROTOCOL_REVISION   = Integer.parseInt(serverSettings.getProperty("MaxProtocolRevision", "665"));
-	
-	                if (MIN_PROTOCOL_REVISION > MAX_PROTOCOL_REVISION)
-	                {
-	                    throw new Error("MinProtocolRevision is bigger than MaxProtocolRevision in server configuration file.");
-	                }
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+CONFIGURATION_FILE+" File.");
-	            }
-	            
-	            // Feature Config File
-	            try
-	            {
-	                Properties Feature    		= new Properties();
-	                is                          = new FileInputStream(new File(FEATURE_CONFIG_FILE));
-	                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"));
-	                
-	                
-	                
-	                //
-	                CL_SET_SIEGE_TIME_LIST = new FastList<String>();
-	                SIEGE_HOUR_LIST_MORNING = new FastList<Integer>();
-	        		SIEGE_HOUR_LIST_AFTERNOON = new FastList<Integer>();
-	        		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.valueOf(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("CastleHpRegenerationFeeLvl14", "3270"));
-	                CS_HPREG5_FEE                                      = Integer.parseInt(Feature.getProperty("CastleHpRegenerationFeeLvl15", "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", "15000"));
-	                CS_EXPREG3_FEE                                      = Integer.parseInt(Feature.getProperty("CastleExpRegenerationFeeLvl3", "21000"));
-	                CS_EXPREG4_FEE                                      = Integer.parseInt(Feature.getProperty("CastleExpRegenerationFeeLvl4", "30000"));
-	                //
-	                
-	                //
-	                FS_TELE_FEE_RATIO                                   = Long.parseLong(Feature.getProperty("FortressTeleportFunctionFeeRatio", "604800000"));
-	                FS_TELE1_FEE                                        = Integer.parseInt(Feature.getProperty("FortressTeleportFunctionFeeLvl1", "1000"));
-	                FS_TELE2_FEE                                        = Integer.parseInt(Feature.getProperty("FortressTeleportFunctionFeeLvl2", "10000"));
-	                FS_SUPPORT_FEE_RATIO                                = Long.parseLong(Feature.getProperty("FortressSupportFunctionFeeRatio", "86400000"));
-	                FS_SUPPORT1_FEE                                     = Integer.parseInt(Feature.getProperty("FortressSupportFeeLvl1", "7000"));
-	                FS_SUPPORT2_FEE                                     = Integer.parseInt(Feature.getProperty("FortressSupportFeeLvl2", "17000"));
-	                FS_MPREG_FEE_RATIO                                  = Long.parseLong(Feature.getProperty("FortressMpRegenerationFunctionFeeRatio", "86400000"));
-	                FS_MPREG1_FEE                                       = Integer.parseInt(Feature.getProperty("FortressMpRegenerationFeeLvl1", "6500"));
-	                FS_MPREG2_FEE                                       = Integer.parseInt(Feature.getProperty("FortressMpRegenerationFeeLvl2", "9300"));
-	                FS_HPREG_FEE_RATIO                                  = Long.parseLong(Feature.getProperty("FortressHpRegenerationFunctionFeeRatio", "86400000"));
-	                FS_HPREG1_FEE                                       = Integer.parseInt(Feature.getProperty("FortressHpRegenerationFeeLvl1", "2000"));
-	                FS_HPREG2_FEE                                       = Integer.parseInt(Feature.getProperty("FortressHpRegenerationFeeLvl2", "3500"));
-	                FS_EXPREG_FEE_RATIO                                 = Long.parseLong(Feature.getProperty("FortressExpRegenerationFunctionFeeRatio", "86400000"));
-	                FS_EXPREG1_FEE                                      = Integer.parseInt(Feature.getProperty("FortressExpRegenerationFeeLvl1", "9000"));
-	                FS_EXPREG2_FEE                                      = Integer.parseInt(Feature.getProperty("FortressExpRegenerationFeeLvl2", "10000"));
-	                //
-	                	                
-					ALT_GAME_CASTLE_DAWN    					= Boolean.parseBoolean(Feature.getProperty("AltCastleForDawn", "True"));
-					ALT_GAME_CASTLE_DUSK    					= Boolean.parseBoolean(Feature.getProperty("AltCastleForDusk", "True"));
-	                ALT_GAME_REQUIRE_CLAN_CASTLE    					= Boolean.parseBoolean(Feature.getProperty("AltRequireClanCastle", "False"));
-	                ALT_FESTIVAL_MIN_PLAYER         					= Integer.parseInt(Feature.getProperty("AltFestivalMinPlayer", "5"));
-	                ALT_MAXIMUM_PLAYER_CONTRIB      					= Integer.parseInt(Feature.getProperty("AltMaxPlayerContrib", "1000000"));
-	                ALT_FESTIVAL_MANAGER_START      					= Long.parseLong(Feature.getProperty("AltFestivalManagerStart", "120000"));
-	                ALT_FESTIVAL_LENGTH             					= Long.parseLong(Feature.getProperty("AltFestivalLength", "1080000"));
-	                ALT_FESTIVAL_CYCLE_LENGTH       					= Long.parseLong(Feature.getProperty("AltFestivalCycleLength", "2280000"));
-	                ALT_FESTIVAL_FIRST_SPAWN        					= Long.parseLong(Feature.getProperty("AltFestivalFirstSpawn", "120000"));
-	                ALT_FESTIVAL_FIRST_SWARM       						= Long.parseLong(Feature.getProperty("AltFestivalFirstSwarm", "300000"));                ALT_FESTIVAL_SECOND_SPAWN       = Long.parseLong(Feature.getProperty("AltFestivalSecondSpawn", "540000"));
-	                ALT_FESTIVAL_SECOND_SWARM       					= Long.parseLong(Feature.getProperty("AltFestivalSecondSwarm", "720000"));
-	                ALT_FESTIVAL_CHEST_SPAWN       						= Long.parseLong(Feature.getProperty("AltFestivalChestSpawn", "900000"));
-	                ALT_SIEGE_DAWN_GATES_PDEF_MULT						= Double.parseDouble(Feature.getProperty("AltDawnGatesPdefMult", "1.1"));
-	                ALT_SIEGE_DUSK_GATES_PDEF_MULT						= Double.parseDouble(Feature.getProperty("AltDuskGatesPdefMult", "0.8"));
-	                ALT_SIEGE_DAWN_GATES_MDEF_MULT						= Double.parseDouble(Feature.getProperty("AltDawnGatesMdefMult", "1.1"));
-	                ALT_SIEGE_DUSK_GATES_MDEF_MULT						= Double.parseDouble(Feature.getProperty("AltDuskGatesMdefMult", "0.8"));
-	                
-	                TAKE_FORT_POINTS									= Integer.parseInt(Feature.getProperty("TakeFortPoints", "200"));
-	                LOOSE_FORT_POINTS									= Integer.parseInt(Feature.getProperty("LooseFortPoints", "400"));
-	                TAKE_CASTLE_POINTS									= Integer.parseInt(Feature.getProperty("TakeCastlePoints", "1500"));
-	                LOOSE_CASTLE_POINTS									= Integer.parseInt(Feature.getProperty("LooseCastlePoints", "3000"));
-	                CASTLE_DEFENDED_POINTS								= Integer.parseInt(Feature.getProperty("CastleDefendedPoints", "750"));
-	                FESTIVAL_WIN_POINTS									= Integer.parseInt(Feature.getProperty("FestivalOfDarknessWin", "200"));
-	                HERO_POINTS											= Integer.parseInt(Feature.getProperty("HeroPoints", "1000"));
-	                ROYAL_GUARD_COST									= Integer.parseInt(Feature.getProperty("CreateRoyalGuardCost", "5000"));
-	                KNIGHT_UNIT_COST									= Integer.parseInt(Feature.getProperty("CreateKnightUnitCost", "10000"));
-	                KNIGHT_REINFORCE_COST								= Integer.parseInt(Feature.getProperty("ReinforceKnightUnitCost", "5000"));
-	                BALLISTA_POINTS										= Integer.parseInt(Feature.getProperty("KillBallistaPoints", "30"));
-	                REPUTATION_SCORE_PER_KILL							= Integer.parseInt(Feature.getProperty("ReputationScorePerKill", "1"));
-	                JOIN_ACADEMY_MIN_REP_SCORE							= Integer.parseInt(Feature.getProperty("CompleteAcademyMinPoints", "190"));
-	                JOIN_ACADEMY_MAX_REP_SCORE							= Integer.parseInt(Feature.getProperty("CompleteAcademyMaxPoints", "650"));
-	                RAID_RANKING_1ST									= Integer.parseInt(Feature.getProperty("1stRaidRankingPoints", "1250"));
-	                RAID_RANKING_2ND									= Integer.parseInt(Feature.getProperty("2ndRaidRankingPoints", "900"));
-	                RAID_RANKING_3RD									= Integer.parseInt(Feature.getProperty("3rdRaidRankingPoints", "700"));
-	                RAID_RANKING_4TH									= Integer.parseInt(Feature.getProperty("4thRaidRankingPoints", "600"));
-	                RAID_RANKING_5TH									= Integer.parseInt(Feature.getProperty("5thRaidRankingPoints", "450"));
-	                RAID_RANKING_6TH									= Integer.parseInt(Feature.getProperty("6thRaidRankingPoints", "350"));
-	                RAID_RANKING_7TH									= Integer.parseInt(Feature.getProperty("7thRaidRankingPoints", "300"));
-	                RAID_RANKING_8TH									= Integer.parseInt(Feature.getProperty("8thRaidRankingPoints", "200"));
-	                RAID_RANKING_9TH									= Integer.parseInt(Feature.getProperty("9thRaidRankingPoints", "150"));
-	                RAID_RANKING_10TH									= Integer.parseInt(Feature.getProperty("10thRaidRankingPoints", "100"));
-	                RAID_RANKING_UP_TO_50TH									= Integer.parseInt(Feature.getProperty("UpTo50thRaidRankingPoints", "25"));
-	                RAID_RANKING_UP_TO_100TH									= Integer.parseInt(Feature.getProperty("UpTo100thRaidRankingPoints", "12"));
-	                CLAN_LEVEL_6_COST									= Integer.parseInt(Feature.getProperty("ClanLevel6Cost", "10000"));
-	                CLAN_LEVEL_7_COST									= Integer.parseInt(Feature.getProperty("ClanLevel7Cost", "20000"));
-	                CLAN_LEVEL_8_COST									= Integer.parseInt(Feature.getProperty("ClanLevel8Cost", "40000"));
-	                CLAN_LEVEL_9_COST									= Integer.parseInt(Feature.getProperty("ClanLevel9Cost", "40000"));
-	                CLAN_LEVEL_10_COST									= Integer.parseInt(Feature.getProperty("ClanLevel10Cost", "40000"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+FEATURE_CONFIG_FILE+" File.");
-	            }
-	            
-	            // Character Config File
-	            try
-	            {
-	                Properties Character    	= new Properties();
-	                is                          = new FileInputStream(new File(CHARACTER_CONFIG_FILE));
-	                Character.load(is);
-	                
-	                MASTERACCESS_LEVEL					= Integer.parseInt(Character.getProperty("MasterAccessLevel", "127"));
-	                MASTERACCESS_NAME_COLOR				= Integer.decode(StringUtil.concat("0x", Character.getProperty("MasterNameColor", "00FF00")));
-	                MASTERACCESS_TITLE_COLOR			= Integer.decode(StringUtil.concat("0x", Character.getProperty("MasterTitleColor", "00FF00")));
-	                ALT_GAME_DELEVEL					= Boolean.parseBoolean(Character.getProperty("Delevel", "true"));
-	                ALT_WEIGHT_LIMIT					= Double.parseDouble(Character.getProperty("AltWeightLimit", "1"));
-	                RUN_SPD_BOOST						= Integer.parseInt(Character.getProperty("RunSpeedBoost", "0"));
-	                DEATH_PENALTY_CHANCE				= Integer.parseInt(Character.getProperty("DeathPenaltyChance", "20"));
-	                RESPAWN_RESTORE_CP					= Double.parseDouble(Character.getProperty("RespawnRestoreCP", "0")) / 100;
-	                RESPAWN_RESTORE_HP					= Double.parseDouble(Character.getProperty("RespawnRestoreHP", "70")) / 100;
-	                RESPAWN_RESTORE_MP					= Double.parseDouble(Character.getProperty("RespawnRestoreMP", "70")) / 100;
-	                HP_REGEN_MULTIPLIER					= Double.parseDouble(Character.getProperty("HpRegenMultiplier", "100")) /100;
-	                MP_REGEN_MULTIPLIER					= Double.parseDouble(Character.getProperty("MpRegenMultiplier", "100")) /100;
-	                CP_REGEN_MULTIPLIER 				= Double.parseDouble(Character.getProperty("CpRegenMultiplier", "100")) /100;
-	                ALT_GAME_TIREDNESS					= Boolean.parseBoolean(Character.getProperty("AltGameTiredness", "false"));
-	                ENABLE_MODIFY_SKILL_DURATION		= Boolean.parseBoolean(Character.getProperty("EnableModifySkillDuration", "false"));
-	                // Create Map only if enabled
-	                if (ENABLE_MODIFY_SKILL_DURATION)
-	                {
-	                    SKILL_DURATION_LIST = new FastMap<Integer, Integer>();
-	                    String[] propertySplit;
-	                    propertySplit = Character.getProperty("SkillDurationList", "").split(";");
-	                    for (String skill : propertySplit)
-	                    {
-	                        String[] skillSplit = skill.split(",");
-	                        if (skillSplit.length != 2)
-	                        {
-	                            _log.warning(StringUtil.concat("[SkillDurationList]: invalid config property -> SkillDurationList \"", skill, "\""));
-	                        } else
-	                        {
-	                            try
-	                            {
-	                                SKILL_DURATION_LIST.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1]));
-	                            } catch (NumberFormatException nfe)
-	                            {
-	                                if (!skill.isEmpty())
-	                                {
-	                                    _log.warning(StringUtil.concat("[SkillDurationList]: invalid config property -> SkillList \"", skillSplit[0], "\"", skillSplit[1]));
-	                                }
-	                            }
-	                        }
-	                    }
-	                }
-	                ENABLE_MODIFY_SKILL_REUSE = Boolean.parseBoolean(Character.getProperty("EnableModifySkillReuse", "false"));
-	
-	                // Create Map only if enabled
-	                if (ENABLE_MODIFY_SKILL_REUSE)
-	                {
-	                    SKILL_REUSE_LIST = new FastMap<Integer, Integer>();
-	                    String[] propertySplit;
-	                    propertySplit = Character.getProperty("SkillReuseList", "").split(";");
-	                    for (String skill : propertySplit)
-	                    {
-	                        String[] skillSplit = skill.split(",");
-	                        if (skillSplit.length != 2)
-	                        {
-	                            _log.warning(StringUtil.concat("[SkillReuseList]: invalid config property -> SkillReuseList \"", skill, "\""));
-	                        } else
-	                        {
-	                            try
-	                            {
-	                                SKILL_REUSE_LIST.put(Integer.valueOf(skillSplit[0]), Integer.valueOf(skillSplit[1]));
-	                            } catch (NumberFormatException nfe)
-	                            {
-	                                if (!skill.isEmpty())
-	                                {
-	                                    _log.warning(StringUtil.concat("[SkillReuseList]: invalid config property -> SkillList \"", skillSplit[0], "\"", skillSplit[1]));
-	                                }
-	                            }
-	                        }
-	                    }
-	                }
-	                
-	                AUTO_LEARN_SKILLS					= Boolean.parseBoolean(Character.getProperty("AutoLearnSkills", "false"));
-	                AUTO_LOOT_HERBS						= Boolean.parseBoolean(Character.getProperty("AutoLootHerbs", "true"));
-	                BUFFS_MAX_AMOUNT					= Byte.parseByte(Character.getProperty("maxbuffamount","20"));
-	                DANCES_MAX_AMOUNT					= Byte.parseByte(Character.getProperty("maxdanceamount","12"));
-	                AUTO_LEARN_DIVINE_INSPIRATION		= Boolean.parseBoolean(Character.getProperty("AutoLearnDivineInspiration", "false"));
-	                ALT_GAME_CANCEL_BOW					= Character.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || Character.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
-	                ALT_GAME_CANCEL_CAST				= Character.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || Character.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
-	                EFFECT_CANCELING					= Boolean.parseBoolean(Character.getProperty("CancelLesserEffect", "True"));
-	                ALT_GAME_MAGICFAILURES				= Boolean.parseBoolean(Character.getProperty("MagicFailures", "false"));
-	                PLAYER_FAKEDEATH_UP_PROTECTION 		= Integer.parseInt(Character.getProperty("PlayerFakeDeathUpProtection", "0"));
-	                STORE_SKILL_COOLTIME				= Boolean.parseBoolean(Character.getProperty("StoreSkillCooltime", "true"));
-	                ALT_GAME_SHIELD_BLOCKS				= Boolean.parseBoolean(Character.getProperty("AltShieldBlocks", "false"));
-	                ALT_PERFECT_SHLD_BLOCK				= Integer.parseInt(Character.getProperty("AltPerfectShieldBlockRate", "10"));
-	                ALLOW_CLASS_MASTERS					= Boolean.parseBoolean(Character.getProperty("AllowClassMasters", "False"));
-	                LIFE_CRYSTAL_NEEDED					= Boolean.parseBoolean(Character.getProperty("LifeCrystalNeeded", "true"));
-	                SP_BOOK_NEEDED						= Boolean.parseBoolean(Character.getProperty("SpBookNeeded", "true"));
-	                ES_SP_BOOK_NEEDED					= Boolean.parseBoolean(Character.getProperty("EnchantSkillSpBookNeeded","true"));
-	                ALT_GAME_SKILL_LEARN				= Boolean.parseBoolean(Character.getProperty("AltGameSkillLearn", "false"));
-	                ALT_GAME_SUBCLASS_WITHOUT_QUESTS	= Boolean.parseBoolean(Character.getProperty("AltSubClassWithoutQuests", "False"));
-	                MAX_RUN_SPEED						= Integer.parseInt(Character.getProperty("MaxRunSpeed", "250"));
-	                MAX_PCRIT_RATE						= Integer.parseInt(Character.getProperty("MaxPCritRate", "500"));
-	                MAX_MCRIT_RATE						= Integer.parseInt(Character.getProperty("MaxMCritRate", "200"));
-	                MAX_PATK_SPEED						= Integer.parseInt(Character.getProperty("MaxPAtkSpeed", "1500"));
-	                MAX_MATK_SPEED						= Integer.parseInt(Character.getProperty("MaxMAtkSpeed", "1999"));
-	                MAX_EVASION							= Integer.parseInt(Character.getProperty("MaxEvasion", "200"));
-	                MAX_SUBCLASS						= Byte.parseByte(Character.getProperty("MaxSubclass", "3"));
-	                MAX_PVTSTORESELL_SLOTS_DWARF		= Integer.parseInt(Character.getProperty("MaxPvtStoreSellSlotsDwarf", "4"));
-	                MAX_PVTSTORESELL_SLOTS_OTHER		= Integer.parseInt(Character.getProperty("MaxPvtStoreSellSlotsOther", "3"));
-	                MAX_PVTSTOREBUY_SLOTS_DWARF			= Integer.parseInt(Character.getProperty("MaxPvtStoreBuySlotsDwarf", "5"));
-	                MAX_PVTSTOREBUY_SLOTS_OTHER			= Integer.parseInt(Character.getProperty("MaxPvtStoreBuySlotsOther", "4"));
-	                INVENTORY_MAXIMUM_NO_DWARF			= Integer.parseInt(Character.getProperty("MaximumSlotsForNoDwarf", "80"));
-	                INVENTORY_MAXIMUM_DWARF				= Integer.parseInt(Character.getProperty("MaximumSlotsForDwarf", "100"));
-	                INVENTORY_MAXIMUM_GM				= Integer.parseInt(Character.getProperty("MaximumSlotsForGMPlayer", "250"));
-	                MAX_ITEM_IN_PACKET 					= Math.max(INVENTORY_MAXIMUM_NO_DWARF, Math.max(INVENTORY_MAXIMUM_DWARF, INVENTORY_MAXIMUM_GM));
-	                WAREHOUSE_SLOTS_DWARF				= Integer.parseInt(Character.getProperty("MaximumWarehouseSlotsForDwarf", "120"));
-	                WAREHOUSE_SLOTS_NO_DWARF			= Integer.parseInt(Character.getProperty("MaximumWarehouseSlotsForNoDwarf", "100"));
-	                WAREHOUSE_SLOTS_CLAN				= Integer.parseInt(Character.getProperty("MaximumWarehouseSlotsForClan", "150"));
-	                FREIGHT_SLOTS						= Integer.parseInt(Character.getProperty("MaximumFreightSlots", "20"));
-	                ENCHANT_CHANCE_WEAPON				= Integer.parseInt(Character.getProperty("EnchantChanceWeapon", "68"));
-	                ENCHANT_CHANCE_ARMOR				= Integer.parseInt(Character.getProperty("EnchantChanceArmor", "52"));
-	                ENCHANT_CHANCE_JEWELRY				= Integer.parseInt(Character.getProperty("EnchantChanceJewelry", "54"));
-	                BLESSED_ENCHANT_CHANCE_WEAPON		= Integer.parseInt(Character.getProperty("BlessedEnchantChanceWeapon", "68"));
-	                BLESSED_ENCHANT_CHANCE_ARMOR		= Integer.parseInt(Character.getProperty("BlessedEnchantChanceArmor", "52"));
-	                BLESSED_ENCHANT_CHANCE_JEWELRY		= Integer.parseInt(Character.getProperty("BlessedEnchantChanceJewelry", "54"));
-	                ENCHANT_MAX_WEAPON					= Integer.parseInt(Character.getProperty("EnchantMaxWeapon", "255"));
-	                ENCHANT_MAX_ARMOR					= Integer.parseInt(Character.getProperty("EnchantMaxArmor", "255"));
-	                ENCHANT_MAX_JEWELRY					= Integer.parseInt(Character.getProperty("EnchantMaxJewelry", "255"));
-	                ENCHANT_SAFE_MAX					= Integer.parseInt(Character.getProperty("EnchantSafeMax", "3"));
-	                ENCHANT_SAFE_MAX_FULL				= Integer.parseInt(Character.getProperty("EnchantSafeMaxFull", "4"));
-	                AUGMENTATION_NG_SKILL_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationNGSkillChance", "15"));
-	                AUGMENTATION_NG_GLOW_CHANCE			= Integer.parseInt(Character.getProperty("AugmentationNGGlowChance", "0"));
-	                AUGMENTATION_MID_SKILL_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationMidSkillChance", "30"));
-	                AUGMENTATION_MID_GLOW_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationMidGlowChance", "40"));
-	                AUGMENTATION_HIGH_SKILL_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationHighSkillChance", "45"));
-	                AUGMENTATION_HIGH_GLOW_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationHighGlowChance", "70"));
-	                AUGMENTATION_TOP_SKILL_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationTopSkillChance", "60"));
-	                AUGMENTATION_TOP_GLOW_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationTopGlowChance", "100"));
-	                AUGMENTATION_BASESTAT_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationBaseStatChance", "1"));
-	                ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE	= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanBeKilledInPeaceZone", "false"));
-	                ALT_GAME_KARMA_PLAYER_CAN_SHOP		= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanShop", "true"));
-	                ALT_GAME_KARMA_PLAYER_CAN_TELEPORT	= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanTeleport", "true"));
-	                ALT_GAME_KARMA_PLAYER_CAN_USE_GK	= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanUseGK", "false"));
-	                ALT_GAME_KARMA_PLAYER_CAN_TRADE		= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanTrade", "true"));
-	                ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE	= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanUseWareHouse", "true"));
-	                MAX_PERSONAL_FAME_POINTS			= Integer.parseInt(Character.getProperty("MaxPersonalFamePoints","65535"));
-	                FORTRESS_ZONE_FAME_TASK_FREQUENCY	= Integer.parseInt(Character.getProperty("FortressZoneFameTaskFrequency","300"));
-	                FORTRESS_ZONE_FAME_AQUIRE_POINTS	= Integer.parseInt(Character.getProperty("FortressZoneFameAquirePoints","31"));
-	                CASTLE_ZONE_FAME_TASK_FREQUENCY	= Integer.parseInt(Character.getProperty("CastleZoneFameTaskFrequency","300"));
-	                CASTLE_ZONE_FAME_AQUIRE_POINTS	= Integer.parseInt(Character.getProperty("CastleZoneFameAquirePoints","125"));
-	                IS_CRAFTING_ENABLED					= Boolean.parseBoolean(Character.getProperty("CraftingEnabled", "true"));
-	                DWARF_RECIPE_LIMIT					= Integer.parseInt(Character.getProperty("DwarfRecipeLimit","50"));
-	                COMMON_RECIPE_LIMIT					= Integer.parseInt(Character.getProperty("CommonRecipeLimit","50"));
-	                ALT_GAME_CREATION					= Boolean.parseBoolean(Character.getProperty("AltGameCreation", "false"));
-	                ALT_GAME_CREATION_SPEED				= Double.parseDouble(Character.getProperty("AltGameCreationSpeed", "1"));
-	                ALT_GAME_CREATION_XP_RATE			= Double.parseDouble(Character.getProperty("AltGameCreationXpRate", "1"));
-	                ALT_GAME_CREATION_RARE_XPSP_RATE	= Double.parseDouble(Character.getProperty("AltGameCreationRareXpSpRate", "2"));
-	                ALT_GAME_CREATION_SP_RATE			= Double.parseDouble(Character.getProperty("AltGameCreationSpRate", "1"));
-	                ALT_BLACKSMITH_USE_RECIPES			= Boolean.parseBoolean(Character.getProperty("AltBlacksmithUseRecipes", "true"));
-	                ALT_CLAN_JOIN_DAYS					= Integer.parseInt(Character.getProperty("DaysBeforeJoinAClan", "5"));
-	                ALT_CLAN_CREATE_DAYS				= Integer.parseInt(Character.getProperty("DaysBeforeCreateAClan", "10"));
-	                ALT_CLAN_DISSOLVE_DAYS				= Integer.parseInt(Character.getProperty("DaysToPassToDissolveAClan", "7"));
-	                ALT_ALLY_JOIN_DAYS_WHEN_LEAVED		= Integer.parseInt(Character.getProperty("DaysBeforeJoinAllyWhenLeaved", "1"));
-	                ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED	= Integer.parseInt(Character.getProperty("DaysBeforeJoinAllyWhenDismissed", "1"));
-	                ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED	= Integer.parseInt(Character.getProperty("DaysBeforeAcceptNewClanWhenDismissed", "1"));
-	                ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED	= Integer.parseInt(Character.getProperty("DaysBeforeCreateNewAllyWhenDissolved", "10"));
-	                ALT_MAX_NUM_OF_CLANS_IN_ALLY		= Integer.parseInt(Character.getProperty("AltMaxNumOfClansInAlly", "3"));
-	                ALT_CLAN_MEMBERS_FOR_WAR    		= Integer.parseInt(Character.getProperty("AltClanMembersForWar", "15"));
-	                //ALT_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE	= Boolean.parseBoolean(Character.getProperty("AltNewCharAlwaysIsNewbie", "False"));
-	                ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH= Boolean.parseBoolean(Character.getProperty("AltMembersCanWithdrawFromClanWH", "false"));
-	                REMOVE_CASTLE_CIRCLETS				= Boolean.parseBoolean(Character.getProperty("RemoveCastleCirclets", "true"));
-	                ALT_PARTY_RANGE						= Integer.parseInt(Character.getProperty("AltPartyRange", "1600"));
-	                ALT_PARTY_RANGE2					= Integer.parseInt(Character.getProperty("AltPartyRange2", "1400"));
-	                STARTING_ADENA						= Integer.parseInt(Character.getProperty("StartingAdena", "100"));
-	                AUTO_LOOT							= Boolean.parseBoolean(Character.getProperty("AutoLoot", "true"));
-	                UNSTUCK_INTERVAL					= Integer.parseInt(Character.getProperty("UnstuckInterval", "300"));
-	                PLAYER_SPAWN_PROTECTION				= Integer.parseInt(Character.getProperty("PlayerSpawnProtection", "0"));
-	                RESPAWN_RANDOM_ENABLED				= Boolean.parseBoolean(Character.getProperty("RespawnRandomInTown", "False"));
-	                RESPAWN_RANDOM_MAX_OFFSET			= Integer.parseInt(Character.getProperty("RespawnRandomMaxOffset", "50"));
-	                RESTORE_PLAYER_INSTANCE				= Boolean.parseBoolean(Character.getProperty("RestorePlayerInstance", "False"));
-	                ALLOW_SUMMON_TO_INSTANCE			= Boolean.parseBoolean(Character.getProperty("AllowSummonToInstance", "True"));
-	                PETITIONING_ALLOWED					= Boolean.parseBoolean(Character.getProperty("PetitioningAllowed", "True"));
-	                MAX_PETITIONS_PER_PLAYER			= Integer.parseInt(Character.getProperty("MaxPetitionsPerPlayer", "5"));
-	                MAX_PETITIONS_PENDING				= Integer.parseInt(Character.getProperty("MaxPetitionsPending", "25"));
-	                ALT_GAME_FREIGHTS					= Boolean.parseBoolean(Character.getProperty("AltGameFreights", "false"));
-	                ALT_GAME_FREIGHT_PRICE				= Integer.parseInt(Character.getProperty("AltGameFreightPrice", "1000"));
-	                ALT_GAME_FREE_TELEPORT				= Boolean.parseBoolean(Character.getProperty("AltFreeTeleporting", "False"));
-	                ALT_RECOMMEND						= Boolean.parseBoolean(Character.getProperty("AltRecommend", "False"));
-	                DELETE_DAYS							= Integer.parseInt(Character.getProperty("DeleteCharAfterDays", "7"));
-	                ALT_GAME_EXPONENT_XP				= Float.parseFloat(Character.getProperty("AltGameExponentXp", "0."));
-	                ALT_GAME_EXPONENT_SP				= Float.parseFloat(Character.getProperty("AltGameExponentSp", "0."));
-	                PARTY_XP_CUTOFF_METHOD				= Character.getProperty("PartyXpCutoffMethod", "percentage");
-	                PARTY_XP_CUTOFF_PERCENT				= Double.parseDouble(Character.getProperty("PartyXpCutoffPercent", "3."));
-	                PARTY_XP_CUTOFF_LEVEL				= Integer.parseInt(Character.getProperty("PartyXpCutoffLevel", "30"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+CHARACTER_CONFIG_FILE+" File.");
-	            }
-	
-	            /*
-	             * Load L2J Server Version Properties file (if exists)
-	             */
-	            try
-	            {
-	                Properties serverVersion    = new Properties();
-	                is                          = new FileInputStream(new File(SERVER_VERSION_FILE));
-	                serverVersion.load(is);
-	                
-	                SERVER_VERSION      = serverVersion.getProperty("version", "Unsupported Custom Version.");
-	                SERVER_BUILD_DATE   = serverVersion.getProperty("builddate", "Undefined Date.");
-	            }
-	            catch (Exception e)
-	            {
-	                //Ignore Properties file if it doesnt exist
-	                SERVER_VERSION      = "Unsupported Custom Version.";
-	                SERVER_BUILD_DATE   = "Undefined Date.";
-	            }
-	
-	            /*
-	             * Load L2J Datapack Version Properties file (if exists)
-	             */
-	            try
-	            {
-	                Properties serverVersion    = new Properties();
-	                is                          = new FileInputStream(new File(DATAPACK_VERSION_FILE));
-	                serverVersion.load(is);
-	                
-	                DATAPACK_VERSION      = serverVersion.getProperty("version", "Unsupported Custom Version.");
-	            }
-	            catch (Exception e)
-	            {
-	                //Ignore Properties file if it doesnt exist
-	                DATAPACK_VERSION      = "Unsupported Custom Version.";
-	            }
-	
-	            // telnet
-	            try
-	            {
-	                Properties telnetSettings   = new Properties();
-	                is                          = new FileInputStream(new File(TELNET_FILE));
-	                telnetSettings.load(is);
-	                
-	                IS_TELNET_ENABLED   = Boolean.parseBoolean(telnetSettings.getProperty("EnableTelnet", "false"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+TELNET_FILE+" File.");
-	            }
-	
-	            // id factory
-	            try
-	            {
-	                Properties idSettings   = new Properties();
-	                is                      = new FileInputStream(new File(ID_CONFIG_FILE));
-	                idSettings.load(is);
-	                
-	                MAP_TYPE        = ObjectMapType.valueOf(idSettings.getProperty("L2Map", "WorldObjectMap"));
-	                SET_TYPE        = ObjectSetType.valueOf(idSettings.getProperty("L2Set", "WorldObjectSet"));
-	                IDFACTORY_TYPE  = IdFactoryType.valueOf(idSettings.getProperty("IDFactory", "Compaction"));
-	                BAD_ID_CHECKING = Boolean.parseBoolean(idSettings.getProperty("BadIdChecking", "True"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+ID_CONFIG_FILE+" File.");
-	            }
-	
-	            // General Config File
-	            try
-	            {
-	                Properties General    		= new Properties();
-	                is                          = new FileInputStream(new File(GENERAL_CONFIG_FILE));
-	                General.load(is);
-	                
-	                EVERYBODY_HAS_ADMIN_RIGHTS					= Boolean.parseBoolean(General.getProperty("EverybodyHasAdminRights", "false"));
-	                DISPLAY_SERVER_VERSION						= Boolean.parseBoolean(General.getProperty("DisplayServerRevision","True"));
-	                SERVER_LIST_BRACKET							= Boolean.parseBoolean(General.getProperty("ServerListBrackets", "false"));
-	                SERVER_LIST_CLOCK							= Boolean.parseBoolean(General.getProperty("ServerListClock", "false"));
-	                SERVER_GMONLY								= Boolean.parseBoolean(General.getProperty("ServerGMOnly", "false"));
-	                GM_HERO_AURA								= Boolean.parseBoolean(General.getProperty("GMHeroAura", "False"));
-	                GM_STARTUP_INVULNERABLE						= Boolean.parseBoolean(General.getProperty("GMStartupInvulnerable", "False"));
-	                GM_STARTUP_INVISIBLE						= Boolean.parseBoolean(General.getProperty("GMStartupInvisible", "False"));
-	                GM_STARTUP_SILENCE							= Boolean.parseBoolean(General.getProperty("GMStartupSilence", "False"));
-	                GM_STARTUP_AUTO_LIST						= Boolean.parseBoolean(General.getProperty("GMStartupAutoList", "False"));
-	                GM_STARTUP_DIET_MODE						= Boolean.parseBoolean(General.getProperty("GMStartupDietMode", "False"));
-	                GM_ADMIN_MENU_STYLE							= General.getProperty("GMAdminMenuStyle", "modern");
-	                GM_ITEM_RESTRICTION							= Boolean.parseBoolean(General.getProperty("GmItemRestriction", "False"));
-	                BYPASS_VALIDATION							= Boolean.parseBoolean(General.getProperty("BypassValidation", "True"));
-	                GAMEGUARD_ENFORCE							= Boolean.parseBoolean(General.getProperty("GameGuardEnforce", "False"));
-	                GAMEGUARD_PROHIBITACTION					= Boolean.parseBoolean(General.getProperty("GameGuardProhibitAction", "False"));
-	                LOG_CHAT									= Boolean.parseBoolean(General.getProperty("LogChat", "false"));
-	                LOG_ITEMS									= Boolean.parseBoolean(General.getProperty("LogItems", "false"));
-	                GMAUDIT										= Boolean.parseBoolean(General.getProperty("GMAudit", "False"));
-	                LOG_GAME_DAMAGE								= Boolean.parseBoolean(General.getProperty("LogGameDamage", "False"));
-	                DEBUG										= Boolean.parseBoolean(General.getProperty("Debug", "false"));
-	                PACKET_HANDLER_DEBUG						= Boolean.parseBoolean(General.getProperty("PacketHandlerDebug", "false"));
-	                ASSERT										= Boolean.parseBoolean(General.getProperty("Assert", "false"));
-	                DEVELOPER									= Boolean.parseBoolean(General.getProperty("Developer", "false"));
-	                ACCEPT_GEOEDITOR_CONN						= Boolean.parseBoolean(General.getProperty("AcceptGeoeditorConn", "false"));
-	                TEST_SERVER									= Boolean.parseBoolean(General.getProperty("TestServer", "false"));
-	                SERVER_LIST_TESTSERVER						= Boolean.parseBoolean(General.getProperty("ListTestServers", "false"));
-	                ALT_DEV_NO_QUESTS							= Boolean.parseBoolean(General.getProperty("AltDevNoQuests", "False"));
-	                ALT_DEV_NO_SPAWNS							= Boolean.parseBoolean(General.getProperty("AltDevNoSpawns", "False"));
-	                THREAD_P_EFFECTS							= Integer.parseInt(General.getProperty("ThreadPoolSizeEffects", "6"));
-	                THREAD_P_GENERAL							= Integer.parseInt(General.getProperty("ThreadPoolSizeGeneral", "15"));
-	                IO_PACKET_THREAD_CORE_SIZE					= Integer.parseInt(General.getProperty("UrgentPacketThreadCoreSize", "2"));
-	                GENERAL_PACKET_THREAD_CORE_SIZE				= Integer.parseInt(General.getProperty("GeneralPacketThreadCoreSize", "4"));
-	                GENERAL_THREAD_CORE_SIZE					= Integer.parseInt(General.getProperty("GeneralThreadCoreSize", "4"));
-	                AI_MAX_THREAD								= Integer.parseInt(General.getProperty("AiMaxThread", "10"));
-	                PACKET_LIFETIME								= Integer.parseInt(General.getProperty("PacketLifeTime", "0"));
-	                DEADLOCK_DETECTOR							= Boolean.parseBoolean(General.getProperty("DeadLockDetector", "False"));
-	                DEADLOCK_CHECK_INTERVAL						= Integer.parseInt(General.getProperty("DeadLockCheckInterval", "20"));
-	                RESTART_ON_DEADLOCK							= Boolean.parseBoolean(General.getProperty("RestartOnDeadlock", "False"));
-	                FLOODPROTECTOR_INITIALSIZE					= Integer.parseInt(General.getProperty("FloodProtectorInitialSize", "50"));
-	                ALLOW_DISCARDITEM							= Boolean.parseBoolean(General.getProperty("AllowDiscardItem", "True"));
-	                AUTODESTROY_ITEM_AFTER						= Integer.parseInt(General.getProperty("AutoDestroyDroppedItemAfter", "0"));
-	                HERB_AUTO_DESTROY_TIME						= Integer.parseInt(General.getProperty("AutoDestroyHerbTime","15"))*1000;
-	                PROTECTED_ITEMS								= General.getProperty("ListOfProtectedItems");
-	                LIST_PROTECTED_ITEMS						= new FastList<Integer>();
-	                                							for (String id : PROTECTED_ITEMS.split(","))
-	                                							{
-	                                								LIST_PROTECTED_ITEMS.add(Integer.parseInt(id));
-	                                							}
-	                CHAR_STORE_INTERVAL							= Integer.parseInt(General.getProperty("CharacterDataStoreInterval", "15"));
-	                LAZY_ITEMS_UPDATE							= Boolean.parseBoolean(General.getProperty("LazyItemsUpdate", "false"));
-	                UPDATE_ITEMS_ON_CHAR_STORE					= Boolean.parseBoolean(General.getProperty("UpdateItemsOnCharStore", "false"));
-	                DESTROY_DROPPED_PLAYER_ITEM					= Boolean.parseBoolean(General.getProperty("DestroyPlayerDroppedItem", "false"));
-	                DESTROY_EQUIPABLE_PLAYER_ITEM				= Boolean.parseBoolean(General.getProperty("DestroyEquipableItem", "false"));
-	                SAVE_DROPPED_ITEM							= Boolean.parseBoolean(General.getProperty("SaveDroppedItem", "false"));
-	                EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD			= Boolean.parseBoolean(General.getProperty("EmptyDroppedItemTableAfterLoad", "false"));
-	                SAVE_DROPPED_ITEM_INTERVAL					= Integer.parseInt(General.getProperty("SaveDroppedItemInterval", "0"))*60000;
-	                CLEAR_DROPPED_ITEM_TABLE					= Boolean.parseBoolean(General.getProperty("ClearDroppedItemTable", "false"));
-	                AUTODELETE_INVALID_QUEST_DATA				= Boolean.parseBoolean(General.getProperty("AutoDeleteInvalidQuestData", "False"));
-	                PRECISE_DROP_CALCULATION					= Boolean.parseBoolean(General.getProperty("PreciseDropCalculation", "True"));
-	                MULTIPLE_ITEM_DROP							= Boolean.parseBoolean(General.getProperty("MultipleItemDrop", "True"));
-	                FORCE_INVENTORY_UPDATE						= Boolean.parseBoolean(General.getProperty("ForceInventoryUpdate", "False"));
-	                LAZY_CACHE									= Boolean.parseBoolean(General.getProperty("LazyCache", "False"));
-	                MIN_NPC_ANIMATION							= Integer.parseInt(General.getProperty("MinNPCAnimation", "10"));
-	                MAX_NPC_ANIMATION							= Integer.parseInt(General.getProperty("MaxNPCAnimation", "20"));
-	                MIN_MONSTER_ANIMATION						= Integer.parseInt(General.getProperty("MinMonsterAnimation", "5"));
-	                MAX_MONSTER_ANIMATION						= Integer.parseInt(General.getProperty("MaxMonsterAnimation", "20"));
-	                COORD_SYNCHRONIZE							= Integer.parseInt(General.getProperty("CoordSynchronize", "-1"));
-	                GRIDS_ALWAYS_ON								= Boolean.parseBoolean(General.getProperty("GridsAlwaysOn", "False"));
-	                GRID_NEIGHBOR_TURNON_TIME					= Integer.parseInt(General.getProperty("GridNeighborTurnOnTime", "1"));
-	                GRID_NEIGHBOR_TURNOFF_TIME					= Integer.parseInt(General.getProperty("GridNeighborTurnOffTime", "90"));
-	                GEODATA										= Integer.parseInt(General.getProperty("GeoData", "0"));
-	                GEODATA_CELLFINDING							= Boolean.parseBoolean(General.getProperty("CellPathFinding", "False"));
-	                FORCE_GEODATA								= Boolean.parseBoolean(General.getProperty("ForceGeoData", "True"));
-	                MOVE_BASED_KNOWNLIST						= Boolean.parseBoolean(General.getProperty("MoveBasedKnownlist", "False"));
-	                KNOWNLIST_UPDATE_INTERVAL					= Long.parseLong(General.getProperty("KnownListUpdateInterval", "1250"));
-	                ZONE_TOWN									= Integer.parseInt(General.getProperty("ZoneTown", "0"));
-	                ACTIVATE_POSITION_RECORDER					= Boolean.parseBoolean(General.getProperty("ActivatePositionRecorder", "False"));
-	                DEFAULT_GLOBAL_CHAT							= General.getProperty("GlobalChat", "ON");
-	                DEFAULT_TRADE_CHAT							= General.getProperty("TradeChat", "ON");
-	                ALLOW_WAREHOUSE								= Boolean.parseBoolean(General.getProperty("AllowWarehouse", "True"));
-	                WAREHOUSE_CACHE								= Boolean.parseBoolean(General.getProperty("WarehouseCache", "False"));
-	                WAREHOUSE_CACHE_TIME						= Integer.parseInt(General.getProperty("WarehouseCacheTime", "15"));
-	                ALLOW_FREIGHT								= Boolean.parseBoolean(General.getProperty("AllowFreight", "True"));
-	                ALLOW_WEAR									= Boolean.parseBoolean(General.getProperty("AllowWear", "False"));
-	                WEAR_DELAY									= Integer.parseInt(General.getProperty("WearDelay", "5"));
-	                WEAR_PRICE									= Integer.parseInt(General.getProperty("WearPrice", "10"));
-	                ALLOW_LOTTERY								= Boolean.parseBoolean(General.getProperty("AllowLottery", "False"));
-	                ALLOW_RACE									= Boolean.parseBoolean(General.getProperty("AllowRace", "False"));
-	                ALLOW_WATER									= Boolean.parseBoolean(General.getProperty("AllowWater", "False"));
-	                ALLOW_RENTPET								= Boolean.parseBoolean(General.getProperty("AllowRentPet", "False"));
-	                FLOODPROTECTOR_INITIALSIZE					= Integer.parseInt(General.getProperty("FloodProtectorInitialSize", "50"));
-	                ALLOW_DISCARDITEM							= Boolean.parseBoolean(General.getProperty("AllowDiscardItem", "True"));
-	                ALLOWFISHING								= Boolean.parseBoolean(General.getProperty("AllowFishing", "False"));
-	                ALLOW_MANOR									= Boolean.parseBoolean(General.getProperty("AllowManor", "False"));
-	                ALLOW_BOAT									= Boolean.parseBoolean(General.getProperty("AllowBoat", "False"));
-	                ALLOW_CURSED_WEAPONS						= Boolean.parseBoolean(General.getProperty("AllowCursedWeapons", "False"));
-	                ALLOW_MANOR									= Boolean.parseBoolean(General.getProperty("AllowManor", "False"));
-	                ALLOW_NPC_WALKERS							= Boolean.parseBoolean(General.getProperty("AllowNpcWalkers", "true"));
-	                ALLOW_PET_WALKERS							= Boolean.parseBoolean(General.getProperty("AllowPetWalkers", "False"));
-	                SERVER_NEWS									= Boolean.parseBoolean(General.getProperty("ShowServerNews", "False"));
-	                COMMUNITY_TYPE								= Integer.parseInt(General.getProperty("CommunityType", "1"));
-	                BBS_SHOW_PLAYERLIST							= Boolean.parseBoolean(General.getProperty("BBSShowPlayerList", "false"));
-	                BBS_DEFAULT									= General.getProperty("BBSDefault", "_bbshome");
-	                SHOW_LEVEL_COMMUNITYBOARD					= Boolean.parseBoolean(General.getProperty("ShowLevelOnCommunityBoard", "False"));
-	                SHOW_STATUS_COMMUNITYBOARD					= Boolean.parseBoolean(General.getProperty("ShowStatusOnCommunityBoard", "True"));
-	                NAME_PAGE_SIZE_COMMUNITYBOARD				= Integer.parseInt(General.getProperty("NamePageSizeOnCommunityBoard", "50"));
-	                NAME_PER_ROW_COMMUNITYBOARD					= Integer.parseInt(General.getProperty("NamePerRowOnCommunityBoard", "5"));
-	                ALT_OLY_START_TIME							= Integer.parseInt(General.getProperty("AltOlyStartTime", "18"));
-	                ALT_OLY_MIN									= Integer.parseInt(General.getProperty("AltOlyMin","00"));
-	                ALT_OLY_CPERIOD								= Long.parseLong(General.getProperty("AltOlyCPeriod","21600000"));
-	                ALT_OLY_BATTLE								= Long.parseLong(General.getProperty("AltOlyBattle","360000"));
-	                ALT_OLY_WPERIOD								= Long.parseLong(General.getProperty("AltOlyWPeriod","604800000"));
-	                ALT_OLY_VPERIOD								= Long.parseLong(General.getProperty("AltOlyVPeriod","86400000"));
-	                ALT_OLY_CLASSED								= Integer.parseInt(General.getProperty("AltOlyClassedParticipants","5"));
-	                ALT_OLY_NONCLASSED							= Integer.parseInt(General.getProperty("AltOlyNonClassedParticipants","9"));
-	                ALT_OLY_BATTLE_REWARD_ITEM					= Integer.parseInt(General.getProperty("AltOlyBattleRewItem","6651"));
-	                ALT_OLY_CLASSED_RITEM_C						= Integer.parseInt(General.getProperty("AltOlyClassedRewItemCount","50"));
-	                ALT_OLY_NONCLASSED_RITEM_C					= Integer.parseInt(General.getProperty("AltOlyNonClassedRewItemCount","30"));
-	                ALT_OLY_COMP_RITEM							= Integer.parseInt(General.getProperty("AltOlyCompRewItem","6651"));
-	                ALT_OLY_GP_PER_POINT						= Integer.parseInt(General.getProperty("AltOlyGPPerPoint","1000"));
-	                ALT_OLY_MIN_POINT_FOR_EXCH					= Integer.parseInt(General.getProperty("AltOlyMinPointForExchange","50"));
-	                ALT_OLY_HERO_POINTS							= Integer.parseInt(General.getProperty("AltOlyHeroPoints","300"));
-	                ALT_OLY_LOG_FIGHTS							= Boolean.parseBoolean(General.getProperty("AlyOlyLogFights","false"));
-	                ALT_OLY_SHOW_MONTHLY_WINNERS				= Boolean.parseBoolean(General.getProperty("AltOlyShowMonthlyWinners","true"));
-	                ALT_OLY_ANNOUNCE_GAMES						= Boolean.parseBoolean(General.getProperty("AltOlyAnnounceGames","true"));
-	                LIST_OLY_RESTRICTED_ITEMS					= new FastList<Integer>();
-	                                							for (String id : General.getProperty("AltOlyRestrictedItems","0").split(","))
-	                                							{
-	                                								LIST_OLY_RESTRICTED_ITEMS.add(Integer.parseInt(id));
-	                                							}
-	                ALT_OLY_ENCHANT_LIMIT						= Integer.parseInt(General.getProperty("AltOlyEnchantLimit","-1"));
-	                ALT_MANOR_REFRESH_TIME						= Integer.parseInt(General.getProperty("AltManorRefreshTime","20"));
-	                ALT_MANOR_REFRESH_MIN						= Integer.parseInt(General.getProperty("AltManorRefreshMin","00"));
-	                ALT_MANOR_APPROVE_TIME						= Integer.parseInt(General.getProperty("AltManorApproveTime","6"));
-	                ALT_MANOR_APPROVE_MIN						= Integer.parseInt(General.getProperty("AltManorApproveMin","00"));
-	                ALT_MANOR_MAINTENANCE_PERIOD				= Integer.parseInt(General.getProperty("AltManorMaintenancePeriod","360000"));
-	                ALT_MANOR_SAVE_ALL_ACTIONS					= Boolean.parseBoolean(General.getProperty("AltManorSaveAllActions","false"));
-	                ALT_MANOR_SAVE_PERIOD_RATE					= Integer.parseInt(General.getProperty("AltManorSavePeriodRate","2"));
-	                ALT_LOTTERY_PRIZE							= Integer.parseInt(General.getProperty("AltLotteryPrize","50000"));
-	                ALT_LOTTERY_TICKET_PRICE					= Integer.parseInt(General.getProperty("AltLotteryTicketPrice","2000"));
-	                ALT_LOTTERY_5_NUMBER_RATE					= Float.parseFloat(General.getProperty("AltLottery5NumberRate","0.6"));
-	                ALT_LOTTERY_4_NUMBER_RATE					= Float.parseFloat(General.getProperty("AltLottery4NumberRate","0.2"));
-	                ALT_LOTTERY_3_NUMBER_RATE					= Float.parseFloat(General.getProperty("AltLottery3NumberRate","0.2"));
-	                ALT_LOTTERY_2_AND_1_NUMBER_PRIZE			= Integer.parseInt(General.getProperty("AltLottery2and1NumberPrize","200"));
-	    			FS_TIME_ATTACK								= Integer.parseInt(General.getProperty("TimeOfAttack", "50"));
-	    			FS_TIME_COOLDOWN 							= Integer.parseInt(General.getProperty("TimeOfCoolDown", "5"));
-	    			FS_TIME_ENTRY 								= Integer.parseInt(General.getProperty("TimeOfEntry", "3"));
-	    			FS_TIME_WARMUP 								= Integer.parseInt(General.getProperty("TimeOfWarmUp", "2"));
-	    			FS_PARTY_MEMBER_COUNT 						= Integer.parseInt(General.getProperty("NumberOfNecessaryPartyMembers", "4"));
-	    			if (FS_TIME_ATTACK <= 0)
-	    				FS_TIME_ATTACK = 50;
-	    			if (FS_TIME_COOLDOWN <= 0)
-	    				FS_TIME_COOLDOWN = 5;
-	    			if (FS_TIME_ENTRY <= 0)
-	    				FS_TIME_ENTRY = 3;
-	    			if (FS_TIME_ENTRY <= 0)
-	    				FS_TIME_ENTRY = 3;
-	    			if (FS_TIME_ENTRY <= 0)
-	    				FS_TIME_ENTRY = 3;
-	                RIFT_MIN_PARTY_SIZE							= Integer.parseInt(General.getProperty("RiftMinPartySize", "5"));
-	                RIFT_MAX_JUMPS								= Integer.parseInt(General.getProperty("MaxRiftJumps", "4"));
-	                RIFT_SPAWN_DELAY							= Integer.parseInt(General.getProperty("RiftSpawnDelay", "10000"));
-	                RIFT_AUTO_JUMPS_TIME_MIN					= Integer.parseInt(General.getProperty("AutoJumpsDelayMin", "480"));
-	                RIFT_AUTO_JUMPS_TIME_MAX					= Integer.parseInt(General.getProperty("AutoJumpsDelayMax", "600"));
-	                RIFT_BOSS_ROOM_TIME_MUTIPLY					= Float.parseFloat(General.getProperty("BossRoomTimeMultiply", "1.5"));
-	                RIFT_ENTER_COST_RECRUIT						= Integer.parseInt(General.getProperty("RecruitCost", "18"));
-	                RIFT_ENTER_COST_SOLDIER						= Integer.parseInt(General.getProperty("SoldierCost", "21"));
-	                RIFT_ENTER_COST_OFFICER						= Integer.parseInt(General.getProperty("OfficerCost", "24"));
-	                RIFT_ENTER_COST_CAPTAIN						= Integer.parseInt(General.getProperty("CaptainCost", "27"));
-	                RIFT_ENTER_COST_COMMANDER					= Integer.parseInt(General.getProperty("CommanderCost", "30"));
-	                RIFT_ENTER_COST_HERO						= Integer.parseInt(General.getProperty("HeroCost", "33"));
-	                DEFAULT_PUNISH								= Integer.parseInt(General.getProperty("DefaultPunish", "2"));
-	                DEFAULT_PUNISH_PARAM						= Integer.parseInt(General.getProperty("DefaultPunishParam", "0"));
-	                ONLY_GM_ITEMS_FREE							= Boolean.parseBoolean(General.getProperty("OnlyGMItemsFree", "True"));
-	                JAIL_IS_PVP									= Boolean.parseBoolean(General.getProperty("JailIsPvp", "True"));
-	                JAIL_DISABLE_CHAT							= Boolean.parseBoolean(General.getProperty("JailDisableChat", "True"));
-	                CUSTOM_SPAWNLIST_TABLE						= Boolean.valueOf(General.getProperty("CustomSpawnlistTable", "false"));
-	                SAVE_GMSPAWN_ON_CUSTOM						= Boolean.valueOf(General.getProperty("SaveGmSpawnOnCustom", "false"));
-	                DELETE_GMSPAWN_ON_CUSTOM					= Boolean.valueOf(General.getProperty("DeleteGmSpawnOnCustom", "false"));
-	                CUSTOM_NPC_TABLE							= Boolean.valueOf(General.getProperty("CustomNpcTable", "false"));
-	                CUSTOM_ITEM_TABLES							= Boolean.valueOf(General.getProperty("CustomItemTables", "false"));
-	                CUSTOM_ARMORSETS_TABLE						= Boolean.valueOf(General.getProperty("CustomArmorSetsTable", "false"));
-	                CUSTOM_TELEPORT_TABLE						= Boolean.valueOf(General.getProperty("CustomTeleportTable", "false"));
-	                CUSTOM_DROPLIST_TABLE						= Boolean.valueOf(General.getProperty("CustomDroplistTable", "false"));
-	                CUSTOM_MERCHANT_TABLES						= Boolean.valueOf(General.getProperty("CustomMerchantTables", "false"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+GENERAL_CONFIG_FILE+" File.");
-	            }
-	            
-	            // NPC settings
-	            try
-	            {
-	                Properties NPC  = new Properties();
-	                is                          = new FileInputStream(new File(NPC_CONFIG_FILE));
-	                NPC.load(is);
-	                
-	                ANNOUNCE_MAMMON_SPAWN					= Boolean.parseBoolean(NPC.getProperty("AnnounceMammonSpawn", "True"));
-	                ALT_MOB_AGRO_IN_PEACEZONE				= Boolean.parseBoolean(NPC.getProperty("AltMobAgroInPeaceZone", "True"));
-	                ALT_ATTACKABLE_NPCS						= Boolean.parseBoolean(NPC.getProperty("AltAttackableNpcs", "True"));
-	                ALT_GAME_VIEWNPC						= Boolean.parseBoolean(NPC.getProperty("AltGameViewNpc", "False"));
-	                MAX_DRIFT_RANGE							= Integer.parseInt(NPC.getProperty("MaxDriftRange", "300"));
-	                DEEPBLUE_DROP_RULES						= Boolean.parseBoolean(NPC.getProperty("UseDeepBlueDropRules", "True"));
-	                SHOW_NPC_LVL							= Boolean.parseBoolean(NPC.getProperty("ShowNpcLevel", "False"));
-	                GUARD_ATTACK_AGGRO_MOB					= Boolean.parseBoolean(NPC.getProperty("GuardAttackAggroMob", "False"));
-	                ALLOW_WYVERN_UPGRADER					= Boolean.parseBoolean(NPC.getProperty("AllowWyvernUpgrader", "False"));
-	                PET_RENT_NPC 							= NPC.getProperty("ListPetRentNpc", "30827");
-	                LIST_PET_RENT_NPC 						= new FastList<Integer>();
-	                                						for (String id : PET_RENT_NPC.split(","))
-	                                						{
-	                                							LIST_PET_RENT_NPC.add(Integer.parseInt(id));
-	                                						}
-	                RAID_HP_REGEN_MULTIPLIER				= Double.parseDouble(NPC.getProperty("RaidHpRegenMultiplier", "100")) /100;
-	                RAID_MP_REGEN_MULTIPLIER				= Double.parseDouble(NPC.getProperty("RaidMpRegenMultiplier", "100")) /100;
-	                RAID_PDEFENCE_MULTIPLIER				= Double.parseDouble(NPC.getProperty("RaidPDefenceMultiplier", "100")) /100;
-	                RAID_MDEFENCE_MULTIPLIER				= Double.parseDouble(NPC.getProperty("RaidMDefenceMultiplier", "100")) /100;
-	                RAID_MIN_RESPAWN_MULTIPLIER				= Float.parseFloat(NPC.getProperty("RaidMinRespawnMultiplier", "1.0"));
-	                RAID_MAX_RESPAWN_MULTIPLIER				= Float.parseFloat(NPC.getProperty("RaidMaxRespawnMultiplier", "1.0"));
-	                RAID_MINION_RESPAWN_TIMER				= Integer.parseInt(NPC.getProperty("RaidMinionRespawnTime", "300000"));
-	                INVENTORY_MAXIMUM_PET					= Integer.parseInt(NPC.getProperty("MaximumSlotsForPet", "12"));
-	
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+NPC_CONFIG_FILE+" File.");
-	            }
-	
-	            // rates
-	            try
-	            {
-	                Properties ratesSettings    = new Properties();
-	                is                          = new FileInputStream(new File(RATES_CONFIG_FILE));
-	                ratesSettings.load(is);
-	                
-	                RATE_XP                         = Float.parseFloat(ratesSettings.getProperty("RateXp", "1."));
-	                RATE_SP                         = Float.parseFloat(ratesSettings.getProperty("RateSp", "1."));
-	                RATE_PARTY_XP                   = Float.parseFloat(ratesSettings.getProperty("RatePartyXp", "1."));
-	                RATE_PARTY_SP                   = Float.parseFloat(ratesSettings.getProperty("RatePartySp", "1."));
-	                RATE_QUESTS_REWARD              = Float.parseFloat(ratesSettings.getProperty("RateQuestsReward", "1."));
-	                RATE_DROP_ADENA                 = Float.parseFloat(ratesSettings.getProperty("RateDropAdena", "1."));
-	                RATE_CONSUMABLE_COST            = Float.parseFloat(ratesSettings.getProperty("RateConsumableCost", "1."));
-	                RATE_EXTR_FISH		            = Float.parseFloat(ratesSettings.getProperty("RateExtractFish", "1."));
-	                RATE_DROP_ITEMS                 = Float.parseFloat(ratesSettings.getProperty("RateDropItems", "1."));
-	                RATE_DROP_ITEMS_BY_RAID         = Float.parseFloat(ratesSettings.getProperty("RateRaidDropItems", "1."));
-	                RATE_DROP_SPOIL                 = Float.parseFloat(ratesSettings.getProperty("RateDropSpoil", "1."));
-	                RATE_DROP_MANOR                 = Integer.parseInt(ratesSettings.getProperty("RateDropManor", "1"));
-	                RATE_DROP_QUEST                 = Float.parseFloat(ratesSettings.getProperty("RateDropQuest", "1."));
-	                RATE_KARMA_EXP_LOST             = Float.parseFloat(ratesSettings.getProperty("RateKarmaExpLost", "1."));
-	                RATE_SIEGE_GUARDS_PRICE         = Float.parseFloat(ratesSettings.getProperty("RateSiegeGuardsPrice", "1."));
-	                RATE_DROP_COMMON_HERBS             = Float.parseFloat(ratesSettings.getProperty("RateCommonHerbs", "15."));
-	                RATE_DROP_MP_HP_HERBS           = Float.parseFloat(ratesSettings.getProperty("RateHpMpHerbs", "10."));
-	                RATE_DROP_GREATER_HERBS         = Float.parseFloat(ratesSettings.getProperty("RateGreaterHerbs", "4."));
-	                RATE_DROP_SUPERIOR_HERBS        = Float.parseFloat(ratesSettings.getProperty("RateSuperiorHerbs", "0.8"))*10;
-	                RATE_DROP_SPECIAL_HERBS         = Float.parseFloat(ratesSettings.getProperty("RateSpecialHerbs", "0.2"))*10;
-	
-	                PLAYER_DROP_LIMIT               = Integer.parseInt(ratesSettings.getProperty("PlayerDropLimit", "3"));
-	                PLAYER_RATE_DROP                = Integer.parseInt(ratesSettings.getProperty("PlayerRateDrop", "5"));
-	                PLAYER_RATE_DROP_ITEM           = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropItem", "70"));
-	                PLAYER_RATE_DROP_EQUIP          = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropEquip", "25"));
-	                PLAYER_RATE_DROP_EQUIP_WEAPON   = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropEquipWeapon", "5"));
-	
-	                PET_XP_RATE                     = Float.parseFloat(ratesSettings.getProperty("PetXpRate", "1."));
-	                PET_FOOD_RATE                   = Integer.parseInt(ratesSettings.getProperty("PetFoodRate", "1"));
-	                SINEATER_XP_RATE                = Float.parseFloat(ratesSettings.getProperty("SinEaterXpRate", "1."));
-	
-	                KARMA_DROP_LIMIT                = Integer.parseInt(ratesSettings.getProperty("KarmaDropLimit", "10"));
-	                KARMA_RATE_DROP                 = Integer.parseInt(ratesSettings.getProperty("KarmaRateDrop", "70"));
-	                KARMA_RATE_DROP_ITEM            = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropItem", "50"));
-	                KARMA_RATE_DROP_EQUIP           = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropEquip", "40"));
-	                KARMA_RATE_DROP_EQUIP_WEAPON    = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropEquipWeapon", "10"));
-	
-	            }
-	            catch (Exception e) {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+RATES_CONFIG_FILE+" File.");
-	            }
-	            
-	            try
-	            {
-	                Properties L2JModSettings  = new Properties();
-	                is                         = new FileInputStream(new File(L2JMOD_CONFIG_FILE));
-	                L2JModSettings.load(is);
-	                
-	                L2JMOD_CHAMPION_ENABLE              	= Boolean.parseBoolean(L2JModSettings.getProperty("ChampionEnable", "false"));
-	                L2JMOD_CHAMPION_PASSIVE					= Boolean.parseBoolean(L2JModSettings.getProperty("ChampionPassive", "false"));
-	                L2JMOD_CHAMPION_FREQUENCY              	= Integer.parseInt(L2JModSettings.getProperty("ChampionFrequency", "0"));
-	                L2JMOD_CHAMP_TITLE                      = L2JModSettings.getProperty("ChampionTitle", "Champion");
-	                L2JMOD_CHAMP_MIN_LVL                	= Integer.parseInt(L2JModSettings.getProperty("ChampionMinLevel", "20"));
-	                L2JMOD_CHAMP_MAX_LVL                	= Integer.parseInt(L2JModSettings.getProperty("ChampionMaxLevel", "60"));
-	                L2JMOD_CHAMPION_HP                     	= Integer.parseInt(L2JModSettings.getProperty("ChampionHp", "7"));
-	                L2JMOD_CHAMPION_HP_REGEN               	= Float.parseFloat(L2JModSettings.getProperty("ChampionHpRegen", "1."));
-	                L2JMOD_CHAMPION_REWARDS                	= Integer.parseInt(L2JModSettings.getProperty("ChampionRewards", "8"));
-	                L2JMOD_CHAMPION_ADENAS_REWARDS         	= Float.parseFloat(L2JModSettings.getProperty("ChampionAdenasRewards", "1"));
-	                L2JMOD_CHAMPION_ATK                 	= Float.parseFloat(L2JModSettings.getProperty("ChampionAtk", "1."));
-	                L2JMOD_CHAMPION_SPD_ATK             	= Float.parseFloat(L2JModSettings.getProperty("ChampionSpdAtk", "1."));
-	                L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = Integer.parseInt(L2JModSettings.getProperty("ChampionRewardLowerLvlItemChance", "0"));
-	                L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = Integer.parseInt(L2JModSettings.getProperty("ChampionRewardHigherLvlItemChance", "0"));
-	                L2JMOD_CHAMPION_REWARD_ID             	= Integer.parseInt(L2JModSettings.getProperty("ChampionRewardItemID", "6393"));
-	                L2JMOD_CHAMPION_REWARD_QTY            	= Integer.parseInt(L2JModSettings.getProperty("ChampionRewardItemQty", "1"));
-	
-	                TVT_EVENT_ENABLED                        = Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventEnabled", "false"));
-	                TVT_EVENT_INTERVAL                        = L2JModSettings.getProperty("TvTEventInterval", "20:00").split(",");
-	                TVT_EVENT_PARTICIPATION_TIME            = Integer.parseInt(L2JModSettings.getProperty("TvTEventParticipationTime", "3600"));
-	                TVT_EVENT_RUNNING_TIME                    = Integer.parseInt(L2JModSettings.getProperty("TvTEventRunningTime", "1800"));
-	                TVT_EVENT_PARTICIPATION_NPC_ID            = Integer.parseInt(L2JModSettings.getProperty("TvTEventParticipationNpcId", "0"));
-	
-	                /** L2JMOD Wedding system  */
-	                L2JMOD_ALLOW_WEDDING                    = Boolean.parseBoolean(L2JModSettings.getProperty("AllowWedding", "False"));
-	                L2JMOD_WEDDING_PRICE                    = Integer.parseInt(L2JModSettings.getProperty("WeddingPrice", "250000000"));
-	                L2JMOD_WEDDING_PUNISH_INFIDELITY        = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingPunishInfidelity", "True"));
-	                L2JMOD_WEDDING_TELEPORT                 = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingTeleport", "True"));
-	                L2JMOD_WEDDING_TELEPORT_PRICE           = Integer.parseInt(L2JModSettings.getProperty("WeddingTeleportPrice", "50000"));
-	                L2JMOD_WEDDING_TELEPORT_DURATION        = Integer.parseInt(L2JModSettings.getProperty("WeddingTeleportDuration", "60"));
-	                L2JMOD_WEDDING_SAMESEX                  = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingAllowSameSex", "False"));
-	                L2JMOD_WEDDING_FORMALWEAR               = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingFormalWear", "True"));
-	                L2JMOD_WEDDING_DIVORCE_COSTS            = Integer.parseInt(L2JModSettings.getProperty("WeddingDivorceCosts", "20"));
-	                
-	                L2JMOD_ENABLE_WAREHOUSESORTING_CLAN     = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingClan", "False"));
-	                L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE  = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingPrivate", "False"));
-	                L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT  = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingFreight", "False"));
-	
-	                if (TVT_EVENT_PARTICIPATION_NPC_ID == 0)
-	                {
-	                    TVT_EVENT_ENABLED = false;
-	                    _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcId");
-	                }
-	                else
-	                {
-	                    String[] propertySplit                = L2JModSettings.getProperty("TvTEventParticipationNpcCoordinates", "0,0,0").split(",");
-	
-	                    if (propertySplit.length < 3)
-	                    {
-	                        TVT_EVENT_ENABLED = false;
-	                        _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcCoordinates");
-	                    }
-	                    else
-	                    {
-	                    	TVT_EVENT_REWARDS = new FastList<int[]>();
-	                        TVT_DOORS_IDS_TO_OPEN = new ArrayList<Integer>();
-	                        TVT_DOORS_IDS_TO_CLOSE = new ArrayList<Integer>();
-	                        TVT_EVENT_PARTICIPATION_NPC_COORDINATES = new int[3];
-	                        TVT_EVENT_TEAM_1_COORDINATES = new int[3];
-	                        TVT_EVENT_TEAM_2_COORDINATES = new int[3];
-	                        TVT_EVENT_PARTICIPATION_NPC_COORDINATES[0]  = Integer.parseInt(propertySplit[0]);
-	                        TVT_EVENT_PARTICIPATION_NPC_COORDINATES[1]  = Integer.parseInt(propertySplit[1]);
-	                        TVT_EVENT_PARTICIPATION_NPC_COORDINATES[2]  = Integer.parseInt(propertySplit[2]);
-	
-	                        TVT_EVENT_MIN_PLAYERS_IN_TEAMS              = Integer.parseInt(L2JModSettings.getProperty("TvTEventMinPlayersInTeams", "1"));
-	                        TVT_EVENT_MAX_PLAYERS_IN_TEAMS              = Integer.parseInt(L2JModSettings.getProperty("TvTEventMaxPlayersInTeams", "20"));
-	                        TVT_EVENT_MIN_LVL							= (byte)Integer.parseInt(L2JModSettings.getProperty("TvTEventMinPlayerLevel", "1"));
-	                        TVT_EVENT_MAX_LVL							= (byte)Integer.parseInt(L2JModSettings.getProperty("TvTEventMaxPlayerLevel", "80"));
-	                        TVT_EVENT_RESPAWN_TELEPORT_DELAY            = Integer.parseInt(L2JModSettings.getProperty("TvTEventRespawnTeleportDelay", "20"));
-	                        TVT_EVENT_START_LEAVE_TELEPORT_DELAY        = Integer.parseInt(L2JModSettings.getProperty("TvTEventStartLeaveTeleportDelay", "20"));
-	
-	                        TVT_EVENT_TEAM_1_NAME                       = L2JModSettings.getProperty("TvTEventTeam1Name", "Team1");
-	                        propertySplit                               = L2JModSettings.getProperty("TvTEventTeam1Coordinates", "0,0,0").split(",");
-	
-	                        if (propertySplit.length < 3)
-	                        {
-	                            TVT_EVENT_ENABLED = false;
-	                            _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam1Coordinates");
-	                        }
-	                        else
-	                        {
-	                            TVT_EVENT_TEAM_1_COORDINATES[0]    = Integer.parseInt(propertySplit[0]);
-	                            TVT_EVENT_TEAM_1_COORDINATES[1]    = Integer.parseInt(propertySplit[1]);
-	                            TVT_EVENT_TEAM_1_COORDINATES[2]    = Integer.parseInt(propertySplit[2]);
-	
-	                            TVT_EVENT_TEAM_2_NAME            = L2JModSettings.getProperty("TvTEventTeam2Name", "Team2");
-	                            propertySplit                    = L2JModSettings.getProperty("TvTEventTeam2Coordinates", "0,0,0").split(",");
-	
-	                            if (propertySplit.length < 3)
-	                            {
-	                                TVT_EVENT_ENABLED= false;
-	                                _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam2Coordinates");
-	                            }
-	                            else
-	                            {
-	                                TVT_EVENT_TEAM_2_COORDINATES[0]    = Integer.parseInt(propertySplit[0]);
-	                                TVT_EVENT_TEAM_2_COORDINATES[1]    = Integer.parseInt(propertySplit[1]);
-	                                TVT_EVENT_TEAM_2_COORDINATES[2]    = Integer.parseInt(propertySplit[2]);
-	                                propertySplit                    = L2JModSettings.getProperty("TvTEventReward", "57,100000").split(";");
-	
-	                                for (String reward : propertySplit)
-	                                {
-	                                	String[] rewardSplit = reward.split(",");
-	
-	                                	if (rewardSplit.length != 2)
-	                                	    _log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"", reward, "\""));
-	                                	else
-	                                	{
-	                                		try
-	                                		{
-	                                			TVT_EVENT_REWARDS.add(new int[]{Integer.parseInt(rewardSplit[0]), Integer.parseInt(rewardSplit[1])});
-	                                		}
-	                                		catch (NumberFormatException nfe)
-	                                		{
-	                                			if (!reward.isEmpty())
-	                                			    _log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"", reward, "\""));
-	                                		}
-	                                	}
-	                                }
-	
-	                                TVT_EVENT_TARGET_TEAM_MEMBERS_ALLOWED	= Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventTargetTeamMembersAllowed", "true"));
-	                                TVT_EVENT_SCROLL_ALLOWED				= Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventScrollAllowed", "false"));
-	                                TVT_EVENT_POTIONS_ALLOWED				= Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventPotionsAllowed", "false"));
-	                        		TVT_EVENT_SUMMON_BY_ITEM_ALLOWED		= Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventSummonByItemAllowed", "false"));
-	                        		TVT_REWARD_TEAM_TIE						= Boolean.parseBoolean(L2JModSettings.getProperty("TvTRewardTeamTie", "false"));
-	                        		propertySplit							= L2JModSettings.getProperty("TvTDoorsToOpen", "").split(";");
-	
-	                        		for (String door : propertySplit)
-	                        		{
-	                        			try
-	                        			{
-	                        				TVT_DOORS_IDS_TO_OPEN.add(Integer.parseInt(door));
-	                        			}
-	                        			catch (NumberFormatException nfe)
-	                        			{
-	                        				if (!door.equals(""))
-	                        				    _log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToOpen \"", door, "\""));
-	                        			}
-	                        		}
-	                        		
-	                        		propertySplit							= L2JModSettings.getProperty("TvTDoorsToClose", "").split(";");
-	                        		
-	                        		for (String door : propertySplit)
-	                        		{
-	                        			try
-	                        			{
-	                        				TVT_DOORS_IDS_TO_CLOSE.add(Integer.parseInt(door));
-	                        			}
-	                        			catch (NumberFormatException nfe)
-	                        			{
-	                        				if (!door.isEmpty())
-	                        				    _log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToClose \"", door, "\""));
-	                        			}
-	                        		}
-	                            }
-	                        }
-	                    }
-	                }
-	                
-	                BANKING_SYSTEM_ENABLED	= Boolean.parseBoolean(L2JModSettings.getProperty("BankingEnabled", "false"));
-	                BANKING_SYSTEM_GOLDBARS	= Integer.parseInt(L2JModSettings.getProperty("BankingGoldbarCount", "1"));
-	                BANKING_SYSTEM_ADENA	= Integer.parseInt(L2JModSettings.getProperty("BankingAdenaCount", "500000000"));
-	                
-	                L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(L2JModSettings.getProperty("EnableManaPotionSupport", "false"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+L2JMOD_CONFIG_FILE+" File.");
-	            }
-	            // pvp config
-	            try
-	            {
-	                Properties pvpSettings      = new Properties();
-	                is                          = new FileInputStream(new File(PVP_CONFIG_FILE));
-	                pvpSettings.load(is);
-	                
-	                /* KARMA SYSTEM */
-	                KARMA_MIN_KARMA     = Integer.parseInt(pvpSettings.getProperty("MinKarma", "240"));
-	                KARMA_MAX_KARMA     = Integer.parseInt(pvpSettings.getProperty("MaxKarma", "10000"));
-	                KARMA_XP_DIVIDER    = Integer.parseInt(pvpSettings.getProperty("XPDivider", "260"));
-	                KARMA_LOST_BASE     = Integer.parseInt(pvpSettings.getProperty("BaseKarmaLost", "0"));
-	
-	                KARMA_DROP_GM               = Boolean.parseBoolean(pvpSettings.getProperty("CanGMDropEquipment", "false"));
-	                KARMA_AWARD_PK_KILL         = Boolean.parseBoolean(pvpSettings.getProperty("AwardPKKillPVPPoint", "true"));
-	
-	                KARMA_PK_LIMIT                      = Integer.parseInt(pvpSettings.getProperty("MinimumPKRequiredToDrop", "5"));
-	
-	                KARMA_NONDROPPABLE_PET_ITEMS    = pvpSettings.getProperty("ListOfPetItems", "2375,3500,3501,3502,4422,4423,4424,4425,6648,6649,6650,9882");
-	                KARMA_NONDROPPABLE_ITEMS        = pvpSettings.getProperty("ListOfNonDroppableItems", "57,1147,425,1146,461,10,2368,7,6,2370,2369,6842,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621,7694,8181,5575,7694,9388,9389,9390");
-	
-	                KARMA_LIST_NONDROPPABLE_PET_ITEMS = new FastList<Integer>();
-	                for (String id : KARMA_NONDROPPABLE_PET_ITEMS.split(",")) {
-	                    KARMA_LIST_NONDROPPABLE_PET_ITEMS.add(Integer.parseInt(id));
-	                }
-	
-	                KARMA_LIST_NONDROPPABLE_ITEMS = new FastList<Integer>();
-	                for (String id : KARMA_NONDROPPABLE_ITEMS.split(",")) {
-	                    KARMA_LIST_NONDROPPABLE_ITEMS.add(Integer.parseInt(id));
-	                }
-	
-	                PVP_NORMAL_TIME = Integer.parseInt(pvpSettings.getProperty("PvPVsNormalTime", "120000"));
-	                PVP_PVP_TIME = Integer.parseInt(pvpSettings.getProperty("PvPVsPvPTime", "60000"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+PVP_CONFIG_FILE+" File.");
-	            }
-	
-	            try
-	            {
-	                Properties Settings         = new Properties();
-	                is                          = new FileInputStream(HEXID_FILE);
-	                Settings.load(is);
-	                SERVER_ID = Integer.parseInt(Settings.getProperty("ServerID"));
-	                HEX_ID = new BigInteger(Settings.getProperty("HexID"), 16).toByteArray();
-	            }
-	            catch (Exception e)
-	            {
-	                _log.warning("Could not load HexID file ("+HEXID_FILE+"). Hopefully login will give us one.");
-	            }
-            }
-            finally
-            {
-            	try
-            	{
-            		is.close();
-            	}
-            	catch (Exception e)
-            	{
-            	}
-            }
-        }
-        else if(Server.serverMode == Server.MODE_LOGINSERVER)
-        {
-            _log.info("loading login config");
-            InputStream is = null;
-            try
-            {
-	            try
-	            {
-	                Properties serverSettings    = new Properties();
-	                is                           = new FileInputStream(new File(LOGIN_CONFIGURATION_FILE));
-	                serverSettings.load(is);
-	                
-	                GAME_SERVER_LOGIN_HOST = serverSettings.getProperty("LoginHostname","*");
-	                GAME_SERVER_LOGIN_PORT = Integer.parseInt(serverSettings.getProperty("LoginPort","9013"));
-	
-	                LOGIN_BIND_ADDRESS     = serverSettings.getProperty("LoginserverHostname", "*");
-	                PORT_LOGIN            = Integer.parseInt(serverSettings.getProperty("LoginserverPort", "2106"));
-	
-	                DEBUG        = Boolean.parseBoolean(serverSettings.getProperty("Debug", "false"));
-	                PACKET_HANDLER_DEBUG	= Boolean.parseBoolean(serverSettings.getProperty("PacketHandlerDebug", "false"));
-	                DEVELOPER    = Boolean.parseBoolean(serverSettings.getProperty("Developer", "false"));
-	                ASSERT       = Boolean.parseBoolean(serverSettings.getProperty("Assert", "false"));
-	
-	                ACCEPT_NEW_GAMESERVER = Boolean.parseBoolean(serverSettings.getProperty("AcceptNewGameServer","True"));
-	                REQUEST_ID = Integer.parseInt(serverSettings.getProperty("RequestServerID","0"));
-	                ACCEPT_ALTERNATE_ID = Boolean.parseBoolean(serverSettings.getProperty("AcceptAlternateID","True"));
-	
-	                LOGIN_TRY_BEFORE_BAN    = Integer.parseInt(serverSettings.getProperty("LoginTryBeforeBan", "10"));
-	                LOGIN_BLOCK_AFTER_BAN   = Integer.parseInt(serverSettings.getProperty("LoginBlockAfterBan", "600"));
-	                
-	                LOG_LOGIN_CONTROLLER 	= Boolean.parseBoolean(serverSettings.getProperty("LogLoginController", "true"));
-	                
-	                DATAPACK_ROOT    = new File(serverSettings.getProperty("DatapackRoot", ".")).getCanonicalFile(); //FIXME: in login?
-	
-	                INTERNAL_HOSTNAME   = serverSettings.getProperty("InternalHostname", "localhost");
-	                EXTERNAL_HOSTNAME   = serverSettings.getProperty("ExternalHostname", "localhost");
-	
-	                DATABASE_DRIVER             = serverSettings.getProperty("Driver", "com.mysql.jdbc.Driver");
-	                DATABASE_URL                = serverSettings.getProperty("URL", "jdbc:mysql://localhost/l2jdb");
-	                DATABASE_LOGIN              = serverSettings.getProperty("Login", "root");
-	                DATABASE_PASSWORD           = serverSettings.getProperty("Password", "");
-	                DATABASE_MAX_CONNECTIONS    = Integer.parseInt(serverSettings.getProperty("MaximumDbConnections", "10"));
-	
-	                SHOW_LICENCE = Boolean.parseBoolean(serverSettings.getProperty("ShowLicence", "true"));
-	                IP_UPDATE_TIME                = Integer.parseInt(serverSettings.getProperty("IpUpdateTime","15"));
-	                FORCE_GGAUTH = Boolean.parseBoolean(serverSettings.getProperty("ForceGGAuth", "false"));
-	
-	                AUTO_CREATE_ACCOUNTS = Boolean.parseBoolean(serverSettings.getProperty("AutoCreateAccounts","True"));
-	
-	                FLOOD_PROTECTION = Boolean.parseBoolean(serverSettings.getProperty("EnableFloodProtection","True"));
-	                FAST_CONNECTION_LIMIT = Integer.parseInt(serverSettings.getProperty("FastConnectionLimit","15"));
-	                NORMAL_CONNECTION_TIME = Integer.parseInt(serverSettings.getProperty("NormalConnectionTime","700"));
-	                FAST_CONNECTION_TIME = Integer.parseInt(serverSettings.getProperty("FastConnectionTime","350"));
-	                MAX_CONNECTION_PER_IP = Integer.parseInt(serverSettings.getProperty("MaxConnectionPerIP","50"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+CONFIGURATION_FILE+" File.");
-	            }
-	
-	            // telnet
-	            try
-	            {
-	                Properties telnetSettings   = new Properties();
-	                is                          = new FileInputStream(new File(TELNET_FILE));
-	                telnetSettings.load(is);
-	                
-	                IS_TELNET_ENABLED   = Boolean.parseBoolean(telnetSettings.getProperty("EnableTelnet", "false"));
-	            }
-	            catch (Exception e)
-	            {
-	                e.printStackTrace();
-	                throw new Error("Failed to Load "+TELNET_FILE+" File.");
-	            }
-            }
-            finally
-            {
-            	try
-            	{
-            		is.close();
-            	}
-            	catch(Exception e)
-            	{
-            	}
-            }
-        }
-        else
-        {
-            _log.severe("Could not Load Config: server mode was not set");
-        }
-
-    }
-
-    /**
-     * Set a new value to a game parameter from the admin console.
-     * @param pName (String) : name of the parameter to change
-     * @param pValue (String) : new value of the parameter
-     * @return boolean : true if modification has been made
-     * @link useAdminCommand
-     */
-    public static boolean setParameterValue(String pName, String pValue)
-    {
-        // Server settings
-        if (pName.equalsIgnoreCase("RateXp")) RATE_XP = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateSp")) RATE_SP = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RatePartyXp")) RATE_PARTY_XP = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RatePartySp")) RATE_PARTY_SP = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateQuestsReward")) RATE_QUESTS_REWARD = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateDropAdena")) RATE_DROP_ADENA = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateConsumableCost")) RATE_CONSUMABLE_COST = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateExtractFish")) RATE_EXTR_FISH = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateDropItems")) RATE_DROP_ITEMS = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateRaidDropItems")) RATE_DROP_ITEMS_BY_RAID = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateDropSpoil")) RATE_DROP_SPOIL = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateDropManor")) RATE_DROP_MANOR = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("RateDropQuest")) RATE_DROP_QUEST = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateKarmaExpLost")) RATE_KARMA_EXP_LOST = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("RateSiegeGuardsPrice")) RATE_SIEGE_GUARDS_PRICE = Float.parseFloat(pValue);
-
-        else if (pName.equalsIgnoreCase("PlayerDropLimit")) PLAYER_DROP_LIMIT = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("PlayerRateDrop")) PLAYER_RATE_DROP = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("PlayerRateDropItem")) PLAYER_RATE_DROP_ITEM = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("PlayerRateDropEquip")) PLAYER_RATE_DROP_EQUIP = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("PlayerRateDropEquipWeapon")) PLAYER_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("KarmaDropLimit")) KARMA_DROP_LIMIT = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("KarmaRateDrop")) KARMA_RATE_DROP = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("KarmaRateDropItem")) KARMA_RATE_DROP_ITEM = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("KarmaRateDropEquip")) KARMA_RATE_DROP_EQUIP = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("KarmaRateDropEquipWeapon")) KARMA_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("AutoDestroyDroppedItemAfter")) AUTODESTROY_ITEM_AFTER = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("DestroyPlayerDroppedItem")) DESTROY_DROPPED_PLAYER_ITEM = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("DestroyEquipableItem")) DESTROY_EQUIPABLE_PLAYER_ITEM = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("SaveDroppedItem")) SAVE_DROPPED_ITEM = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("EmptyDroppedItemTableAfterLoad")) EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("SaveDroppedItemInterval")) SAVE_DROPPED_ITEM_INTERVAL = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ClearDroppedItemTable")) CLEAR_DROPPED_ITEM_TABLE = Boolean.parseBoolean(pValue);
-
-        else if (pName.equalsIgnoreCase("PreciseDropCalculation")) PRECISE_DROP_CALCULATION = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("MultipleItemDrop")) MULTIPLE_ITEM_DROP = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("CoordSynchronize")) COORD_SYNCHRONIZE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("DeleteCharAfterDays")) DELETE_DAYS = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("AllowDiscardItem")) ALLOW_DISCARDITEM = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowFreight")) ALLOW_FREIGHT = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowWarehouse")) ALLOW_WAREHOUSE = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowWear")) ALLOW_WEAR = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("WearDelay")) WEAR_DELAY = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("WearPrice")) WEAR_PRICE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AllowWater")) ALLOW_WATER = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowRentPet")) ALLOW_RENTPET = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowBoat")) ALLOW_BOAT = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowCursedWeapons")) ALLOW_CURSED_WEAPONS = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowManor")) ALLOW_MANOR = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowPetWalkers")) ALLOW_PET_WALKERS = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("BypassValidation")) BYPASS_VALIDATION = Boolean.parseBoolean(pValue);
-
-        else if (pName.equalsIgnoreCase("CommunityType")) COMMUNITY_TYPE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("BBSShowPlayerList")) BBS_SHOW_PLAYERLIST = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("BBSDefault")) BBS_DEFAULT = pValue;
-        else if (pName.equalsIgnoreCase("ShowLevelOnCommunityBoard")) SHOW_LEVEL_COMMUNITYBOARD = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("ShowStatusOnCommunityBoard")) SHOW_STATUS_COMMUNITYBOARD = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("NamePageSizeOnCommunityBoard")) NAME_PAGE_SIZE_COMMUNITYBOARD = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("NamePerRowOnCommunityBoard")) NAME_PER_ROW_COMMUNITYBOARD = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("ShowServerNews")) SERVER_NEWS = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("ShowNpcLevel")) SHOW_NPC_LVL = Boolean.parseBoolean(pValue);
-
-        else if (pName.equalsIgnoreCase("ForceInventoryUpdate")) FORCE_INVENTORY_UPDATE = Boolean.parseBoolean(pValue);
-
-        else if (pName.equalsIgnoreCase("AutoDeleteInvalidQuestData")) AUTODELETE_INVALID_QUEST_DATA = Boolean.parseBoolean(pValue);
-
-        else if (pName.equalsIgnoreCase("MaximumOnlineUsers")) MAXIMUM_ONLINE_USERS = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("ZoneTown")) ZONE_TOWN = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("MaximumUpdateDistance")) MINIMUM_UPDATE_DISTANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MinimumUpdateTime")) MINIMUN_UPDATE_TIME = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("CheckKnownList")) CHECK_KNOWN = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("KnownListForgetDelay")) KNOWNLIST_FORGET_DELAY = Integer.parseInt(pValue);
-
-        // Other settings
-        else if (pName.equalsIgnoreCase("UseDeepBlueDropRules")) DEEPBLUE_DROP_RULES = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowGuards")) GUARD_ATTACK_AGGRO_MOB = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("CancelLesserEffect")) EFFECT_CANCELING = Boolean.parseBoolean(pValue);
-
-        else if (pName.equalsIgnoreCase("MaximumSlotsForNoDwarf")) INVENTORY_MAXIMUM_NO_DWARF = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaximumSlotsForDwarf")) INVENTORY_MAXIMUM_DWARF = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaximumSlotsForGMPlayer")) INVENTORY_MAXIMUM_GM = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("MaximumWarehouseSlotsForNoDwarf")) WAREHOUSE_SLOTS_NO_DWARF = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaximumWarehouseSlotsForDwarf")) WAREHOUSE_SLOTS_DWARF = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaximumWarehouseSlotsForClan")) WAREHOUSE_SLOTS_CLAN = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaximumFreightSlots")) FREIGHT_SLOTS = Integer.parseInt(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("EnchantChanceJewelry")) ENCHANT_CHANCE_JEWELRY = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("EnchantMaxWeapon")) ENCHANT_MAX_WEAPON = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("EnchantMaxArmor")) ENCHANT_MAX_ARMOR = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("EnchantMaxJewelry")) ENCHANT_MAX_JEWELRY = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("EnchantSafeMax")) ENCHANT_SAFE_MAX = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("EnchantSafeMaxFull")) ENCHANT_SAFE_MAX_FULL = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("AugmentationNGSkillChance")) AUGMENTATION_NG_SKILL_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AugmentationNGGlowChance")) AUGMENTATION_NG_GLOW_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AugmentationMidSkillChance")) AUGMENTATION_MID_SKILL_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AugmentationMidGlowChance")) AUGMENTATION_MID_GLOW_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AugmentationHighSkillChance")) AUGMENTATION_HIGH_SKILL_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AugmentationHighGlowChance")) AUGMENTATION_HIGH_GLOW_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AugmentationTopSkillChance")) AUGMENTATION_TOP_SKILL_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AugmentationTopGlowChance")) AUGMENTATION_TOP_GLOW_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AugmentationBaseStatChance")) AUGMENTATION_BASESTAT_CHANCE = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("HpRegenMultiplier")) HP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("MpRegenMultiplier")) MP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("CpRegenMultiplier")) CP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
-
-        else if (pName.equalsIgnoreCase("RaidHpRegenMultiplier")) RAID_HP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("RaidMpRegenMultiplier")) RAID_MP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("RaidPDefenceMultiplier")) RAID_PDEFENCE_MULTIPLIER = Double.parseDouble(pValue) /100;
-        else if (pName.equalsIgnoreCase("RaidMDefenceMultiplier")) RAID_MDEFENCE_MULTIPLIER = Double.parseDouble(pValue) /100;
-        else if (pName.equalsIgnoreCase("RaidMinionRespawnTime")) RAID_MINION_RESPAWN_TIMER =Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("StartingAdena")) STARTING_ADENA = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("UnstuckInterval")) UNSTUCK_INTERVAL = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("PlayerSpawnProtection")) PLAYER_SPAWN_PROTECTION = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("PlayerFakeDeathUpProtection")) PLAYER_FAKEDEATH_UP_PROTECTION = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("RestorePlayerInstance")) RESTORE_PLAYER_INSTANCE = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AllowSummonToInstance")) ALLOW_SUMMON_TO_INSTANCE = Boolean.parseBoolean(pValue);
-        
-        else if (pName.equalsIgnoreCase("PartyXpCutoffMethod")) PARTY_XP_CUTOFF_METHOD = pValue;
-        else if (pName.equalsIgnoreCase("PartyXpCutoffPercent")) PARTY_XP_CUTOFF_PERCENT = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("PartyXpCutoffLevel")) PARTY_XP_CUTOFF_LEVEL = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("RespawnRestoreCP")) RESPAWN_RESTORE_CP = Double.parseDouble(pValue) / 100;
-        else if (pName.equalsIgnoreCase("RespawnRestoreHP")) RESPAWN_RESTORE_HP = Double.parseDouble(pValue) / 100;
-        else if (pName.equalsIgnoreCase("RespawnRestoreMP")) RESPAWN_RESTORE_MP = Double.parseDouble(pValue) / 100;
-
-        else if (pName.equalsIgnoreCase("MaxPvtStoreSellSlotsDwarf")) MAX_PVTSTORESELL_SLOTS_DWARF = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaxPvtStoreSellSlotsOther")) MAX_PVTSTORESELL_SLOTS_OTHER = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaxPvtStoreBuySlotsDwarf")) MAX_PVTSTOREBUY_SLOTS_DWARF = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaxPvtStoreBuySlotsOther")) MAX_PVTSTOREBUY_SLOTS_OTHER = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("StoreSkillCooltime")) STORE_SKILL_COOLTIME = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AnnounceMammonSpawn")) ANNOUNCE_MAMMON_SPAWN = Boolean.parseBoolean(pValue);
-
-        // Alternative settings
-        else if (pName.equalsIgnoreCase("AltGameTiredness")) ALT_GAME_TIREDNESS = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltGameCreation")) ALT_GAME_CREATION = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltGameCreationSpeed")) ALT_GAME_CREATION_SPEED = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("AltGameCreationXpRate")) ALT_GAME_CREATION_XP_RATE = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("AltGameCreationRareXpSpRate")) ALT_GAME_CREATION_RARE_XPSP_RATE = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("AltGameCreationSpRate")) ALT_GAME_CREATION_SP_RATE = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("AltWeightLimit")) ALT_WEIGHT_LIMIT = Double.parseDouble(pValue);
-        else if (pName.equalsIgnoreCase("AltBlacksmithUseRecipes")) ALT_BLACKSMITH_USE_RECIPES = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltGameSkillLearn")) ALT_GAME_SKILL_LEARN = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("RemoveCastleCirclets")) REMOVE_CASTLE_CIRCLETS = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("ReputationScorePerKill")) REPUTATION_SCORE_PER_KILL = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AltGameCancelByHit"))
-        {
-            ALT_GAME_CANCEL_BOW     = pValue.equalsIgnoreCase("bow") || pValue.equalsIgnoreCase("all");
-            ALT_GAME_CANCEL_CAST    = pValue.equalsIgnoreCase("cast") || pValue.equalsIgnoreCase("all");
-        }
-
-        else if (pName.equalsIgnoreCase("AltShieldBlocks")) ALT_GAME_SHIELD_BLOCKS = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltPerfectShieldBlockRate")) ALT_PERFECT_SHLD_BLOCK = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("Delevel")) ALT_GAME_DELEVEL = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("MagicFailures")) ALT_GAME_MAGICFAILURES = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltMobAgroInPeaceZone")) ALT_MOB_AGRO_IN_PEACEZONE = Boolean.parseBoolean(pValue);
-
-        else if (pName.equalsIgnoreCase("AltGameExponentXp")) ALT_GAME_EXPONENT_XP = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("AltGameExponentSp")) ALT_GAME_EXPONENT_SP = Float.parseFloat(pValue);
-
-        else if (pName.equalsIgnoreCase("AllowClassMasters")) ALLOW_CLASS_MASTERS = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltGameFreights")) ALT_GAME_FREIGHTS = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltGameFreightPrice")) ALT_GAME_FREIGHT_PRICE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AltPartyRange")) ALT_PARTY_RANGE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AltPartyRange2")) ALT_PARTY_RANGE2 = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("CraftingEnabled")) IS_CRAFTING_ENABLED = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("LifeCrystalNeeded")) LIFE_CRYSTAL_NEEDED = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("SpBookNeeded")) SP_BOOK_NEEDED = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AutoLoot")) AUTO_LOOT = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AutoLootHerbs")) AUTO_LOOT_HERBS = Boolean.parseBoolean(pValue);
-
-        else if (pName.equalsIgnoreCase("AltKarmaPlayerCanBeKilledInPeaceZone")) ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltKarmaPlayerCanShop")) ALT_GAME_KARMA_PLAYER_CAN_SHOP = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltKarmaPlayerCanUseGK")) ALT_GAME_KARMA_PLAYER_CAN_USE_GK = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltKarmaPlayerCanTeleport")) ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltKarmaPlayerCanTrade")) ALT_GAME_KARMA_PLAYER_CAN_TRADE = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltKarmaPlayerCanUseWareHouse")) ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("MaxPersonalFamePoints")) MAX_PERSONAL_FAME_POINTS = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("FortressZoneFameTaskFrequency")) FORTRESS_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("FortressZoneFameAquirePoints")) FORTRESS_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("CastleZoneFameTaskFrequency")) CASTLE_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("CastleZoneFameAquirePoints")) CASTLE_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("AltCastleForDawn")) ALT_GAME_CASTLE_DAWN = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltCastleForDusk")) ALT_GAME_CASTLE_DUSK = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltRequireClanCastle")) ALT_GAME_REQUIRE_CLAN_CASTLE = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltFreeTeleporting")) ALT_GAME_FREE_TELEPORT = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltSubClassWithoutQuests")) ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(pValue);
-        //else if (pName.equalsIgnoreCase("AltNewCharAlwaysIsNewbie")) ALT_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AltMembersCanWithdrawFromClanWH")) ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("DwarfRecipeLimit")) DWARF_RECIPE_LIMIT = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("CommonRecipeLimit")) COMMON_RECIPE_LIMIT = Integer.parseInt(pValue);
-
-        //ChampionMobs L2JMOD
-        else if (pName.equalsIgnoreCase("ChampionEnable")) L2JMOD_CHAMPION_ENABLE =  Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("ChampionFrequency")) L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ChampionMinLevel")) L2JMOD_CHAMP_MIN_LVL = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ChampionMaxLevel")) L2JMOD_CHAMP_MAX_LVL = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ChampionHp")) L2JMOD_CHAMPION_HP = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ChampionHpRegen")) L2JMOD_CHAMPION_HP_REGEN = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("ChampionRewards")) L2JMOD_CHAMPION_REWARDS = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ChampionAdenasRewards")) L2JMOD_CHAMPION_ADENAS_REWARDS = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("ChampionAtk")) L2JMOD_CHAMPION_ATK = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("ChampionSpdAtk")) L2JMOD_CHAMPION_SPD_ATK = Float.parseFloat(pValue);
-        else if (pName.equalsIgnoreCase("ChampionRewardLowerLvlItemChance")) L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ChampionRewardHigherLvlItemChance")) L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ChampionRewardItemID")) L2JMOD_CHAMPION_REWARD_ID = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("ChampionRewardItemQty")) L2JMOD_CHAMPION_REWARD_QTY = Integer.parseInt(pValue);
-
-        // L2JMOD Wedding System
-        else if (pName.equalsIgnoreCase("AllowWedding")) L2JMOD_ALLOW_WEDDING = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("WeddingPrice")) L2JMOD_WEDDING_PRICE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("WeddingPunishInfidelity")) L2JMOD_WEDDING_PUNISH_INFIDELITY = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("WeddingTeleport")) L2JMOD_WEDDING_TELEPORT = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("WeddingTeleportPrice")) L2JMOD_WEDDING_TELEPORT_PRICE = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("WeddingTeleportDuration")) L2JMOD_WEDDING_TELEPORT_DURATION = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("WeddingAllowSameSex")) L2JMOD_WEDDING_SAMESEX = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("WeddingFormalWear")) L2JMOD_WEDDING_FORMALWEAR = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("WeddingDivorceCosts")) L2JMOD_WEDDING_DIVORCE_COSTS = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("TvTEventEnabled")) TVT_EVENT_ENABLED = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("TvTEventInterval")) TVT_EVENT_INTERVAL = pValue.split(",");
-        else if (pName.equalsIgnoreCase("TvTEventParticipationTime")) TVT_EVENT_PARTICIPATION_TIME = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("TvTEventRunningTime")) TVT_EVENT_RUNNING_TIME = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("TvTEventParticipationNpcId")) TVT_EVENT_PARTICIPATION_NPC_ID = Integer.parseInt(pValue);
-        
-        // L2JMOD Warehouse Sorting
-        else if (pName.equalsIgnoreCase("EnableWarehouseSortingClan")) L2JMOD_ENABLE_WAREHOUSESORTING_CLAN = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("EnableWarehouseSortingPrivate")) L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("EnableWarehouseSortingFreight")) L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT = Boolean.parseBoolean(pValue);
-        
-        // L2JMod Mana potion
-        else if (pName.equalsIgnoreCase("EnableManaPotionSupport")) L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(pValue);
-
-        // PvP settings
-        else if (pName.equalsIgnoreCase("MinKarma")) KARMA_MIN_KARMA = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("MaxKarma")) KARMA_MAX_KARMA = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("XPDivider")) KARMA_XP_DIVIDER = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("BaseKarmaLost")) KARMA_LOST_BASE = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("CanGMDropEquipment")) KARMA_DROP_GM = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("AwardPKKillPVPPoint")) KARMA_AWARD_PK_KILL = Boolean.parseBoolean(pValue);
-        else if (pName.equalsIgnoreCase("MinimumPKRequiredToDrop")) KARMA_PK_LIMIT = Integer.parseInt(pValue);
-
-        else if (pName.equalsIgnoreCase("PvPVsNormalTime")) PVP_NORMAL_TIME = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("PvPVsPvPTime")) PVP_PVP_TIME = Integer.parseInt(pValue);
-        else if (pName.equalsIgnoreCase("GlobalChat")) DEFAULT_GLOBAL_CHAT = pValue;
-        else if (pName.equalsIgnoreCase("TradeChat"))  DEFAULT_TRADE_CHAT = pValue;
-        else if (pName.equalsIgnoreCase("MenuStyle"))  GM_ADMIN_MENU_STYLE = pValue;
-        else return false;
-        return true;
-    }
-
-    // it has no instances
-    private Config() {}
-
-    /**
-     * Save hexadecimal ID of the server in the properties file.
-     * @param string (String) : hexadecimal ID of the server to store
-     * @see HEXID_FILE
-     * @see saveHexid(String string, String fileName)
-     * @link LoginServerThread
-     */
-    public static void saveHexid(int serverId, String string)
-    {
-        Config.saveHexid(serverId, string, HEXID_FILE);
-    }
-
-    /**
-     * Save hexadecimal ID of the server in the properties file.
-     * @param hexId (String) : hexadecimal ID of the server to store
-     * @param fileName (String) : name of the properties file
-     */
-    public static void saveHexid(int serverId, String hexId, String fileName)
-    {
-        try
-        {
-            Properties hexSetting = new Properties();
-            File file = new File(fileName);
-            //Create a new empty file only if it doesn't exist
-            file.createNewFile();
-            OutputStream out = new FileOutputStream(file);
-            hexSetting.setProperty("ServerID",String.valueOf(serverId));
-            hexSetting.setProperty("HexID",hexId);
-            hexSetting.store(out,"the hexID to auth into login");
-            out.close();
-        }
-        catch (Exception e)
-        {
-            _log.warning(StringUtil.concat("Failed to save hex id to ", fileName, " File."));
-            e.printStackTrace();
-        }
-    }
 
+	//--------------------------------------------------
+	// L2J Property File Definitions
+	//--------------------------------------------------
+	public static final String CHARACTER_CONFIG_FILE = "./config/Character.properties";
+	public static final String EXTENSIONS_CONFIG_FILE = "./config/extensions.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 SIEGE_CONFIGURATION_FILE = "./config/siege.properties";
+	public static final String TELNET_FILE = "./config/telnet.properties";
+
+
+	//--------------------------------------------------
+	// L2J Variable Definitions
+	//--------------------------------------------------
+	public static int MASTERACCESS_LEVEL;
+	public static int MASTERACCESS_NAME_COLOR;
+	public static int MASTERACCESS_TITLE_COLOR;
+	public static boolean ALT_GAME_DELEVEL;
+	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 Map<Integer, Integer> SKILL_DURATION_LIST;
+	public static boolean ENABLE_MODIFY_SKILL_REUSE;
+	public static Map<Integer, Integer> SKILL_REUSE_LIST;
+	public static boolean AUTO_LEARN_SKILLS;
+	public static boolean AUTO_LOOT_HERBS;
+	public static byte BUFFS_MAX_AMOUNT;
+	public static byte DANCES_MAX_AMOUNT;
+	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 ALT_GAME_SHIELD_BLOCKS;
+	public static int ALT_PERFECT_SHLD_BLOCK;
+	public static boolean ALLOW_CLASS_MASTERS;
+	public static boolean LIFE_CRYSTAL_NEEDED;
+	public static boolean SP_BOOK_NEEDED;
+	public static boolean ES_SP_BOOK_NEEDED;
+	public static boolean ALT_GAME_SKILL_LEARN;
+	public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
+	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 byte MAX_SUBCLASS;
+	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 WAREHOUSE_SLOTS_DWARF;
+	public static int WAREHOUSE_SLOTS_NO_DWARF;
+	public static int WAREHOUSE_SLOTS_CLAN;
+	public static int FREIGHT_SLOTS;
+	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 IS_CRAFTING_ENABLED;
+	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 int STARTING_ADENA;
+	public static boolean AUTO_LOOT;
+	public static int UNSTUCK_INTERVAL;
+	public static int PLAYER_SPAWN_PROTECTION;
+	public static boolean RESPAWN_RANDOM_ENABLED;
+	public static int RESPAWN_RANDOM_MAX_OFFSET;
+	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_FREIGHTS;
+	public static int ALT_GAME_FREIGHT_PRICE;
+	public static boolean ALT_GAME_FREE_TELEPORT;
+	public static boolean ALT_RECOMMEND;
+	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;
+
+
+	//--------------------------------------------------
+	// 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;
+
+
+	//--------------------------------------------------
+	// 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;
+
+
+	//--------------------------------------------------
+	// 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 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;
+
+
+	//--------------------------------------------------
+	// General Settings
+	//--------------------------------------------------
+	public static boolean EVERYBODY_HAS_ADMIN_RIGHTS;
+	public static boolean DISPLAY_SERVER_VERSION;
+	public static boolean SERVER_LIST_BRACKET;
+	public static boolean SERVER_LIST_CLOCK;
+	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 BYPASS_VALIDATION;
+	public static boolean GAMEGUARD_ENFORCE;
+	public static boolean GAMEGUARD_PROHIBITACTION;
+	public static boolean LOG_CHAT;
+	public static boolean LOG_ITEMS;
+	public static boolean GMAUDIT;
+	public static boolean LOG_GAME_DAMAGE;
+	public static boolean DEBUG;
+	public static boolean PACKET_HANDLER_DEBUG;
+	public static boolean ASSERT;
+	public static boolean DEVELOPER;
+	public static boolean ACCEPT_GEOEDITOR_CONN;
+	public static boolean TEST_SERVER;
+	public static boolean ALT_DEV_NO_QUESTS;
+	public static boolean ALT_DEV_NO_SPAWNS;
+	public static boolean SERVER_LIST_TESTSERVER;
+	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 PACKET_LIFETIME;
+	public static boolean DEADLOCK_DETECTOR;
+	public static int DEADLOCK_CHECK_INTERVAL;
+	public static boolean RESTART_ON_DEADLOCK;
+	public static int FLOODPROTECTOR_INITIALSIZE;
+	public static boolean ALLOW_DISCARDITEM;
+	public static int AUTODESTROY_ITEM_AFTER;
+	public static int HERB_AUTO_DESTROY_TIME;
+	public static String PROTECTED_ITEMS;
+	public static List<Integer> LIST_PROTECTED_ITEMS = new FastList<Integer>();
+	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 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 GRIDS_ALWAYS_ON;
+	public static int GRID_NEIGHBOR_TURNON_TIME;
+	public static int GRID_NEIGHBOR_TURNOFF_TIME;
+	public static int GEODATA;
+	public static boolean GEODATA_CELLFINDING;
+	public static boolean FORCE_GEODATA;
+	public static boolean MOVE_BASED_KNOWNLIST;
+	public static long KNOWNLIST_UPDATE_INTERVAL;
+	public static int ZONE_TOWN;
+	public static boolean ACTIVATE_POSITION_RECORDER;
+	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_FREIGHT;
+	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 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 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_CLASSED;
+	public static int ALT_OLY_NONCLASSED;
+	public static int ALT_OLY_BATTLE_REWARD_ITEM;
+	public static int ALT_OLY_CLASSED_RITEM_C;
+	public static int ALT_OLY_NONCLASSED_RITEM_C;
+	public static int ALT_OLY_COMP_RITEM;
+	public static int ALT_OLY_GP_PER_POINT;
+	public static int ALT_OLY_MIN_POINT_FOR_EXCH;
+	public static int ALT_OLY_HERO_POINTS;
+	public static boolean ALT_OLY_LOG_FIGHTS;
+	public static boolean ALT_OLY_SHOW_MONTHLY_WINNERS;
+	public static boolean ALT_OLY_ANNOUNCE_GAMES;
+	public static List<Integer> LIST_OLY_RESTRICTED_ITEMS = new FastList<Integer>();
+	public static int ALT_OLY_ENCHANT_LIMIT;
+	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 int ALT_LOTTERY_PRIZE;
+	public static int 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 int ALT_LOTTERY_2_AND_1_NUMBER_PRIZE;
+	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 CUSTOM_SPAWNLIST_TABLE;
+	public static boolean SAVE_GMSPAWN_ON_CUSTOM;
+	public static boolean DELETE_GMSPAWN_ON_CUSTOM;
+	public static boolean CUSTOM_NPC_TABLE;
+	public static boolean CUSTOM_ITEM_TABLES;
+	public static boolean CUSTOM_ARMORSETS_TABLE;
+	public static boolean CUSTOM_TELEPORT_TABLE;
+	public static boolean CUSTOM_DROPLIST_TABLE;
+	public static boolean CUSTOM_MERCHANT_TABLES;
+
+
+	//--------------------------------------------------
+	// 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 TVT_EVENT_ENABLED;
+	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[3];
+	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 = new FastList<int[]>();
+	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 = new ArrayList<Integer>();
+	public static List<Integer> TVT_DOORS_IDS_TO_CLOSE = new ArrayList<Integer>();
+	public static boolean TVT_REWARD_TEAM_TIE;
+	public static byte TVT_EVENT_MIN_LVL;
+	public static byte TVT_EVENT_MAX_LVL;
+	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 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 L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT;
+	public static boolean L2JMOD_ENABLE_MANA_POTIONS_SUPPORT;
+
+
+	//--------------------------------------------------
+	// 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 SHOW_NPC_LVL;
+	public static boolean GUARD_ATTACK_AGGRO_MOB;
+	public static boolean ALLOW_WYVERN_UPGRADER;
+	public static String PET_RENT_NPC;
+	public static List<Integer> LIST_PET_RENT_NPC = new FastList<Integer>();
+	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_MINION_RESPAWN_TIMER;
+	public static float RAID_MIN_RESPAWN_MULTIPLIER;
+	public static float RAID_MAX_RESPAWN_MULTIPLIER;
+	public static int INVENTORY_MAXIMUM_PET;
+
+
+	//--------------------------------------------------
+	// 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 List<Integer> KARMA_LIST_NONDROPPABLE_PET_ITEMS = new FastList<Integer>();
+	public static List<Integer> KARMA_LIST_NONDROPPABLE_ITEMS = new FastList<Integer>();
+
+
+	//--------------------------------------------------
+	// 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_QUESTS_REWARD;
+	public static float RATE_DROP_ADENA;
+	public static float RATE_CONSUMABLE_COST;
+	public static float RATE_EXTR_FISH;
+	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_DROP_QUEST;
+	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_MP_HP_HERBS;
+	public static float RATE_DROP_GREATER_HERBS;
+	public static float RATE_DROP_SUPERIOR_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;
+
+
+	//--------------------------------------------------
+	// 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;
+
+
+	//--------------------------------------------------
+	// 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 MAXIMUM_ONLINE_USERS;
+	public static String CNAME_TEMPLATE;
+	public static String PET_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 int MIN_PROTOCOL_REVISION;
+	public static int MAX_PROTOCOL_REVISION;
+	public static boolean LOG_LOGIN_CONTROLLER;
+
+
+	//--------------------------------------------------
+	// 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 INTERNAL_HOSTNAME;
+	public static String EXTERNAL_HOSTNAME;
+	public static int PATH_NODE_RADIUS;
+	public static int NEW_NODE_ID;
+	public static int SELECTED_NODE_ID;
+	public static int LINKED_NODE_ID;
+	public static String NEW_NODE_TYPE;
+	public static int IP_UPDATE_TIME;
+	public static String SERVER_VERSION;
+	public static String SERVER_BUILD_DATE;
+	public static String DATAPACK_VERSION;
+	public static String NONDROPPABLE_ITEMS;
+	public static List<Integer> LIST_NONDROPPABLE_ITEMS = new FastList<Integer>();
+	public static int PVP_NORMAL_TIME;
+	public static int PVP_PVP_TIME;
+	public static boolean COUNT_PACKETS = false;
+	public static boolean DUMP_PACKET_COUNTS = false;
+	public static int DUMP_INTERVAL_SECONDS = 60;
+	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 int ENCHANT_CHANCE_WEAPON;
+	public static int ENCHANT_CHANCE_ARMOR;
+	public static int ENCHANT_CHANCE_JEWELRY;
+	public static int BLESSED_ENCHANT_CHANCE_WEAPON;
+	public static int BLESSED_ENCHANT_CHANCE_ARMOR;
+	public static int BLESSED_ENCHANT_CHANCE_JEWELRY;
+	public static int ENCHANT_MAX_WEAPON;
+	public static int ENCHANT_MAX_ARMOR;
+	public static int ENCHANT_MAX_JEWELRY;
+	public static int ENCHANT_SAFE_MAX;
+	public static int ENCHANT_SAFE_MAX_FULL;
+	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 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 FORCE_GGAUTH;
+	public static boolean ACCEPT_NEW_GAMESERVER;
+	public static int SERVER_ID;
+	public static byte[] HEX_ID;
+	public static int MINIMUM_UPDATE_DISTANCE;
+	public static int KNOWNLIST_FORGET_DELAY;
+	public static int MINIMUN_UPDATE_TIME;
+	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;
+
+	/**
+	 * 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.
+	 * @see CONFIGURATION_FILE (properties file) for configuring your server.
+	 */
+	public static void load()
+	{
+		if(Server.serverMode == Server.MODE_GAMESERVER)
+		{
+			_log.info("Loading GameServer Configuration Files...");
+			InputStream is = null;
+			try
+			{
+				try
+				{
+					Properties serverSettings = new Properties();
+					is = new FileInputStream(new File(CONFIGURATION_FILE));
+					serverSettings.load(is);
+
+					GAMESERVER_HOSTNAME = serverSettings.getProperty("GameserverHostname");
+					PORT_GAME = Integer.parseInt(serverSettings.getProperty("GameserverPort", "7777"));
+
+					EXTERNAL_HOSTNAME = serverSettings.getProperty("ExternalHostname", "*");
+					INTERNAL_HOSTNAME = serverSettings.getProperty("InternalHostname", "*");
+
+					GAME_SERVER_LOGIN_PORT = Integer.parseInt(serverSettings.getProperty("LoginPort","9014"));
+					GAME_SERVER_LOGIN_HOST = serverSettings.getProperty("LoginHost","127.0.0.1");
+
+					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/l2jdb");
+					DATABASE_LOGIN = serverSettings.getProperty("Login", "root");
+					DATABASE_PASSWORD = serverSettings.getProperty("Password", "");
+					DATABASE_MAX_CONNECTIONS = Integer.parseInt(serverSettings.getProperty("MaximumDbConnections", "10"));
+
+					DATAPACK_ROOT = new File(serverSettings.getProperty("DatapackRoot", ".")).getCanonicalFile();
+
+					CNAME_TEMPLATE = serverSettings.getProperty("CnameTemplate", ".*");
+					PET_NAME_TEMPLATE = serverSettings.getProperty("PetNameTemplate", ".*");
+
+					MAX_CHARACTERS_NUMBER_PER_ACCOUNT = Integer.parseInt(serverSettings.getProperty("CharMaxNumber", "0"));
+					MAXIMUM_ONLINE_USERS = Integer.parseInt(serverSettings.getProperty("MaximumOnlineUsers", "100"));
+
+					MIN_PROTOCOL_REVISION = Integer.parseInt(serverSettings.getProperty("MinProtocolRevision", "660"));
+					MAX_PROTOCOL_REVISION = Integer.parseInt(serverSettings.getProperty("MaxProtocolRevision", "665"));
+
+					if (MIN_PROTOCOL_REVISION > MAX_PROTOCOL_REVISION)
+					{
+						throw new Error("MinProtocolRevision is bigger than MaxProtocolRevision in server configuration file.");
+					}
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+CONFIGURATION_FILE+" File.");
+				}
+
+				// Load Feature Properties file (if exists)
+				try
+				{
+					Properties Feature = new Properties();
+					is = new FileInputStream(new File(FEATURE_CONFIG_FILE));
+					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"));
+
+
+					CL_SET_SIEGE_TIME_LIST = new FastList<String>();
+					SIEGE_HOUR_LIST_MORNING = new FastList<Integer>();
+					SIEGE_HOUR_LIST_AFTERNOON = new FastList<Integer>();
+					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.valueOf(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", "15000"));
+					CS_EXPREG3_FEE = Integer.parseInt(Feature.getProperty("CastleExpRegenerationFeeLvl3", "21000"));
+					CS_EXPREG4_FEE = Integer.parseInt(Feature.getProperty("CastleExpRegenerationFeeLvl4", "30000"));
+
+					FS_TELE_FEE_RATIO = Long.parseLong(Feature.getProperty("FortressTeleportFunctionFeeRatio", "604800000"));
+					FS_TELE1_FEE = Integer.parseInt(Feature.getProperty("FortressTeleportFunctionFeeLvl1", "1000"));
+					FS_TELE2_FEE = Integer.parseInt(Feature.getProperty("FortressTeleportFunctionFeeLvl2", "10000"));
+					FS_SUPPORT_FEE_RATIO = Long.parseLong(Feature.getProperty("FortressSupportFunctionFeeRatio", "86400000"));
+					FS_SUPPORT1_FEE = Integer.parseInt(Feature.getProperty("FortressSupportFeeLvl1", "7000"));
+					FS_SUPPORT2_FEE = Integer.parseInt(Feature.getProperty("FortressSupportFeeLvl2", "17000"));
+					FS_MPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("FortressMpRegenerationFunctionFeeRatio", "86400000"));
+					FS_MPREG1_FEE = Integer.parseInt(Feature.getProperty("FortressMpRegenerationFeeLvl1", "6500"));
+					FS_MPREG2_FEE = Integer.parseInt(Feature.getProperty("FortressMpRegenerationFeeLvl2", "9300"));
+					FS_HPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("FortressHpRegenerationFunctionFeeRatio", "86400000"));
+					FS_HPREG1_FEE = Integer.parseInt(Feature.getProperty("FortressHpRegenerationFeeLvl1", "2000"));
+					FS_HPREG2_FEE = Integer.parseInt(Feature.getProperty("FortressHpRegenerationFeeLvl2", "3500"));
+					FS_EXPREG_FEE_RATIO = Long.parseLong(Feature.getProperty("FortressExpRegenerationFunctionFeeRatio", "86400000"));
+					FS_EXPREG1_FEE = Integer.parseInt(Feature.getProperty("FortressExpRegenerationFeeLvl1", "9000"));
+					FS_EXPREG2_FEE = Integer.parseInt(Feature.getProperty("FortressExpRegenerationFeeLvl2", "10000"));
+
+					ALT_GAME_CASTLE_DAWN = Boolean.parseBoolean(Feature.getProperty("AltCastleForDawn", "True"));
+					ALT_GAME_CASTLE_DUSK = Boolean.parseBoolean(Feature.getProperty("AltCastleForDusk", "True"));
+					ALT_GAME_REQUIRE_CLAN_CASTLE = Boolean.parseBoolean(Feature.getProperty("AltRequireClanCastle", "False"));
+					ALT_FESTIVAL_MIN_PLAYER = Integer.parseInt(Feature.getProperty("AltFestivalMinPlayer", "5"));
+					ALT_MAXIMUM_PLAYER_CONTRIB = Integer.parseInt(Feature.getProperty("AltMaxPlayerContrib", "1000000"));
+					ALT_FESTIVAL_MANAGER_START = Long.parseLong(Feature.getProperty("AltFestivalManagerStart", "120000"));
+					ALT_FESTIVAL_LENGTH = Long.parseLong(Feature.getProperty("AltFestivalLength", "1080000"));
+					ALT_FESTIVAL_CYCLE_LENGTH = Long.parseLong(Feature.getProperty("AltFestivalCycleLength", "2280000"));
+					ALT_FESTIVAL_FIRST_SPAWN = Long.parseLong(Feature.getProperty("AltFestivalFirstSpawn", "120000"));
+					ALT_FESTIVAL_FIRST_SWARM = Long.parseLong(Feature.getProperty("AltFestivalFirstSwarm", "300000"));
+					ALT_FESTIVAL_SECOND_SPAWN = Long.parseLong(Feature.getProperty("AltFestivalSecondSpawn", "540000"));
+					ALT_FESTIVAL_SECOND_SWARM = Long.parseLong(Feature.getProperty("AltFestivalSecondSwarm", "720000"));
+					ALT_FESTIVAL_CHEST_SPAWN = Long.parseLong(Feature.getProperty("AltFestivalChestSpawn", "900000"));
+					ALT_SIEGE_DAWN_GATES_PDEF_MULT = Double.parseDouble(Feature.getProperty("AltDawnGatesPdefMult", "1.1"));
+					ALT_SIEGE_DUSK_GATES_PDEF_MULT = Double.parseDouble(Feature.getProperty("AltDuskGatesPdefMult", "0.8"));
+					ALT_SIEGE_DAWN_GATES_MDEF_MULT = Double.parseDouble(Feature.getProperty("AltDawnGatesMdefMult", "1.1"));
+					ALT_SIEGE_DUSK_GATES_MDEF_MULT = Double.parseDouble(Feature.getProperty("AltDuskGatesMdefMult", "0.8"));
+
+					TAKE_FORT_POINTS = Integer.parseInt(Feature.getProperty("TakeFortPoints", "200"));
+					LOOSE_FORT_POINTS = Integer.parseInt(Feature.getProperty("LooseFortPoints", "400"));
+					TAKE_CASTLE_POINTS = Integer.parseInt(Feature.getProperty("TakeCastlePoints", "1500"));
+					LOOSE_CASTLE_POINTS = Integer.parseInt(Feature.getProperty("LooseCastlePoints", "3000"));
+					CASTLE_DEFENDED_POINTS = Integer.parseInt(Feature.getProperty("CastleDefendedPoints", "750"));
+					FESTIVAL_WIN_POINTS = Integer.parseInt(Feature.getProperty("FestivalOfDarknessWin", "200"));
+					HERO_POINTS = Integer.parseInt(Feature.getProperty("HeroPoints", "1000"));
+					ROYAL_GUARD_COST = Integer.parseInt(Feature.getProperty("CreateRoyalGuardCost", "5000"));
+					KNIGHT_UNIT_COST = Integer.parseInt(Feature.getProperty("CreateKnightUnitCost", "10000"));
+					KNIGHT_REINFORCE_COST = Integer.parseInt(Feature.getProperty("ReinforceKnightUnitCost", "5000"));
+					BALLISTA_POINTS = Integer.parseInt(Feature.getProperty("KillBallistaPoints", "30"));
+					REPUTATION_SCORE_PER_KILL = Integer.parseInt(Feature.getProperty("ReputationScorePerKill", "1"));
+					JOIN_ACADEMY_MIN_REP_SCORE = Integer.parseInt(Feature.getProperty("CompleteAcademyMinPoints", "190"));
+					JOIN_ACADEMY_MAX_REP_SCORE = Integer.parseInt(Feature.getProperty("CompleteAcademyMaxPoints", "650"));
+					RAID_RANKING_1ST = Integer.parseInt(Feature.getProperty("1stRaidRankingPoints", "1250"));
+					RAID_RANKING_2ND = Integer.parseInt(Feature.getProperty("2ndRaidRankingPoints", "900"));
+					RAID_RANKING_3RD = Integer.parseInt(Feature.getProperty("3rdRaidRankingPoints", "700"));
+					RAID_RANKING_4TH = Integer.parseInt(Feature.getProperty("4thRaidRankingPoints", "600"));
+					RAID_RANKING_5TH = Integer.parseInt(Feature.getProperty("5thRaidRankingPoints", "450"));
+					RAID_RANKING_6TH = Integer.parseInt(Feature.getProperty("6thRaidRankingPoints", "350"));
+					RAID_RANKING_7TH = Integer.parseInt(Feature.getProperty("7thRaidRankingPoints", "300"));
+					RAID_RANKING_8TH = Integer.parseInt(Feature.getProperty("8thRaidRankingPoints", "200"));
+					RAID_RANKING_9TH = Integer.parseInt(Feature.getProperty("9thRaidRankingPoints", "150"));
+					RAID_RANKING_10TH = Integer.parseInt(Feature.getProperty("10thRaidRankingPoints", "100"));
+					RAID_RANKING_UP_TO_50TH = Integer.parseInt(Feature.getProperty("UpTo50thRaidRankingPoints", "25"));
+					RAID_RANKING_UP_TO_100TH = Integer.parseInt(Feature.getProperty("UpTo100thRaidRankingPoints", "12"));
+					CLAN_LEVEL_6_COST = Integer.parseInt(Feature.getProperty("ClanLevel6Cost", "10000"));
+					CLAN_LEVEL_7_COST = Integer.parseInt(Feature.getProperty("ClanLevel7Cost", "20000"));
+					CLAN_LEVEL_8_COST = Integer.parseInt(Feature.getProperty("ClanLevel8Cost", "40000"));
+					CLAN_LEVEL_9_COST = Integer.parseInt(Feature.getProperty("ClanLevel9Cost", "40000"));
+					CLAN_LEVEL_10_COST = Integer.parseInt(Feature.getProperty("ClanLevel10Cost", "40000"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+FEATURE_CONFIG_FILE+" File.");
+				}
+
+				// Load Character Properties file (if exists)
+				try
+				{
+					Properties Character = new Properties();
+					is = new FileInputStream(new File(CHARACTER_CONFIG_FILE));
+					Character.load(is);
+
+					MASTERACCESS_LEVEL = Integer.parseInt(Character.getProperty("MasterAccessLevel", "127"));
+					MASTERACCESS_NAME_COLOR = Integer.decode(StringUtil.concat("0x", Character.getProperty("MasterNameColor", "00FF00")));
+					MASTERACCESS_TITLE_COLOR = Integer.decode(StringUtil.concat("0x", Character.getProperty("MasterTitleColor", "00FF00")));
+					ALT_GAME_DELEVEL = Boolean.parseBoolean(Character.getProperty("Delevel", "true"));
+					ALT_WEIGHT_LIMIT = Double.parseDouble(Character.getProperty("AltWeightLimit", "1"));
+					RUN_SPD_BOOST = Integer.parseInt(Character.getProperty("RunSpeedBoost", "0"));
+					DEATH_PENALTY_CHANCE = Integer.parseInt(Character.getProperty("DeathPenaltyChance", "20"));
+					RESPAWN_RESTORE_CP = Double.parseDouble(Character.getProperty("RespawnRestoreCP", "0")) / 100;
+					RESPAWN_RESTORE_HP = Double.parseDouble(Character.getProperty("RespawnRestoreHP", "70")) / 100;
+					RESPAWN_RESTORE_MP = Double.parseDouble(Character.getProperty("RespawnRestoreMP", "70")) / 100;
+					HP_REGEN_MULTIPLIER = Double.parseDouble(Character.getProperty("HpRegenMultiplier", "100")) /100;
+					MP_REGEN_MULTIPLIER = Double.parseDouble(Character.getProperty("MpRegenMultiplier", "100")) /100;
+					CP_REGEN_MULTIPLIER = Double.parseDouble(Character.getProperty("CpRegenMultiplier", "100")) /100;
+					ALT_GAME_TIREDNESS = Boolean.parseBoolean(Character.getProperty("AltGameTiredness", "false"));
+					ENABLE_MODIFY_SKILL_DURATION = Boolean.parseBoolean(Character.getProperty("EnableModifySkillDuration", "false"));
+
+					// Create Map only if enabled
+					if (ENABLE_MODIFY_SKILL_DURATION)
+					{
+						SKILL_DURATION_LIST = new FastMap<Integer, Integer>();
+						String[] propertySplit;
+						propertySplit = Character.getProperty("SkillDurationList", "").split(";");
+						for (String skill : propertySplit)
+						{
+							String[] skillSplit = skill.split(",");
+							if (skillSplit.length != 2)
+								_log.warning(StringUtil.concat("[SkillDurationList]: invalid config property -> SkillDurationList \"", skill, "\""));
+							else
+							{
+								try
+								{
+									SKILL_DURATION_LIST.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1]));
+								}
+								catch (NumberFormatException nfe)
+								{
+									if (!skill.isEmpty())
+									{
+										_log.warning(StringUtil.concat("[SkillDurationList]: invalid config property -> SkillList \"", skillSplit[0], "\"", skillSplit[1]));
+									}
+								}
+							}
+						}
+					}
+					ENABLE_MODIFY_SKILL_REUSE = Boolean.parseBoolean(Character.getProperty("EnableModifySkillReuse", "false"));
+					// Create Map only if enabled
+					if (ENABLE_MODIFY_SKILL_REUSE)
+					{
+						SKILL_REUSE_LIST = new FastMap<Integer, Integer>();
+						String[] propertySplit;
+						propertySplit = Character.getProperty("SkillReuseList", "").split(";");
+						for (String skill : propertySplit)
+						{
+							String[] skillSplit = skill.split(",");
+							if (skillSplit.length != 2)
+								_log.warning(StringUtil.concat("[SkillReuseList]: invalid config property -> SkillReuseList \"", skill, "\""));
+							else
+							{
+								try
+								{
+									SKILL_REUSE_LIST.put(Integer.valueOf(skillSplit[0]), Integer.valueOf(skillSplit[1]));
+								}
+								catch (NumberFormatException nfe)
+								{
+									if (!skill.isEmpty())
+										_log.warning(StringUtil.concat("[SkillReuseList]: invalid config property -> SkillList \"", skillSplit[0], "\"", skillSplit[1]));
+								}
+							}
+						}
+					}
+
+					AUTO_LEARN_SKILLS = Boolean.parseBoolean(Character.getProperty("AutoLearnSkills", "false"));
+					AUTO_LOOT_HERBS = Boolean.parseBoolean(Character.getProperty("AutoLootHerbs", "false"));
+					BUFFS_MAX_AMOUNT = Byte.parseByte(Character.getProperty("maxbuffamount","20"));
+					DANCES_MAX_AMOUNT = Byte.parseByte(Character.getProperty("maxdanceamount","12"));
+					AUTO_LEARN_DIVINE_INSPIRATION = Boolean.parseBoolean(Character.getProperty("AutoLearnDivineInspiration", "false"));
+					ALT_GAME_CANCEL_BOW = Character.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || Character.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
+					ALT_GAME_CANCEL_CAST = Character.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || Character.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
+					EFFECT_CANCELING = Boolean.parseBoolean(Character.getProperty("CancelLesserEffect", "True"));
+					ALT_GAME_MAGICFAILURES = Boolean.parseBoolean(Character.getProperty("MagicFailures", "true"));
+					PLAYER_FAKEDEATH_UP_PROTECTION = Integer.parseInt(Character.getProperty("PlayerFakeDeathUpProtection", "0"));
+					STORE_SKILL_COOLTIME = Boolean.parseBoolean(Character.getProperty("StoreSkillCooltime", "true"));
+					ALT_GAME_SHIELD_BLOCKS = Boolean.parseBoolean(Character.getProperty("AltShieldBlocks", "false"));
+					ALT_PERFECT_SHLD_BLOCK = Integer.parseInt(Character.getProperty("AltPerfectShieldBlockRate", "10"));
+					ALLOW_CLASS_MASTERS = Boolean.parseBoolean(Character.getProperty("AllowClassMasters", "False"));
+					LIFE_CRYSTAL_NEEDED = Boolean.parseBoolean(Character.getProperty("LifeCrystalNeeded", "true"));
+					SP_BOOK_NEEDED = Boolean.parseBoolean(Character.getProperty("SpBookNeeded", "true"));
+					ES_SP_BOOK_NEEDED = Boolean.parseBoolean(Character.getProperty("EnchantSkillSpBookNeeded","true"));
+					ALT_GAME_SKILL_LEARN = Boolean.parseBoolean(Character.getProperty("AltGameSkillLearn", "false"));
+					ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(Character.getProperty("AltSubClassWithoutQuests", "False"));
+					MAX_RUN_SPEED = Integer.parseInt(Character.getProperty("MaxRunSpeed", "250"));
+					MAX_PCRIT_RATE = Integer.parseInt(Character.getProperty("MaxPCritRate", "500"));
+					MAX_MCRIT_RATE = Integer.parseInt(Character.getProperty("MaxMCritRate", "300"));
+					MAX_PATK_SPEED = Integer.parseInt(Character.getProperty("MaxPAtkSpeed", "1500"));
+					MAX_MATK_SPEED = Integer.parseInt(Character.getProperty("MaxMAtkSpeed", "1999"));
+					MAX_EVASION = Integer.parseInt(Character.getProperty("MaxEvasion", "200"));
+					MAX_SUBCLASS = Byte.parseByte(Character.getProperty("MaxSubclass", "3"));
+					MAX_PVTSTORESELL_SLOTS_DWARF = Integer.parseInt(Character.getProperty("MaxPvtStoreSellSlotsDwarf", "4"));
+					MAX_PVTSTORESELL_SLOTS_OTHER = Integer.parseInt(Character.getProperty("MaxPvtStoreSellSlotsOther", "3"));
+					MAX_PVTSTOREBUY_SLOTS_DWARF = Integer.parseInt(Character.getProperty("MaxPvtStoreBuySlotsDwarf", "5"));
+					MAX_PVTSTOREBUY_SLOTS_OTHER = Integer.parseInt(Character.getProperty("MaxPvtStoreBuySlotsOther", "4"));
+					INVENTORY_MAXIMUM_NO_DWARF = Integer.parseInt(Character.getProperty("MaximumSlotsForNoDwarf", "80"));
+					INVENTORY_MAXIMUM_DWARF = Integer.parseInt(Character.getProperty("MaximumSlotsForDwarf", "100"));
+					INVENTORY_MAXIMUM_GM = Integer.parseInt(Character.getProperty("MaximumSlotsForGMPlayer", "250"));
+					MAX_ITEM_IN_PACKET = Math.max(INVENTORY_MAXIMUM_NO_DWARF, Math.max(INVENTORY_MAXIMUM_DWARF, INVENTORY_MAXIMUM_GM));
+					WAREHOUSE_SLOTS_DWARF = Integer.parseInt(Character.getProperty("MaximumWarehouseSlotsForDwarf", "120"));
+					WAREHOUSE_SLOTS_NO_DWARF = Integer.parseInt(Character.getProperty("MaximumWarehouseSlotsForNoDwarf", "100"));
+					WAREHOUSE_SLOTS_CLAN = Integer.parseInt(Character.getProperty("MaximumWarehouseSlotsForClan", "150"));
+					FREIGHT_SLOTS = Integer.parseInt(Character.getProperty("MaximumFreightSlots", "20"));
+					ENCHANT_CHANCE_WEAPON = Integer.parseInt(Character.getProperty("EnchantChanceWeapon", "66"));
+					ENCHANT_CHANCE_ARMOR = Integer.parseInt(Character.getProperty("EnchantChanceArmor", "66"));
+					ENCHANT_CHANCE_JEWELRY = Integer.parseInt(Character.getProperty("EnchantChanceJewelry", "66"));
+					BLESSED_ENCHANT_CHANCE_WEAPON = Integer.parseInt(Character.getProperty("BlessedEnchantChanceWeapon", "66"));
+					BLESSED_ENCHANT_CHANCE_ARMOR = Integer.parseInt(Character.getProperty("BlessedEnchantChanceArmor", "66"));
+					BLESSED_ENCHANT_CHANCE_JEWELRY = Integer.parseInt(Character.getProperty("BlessedEnchantChanceJewelry", "66"));
+					ENCHANT_MAX_WEAPON = Integer.parseInt(Character.getProperty("EnchantMaxWeapon", "0"));
+					ENCHANT_MAX_ARMOR = Integer.parseInt(Character.getProperty("EnchantMaxArmor", "0"));
+					ENCHANT_MAX_JEWELRY = Integer.parseInt(Character.getProperty("EnchantMaxJewelry", "0"));
+					ENCHANT_SAFE_MAX = Integer.parseInt(Character.getProperty("EnchantSafeMax", "3"));
+					ENCHANT_SAFE_MAX_FULL = Integer.parseInt(Character.getProperty("EnchantSafeMaxFull", "4"));
+					AUGMENTATION_NG_SKILL_CHANCE = Integer.parseInt(Character.getProperty("AugmentationNGSkillChance", "15"));
+					AUGMENTATION_NG_GLOW_CHANCE = Integer.parseInt(Character.getProperty("AugmentationNGGlowChance", "0"));
+					AUGMENTATION_MID_SKILL_CHANCE = Integer.parseInt(Character.getProperty("AugmentationMidSkillChance", "30"));
+					AUGMENTATION_MID_GLOW_CHANCE = Integer.parseInt(Character.getProperty("AugmentationMidGlowChance", "40"));
+					AUGMENTATION_HIGH_SKILL_CHANCE = Integer.parseInt(Character.getProperty("AugmentationHighSkillChance", "45"));
+					AUGMENTATION_HIGH_GLOW_CHANCE = Integer.parseInt(Character.getProperty("AugmentationHighGlowChance", "70"));
+					AUGMENTATION_TOP_SKILL_CHANCE = Integer.parseInt(Character.getProperty("AugmentationTopSkillChance", "60"));
+					AUGMENTATION_TOP_GLOW_CHANCE = Integer.parseInt(Character.getProperty("AugmentationTopGlowChance", "100"));
+					AUGMENTATION_BASESTAT_CHANCE = Integer.parseInt(Character.getProperty("AugmentationBaseStatChance", "1"));
+					ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanBeKilledInPeaceZone", "false"));
+					ALT_GAME_KARMA_PLAYER_CAN_SHOP = Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanShop", "true"));
+					ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanTeleport", "true"));
+					ALT_GAME_KARMA_PLAYER_CAN_USE_GK = Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanUseGK", "false"));
+					ALT_GAME_KARMA_PLAYER_CAN_TRADE = Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanTrade", "true"));
+					ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanUseWareHouse", "true"));
+					MAX_PERSONAL_FAME_POINTS = Integer.parseInt(Character.getProperty("MaxPersonalFamePoints","65535"));
+					FORTRESS_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(Character.getProperty("FortressZoneFameTaskFrequency","300"));
+					FORTRESS_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(Character.getProperty("FortressZoneFameAquirePoints","31"));
+					CASTLE_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(Character.getProperty("CastleZoneFameTaskFrequency","300"));
+					CASTLE_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(Character.getProperty("CastleZoneFameAquirePoints","125"));
+					IS_CRAFTING_ENABLED = Boolean.parseBoolean(Character.getProperty("CraftingEnabled", "true"));
+					DWARF_RECIPE_LIMIT = Integer.parseInt(Character.getProperty("DwarfRecipeLimit","50"));
+					COMMON_RECIPE_LIMIT = Integer.parseInt(Character.getProperty("CommonRecipeLimit","50"));
+					ALT_GAME_CREATION = Boolean.parseBoolean(Character.getProperty("AltGameCreation", "false"));
+					ALT_GAME_CREATION_SPEED = Double.parseDouble(Character.getProperty("AltGameCreationSpeed", "1"));
+					ALT_GAME_CREATION_XP_RATE = Double.parseDouble(Character.getProperty("AltGameCreationXpRate", "1"));
+					ALT_GAME_CREATION_SP_RATE = Double.parseDouble(Character.getProperty("AltGameCreationSpRate", "1"));
+					ALT_GAME_CREATION_RARE_XPSP_RATE = Double.parseDouble(Character.getProperty("AltGameCreationRareXpSpRate", "2"));
+					ALT_BLACKSMITH_USE_RECIPES = Boolean.parseBoolean(Character.getProperty("AltBlacksmithUseRecipes", "true"));
+					ALT_CLAN_JOIN_DAYS = Integer.parseInt(Character.getProperty("DaysBeforeJoinAClan", "5"));
+					ALT_CLAN_CREATE_DAYS = Integer.parseInt(Character.getProperty("DaysBeforeCreateAClan", "10"));
+					ALT_CLAN_DISSOLVE_DAYS = Integer.parseInt(Character.getProperty("DaysToPassToDissolveAClan", "7"));
+					ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = Integer.parseInt(Character.getProperty("DaysBeforeJoinAllyWhenLeaved", "1"));
+					ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = Integer.parseInt(Character.getProperty("DaysBeforeJoinAllyWhenDismissed", "1"));
+					ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = Integer.parseInt(Character.getProperty("DaysBeforeAcceptNewClanWhenDismissed", "1"));
+					ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = Integer.parseInt(Character.getProperty("DaysBeforeCreateNewAllyWhenDissolved", "10"));
+					ALT_MAX_NUM_OF_CLANS_IN_ALLY = Integer.parseInt(Character.getProperty("AltMaxNumOfClansInAlly", "3"));
+					ALT_CLAN_MEMBERS_FOR_WAR = Integer.parseInt(Character.getProperty("AltClanMembersForWar", "15"));
+					ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH= Boolean.parseBoolean(Character.getProperty("AltMembersCanWithdrawFromClanWH", "false"));
+					REMOVE_CASTLE_CIRCLETS = Boolean.parseBoolean(Character.getProperty("RemoveCastleCirclets", "true"));
+					ALT_PARTY_RANGE = Integer.parseInt(Character.getProperty("AltPartyRange", "1600"));
+					ALT_PARTY_RANGE2 = Integer.parseInt(Character.getProperty("AltPartyRange2", "1400"));
+					STARTING_ADENA = Integer.parseInt(Character.getProperty("StartingAdena", "100"));
+					AUTO_LOOT = Boolean.parseBoolean(Character.getProperty("AutoLoot", "false"));
+					UNSTUCK_INTERVAL = Integer.parseInt(Character.getProperty("UnstuckInterval", "300"));
+					PLAYER_SPAWN_PROTECTION = Integer.parseInt(Character.getProperty("PlayerSpawnProtection", "0"));
+					RESPAWN_RANDOM_ENABLED = Boolean.parseBoolean(Character.getProperty("RespawnRandomInTown", "True"));
+					RESPAWN_RANDOM_MAX_OFFSET = Integer.parseInt(Character.getProperty("RespawnRandomMaxOffset", "50"));
+					RESTORE_PLAYER_INSTANCE = Boolean.parseBoolean(Character.getProperty("RestorePlayerInstance", "False"));
+					ALLOW_SUMMON_TO_INSTANCE = Boolean.parseBoolean(Character.getProperty("AllowSummonToInstance", "True"));
+					PETITIONING_ALLOWED = Boolean.parseBoolean(Character.getProperty("PetitioningAllowed", "True"));
+					MAX_PETITIONS_PER_PLAYER = Integer.parseInt(Character.getProperty("MaxPetitionsPerPlayer", "5"));
+					MAX_PETITIONS_PENDING = Integer.parseInt(Character.getProperty("MaxPetitionsPending", "25"));
+					ALT_GAME_FREIGHTS = Boolean.parseBoolean(Character.getProperty("AltGameFreights", "false"));
+					ALT_GAME_FREIGHT_PRICE = Integer.parseInt(Character.getProperty("AltGameFreightPrice", "1000"));
+					ALT_GAME_FREE_TELEPORT = Boolean.parseBoolean(Character.getProperty("AltFreeTeleporting", "False"));
+					ALT_RECOMMEND = Boolean.parseBoolean(Character.getProperty("AltRecommend", "False"));
+					DELETE_DAYS = Integer.parseInt(Character.getProperty("DeleteCharAfterDays", "7"));
+					ALT_GAME_EXPONENT_XP = Float.parseFloat(Character.getProperty("AltGameExponentXp", "0."));
+					ALT_GAME_EXPONENT_SP = Float.parseFloat(Character.getProperty("AltGameExponentSp", "0."));
+					PARTY_XP_CUTOFF_METHOD = Character.getProperty("PartyXpCutoffMethod", "auto");
+					PARTY_XP_CUTOFF_PERCENT = Double.parseDouble(Character.getProperty("PartyXpCutoffPercent", "3."));
+					PARTY_XP_CUTOFF_LEVEL = Integer.parseInt(Character.getProperty("PartyXpCutoffLevel", "30"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+CHARACTER_CONFIG_FILE+" file.");
+				}
+
+				// Load L2J Server Version Properties file (if exists)
+				try
+				{
+					Properties serverVersion = new Properties();
+					is = new FileInputStream(new File(SERVER_VERSION_FILE));
+					serverVersion.load(is);
+
+					SERVER_VERSION = serverVersion.getProperty("version", "Unsupported Custom Version.");
+					SERVER_BUILD_DATE = serverVersion.getProperty("builddate", "Undefined Date.");
+				}
+				catch (Exception e)
+				{
+					//Ignore Properties file if it doesnt exist
+					SERVER_VERSION = "Unsupported Custom Version.";
+					SERVER_BUILD_DATE = "Undefined Date.";
+				}
+
+				// Load L2J Datapack Version Properties file (if exists)
+				try
+				{
+					Properties serverVersion = new Properties();
+					is = new FileInputStream(new File(DATAPACK_VERSION_FILE));
+					serverVersion.load(is);
+
+					DATAPACK_VERSION = serverVersion.getProperty("version", "Unsupported Custom Version.");
+				}
+				catch (Exception e)
+				{
+					//Ignore Properties file if it doesnt exist
+					DATAPACK_VERSION = "Unsupported Custom Version.";
+				}
+
+				// Load Telnet Properties file (if exists)
+				try
+				{
+					Properties telnetSettings = new Properties();
+					is = new FileInputStream(new File(TELNET_FILE));
+					telnetSettings.load(is);
+
+					IS_TELNET_ENABLED = Boolean.parseBoolean(telnetSettings.getProperty("EnableTelnet", "false"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+TELNET_FILE+" File.");
+				}
+
+				// Load IdFactory Properties file (if exists)
+				try
+				{
+					Properties idSettings = new Properties();
+					is = new FileInputStream(new File(ID_CONFIG_FILE));
+					idSettings.load(is);
+
+					MAP_TYPE = ObjectMapType.valueOf(idSettings.getProperty("L2Map", "WorldObjectMap"));
+					SET_TYPE = ObjectSetType.valueOf(idSettings.getProperty("L2Set", "WorldObjectSet"));
+					IDFACTORY_TYPE = IdFactoryType.valueOf(idSettings.getProperty("IDFactory", "Compaction"));
+					BAD_ID_CHECKING = Boolean.parseBoolean(idSettings.getProperty("BadIdChecking", "True"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+ID_CONFIG_FILE+" file.");
+				}
+
+				// Load General Properties file (if exists)
+				try
+				{
+					Properties General = new Properties();
+					is = new FileInputStream(new File(GENERAL_CONFIG_FILE));
+					General.load(is);
+
+					EVERYBODY_HAS_ADMIN_RIGHTS = Boolean.parseBoolean(General.getProperty("EverybodyHasAdminRights", "false"));
+					DISPLAY_SERVER_VERSION = Boolean.parseBoolean(General.getProperty("DisplayServerRevision","True"));
+					SERVER_LIST_BRACKET = Boolean.parseBoolean(General.getProperty("ServerListBrackets", "false"));
+					SERVER_LIST_CLOCK = Boolean.parseBoolean(General.getProperty("ServerListClock", "false"));
+					SERVER_GMONLY = Boolean.parseBoolean(General.getProperty("ServerGMOnly", "false"));
+					GM_HERO_AURA = Boolean.parseBoolean(General.getProperty("GMHeroAura", "False"));
+					GM_STARTUP_INVULNERABLE = Boolean.parseBoolean(General.getProperty("GMStartupInvulnerable", "False"));
+					GM_STARTUP_INVISIBLE = Boolean.parseBoolean(General.getProperty("GMStartupInvisible", "False"));
+					GM_STARTUP_SILENCE = Boolean.parseBoolean(General.getProperty("GMStartupSilence", "False"));
+					GM_STARTUP_AUTO_LIST = Boolean.parseBoolean(General.getProperty("GMStartupAutoList", "False"));
+					GM_STARTUP_DIET_MODE = Boolean.parseBoolean(General.getProperty("GMStartupDietMode", "False"));
+					GM_ADMIN_MENU_STYLE = General.getProperty("GMAdminMenuStyle", "modern");
+					GM_ITEM_RESTRICTION = Boolean.parseBoolean(General.getProperty("GmItemRestriction", "False"));
+					BYPASS_VALIDATION = Boolean.parseBoolean(General.getProperty("BypassValidation", "True"));
+					GAMEGUARD_ENFORCE = Boolean.parseBoolean(General.getProperty("GameGuardEnforce", "True"));
+					GAMEGUARD_PROHIBITACTION = Boolean.parseBoolean(General.getProperty("GameGuardProhibitAction", "True"));
+					LOG_CHAT = Boolean.parseBoolean(General.getProperty("LogChat", "false"));
+					LOG_ITEMS = Boolean.parseBoolean(General.getProperty("LogItems", "false"));
+					GMAUDIT = Boolean.parseBoolean(General.getProperty("GMAudit", "False"));
+					LOG_GAME_DAMAGE = Boolean.parseBoolean(General.getProperty("LogGameDamage", "False"));
+					DEBUG = Boolean.parseBoolean(General.getProperty("Debug", "false"));
+					PACKET_HANDLER_DEBUG = Boolean.parseBoolean(General.getProperty("PacketHandlerDebug", "false"));
+					ASSERT = Boolean.parseBoolean(General.getProperty("Assert", "false"));
+					DEVELOPER = Boolean.parseBoolean(General.getProperty("Developer", "false"));
+					ACCEPT_GEOEDITOR_CONN = Boolean.parseBoolean(General.getProperty("AcceptGeoeditorConn", "false"));
+					TEST_SERVER = Boolean.parseBoolean(General.getProperty("TestServer", "false"));
+					SERVER_LIST_TESTSERVER = Boolean.parseBoolean(General.getProperty("ListTestServers", "false"));
+					ALT_DEV_NO_QUESTS = Boolean.parseBoolean(General.getProperty("AltDevNoQuests", "False"));
+					ALT_DEV_NO_SPAWNS = Boolean.parseBoolean(General.getProperty("AltDevNoSpawns", "False"));
+					THREAD_P_EFFECTS = Integer.parseInt(General.getProperty("ThreadPoolSizeEffects", "10"));
+					THREAD_P_GENERAL = Integer.parseInt(General.getProperty("ThreadPoolSizeGeneral", "13"));
+					IO_PACKET_THREAD_CORE_SIZE = Integer.parseInt(General.getProperty("UrgentPacketThreadCoreSize", "2"));
+					GENERAL_PACKET_THREAD_CORE_SIZE = Integer.parseInt(General.getProperty("GeneralPacketThreadCoreSize", "4"));
+					GENERAL_THREAD_CORE_SIZE = Integer.parseInt(General.getProperty("GeneralThreadCoreSize", "4"));
+					AI_MAX_THREAD = Integer.parseInt(General.getProperty("AiMaxThread", "6"));
+					PACKET_LIFETIME = Integer.parseInt(General.getProperty("PacketLifeTime", "0"));
+					DEADLOCK_DETECTOR = Boolean.parseBoolean(General.getProperty("DeadLockDetector", "False"));
+					DEADLOCK_CHECK_INTERVAL = Integer.parseInt(General.getProperty("DeadLockCheckInterval", "20"));
+					RESTART_ON_DEADLOCK = Boolean.parseBoolean(General.getProperty("RestartOnDeadlock", "False"));
+					FLOODPROTECTOR_INITIALSIZE = Integer.parseInt(General.getProperty("FloodProtectorInitialSize", "50"));
+					ALLOW_DISCARDITEM = Boolean.parseBoolean(General.getProperty("AllowDiscardItem", "True"));
+					AUTODESTROY_ITEM_AFTER = Integer.parseInt(General.getProperty("AutoDestroyDroppedItemAfter", "0"));
+					HERB_AUTO_DESTROY_TIME = Integer.parseInt(General.getProperty("AutoDestroyHerbTime","15"))*1000;
+					PROTECTED_ITEMS = General.getProperty("ListOfProtectedItems", "57,5575,6673");
+					LIST_PROTECTED_ITEMS = new FastList<Integer>();
+					for (String id : PROTECTED_ITEMS.split(","))
+					{
+						LIST_PROTECTED_ITEMS.add(Integer.parseInt(id));
+					}
+					CHAR_STORE_INTERVAL = Integer.parseInt(General.getProperty("CharacterDataStoreInterval", "15"));
+					LAZY_ITEMS_UPDATE = Boolean.parseBoolean(General.getProperty("LazyItemsUpdate", "false"));
+					UPDATE_ITEMS_ON_CHAR_STORE = Boolean.parseBoolean(General.getProperty("UpdateItemsOnCharStore", "false"));
+					DESTROY_DROPPED_PLAYER_ITEM = Boolean.parseBoolean(General.getProperty("DestroyPlayerDroppedItem", "false"));
+					DESTROY_EQUIPABLE_PLAYER_ITEM = Boolean.parseBoolean(General.getProperty("DestroyEquipableItem", "false"));
+					SAVE_DROPPED_ITEM = Boolean.parseBoolean(General.getProperty("SaveDroppedItem", "false"));
+					EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD = Boolean.parseBoolean(General.getProperty("EmptyDroppedItemTableAfterLoad", "false"));
+					SAVE_DROPPED_ITEM_INTERVAL = Integer.parseInt(General.getProperty("SaveDroppedItemInterval", "60"))*60000;
+					CLEAR_DROPPED_ITEM_TABLE = Boolean.parseBoolean(General.getProperty("ClearDroppedItemTable", "false"));
+					AUTODELETE_INVALID_QUEST_DATA = Boolean.parseBoolean(General.getProperty("AutoDeleteInvalidQuestData", "False"));
+					PRECISE_DROP_CALCULATION = Boolean.parseBoolean(General.getProperty("PreciseDropCalculation", "True"));
+					MULTIPLE_ITEM_DROP = Boolean.parseBoolean(General.getProperty("MultipleItemDrop", "True"));
+					FORCE_INVENTORY_UPDATE = Boolean.parseBoolean(General.getProperty("ForceInventoryUpdate", "False"));
+					LAZY_CACHE = Boolean.parseBoolean(General.getProperty("LazyCache", "True"));
+					MIN_NPC_ANIMATION = Integer.parseInt(General.getProperty("MinNPCAnimation", "10"));
+					MAX_NPC_ANIMATION = Integer.parseInt(General.getProperty("MaxNPCAnimation", "20"));
+					MIN_MONSTER_ANIMATION = Integer.parseInt(General.getProperty("MinMonsterAnimation", "5"));
+					MAX_MONSTER_ANIMATION = Integer.parseInt(General.getProperty("MaxMonsterAnimation", "20"));
+					MOVE_BASED_KNOWNLIST = Boolean.parseBoolean(General.getProperty("MoveBasedKnownlist", "False"));
+					KNOWNLIST_UPDATE_INTERVAL = Long.parseLong(General.getProperty("KnownListUpdateInterval", "1250"));
+					GRIDS_ALWAYS_ON = Boolean.parseBoolean(General.getProperty("GridsAlwaysOn", "False"));
+					GRID_NEIGHBOR_TURNON_TIME = Integer.parseInt(General.getProperty("GridNeighborTurnOnTime", "1"));
+					GRID_NEIGHBOR_TURNOFF_TIME = Integer.parseInt(General.getProperty("GridNeighborTurnOffTime", "90"));
+					GEODATA = Integer.parseInt(General.getProperty("GeoData", "0"));
+					GEODATA_CELLFINDING = Boolean.parseBoolean(General.getProperty("CellPathFinding", "False"));
+					FORCE_GEODATA = Boolean.parseBoolean(General.getProperty("ForceGeodata", "True"));
+					COORD_SYNCHRONIZE = Integer.parseInt(General.getProperty("CoordSynchronize", "-1"));
+					ZONE_TOWN = Integer.parseInt(General.getProperty("ZoneTown", "0"));
+					ACTIVATE_POSITION_RECORDER = Boolean.parseBoolean(General.getProperty("ActivatePositionRecorder", "False"));
+					DEFAULT_GLOBAL_CHAT = General.getProperty("GlobalChat", "ON");
+					DEFAULT_TRADE_CHAT = General.getProperty("TradeChat", "LIMITED");
+					ALLOW_WAREHOUSE = Boolean.parseBoolean(General.getProperty("AllowWarehouse", "True"));
+					WAREHOUSE_CACHE = Boolean.parseBoolean(General.getProperty("WarehouseCache", "False"));
+					WAREHOUSE_CACHE_TIME = Integer.parseInt(General.getProperty("WarehouseCacheTime", "15"));
+					ALLOW_FREIGHT = Boolean.parseBoolean(General.getProperty("AllowFreight", "True"));
+					ALLOW_WEAR = Boolean.parseBoolean(General.getProperty("AllowWear", "False"));
+					WEAR_DELAY = Integer.parseInt(General.getProperty("WearDelay", "5"));
+					WEAR_PRICE = Integer.parseInt(General.getProperty("WearPrice", "10"));
+					ALLOW_LOTTERY = Boolean.parseBoolean(General.getProperty("AllowLottery", "True"));
+					ALLOW_RACE = Boolean.parseBoolean(General.getProperty("AllowRace", "True"));
+					ALLOW_WATER = Boolean.parseBoolean(General.getProperty("AllowWater", "True"));
+					ALLOW_RENTPET = Boolean.parseBoolean(General.getProperty("AllowRentPet", "False"));
+					FLOODPROTECTOR_INITIALSIZE = Integer.parseInt(General.getProperty("FloodProtectorInitialSize", "50"));
+					ALLOW_DISCARDITEM = Boolean.parseBoolean(General.getProperty("AllowDiscardItem", "True"));
+					ALLOWFISHING = Boolean.parseBoolean(General.getProperty("AllowFishing", "True"));
+					ALLOW_MANOR = Boolean.parseBoolean(General.getProperty("AllowManor", "True"));
+					ALLOW_BOAT = Boolean.parseBoolean(General.getProperty("AllowBoat", "True"));
+					ALLOW_CURSED_WEAPONS = Boolean.parseBoolean(General.getProperty("AllowCursedWeapons", "True"));
+					ALLOW_MANOR = Boolean.parseBoolean(General.getProperty("AllowManor", "True"));
+					ALLOW_NPC_WALKERS = Boolean.parseBoolean(General.getProperty("AllowNpcWalkers", "true"));
+					ALLOW_PET_WALKERS = Boolean.parseBoolean(General.getProperty("AllowPetWalkers", "True"));
+					SERVER_NEWS = Boolean.parseBoolean(General.getProperty("ShowServerNews", "False"));
+					COMMUNITY_TYPE = Integer.parseInt(General.getProperty("CommunityType", "1"));
+					BBS_SHOW_PLAYERLIST = Boolean.parseBoolean(General.getProperty("BBSShowPlayerList", "false"));
+					BBS_DEFAULT = General.getProperty("BBSDefault", "_bbshome");
+					SHOW_LEVEL_COMMUNITYBOARD = Boolean.parseBoolean(General.getProperty("ShowLevelOnCommunityBoard", "False"));
+					SHOW_STATUS_COMMUNITYBOARD = Boolean.parseBoolean(General.getProperty("ShowStatusOnCommunityBoard", "True"));
+					NAME_PAGE_SIZE_COMMUNITYBOARD = Integer.parseInt(General.getProperty("NamePageSizeOnCommunityBoard", "50"));
+					NAME_PER_ROW_COMMUNITYBOARD = Integer.parseInt(General.getProperty("NamePerRowOnCommunityBoard", "5"));
+					ALT_OLY_START_TIME = Integer.parseInt(General.getProperty("AltOlyStartTime", "18"));
+					ALT_OLY_MIN = Integer.parseInt(General.getProperty("AltOlyMin","00"));
+					ALT_OLY_CPERIOD = Long.parseLong(General.getProperty("AltOlyCPeriod","21600000"));
+					ALT_OLY_BATTLE = Long.parseLong(General.getProperty("AltOlyBattle","360000"));
+					ALT_OLY_WPERIOD = Long.parseLong(General.getProperty("AltOlyWPeriod","604800000"));
+					ALT_OLY_VPERIOD = Long.parseLong(General.getProperty("AltOlyVPeriod","86400000"));
+					ALT_OLY_CLASSED = Integer.parseInt(General.getProperty("AltOlyClassedParticipants","5"));
+					ALT_OLY_NONCLASSED = Integer.parseInt(General.getProperty("AltOlyNonClassedParticipants","9"));
+					ALT_OLY_BATTLE_REWARD_ITEM = Integer.parseInt(General.getProperty("AltOlyBattleRewItem","6651"));
+					ALT_OLY_CLASSED_RITEM_C = Integer.parseInt(General.getProperty("AltOlyClassedRewItemCount","50"));
+					ALT_OLY_NONCLASSED_RITEM_C = Integer.parseInt(General.getProperty("AltOlyNonClassedRewItemCount","30"));
+					ALT_OLY_COMP_RITEM = Integer.parseInt(General.getProperty("AltOlyCompRewItem","6651"));
+					ALT_OLY_GP_PER_POINT = Integer.parseInt(General.getProperty("AltOlyGPPerPoint","1000"));
+					ALT_OLY_MIN_POINT_FOR_EXCH = Integer.parseInt(General.getProperty("AltOlyMinPointForExchange","50"));
+					ALT_OLY_HERO_POINTS = Integer.parseInt(General.getProperty("AltOlyHeroPoints","300"));
+					ALT_OLY_LOG_FIGHTS = Boolean.parseBoolean(General.getProperty("AlyOlyLogFights","false"));
+					ALT_OLY_SHOW_MONTHLY_WINNERS = Boolean.parseBoolean(General.getProperty("AltOlyShowMonthlyWinners","true"));
+					ALT_OLY_ANNOUNCE_GAMES = Boolean.parseBoolean(General.getProperty("AltOlyAnnounceGames","true"));
+					LIST_OLY_RESTRICTED_ITEMS = new FastList<Integer>();
+					for (String id : General.getProperty("AltOlyRestrictedItems","0").split(","))
+					{
+						LIST_OLY_RESTRICTED_ITEMS.add(Integer.parseInt(id));
+					}
+					ALT_OLY_ENCHANT_LIMIT = Integer.parseInt(General.getProperty("AltOlyEnchantLimit","-1"));
+					ALT_MANOR_REFRESH_TIME = Integer.parseInt(General.getProperty("AltManorRefreshTime","20"));
+					ALT_MANOR_REFRESH_MIN = Integer.parseInt(General.getProperty("AltManorRefreshMin","00"));
+					ALT_MANOR_APPROVE_TIME = Integer.parseInt(General.getProperty("AltManorApproveTime","6"));
+					ALT_MANOR_APPROVE_MIN = Integer.parseInt(General.getProperty("AltManorApproveMin","00"));
+					ALT_MANOR_MAINTENANCE_PERIOD = Integer.parseInt(General.getProperty("AltManorMaintenancePeriod","360000"));
+					ALT_MANOR_SAVE_ALL_ACTIONS = Boolean.parseBoolean(General.getProperty("AltManorSaveAllActions","false"));
+					ALT_MANOR_SAVE_PERIOD_RATE = Integer.parseInt(General.getProperty("AltManorSavePeriodRate","2"));
+					ALT_LOTTERY_PRIZE = Integer.parseInt(General.getProperty("AltLotteryPrize","50000"));
+					ALT_LOTTERY_TICKET_PRICE = Integer.parseInt(General.getProperty("AltLotteryTicketPrice","2000"));
+					ALT_LOTTERY_5_NUMBER_RATE = Float.parseFloat(General.getProperty("AltLottery5NumberRate","0.6"));
+					ALT_LOTTERY_4_NUMBER_RATE = Float.parseFloat(General.getProperty("AltLottery4NumberRate","0.2"));
+					ALT_LOTTERY_3_NUMBER_RATE = Float.parseFloat(General.getProperty("AltLottery3NumberRate","0.2"));
+					ALT_LOTTERY_2_AND_1_NUMBER_PRIZE = Integer.parseInt(General.getProperty("AltLottery2and1NumberPrize","200"));
+					FS_TIME_ATTACK = Integer.parseInt(General.getProperty("TimeOfAttack", "50"));
+					FS_TIME_COOLDOWN = Integer.parseInt(General.getProperty("TimeOfCoolDown", "5"));
+					FS_TIME_ENTRY = Integer.parseInt(General.getProperty("TimeOfEntry", "3"));
+					FS_TIME_WARMUP = Integer.parseInt(General.getProperty("TimeOfWarmUp", "2"));
+					FS_PARTY_MEMBER_COUNT = Integer.parseInt(General.getProperty("NumberOfNecessaryPartyMembers", "4"));
+					if (FS_TIME_ATTACK <= 0)
+						FS_TIME_ATTACK = 50;
+					if (FS_TIME_COOLDOWN <= 0)
+						FS_TIME_COOLDOWN = 5;
+					if (FS_TIME_ENTRY <= 0)
+						FS_TIME_ENTRY = 3;
+					if (FS_TIME_ENTRY <= 0)
+						FS_TIME_ENTRY = 3;
+					if (FS_TIME_ENTRY <= 0)
+						FS_TIME_ENTRY = 3;
+					RIFT_MIN_PARTY_SIZE = Integer.parseInt(General.getProperty("RiftMinPartySize", "5"));
+					RIFT_MAX_JUMPS = Integer.parseInt(General.getProperty("MaxRiftJumps", "4"));
+					RIFT_SPAWN_DELAY = Integer.parseInt(General.getProperty("RiftSpawnDelay", "10000"));
+					RIFT_AUTO_JUMPS_TIME_MIN = Integer.parseInt(General.getProperty("AutoJumpsDelayMin", "480"));
+					RIFT_AUTO_JUMPS_TIME_MAX = Integer.parseInt(General.getProperty("AutoJumpsDelayMax", "600"));
+					RIFT_BOSS_ROOM_TIME_MUTIPLY = Float.parseFloat(General.getProperty("BossRoomTimeMultiply", "1.5"));
+					RIFT_ENTER_COST_RECRUIT = Integer.parseInt(General.getProperty("RecruitCost", "18"));
+					RIFT_ENTER_COST_SOLDIER = Integer.parseInt(General.getProperty("SoldierCost", "21"));
+					RIFT_ENTER_COST_OFFICER = Integer.parseInt(General.getProperty("OfficerCost", "24"));
+					RIFT_ENTER_COST_CAPTAIN = Integer.parseInt(General.getProperty("CaptainCost", "27"));
+					RIFT_ENTER_COST_COMMANDER = Integer.parseInt(General.getProperty("CommanderCost", "30"));
+					RIFT_ENTER_COST_HERO = Integer.parseInt(General.getProperty("HeroCost", "33"));
+					DEFAULT_PUNISH = Integer.parseInt(General.getProperty("DefaultPunish", "2"));
+					DEFAULT_PUNISH_PARAM = Integer.parseInt(General.getProperty("DefaultPunishParam", "0"));
+					ONLY_GM_ITEMS_FREE = Boolean.parseBoolean(General.getProperty("OnlyGMItemsFree", "True"));
+					JAIL_IS_PVP = Boolean.parseBoolean(General.getProperty("JailIsPvp", "True"));
+					JAIL_DISABLE_CHAT = Boolean.parseBoolean(General.getProperty("JailDisableChat", "True"));
+					CUSTOM_SPAWNLIST_TABLE = Boolean.valueOf(General.getProperty("CustomSpawnlistTable", "false"));
+					SAVE_GMSPAWN_ON_CUSTOM = Boolean.valueOf(General.getProperty("SaveGmSpawnOnCustom", "false"));
+					DELETE_GMSPAWN_ON_CUSTOM = Boolean.valueOf(General.getProperty("DeleteGmSpawnOnCustom", "false"));
+					CUSTOM_NPC_TABLE = Boolean.valueOf(General.getProperty("CustomNpcTable", "false"));
+					CUSTOM_ITEM_TABLES = Boolean.valueOf(General.getProperty("CustomItemTables", "false"));
+					CUSTOM_ARMORSETS_TABLE = Boolean.valueOf(General.getProperty("CustomArmorSetsTable", "false"));
+					CUSTOM_TELEPORT_TABLE = Boolean.valueOf(General.getProperty("CustomTeleportTable", "false"));
+					CUSTOM_DROPLIST_TABLE = Boolean.valueOf(General.getProperty("CustomDroplistTable", "false"));
+					CUSTOM_MERCHANT_TABLES = Boolean.valueOf(General.getProperty("CustomMerchantTables", "false"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+GENERAL_CONFIG_FILE+" File.");
+				}
+
+				// Load NPC Properties file (if exists)
+				try
+				{
+					Properties NPC = new Properties();
+					is = new FileInputStream(new File(NPC_CONFIG_FILE));
+					NPC.load(is);
+
+					ANNOUNCE_MAMMON_SPAWN = Boolean.parseBoolean(NPC.getProperty("AnnounceMammonSpawn", "False"));
+					ALT_MOB_AGRO_IN_PEACEZONE = Boolean.parseBoolean(NPC.getProperty("AltMobAgroInPeaceZone", "True"));
+					ALT_ATTACKABLE_NPCS = Boolean.parseBoolean(NPC.getProperty("AltAttackableNpcs", "True"));
+					ALT_GAME_VIEWNPC = Boolean.parseBoolean(NPC.getProperty("AltGameViewNpc", "False"));
+					MAX_DRIFT_RANGE = Integer.parseInt(NPC.getProperty("MaxDriftRange", "300"));
+					DEEPBLUE_DROP_RULES = Boolean.parseBoolean(NPC.getProperty("UseDeepBlueDropRules", "True"));
+					SHOW_NPC_LVL = Boolean.parseBoolean(NPC.getProperty("ShowNpcLevel", "False"));
+					GUARD_ATTACK_AGGRO_MOB = Boolean.parseBoolean(NPC.getProperty("GuardAttackAggroMob", "False"));
+					ALLOW_WYVERN_UPGRADER = Boolean.parseBoolean(NPC.getProperty("AllowWyvernUpgrader", "False"));
+					PET_RENT_NPC = NPC.getProperty("ListPetRentNpc", "30827");
+					LIST_PET_RENT_NPC = new FastList<Integer>();
+					for (String id : PET_RENT_NPC.split(","))
+					{
+						LIST_PET_RENT_NPC.add(Integer.parseInt(id));
+					}
+					RAID_HP_REGEN_MULTIPLIER = Double.parseDouble(NPC.getProperty("RaidHpRegenMultiplier", "100")) /100;
+					RAID_MP_REGEN_MULTIPLIER = Double.parseDouble(NPC.getProperty("RaidMpRegenMultiplier", "100")) /100;
+					RAID_PDEFENCE_MULTIPLIER = Double.parseDouble(NPC.getProperty("RaidPDefenceMultiplier", "100")) /100;
+					RAID_MDEFENCE_MULTIPLIER = Double.parseDouble(NPC.getProperty("RaidMDefenceMultiplier", "100")) /100;
+					RAID_MIN_RESPAWN_MULTIPLIER = Float.parseFloat(NPC.getProperty("RaidMinRespawnMultiplier", "1.0"));
+					RAID_MAX_RESPAWN_MULTIPLIER = Float.parseFloat(NPC.getProperty("RaidMaxRespawnMultiplier", "1.0"));
+					RAID_MINION_RESPAWN_TIMER = Integer.parseInt(NPC.getProperty("RaidMinionRespawnTime", "300000"));
+					INVENTORY_MAXIMUM_PET = Integer.parseInt(NPC.getProperty("MaximumSlotsForPet", "12"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+NPC_CONFIG_FILE+" File.");
+				}
+
+				// Load Rates Properties file (if exists)
+				try
+				{
+					Properties ratesSettings = new Properties();
+					is = new FileInputStream(new File(RATES_CONFIG_FILE));
+					ratesSettings.load(is);
+
+					RATE_XP = Float.parseFloat(ratesSettings.getProperty("RateXp", "1."));
+					RATE_SP = Float.parseFloat(ratesSettings.getProperty("RateSp", "1."));
+					RATE_PARTY_XP = Float.parseFloat(ratesSettings.getProperty("RatePartyXp", "1."));
+					RATE_PARTY_SP = Float.parseFloat(ratesSettings.getProperty("RatePartySp", "1."));
+					RATE_QUESTS_REWARD = Float.parseFloat(ratesSettings.getProperty("RateQuestsReward", "1."));
+					RATE_DROP_ADENA = Float.parseFloat(ratesSettings.getProperty("RateDropAdena", "1."));
+					RATE_CONSUMABLE_COST = Float.parseFloat(ratesSettings.getProperty("RateConsumableCost", "1."));
+					RATE_EXTR_FISH = Float.parseFloat(ratesSettings.getProperty("RateExtractFish", "1."));
+					RATE_DROP_ITEMS = Float.parseFloat(ratesSettings.getProperty("RateDropItems", "1."));
+					RATE_DROP_ITEMS_BY_RAID = Float.parseFloat(ratesSettings.getProperty("RateRaidDropItems", "1."));
+					RATE_DROP_SPOIL = Float.parseFloat(ratesSettings.getProperty("RateDropSpoil", "1."));
+					RATE_DROP_MANOR = Integer.parseInt(ratesSettings.getProperty("RateDropManor", "1"));
+					RATE_DROP_QUEST = Float.parseFloat(ratesSettings.getProperty("RateDropQuest", "1."));
+					RATE_KARMA_EXP_LOST = Float.parseFloat(ratesSettings.getProperty("RateKarmaExpLost", "1."));
+					RATE_SIEGE_GUARDS_PRICE = Float.parseFloat(ratesSettings.getProperty("RateSiegeGuardsPrice", "1."));
+					RATE_DROP_COMMON_HERBS = Float.parseFloat(ratesSettings.getProperty("RateCommonHerbs", "15."));
+					RATE_DROP_MP_HP_HERBS = Float.parseFloat(ratesSettings.getProperty("RateHpMpHerbs", "10."));
+					RATE_DROP_GREATER_HERBS = Float.parseFloat(ratesSettings.getProperty("RateGreaterHerbs", "4."));
+					RATE_DROP_SUPERIOR_HERBS = Float.parseFloat(ratesSettings.getProperty("RateSuperiorHerbs", "0.8"))*10;
+					RATE_DROP_SPECIAL_HERBS = Float.parseFloat(ratesSettings.getProperty("RateSpecialHerbs", "0.2"))*10;
+					PLAYER_DROP_LIMIT = Integer.parseInt(ratesSettings.getProperty("PlayerDropLimit", "3"));
+					PLAYER_RATE_DROP = Integer.parseInt(ratesSettings.getProperty("PlayerRateDrop", "5"));
+					PLAYER_RATE_DROP_ITEM = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropItem", "70"));
+					PLAYER_RATE_DROP_EQUIP = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropEquip", "25"));
+					PLAYER_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(ratesSettings.getProperty("PlayerRateDropEquipWeapon", "5"));
+					PET_XP_RATE = Float.parseFloat(ratesSettings.getProperty("PetXpRate", "1."));
+					PET_FOOD_RATE = Integer.parseInt(ratesSettings.getProperty("PetFoodRate", "1"));
+					SINEATER_XP_RATE = Float.parseFloat(ratesSettings.getProperty("SinEaterXpRate", "1."));
+					KARMA_DROP_LIMIT = Integer.parseInt(ratesSettings.getProperty("KarmaDropLimit", "10"));
+					KARMA_RATE_DROP = Integer.parseInt(ratesSettings.getProperty("KarmaRateDrop", "70"));
+					KARMA_RATE_DROP_ITEM = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropItem", "50"));
+					KARMA_RATE_DROP_EQUIP = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropEquip", "40"));
+					KARMA_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropEquipWeapon", "10"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+RATES_CONFIG_FILE+" File.");
+				}
+
+				// Load L2JMod Properties file (if exists)
+				try
+				{
+					Properties L2JModSettings = new Properties();
+					is = new FileInputStream(new File(L2JMOD_CONFIG_FILE));
+					L2JModSettings.load(is);
+
+					L2JMOD_CHAMPION_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("ChampionEnable", "false"));
+					L2JMOD_CHAMPION_PASSIVE = Boolean.parseBoolean(L2JModSettings.getProperty("ChampionPassive", "false"));
+					L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(L2JModSettings.getProperty("ChampionFrequency", "0"));
+					L2JMOD_CHAMP_TITLE = L2JModSettings.getProperty("ChampionTitle", "Champion");
+					L2JMOD_CHAMP_MIN_LVL = Integer.parseInt(L2JModSettings.getProperty("ChampionMinLevel", "20"));
+					L2JMOD_CHAMP_MAX_LVL = Integer.parseInt(L2JModSettings.getProperty("ChampionMaxLevel", "60"));
+					L2JMOD_CHAMPION_HP = Integer.parseInt(L2JModSettings.getProperty("ChampionHp", "7"));
+					L2JMOD_CHAMPION_HP_REGEN = Float.parseFloat(L2JModSettings.getProperty("ChampionHpRegen", "1."));
+					L2JMOD_CHAMPION_REWARDS = Integer.parseInt(L2JModSettings.getProperty("ChampionRewards", "8"));
+					L2JMOD_CHAMPION_ADENAS_REWARDS = Float.parseFloat(L2JModSettings.getProperty("ChampionAdenasRewards", "1"));
+					L2JMOD_CHAMPION_ATK = Float.parseFloat(L2JModSettings.getProperty("ChampionAtk", "1."));
+					L2JMOD_CHAMPION_SPD_ATK = Float.parseFloat(L2JModSettings.getProperty("ChampionSpdAtk", "1."));
+					L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = Integer.parseInt(L2JModSettings.getProperty("ChampionRewardLowerLvlItemChance", "0"));
+					L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = Integer.parseInt(L2JModSettings.getProperty("ChampionRewardHigherLvlItemChance", "0"));
+					L2JMOD_CHAMPION_REWARD_ID = Integer.parseInt(L2JModSettings.getProperty("ChampionRewardItemID", "6393"));
+					L2JMOD_CHAMPION_REWARD_QTY = Integer.parseInt(L2JModSettings.getProperty("ChampionRewardItemQty", "1"));
+
+					TVT_EVENT_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventEnabled", "false"));
+					TVT_EVENT_INTERVAL = L2JModSettings.getProperty("TvTEventInterval", "20:00").split(",");
+					TVT_EVENT_PARTICIPATION_TIME = Integer.parseInt(L2JModSettings.getProperty("TvTEventParticipationTime", "3600"));
+					TVT_EVENT_RUNNING_TIME = Integer.parseInt(L2JModSettings.getProperty("TvTEventRunningTime", "1800"));
+					TVT_EVENT_PARTICIPATION_NPC_ID = Integer.parseInt(L2JModSettings.getProperty("TvTEventParticipationNpcId", "0"));
+
+					L2JMOD_ALLOW_WEDDING = Boolean.parseBoolean(L2JModSettings.getProperty("AllowWedding", "False"));
+					L2JMOD_WEDDING_PRICE = Integer.parseInt(L2JModSettings.getProperty("WeddingPrice", "250000000"));
+					L2JMOD_WEDDING_PUNISH_INFIDELITY = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingPunishInfidelity", "True"));
+					L2JMOD_WEDDING_TELEPORT = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingTeleport", "True"));
+					L2JMOD_WEDDING_TELEPORT_PRICE = Integer.parseInt(L2JModSettings.getProperty("WeddingTeleportPrice", "50000"));
+					L2JMOD_WEDDING_TELEPORT_DURATION = Integer.parseInt(L2JModSettings.getProperty("WeddingTeleportDuration", "60"));
+					L2JMOD_WEDDING_SAMESEX = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingAllowSameSex", "False"));
+					L2JMOD_WEDDING_FORMALWEAR = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingFormalWear", "True"));
+					L2JMOD_WEDDING_DIVORCE_COSTS = Integer.parseInt(L2JModSettings.getProperty("WeddingDivorceCosts", "20"));
+
+					L2JMOD_ENABLE_WAREHOUSESORTING_CLAN = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingClan", "False"));
+					L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingPrivate", "False"));
+					L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingFreight", "False"));
+
+					if (TVT_EVENT_PARTICIPATION_NPC_ID == 0)
+					{
+						TVT_EVENT_ENABLED = false;
+						_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcId");
+					}
+					else
+					{
+						String[] propertySplit = L2JModSettings.getProperty("TvTEventParticipationNpcCoordinates", "0,0,0").split(",");
+						if (propertySplit.length < 3)
+						{
+							TVT_EVENT_ENABLED = false;
+							_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcCoordinates");
+						}
+						else
+						{
+							TVT_EVENT_REWARDS = new FastList<int[]>();
+							TVT_DOORS_IDS_TO_OPEN = new ArrayList<Integer>();
+							TVT_DOORS_IDS_TO_CLOSE = new ArrayList<Integer>();
+							TVT_EVENT_PARTICIPATION_NPC_COORDINATES = new int[3];
+							TVT_EVENT_TEAM_1_COORDINATES = new int[3];
+							TVT_EVENT_TEAM_2_COORDINATES = new int[3];
+							TVT_EVENT_PARTICIPATION_NPC_COORDINATES[0] = Integer.parseInt(propertySplit[0]);
+							TVT_EVENT_PARTICIPATION_NPC_COORDINATES[1] = Integer.parseInt(propertySplit[1]);
+							TVT_EVENT_PARTICIPATION_NPC_COORDINATES[2] = Integer.parseInt(propertySplit[2]);
+							TVT_EVENT_MIN_PLAYERS_IN_TEAMS = Integer.parseInt(L2JModSettings.getProperty("TvTEventMinPlayersInTeams", "1"));
+							TVT_EVENT_MAX_PLAYERS_IN_TEAMS = Integer.parseInt(L2JModSettings.getProperty("TvTEventMaxPlayersInTeams", "20"));
+							TVT_EVENT_MIN_LVL = (byte)Integer.parseInt(L2JModSettings.getProperty("TvTEventMinPlayerLevel", "1"));
+							TVT_EVENT_MAX_LVL = (byte)Integer.parseInt(L2JModSettings.getProperty("TvTEventMaxPlayerLevel", "80"));
+							TVT_EVENT_RESPAWN_TELEPORT_DELAY = Integer.parseInt(L2JModSettings.getProperty("TvTEventRespawnTeleportDelay", "20"));
+							TVT_EVENT_START_LEAVE_TELEPORT_DELAY = Integer.parseInt(L2JModSettings.getProperty("TvTEventStartLeaveTeleportDelay", "20"));
+							TVT_EVENT_TEAM_1_NAME = L2JModSettings.getProperty("TvTEventTeam1Name", "Team1");
+							propertySplit = L2JModSettings.getProperty("TvTEventTeam1Coordinates", "0,0,0").split(",");
+							if (propertySplit.length < 3)
+							{
+								TVT_EVENT_ENABLED = false;
+								_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam1Coordinates");
+							}
+							else
+							{
+								TVT_EVENT_TEAM_1_COORDINATES[0] = Integer.parseInt(propertySplit[0]);
+								TVT_EVENT_TEAM_1_COORDINATES[1] = Integer.parseInt(propertySplit[1]);
+								TVT_EVENT_TEAM_1_COORDINATES[2] = Integer.parseInt(propertySplit[2]);
+								TVT_EVENT_TEAM_2_NAME = L2JModSettings.getProperty("TvTEventTeam2Name", "Team2");
+								propertySplit = L2JModSettings.getProperty("TvTEventTeam2Coordinates", "0,0,0").split(",");
+								if (propertySplit.length < 3)
+								{
+									TVT_EVENT_ENABLED= false;
+									_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam2Coordinates");
+								}
+								else
+								{
+									TVT_EVENT_TEAM_2_COORDINATES[0] = Integer.parseInt(propertySplit[0]);
+									TVT_EVENT_TEAM_2_COORDINATES[1] = Integer.parseInt(propertySplit[1]);
+									TVT_EVENT_TEAM_2_COORDINATES[2] = Integer.parseInt(propertySplit[2]);
+									propertySplit = L2JModSettings.getProperty("TvTEventReward", "57,100000").split(";");
+									for (String reward : propertySplit)
+									{
+										String[] rewardSplit = reward.split(",");
+										if (rewardSplit.length != 2)
+											_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"", reward, "\""));
+										else
+										{
+											try
+											{
+												TVT_EVENT_REWARDS.add(new int[]{Integer.parseInt(rewardSplit[0]), Integer.parseInt(rewardSplit[1])});
+											}
+											catch (NumberFormatException nfe)
+											{
+												if (!reward.isEmpty())
+													_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"", reward, "\""));
+											}
+										}
+									}
+
+									TVT_EVENT_TARGET_TEAM_MEMBERS_ALLOWED = Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventTargetTeamMembersAllowed", "true"));
+									TVT_EVENT_SCROLL_ALLOWED = Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventScrollsAllowed", "false"));
+									TVT_EVENT_POTIONS_ALLOWED = Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventPotionsAllowed", "false"));
+									TVT_EVENT_SUMMON_BY_ITEM_ALLOWED = Boolean.parseBoolean(L2JModSettings.getProperty("TvTEventSummonByItemAllowed", "false"));
+									TVT_REWARD_TEAM_TIE = Boolean.parseBoolean(L2JModSettings.getProperty("TvTRewardTeamTie", "false"));
+									propertySplit = L2JModSettings.getProperty("TvTDoorsToOpen", "").split(";");
+									for (String door : propertySplit)
+									{
+										try
+										{
+											TVT_DOORS_IDS_TO_OPEN.add(Integer.parseInt(door));
+										}
+										catch (NumberFormatException nfe)
+										{
+											if (!door.equals(""))
+												_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToOpen \"", door, "\""));
+										}
+									}
+
+									propertySplit = L2JModSettings.getProperty("TvTDoorsToClose", "").split(";");
+									for (String door : propertySplit)
+									{
+										try
+										{
+											TVT_DOORS_IDS_TO_CLOSE.add(Integer.parseInt(door));
+										}
+										catch (NumberFormatException nfe)
+										{
+											if (!door.isEmpty())
+												_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToClose \"", door, "\""));
+										}
+									}
+								}
+							}
+						}
+					}
+
+					BANKING_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("BankingEnabled", "false"));
+					BANKING_SYSTEM_GOLDBARS = Integer.parseInt(L2JModSettings.getProperty("BankingGoldbarCount", "1"));
+					BANKING_SYSTEM_ADENA = Integer.parseInt(L2JModSettings.getProperty("BankingAdenaCount", "500000000"));
+
+					L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(L2JModSettings.getProperty("EnableManaPotionSupport", "false"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+L2JMOD_CONFIG_FILE+" File.");
+				}
+
+				// Load PvP Properties file (if exists)
+				try
+				{
+					Properties pvpSettings = new Properties();
+					is = new FileInputStream(new File(PVP_CONFIG_FILE));
+					pvpSettings.load(is);
+
+
+					KARMA_MIN_KARMA = Integer.parseInt(pvpSettings.getProperty("MinKarma", "240"));
+					KARMA_MAX_KARMA = Integer.parseInt(pvpSettings.getProperty("MaxKarma", "10000"));
+					KARMA_XP_DIVIDER = Integer.parseInt(pvpSettings.getProperty("XPDivider", "260"));
+					KARMA_LOST_BASE = Integer.parseInt(pvpSettings.getProperty("BaseKarmaLost", "0"));
+					KARMA_DROP_GM = Boolean.parseBoolean(pvpSettings.getProperty("CanGMDropEquipment", "false"));
+					KARMA_AWARD_PK_KILL = Boolean.parseBoolean(pvpSettings.getProperty("AwardPKKillPVPPoint", "true"));
+					KARMA_PK_LIMIT = Integer.parseInt(pvpSettings.getProperty("MinimumPKRequiredToDrop", "5"));
+					KARMA_NONDROPPABLE_PET_ITEMS = pvpSettings.getProperty("ListOfPetItems", "2375,3500,3501,3502,4422,4423,4424,4425,6648,6649,6650,9882");
+					KARMA_NONDROPPABLE_ITEMS = pvpSettings.getProperty("ListOfNonDroppableItems", "57,1147,425,1146,461,10,2368,7,6,2370,2369,6842,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621,7694,8181,5575,7694,9388,9389,9390");
+					KARMA_LIST_NONDROPPABLE_PET_ITEMS = new FastList<Integer>();
+					for (String id : KARMA_NONDROPPABLE_PET_ITEMS.split(","))
+					{
+						KARMA_LIST_NONDROPPABLE_PET_ITEMS.add(Integer.parseInt(id));
+					}
+					KARMA_LIST_NONDROPPABLE_ITEMS = new FastList<Integer>();
+					for (String id : KARMA_NONDROPPABLE_ITEMS.split(","))
+					{
+						KARMA_LIST_NONDROPPABLE_ITEMS.add(Integer.parseInt(id));
+					}
+					PVP_NORMAL_TIME = Integer.parseInt(pvpSettings.getProperty("PvPVsNormalTime", "120000"));
+					PVP_PVP_TIME = Integer.parseInt(pvpSettings.getProperty("PvPVsPvPTime", "60000"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+PVP_CONFIG_FILE+" File.");
+				}
+
+				try
+				{
+					Properties Settings = new Properties();
+					is = new FileInputStream(HEXID_FILE);
+					Settings.load(is);
+					SERVER_ID = Integer.parseInt(Settings.getProperty("ServerID"));
+					HEX_ID = new BigInteger(Settings.getProperty("HexID"), 16).toByteArray();
+				}
+				catch (Exception e)
+				{
+					_log.warning("Could not load HexID file ("+HEXID_FILE+"). Hopefully login will give us one.");
+				}
+			}
+			finally
+			{
+				try
+				{
+					is.close();
+				}
+				catch (Exception e) { }
+			}
+		}
+		else if(Server.serverMode == Server.MODE_LOGINSERVER)
+		{
+			_log.info("loading login config");
+			InputStream is = null;
+			try
+			{
+				try
+				{
+					Properties serverSettings = new Properties();
+					is = new FileInputStream(new File(LOGIN_CONFIGURATION_FILE));
+					serverSettings.load(is);
+
+					GAME_SERVER_LOGIN_HOST = serverSettings.getProperty("LoginHostname","*");
+					GAME_SERVER_LOGIN_PORT = Integer.parseInt(serverSettings.getProperty("LoginPort","9013"));
+
+					LOGIN_BIND_ADDRESS = serverSettings.getProperty("LoginserverHostname", "*");
+					PORT_LOGIN = Integer.parseInt(serverSettings.getProperty("LoginserverPort", "2106"));
+
+					DEBUG = Boolean.parseBoolean(serverSettings.getProperty("Debug", "false"));
+					PACKET_HANDLER_DEBUG = Boolean.parseBoolean(serverSettings.getProperty("PacketHandlerDebug", "false"));
+					DEVELOPER = Boolean.parseBoolean(serverSettings.getProperty("Developer", "false"));
+					ASSERT = Boolean.parseBoolean(serverSettings.getProperty("Assert", "false"));
+
+					ACCEPT_NEW_GAMESERVER = Boolean.parseBoolean(serverSettings.getProperty("AcceptNewGameServer","True"));
+					REQUEST_ID = Integer.parseInt(serverSettings.getProperty("RequestServerID","0"));
+					ACCEPT_ALTERNATE_ID = Boolean.parseBoolean(serverSettings.getProperty("AcceptAlternateID","True"));
+
+					LOGIN_TRY_BEFORE_BAN = Integer.parseInt(serverSettings.getProperty("LoginTryBeforeBan", "10"));
+					LOGIN_BLOCK_AFTER_BAN = Integer.parseInt(serverSettings.getProperty("LoginBlockAfterBan", "600"));
+
+					LOG_LOGIN_CONTROLLER = Boolean.parseBoolean(serverSettings.getProperty("LogLoginController", "true"));
+
+					DATAPACK_ROOT = new File(serverSettings.getProperty("DatapackRoot", ".")).getCanonicalFile(); //FIXME: in login?
+
+					INTERNAL_HOSTNAME = serverSettings.getProperty("InternalHostname", "localhost");
+					EXTERNAL_HOSTNAME = serverSettings.getProperty("ExternalHostname", "localhost");
+
+					DATABASE_DRIVER = serverSettings.getProperty("Driver", "com.mysql.jdbc.Driver");
+					DATABASE_URL = serverSettings.getProperty("URL", "jdbc:mysql://localhost/l2jdb");
+					DATABASE_LOGIN = serverSettings.getProperty("Login", "root");
+					DATABASE_PASSWORD = serverSettings.getProperty("Password", "");
+					DATABASE_MAX_CONNECTIONS = Integer.parseInt(serverSettings.getProperty("MaximumDbConnections", "10"));
+
+					SHOW_LICENCE = Boolean.parseBoolean(serverSettings.getProperty("ShowLicence", "true"));
+					IP_UPDATE_TIME = Integer.parseInt(serverSettings.getProperty("IpUpdateTime","15"));
+					FORCE_GGAUTH = Boolean.parseBoolean(serverSettings.getProperty("ForceGGAuth", "false"));
+
+					AUTO_CREATE_ACCOUNTS = Boolean.parseBoolean(serverSettings.getProperty("AutoCreateAccounts","True"));
+
+					FLOOD_PROTECTION = Boolean.parseBoolean(serverSettings.getProperty("EnableFloodProtection","True"));
+					FAST_CONNECTION_LIMIT = Integer.parseInt(serverSettings.getProperty("FastConnectionLimit","15"));
+					NORMAL_CONNECTION_TIME = Integer.parseInt(serverSettings.getProperty("NormalConnectionTime","700"));
+					FAST_CONNECTION_TIME = Integer.parseInt(serverSettings.getProperty("FastConnectionTime","350"));
+					MAX_CONNECTION_PER_IP = Integer.parseInt(serverSettings.getProperty("MaxConnectionPerIP","50"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+CONFIGURATION_FILE+" File.");
+				}
+
+				// Load Telnet Properties file (if exists)
+				try
+				{
+					Properties telnetSettings = new Properties();
+					is = new FileInputStream(new File(TELNET_FILE));
+					telnetSettings.load(is);
+
+					IS_TELNET_ENABLED = Boolean.parseBoolean(telnetSettings.getProperty("EnableTelnet", "false"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load "+TELNET_FILE+" File.");
+				}
+			}
+			finally
+			{
+				try
+				{
+					is.close();
+				}
+				catch(Exception e) { }
+			}
+		}
+		else
+		{
+			_log.severe("Could not Load Config: server mode was not set");
+		}
+	}
+
+	/**
+	 * Set a new value to a game parameter from the admin console.
+	 * @param pName (String) : name of the parameter to change
+	 * @param pValue (String) : new value of the parameter
+	 * @return boolean : true if modification has been made
+	 * @link useAdminCommand
+	 */
+	public static boolean setParameterValue(String pName, String pValue)
+	{
+		if (pName.equalsIgnoreCase("RateXp")) RATE_XP = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateSp")) RATE_SP = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RatePartyXp")) RATE_PARTY_XP = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RatePartySp")) RATE_PARTY_SP = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateQuestsReward")) RATE_QUESTS_REWARD = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateDropAdena")) RATE_DROP_ADENA = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateConsumableCost")) RATE_CONSUMABLE_COST = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateExtractFish")) RATE_EXTR_FISH = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateDropItems")) RATE_DROP_ITEMS = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateRaidDropItems")) RATE_DROP_ITEMS_BY_RAID = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateDropSpoil")) RATE_DROP_SPOIL = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateDropManor")) RATE_DROP_MANOR = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("RateDropQuest")) RATE_DROP_QUEST = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateKarmaExpLost")) RATE_KARMA_EXP_LOST = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("RateSiegeGuardsPrice")) RATE_SIEGE_GUARDS_PRICE = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("PlayerDropLimit")) PLAYER_DROP_LIMIT = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("PlayerRateDrop")) PLAYER_RATE_DROP = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("PlayerRateDropItem")) PLAYER_RATE_DROP_ITEM = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("PlayerRateDropEquip")) PLAYER_RATE_DROP_EQUIP = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("PlayerRateDropEquipWeapon")) PLAYER_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("KarmaDropLimit")) KARMA_DROP_LIMIT = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("KarmaRateDrop")) KARMA_RATE_DROP = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("KarmaRateDropItem")) KARMA_RATE_DROP_ITEM = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("KarmaRateDropEquip")) KARMA_RATE_DROP_EQUIP = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("KarmaRateDropEquipWeapon")) KARMA_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("AutoDestroyDroppedItemAfter")) AUTODESTROY_ITEM_AFTER = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("DestroyPlayerDroppedItem")) DESTROY_DROPPED_PLAYER_ITEM = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("DestroyEquipableItem")) DESTROY_EQUIPABLE_PLAYER_ITEM = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("SaveDroppedItem")) SAVE_DROPPED_ITEM = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("EmptyDroppedItemTableAfterLoad")) EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("SaveDroppedItemInterval")) SAVE_DROPPED_ITEM_INTERVAL = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ClearDroppedItemTable")) CLEAR_DROPPED_ITEM_TABLE = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("PreciseDropCalculation")) PRECISE_DROP_CALCULATION = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("MultipleItemDrop")) MULTIPLE_ITEM_DROP = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("CoordSynchronize")) COORD_SYNCHRONIZE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("DeleteCharAfterDays")) DELETE_DAYS = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("AllowDiscardItem")) ALLOW_DISCARDITEM = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowFreight")) ALLOW_FREIGHT = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowWarehouse")) ALLOW_WAREHOUSE = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowWear")) ALLOW_WEAR = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("WearDelay")) WEAR_DELAY = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("WearPrice")) WEAR_PRICE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AllowWater")) ALLOW_WATER = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowRentPet")) ALLOW_RENTPET = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowBoat")) ALLOW_BOAT = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowCursedWeapons")) ALLOW_CURSED_WEAPONS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowManor")) ALLOW_MANOR = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowPetWalkers")) ALLOW_PET_WALKERS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("BypassValidation")) BYPASS_VALIDATION = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("CommunityType")) COMMUNITY_TYPE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("BBSShowPlayerList")) BBS_SHOW_PLAYERLIST = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("BBSDefault")) BBS_DEFAULT = pValue;
+		else if (pName.equalsIgnoreCase("ShowLevelOnCommunityBoard")) SHOW_LEVEL_COMMUNITYBOARD = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("ShowStatusOnCommunityBoard")) SHOW_STATUS_COMMUNITYBOARD = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("NamePageSizeOnCommunityBoard")) NAME_PAGE_SIZE_COMMUNITYBOARD = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("NamePerRowOnCommunityBoard")) NAME_PER_ROW_COMMUNITYBOARD = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("ShowServerNews")) SERVER_NEWS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("ShowNpcLevel")) SHOW_NPC_LVL = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("ForceInventoryUpdate")) FORCE_INVENTORY_UPDATE = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("AutoDeleteInvalidQuestData")) AUTODELETE_INVALID_QUEST_DATA = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("MaximumOnlineUsers")) MAXIMUM_ONLINE_USERS = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("ZoneTown")) ZONE_TOWN = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("MaximumUpdateDistance")) MINIMUM_UPDATE_DISTANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MinimumUpdateTime")) MINIMUN_UPDATE_TIME = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("CheckKnownList")) CHECK_KNOWN = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("KnownListForgetDelay")) KNOWNLIST_FORGET_DELAY = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("UseDeepBlueDropRules")) DEEPBLUE_DROP_RULES = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowGuards")) GUARD_ATTACK_AGGRO_MOB = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("CancelLesserEffect")) EFFECT_CANCELING = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("MaximumSlotsForNoDwarf")) INVENTORY_MAXIMUM_NO_DWARF = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaximumSlotsForDwarf")) INVENTORY_MAXIMUM_DWARF = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaximumSlotsForGMPlayer")) INVENTORY_MAXIMUM_GM = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("MaximumWarehouseSlotsForNoDwarf")) WAREHOUSE_SLOTS_NO_DWARF = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaximumWarehouseSlotsForDwarf")) WAREHOUSE_SLOTS_DWARF = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaximumWarehouseSlotsForClan")) WAREHOUSE_SLOTS_CLAN = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaximumFreightSlots")) FREIGHT_SLOTS = Integer.parseInt(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("EnchantChanceJewelry")) ENCHANT_CHANCE_JEWELRY = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("EnchantMaxWeapon")) ENCHANT_MAX_WEAPON = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("EnchantMaxArmor")) ENCHANT_MAX_ARMOR = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("EnchantMaxJewelry")) ENCHANT_MAX_JEWELRY = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("EnchantSafeMax")) ENCHANT_SAFE_MAX = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("EnchantSafeMaxFull")) ENCHANT_SAFE_MAX_FULL = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("AugmentationNGSkillChance")) AUGMENTATION_NG_SKILL_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AugmentationNGGlowChance")) AUGMENTATION_NG_GLOW_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AugmentationMidSkillChance")) AUGMENTATION_MID_SKILL_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AugmentationMidGlowChance")) AUGMENTATION_MID_GLOW_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AugmentationHighSkillChance")) AUGMENTATION_HIGH_SKILL_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AugmentationHighGlowChance")) AUGMENTATION_HIGH_GLOW_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AugmentationTopSkillChance")) AUGMENTATION_TOP_SKILL_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AugmentationTopGlowChance")) AUGMENTATION_TOP_GLOW_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AugmentationBaseStatChance")) AUGMENTATION_BASESTAT_CHANCE = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("HpRegenMultiplier")) HP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("MpRegenMultiplier")) MP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("CpRegenMultiplier")) CP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
+
+		else if (pName.equalsIgnoreCase("RaidHpRegenMultiplier")) RAID_HP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("RaidMpRegenMultiplier")) RAID_MP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("RaidPDefenceMultiplier")) RAID_PDEFENCE_MULTIPLIER = Double.parseDouble(pValue) /100;
+		else if (pName.equalsIgnoreCase("RaidMDefenceMultiplier")) RAID_MDEFENCE_MULTIPLIER = Double.parseDouble(pValue) /100;
+		else if (pName.equalsIgnoreCase("RaidMinionRespawnTime")) RAID_MINION_RESPAWN_TIMER =Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("StartingAdena")) STARTING_ADENA = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("UnstuckInterval")) UNSTUCK_INTERVAL = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("PlayerSpawnProtection")) PLAYER_SPAWN_PROTECTION = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("PlayerFakeDeathUpProtection")) PLAYER_FAKEDEATH_UP_PROTECTION = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("RestorePlayerInstance")) RESTORE_PLAYER_INSTANCE = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AllowSummonToInstance")) ALLOW_SUMMON_TO_INSTANCE = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("PartyXpCutoffMethod")) PARTY_XP_CUTOFF_METHOD = pValue;
+		else if (pName.equalsIgnoreCase("PartyXpCutoffPercent")) PARTY_XP_CUTOFF_PERCENT = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("PartyXpCutoffLevel")) PARTY_XP_CUTOFF_LEVEL = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("RespawnRestoreCP")) RESPAWN_RESTORE_CP = Double.parseDouble(pValue) / 100;
+		else if (pName.equalsIgnoreCase("RespawnRestoreHP")) RESPAWN_RESTORE_HP = Double.parseDouble(pValue) / 100;
+		else if (pName.equalsIgnoreCase("RespawnRestoreMP")) RESPAWN_RESTORE_MP = Double.parseDouble(pValue) / 100;
+
+		else if (pName.equalsIgnoreCase("MaxPvtStoreSellSlotsDwarf")) MAX_PVTSTORESELL_SLOTS_DWARF = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaxPvtStoreSellSlotsOther")) MAX_PVTSTORESELL_SLOTS_OTHER = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaxPvtStoreBuySlotsDwarf")) MAX_PVTSTOREBUY_SLOTS_DWARF = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaxPvtStoreBuySlotsOther")) MAX_PVTSTOREBUY_SLOTS_OTHER = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("StoreSkillCooltime")) STORE_SKILL_COOLTIME = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AnnounceMammonSpawn")) ANNOUNCE_MAMMON_SPAWN = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("AltGameTiredness")) ALT_GAME_TIREDNESS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltGameCreation")) ALT_GAME_CREATION = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltGameCreationSpeed")) ALT_GAME_CREATION_SPEED = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("AltGameCreationXpRate")) ALT_GAME_CREATION_XP_RATE = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("AltGameCreationRareXpSpRate")) ALT_GAME_CREATION_RARE_XPSP_RATE = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("AltGameCreationSpRate")) ALT_GAME_CREATION_SP_RATE = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("AltWeightLimit")) ALT_WEIGHT_LIMIT = Double.parseDouble(pValue);
+		else if (pName.equalsIgnoreCase("AltBlacksmithUseRecipes")) ALT_BLACKSMITH_USE_RECIPES = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltGameSkillLearn")) ALT_GAME_SKILL_LEARN = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("RemoveCastleCirclets")) REMOVE_CASTLE_CIRCLETS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("ReputationScorePerKill")) REPUTATION_SCORE_PER_KILL = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AltGameCancelByHit"))
+		{
+			ALT_GAME_CANCEL_BOW = pValue.equalsIgnoreCase("bow") || pValue.equalsIgnoreCase("all");
+			ALT_GAME_CANCEL_CAST = pValue.equalsIgnoreCase("cast") || pValue.equalsIgnoreCase("all");
+		}
+
+		else if (pName.equalsIgnoreCase("AltShieldBlocks")) ALT_GAME_SHIELD_BLOCKS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltPerfectShieldBlockRate")) ALT_PERFECT_SHLD_BLOCK = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("Delevel")) ALT_GAME_DELEVEL = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("MagicFailures")) ALT_GAME_MAGICFAILURES = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltMobAgroInPeaceZone")) ALT_MOB_AGRO_IN_PEACEZONE = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("AltGameExponentXp")) ALT_GAME_EXPONENT_XP = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("AltGameExponentSp")) ALT_GAME_EXPONENT_SP = Float.parseFloat(pValue);
+
+		else if (pName.equalsIgnoreCase("AllowClassMasters")) ALLOW_CLASS_MASTERS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltGameFreights")) ALT_GAME_FREIGHTS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltGameFreightPrice")) ALT_GAME_FREIGHT_PRICE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AltPartyRange")) ALT_PARTY_RANGE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AltPartyRange2")) ALT_PARTY_RANGE2 = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("CraftingEnabled")) IS_CRAFTING_ENABLED = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("LifeCrystalNeeded")) LIFE_CRYSTAL_NEEDED = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("SpBookNeeded")) SP_BOOK_NEEDED = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AutoLoot")) AUTO_LOOT = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AutoLootHerbs")) AUTO_LOOT_HERBS = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("AltKarmaPlayerCanBeKilledInPeaceZone")) ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltKarmaPlayerCanShop")) ALT_GAME_KARMA_PLAYER_CAN_SHOP = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltKarmaPlayerCanUseGK")) ALT_GAME_KARMA_PLAYER_CAN_USE_GK = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltKarmaPlayerCanTeleport")) ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltKarmaPlayerCanTrade")) ALT_GAME_KARMA_PLAYER_CAN_TRADE = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltKarmaPlayerCanUseWareHouse")) ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("MaxPersonalFamePoints")) MAX_PERSONAL_FAME_POINTS = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("FortressZoneFameTaskFrequency")) FORTRESS_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("FortressZoneFameAquirePoints")) FORTRESS_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("CastleZoneFameTaskFrequency")) CASTLE_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("CastleZoneFameAquirePoints")) CASTLE_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("AltCastleForDawn")) ALT_GAME_CASTLE_DAWN = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltCastleForDusk")) ALT_GAME_CASTLE_DUSK = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltRequireClanCastle")) ALT_GAME_REQUIRE_CLAN_CASTLE = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltFreeTeleporting")) ALT_GAME_FREE_TELEPORT = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltSubClassWithoutQuests")) ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AltMembersCanWithdrawFromClanWH")) ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("DwarfRecipeLimit")) DWARF_RECIPE_LIMIT = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("CommonRecipeLimit")) COMMON_RECIPE_LIMIT = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("ChampionEnable")) L2JMOD_CHAMPION_ENABLE =	Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("ChampionFrequency")) L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ChampionMinLevel")) L2JMOD_CHAMP_MIN_LVL = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ChampionMaxLevel")) L2JMOD_CHAMP_MAX_LVL = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ChampionHp")) L2JMOD_CHAMPION_HP = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ChampionHpRegen")) L2JMOD_CHAMPION_HP_REGEN = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("ChampionRewards")) L2JMOD_CHAMPION_REWARDS = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ChampionAdenasRewards")) L2JMOD_CHAMPION_ADENAS_REWARDS = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("ChampionAtk")) L2JMOD_CHAMPION_ATK = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("ChampionSpdAtk")) L2JMOD_CHAMPION_SPD_ATK = Float.parseFloat(pValue);
+		else if (pName.equalsIgnoreCase("ChampionRewardLowerLvlItemChance")) L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ChampionRewardHigherLvlItemChance")) L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ChampionRewardItemID")) L2JMOD_CHAMPION_REWARD_ID = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("ChampionRewardItemQty")) L2JMOD_CHAMPION_REWARD_QTY = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("AllowWedding")) L2JMOD_ALLOW_WEDDING = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("WeddingPrice")) L2JMOD_WEDDING_PRICE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("WeddingPunishInfidelity")) L2JMOD_WEDDING_PUNISH_INFIDELITY = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("WeddingTeleport")) L2JMOD_WEDDING_TELEPORT = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("WeddingTeleportPrice")) L2JMOD_WEDDING_TELEPORT_PRICE = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("WeddingTeleportDuration")) L2JMOD_WEDDING_TELEPORT_DURATION = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("WeddingAllowSameSex")) L2JMOD_WEDDING_SAMESEX = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("WeddingFormalWear")) L2JMOD_WEDDING_FORMALWEAR = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("WeddingDivorceCosts")) L2JMOD_WEDDING_DIVORCE_COSTS = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("TvTEventEnabled")) TVT_EVENT_ENABLED = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("TvTEventInterval")) TVT_EVENT_INTERVAL = pValue.split(",");
+		else if (pName.equalsIgnoreCase("TvTEventParticipationTime")) TVT_EVENT_PARTICIPATION_TIME = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("TvTEventRunningTime")) TVT_EVENT_RUNNING_TIME = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("TvTEventParticipationNpcId")) TVT_EVENT_PARTICIPATION_NPC_ID = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("EnableWarehouseSortingClan")) L2JMOD_ENABLE_WAREHOUSESORTING_CLAN = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("EnableWarehouseSortingPrivate")) L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("EnableWarehouseSortingFreight")) L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("EnableManaPotionSupport")) L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(pValue);
+
+		else if (pName.equalsIgnoreCase("MinKarma")) KARMA_MIN_KARMA = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("MaxKarma")) KARMA_MAX_KARMA = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("XPDivider")) KARMA_XP_DIVIDER = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("BaseKarmaLost")) KARMA_LOST_BASE = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("CanGMDropEquipment")) KARMA_DROP_GM = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("AwardPKKillPVPPoint")) KARMA_AWARD_PK_KILL = Boolean.parseBoolean(pValue);
+		else if (pName.equalsIgnoreCase("MinimumPKRequiredToDrop")) KARMA_PK_LIMIT = Integer.parseInt(pValue);
+
+		else if (pName.equalsIgnoreCase("PvPVsNormalTime")) PVP_NORMAL_TIME = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("PvPVsPvPTime")) PVP_PVP_TIME = Integer.parseInt(pValue);
+		else if (pName.equalsIgnoreCase("GlobalChat")) DEFAULT_GLOBAL_CHAT = pValue;
+		else if (pName.equalsIgnoreCase("TradeChat"))	DEFAULT_TRADE_CHAT = pValue;
+		else if (pName.equalsIgnoreCase("MenuStyle"))	GM_ADMIN_MENU_STYLE = pValue;
+		else return false;
+		return true;
+	}
+
+	private Config() { }
+
+	/**
+	 * Save hexadecimal ID of the server in the properties file.
+	 * @param string (String) : hexadecimal ID of the server to store
+	 * @see HEXID_FILE
+	 * @see saveHexid(String string, String fileName)
+	 * @link LoginServerThread
+	 */
+	public static void saveHexid(int serverId, String string)
+	{
+		Config.saveHexid(serverId, string, HEXID_FILE);
+	}
+
+	/**
+	 * Save hexadecimal ID of the server in the properties file.
+	 * @param hexId (String) : hexadecimal ID of the server to store
+	 * @param fileName (String) : name of the properties file
+	 */
+	public static void saveHexid(int serverId, String hexId, String fileName)
+	{
+		try
+		{
+			Properties hexSetting = new Properties();
+			File file = new File(fileName);
+			//Create a new empty file only if it doesn't exist
+			file.createNewFile();
+			OutputStream out = new FileOutputStream(file);
+			hexSetting.setProperty("ServerID",String.valueOf(serverId));
+			hexSetting.setProperty("HexID",hexId);
+			hexSetting.store(out,"the hexID to auth into login");
+			out.close();
+		}
+		catch (Exception e)
+		{
+			_log.warning(StringUtil.concat("Failed to save hex id to ", fileName, " File."));
+			e.printStackTrace();
+		}
+	}
 }

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/olympiad/Olympiad.java

@@ -189,7 +189,7 @@ public class Olympiad
 		_currentCycle = Integer.parseInt(OlympiadProperties.getProperty("CurrentCycle", "1"));
 		_period = Integer.parseInt(OlympiadProperties.getProperty("Period", "0"));
 		_olympiadEnd = Long.parseLong(OlympiadProperties.getProperty("OlympiadEnd", "0"));
-		_validationEnd = Long.parseLong(OlympiadProperties.getProperty("ValdationEnd", "0"));
+		_validationEnd = Long.parseLong(OlympiadProperties.getProperty("ValidationEnd", "0"));
 		_nextWeeklyChange = Long.parseLong(OlympiadProperties.getProperty("NextWeeklyChange", "0"));
 		
 		switch (_period)