|  |  | @ -44,13 +44,7 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int BANK_GOLD_LIMIT = 25000000; |  |  |  | 	public static final int BANK_GOLD_LIMIT = 25000000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int PLAYER_GOLD_LIMIT = 10000000; |  |  |  | 	public static final int PLAYER_GOLD_LIMIT = 10000000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int BUILDING_GOLD_LIMIT = 15000000; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final String VENDOR_FULL = "This vendor has no more gold to give."; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean HEIGHTMAP_DEBUG = false; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean FAST_LOAD = false; // skip loading mobs,
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// buildings, npcs
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean FAST_LOAD_INIT = false; // skip loading mobs,
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// buildings, npcs
 |  |  |  | 	// buildings, npcs
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  | 	/* | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Login cache flags |  |  |  | 	 * Login cache flags | 
			
		
	
	
		
		
			
				
					|  |  | @ -59,19 +53,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean SKIP_CACHE_LOGIN_PLAYER = false; // skip caching															// on login
 |  |  |  | 	public static final boolean SKIP_CACHE_LOGIN_PLAYER = false; // skip caching															// on login
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean SKIP_CACHE_LOGIN_ITEM = false; // skip caching
 |  |  |  | 	public static final boolean SKIP_CACHE_LOGIN_ITEM = false; // skip caching
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Logger |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int bannerWidth = 80; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int typeWidth = 10; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int originWidth = 25; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int logWidth = 80; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * ConfigSystem related |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final String DEFAULT_CONFIG_DIR = "mb.conf/"; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final String DEFAULT_DATA_DIR = "mb.data/"; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  | 	/* | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * ChatManager related |  |  |  | 	 * ChatManager related | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
	
		
		
			
				
					|  |  | @ -88,28 +69,8 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// The number of elements in INITIAL_WORKERS defines the initial number of
 |  |  |  | 	// The number of elements in INITIAL_WORKERS defines the initial number of
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// job pools
 |  |  |  | 	// job pools
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int[] INITIAL_JOBPOOL_WORKERS = { 4, 2, 1 }; |  |  |  | 	public static final int[] INITIAL_JOBPOOL_WORKERS = { 4, 2, 1 }; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int DEFAULT_JOBPOOL_WORKERS = 1; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int DEFAULT_LOGIN_JOBPOOL_WORKERS = 5; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int JOBWORKER_IDLE_TIMEOUT_MS = 750; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int JOBMANAGER_INTERNAL_MONITORING_INTERVAL_MS = 1000; |  |  |  | 	public static final int JOBMANAGER_INTERNAL_MONITORING_INTERVAL_MS = 1000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int JOB_STALL_THRESHOLD_MS = 120 * 1000; |  |  |  | 	public static final int JOB_STALL_THRESHOLD_MS = 120 * 1000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int MAX_JOB_HISTORY_OBJECTS = 1000; // max number of
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// historic jobs to
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// store on queue
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// after execution
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int JOBSTATISTICS_WAKE_INTERVAL_MS = 500; // wake up and
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// gather
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// job stats
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// every X
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// ms,
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// decrease
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// this is
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// we blow
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// the job
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// history
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// queue
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SCHEDULER_INITIAL_CAPACITY = 1000; |  |  |  | 	public static final int SCHEDULER_INITIAL_CAPACITY = 1000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SCHEDULER_EXECUTION_TIME_COMPENSATION = 16; |  |  |  | 	public static final int SCHEDULER_EXECUTION_TIME_COMPENSATION = 16; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -127,7 +88,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * LoginErrorMsg related |  |  |  | 	 * LoginErrorMsg related | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int LOGINERROR_INVALID_USERNAME_PASSWORD = 1; |  |  |  | 	public static final int LOGINERROR_INVALID_USERNAME_PASSWORD = 1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int LOGINERROR_ACCOUNT_SUSPENDED = 2; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  | 	/* | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Message is Version: |  |  |  | 	 * Message is Version: | 
			
		
	
	
		
		
			
				
					|  |  | @ -154,20 +114,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int LOGINERROR_LOGINSERVER_BUSY = 12; |  |  |  | 	public static final int LOGINERROR_LOGINSERVER_BUSY = 12; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int LOGINERROR_BLANK = 13; |  |  |  | 	public static final int LOGINERROR_BLANK = 13; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * >13 = 'blank' 12 = 'Login Server is currently busy, please try again in a |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * few minutes.' 11 = 'Unable to login. Please try again. If this problem |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * persists, contact customer support (error = )' 10 = 'You have made too |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * many unsuccessful login attempts, you must wait 15 minutes.' 9 = 'Your |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Account is insecure, you must change your password before logging in |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * again.' 8 = 'This Account does not have an active Shadowbane |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Subscription' 7 = 'No More PlayTime on this account 6 = 'Invalid |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Administrator Username/Password' 5 = 'Login Server Is Unavailable (Error |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * = 0)' 4 = 'YouAreNotAllowedToLoginYet' 3 = 'Incorrect ClientVersion, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * latest is' 2 = 'This Account Has Been Suspended' 1 = 'Invalid |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Username/Password' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  | 	/* | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Name Validation Related |  |  |  | 	 * Name Validation Related | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
	
		
		
			
				
					|  |  | @ -198,15 +144,7 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean TCP_NO_DELAY_DEFAULT = true; |  |  |  | 	public static final boolean TCP_NO_DELAY_DEFAULT = true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final byte MAX_CRYPTO_INIT_TRIES = 10; |  |  |  | 	public static final byte MAX_CRYPTO_INIT_TRIES = 10; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * EmuConnectionManager related |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final long delayBetweenConnectionChecks = 5000L; // in ms
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final long delayBetweenReconnectAttempts = 2000L; // in ms
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int maxReconnectAttempts = 20; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final long reconnectTimeout = 15000L; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static boolean DEBUG_PROTOCOL = false; |  |  |  | 	public static boolean DEBUG_PROTOCOL = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  | 	/* | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Account Related |  |  |  | 	 * Account Related | 
			
		
	
	
		
		
			
				
					|  |  | @ -214,14 +152,7 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final byte MAX_LOGIN_ATTEMPTS = 5; |  |  |  | 	public static final byte MAX_LOGIN_ATTEMPTS = 5; | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static final int RESET_LOGIN_ATTEMPTS_AFTER = (15 * 60 * 1000); // in
 |  |  |  |     public static final int RESET_LOGIN_ATTEMPTS_AFTER = (15 * 60 * 1000); // in
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     // ms
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static final int MAX_ACTIVE_GAME_ACCOUNTS_PER_DISCORD_ACCOUNT = 4; // 0
 |  |  |  |     public static final int MAX_ACTIVE_GAME_ACCOUNTS_PER_DISCORD_ACCOUNT = 4; // 0
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// to
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// disable
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Character related |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final byte MAX_NUM_OF_CHARACTERS = 7; |  |  |  | 	public static final byte MAX_NUM_OF_CHARACTERS = 7; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int STAT_STR_ID = 0x8AC3C0E6; |  |  |  | 	public static final int STAT_STR_ID = 0x8AC3C0E6; | 
			
		
	
	
		
		
			
				
					|  |  | @ -230,16 +161,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int STAT_DEX_ID = 0xE07B3336; |  |  |  | 	public static final int STAT_DEX_ID = 0xE07B3336; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int STAT_INT_ID = 0xFF665EC3; |  |  |  | 	public static final int STAT_INT_ID = 0xFF665EC3; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Skill attributeIDs |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SKILL_RUNNING = 5; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * EquipSlot |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SLOT_UNEQUIPPED = 0; |  |  |  | 	public static final int SLOT_UNEQUIPPED = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SLOT_MAINHAND = 1; |  |  |  | 	public static final int SLOT_MAINHAND = 1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SLOT_OFFHAND = 2; |  |  |  | 	public static final int SLOT_OFFHAND = 2; | 
			
		
	
	
		
		
			
				
					|  |  | @ -275,12 +196,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final String[] FORMATION_NAMES = { "Column", "Line", "Box", |  |  |  | 	public static final String[] FORMATION_NAMES = { "Column", "Line", "Box", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"Triangle", "Circle", "Ranks", "Wedge", "Inverse Wedge", "T" }; |  |  |  | 			"Triangle", "Circle", "Ranks", "Wedge", "Inverse Wedge", "T" }; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Runes |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int RUNETYPE_TRAIT = 1; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int RUNE_COST_ATTRIBUTE_ID = 0; |  |  |  | 	public static final int RUNE_COST_ATTRIBUTE_ID = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int RUNE_STR_ATTRIBUTE_ID = 1; |  |  |  | 	public static final int RUNE_STR_ATTRIBUTE_ID = 1; | 
			
		
	
	
		
		
			
				
					|  |  | @ -306,64 +221,13 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int NO_DB_ROW_ASSIGNED_YET = Integer.MAX_VALUE; |  |  |  | 	public static final int NO_DB_ROW_ASSIGNED_YET = Integer.MAX_VALUE; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * PreparedStatement query debugging |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean DB_DEBUGGING_ON_BY_DEFAULT = false; // warning:
 |  |  |  | 	public static final boolean DB_DEBUGGING_ON_BY_DEFAULT = false; // warning:
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// not
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	// recommended
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// for a
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// live
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// production
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// server
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean ENABLE_QUERY_TIME_WARNING = true; |  |  |  | 	public static final boolean ENABLE_QUERY_TIME_WARNING = true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean ENABLE_UPDATE_TIME_WARNING = true; |  |  |  | 	public static final boolean ENABLE_UPDATE_TIME_WARNING = true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final boolean ENABLE_EXECUTION_TIME_WARNING = true; |  |  |  | 	public static final boolean ENABLE_EXECUTION_TIME_WARNING = true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * ClientEncryption |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int AUTHENTICATION_WAIT_TIMEOUT = 1000 * 2; // seconds
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int MaxGetKeyFromClientTries = 4; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int MaxProtocolMessagesPerSecond = 20;  // 60 per second
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Guild Colors |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_LIGHTGREEN = 0;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_GREEN = 1;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_DARKGREEN = 2;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_LIGHTBLUE = 3;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_BLUE = 4;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_DARKBLUE = 5;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_PURPLE = 6;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_DARKRED = 7;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_LIGHTRED = 8;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_ORANGE = 9;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_BROWNORANGE = 10;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_BROWN = 11;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_BROWNYELLOW = 12;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_YELLOW = 13;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_LIGHTGREY = 14;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_GREY = 15;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_DARKGREY = 16;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_BLACK = 17;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_BLUEGREEN = 18;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// public static final int GUILD_COLOR_WHITE = 19;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Timeout Related |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int AFK_TIMEOUT_MS = (30 * 60 * 1000) * 100; // Added
 |  |  |  | 	public static final int AFK_TIMEOUT_MS = (30 * 60 * 1000) * 100; // Added
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// *100
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// to
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// discount
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// it as
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// a
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// "random DC reason"
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int KEEPALIVE_TIMEOUT_MS = (2 * 60 * 1000) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			+ (15 * 1000); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int TIMEOUT_CHECKS_TIMER_MS = (60 * 1000); |  |  |  | 	public static final int TIMEOUT_CHECKS_TIMER_MS = (60 * 1000); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  | 	/* | 
			
		
	
	
		
		
			
				
					|  |  | @ -477,19 +341,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float RUNSPEED_MOB = 15.4f; |  |  |  | 	public static final float RUNSPEED_MOB = 15.4f; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float MOVEMENT_DESYNC_TOLERANCE = 2f; // Distance out of
 |  |  |  | 	public static final float MOVEMENT_DESYNC_TOLERANCE = 2f; // Distance out of
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static String ITEMNOTINVENTORY = "Item must be in your inventory."; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static String ZEROITEM = "This item has zero quantity."; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// sync with
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// client can be
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// before
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// generating
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// debug
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// messages
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// max units a player can desync before the server stops forcing
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// client->server sync
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float MOVEMENT_MAX_DESYNC = 1000; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int IGNORE_LIST_MAX = 60; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float NO_WEAPON_RANGE = 8f; // Range for attack with no
 |  |  |  | 	public static final float NO_WEAPON_RANGE = 8f; // Range for attack with no
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// weapon
 |  |  |  | 	// weapon
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -508,11 +359,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// minutes
 |  |  |  | 	// minutes
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float HEALTH_REGEN_RUN = 0f; |  |  |  | 	public static final float HEALTH_REGEN_RUN = 0f; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float HEALTH_REGEN_SWIM_NOSTAMINA = -.03f; // 100% in
 |  |  |  | 	public static final float HEALTH_REGEN_SWIM_NOSTAMINA = -.03f; // 100% in
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// 33.33
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// seconds.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Needs
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// verified
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float HEALTH_REGEN_SIT_STATIC = 0.33333f; // 100% in 3
 |  |  |  | 	public static final float HEALTH_REGEN_SIT_STATIC = 0.33333f; // 100% in 3
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// minutes
 |  |  |  | 	// minutes
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float HEALTH_REGEN_IDLE_STATIC = 0.0666667f; // 100% in
 |  |  |  | 	public static final float HEALTH_REGEN_IDLE_STATIC = 0.0666667f; // 100% in
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -524,24 +370,13 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float HEALTH_REGEN_SWIM_NOSTAMINA_STATIC = 0f; // 100%
 |  |  |  | 	public static final float HEALTH_REGEN_SWIM_NOSTAMINA_STATIC = 0f; // 100%
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float MANA_REGEN_STATIC = 0.16666666666666666666666666666667f; |  |  |  | 	public static final float MANA_REGEN_STATIC = 0.16666666666666666666666666666667f; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// in 30
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// seconds.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Needs
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// verified
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float MANA_REGEN_SIT = 0.008333333f; // 100% in 2
 |  |  |  | 	public static final float MANA_REGEN_SIT = 0.008333333f; // 100% in 2
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// minutes <=
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	// needs
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// verified
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public static final float MANA_REGEN_IDLE = 0.00166667f; // 100% in 10
 |  |  |  | 	public static final float MANA_REGEN_IDLE = 0.00166667f; // 100% in 10
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// minutes <=
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	// needs
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// verified
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public static final float MANA_REGEN_WALK = 0.00125f; // 100% in 13.333
 |  |  |  | 	public static final float MANA_REGEN_WALK = 0.00125f; // 100% in 13.333
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// minutes <= needs
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// verified
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float MANA_REGEN_RUN = 0f; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	public static final float MANA_REGEN_RUN = 0f; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float STAMINA_REGEN_SIT = 2f; // 2 per second
 |  |  |  | 	public static final float STAMINA_REGEN_SIT = 2f; // 2 per second
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float STAMINA_REGEN_IDLE = 0.2f; // 1 per 5 seconds
 |  |  |  | 	public static final float STAMINA_REGEN_IDLE = 0.2f; // 1 per 5 seconds
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float STAMINA_REGEN_WALK = 0f; |  |  |  | 	public static final float STAMINA_REGEN_WALK = 0f; | 
			
		
	
	
		
		
			
				
					|  |  | @ -554,45 +389,15 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static  float STAMINA_REGEN_FLY_RUN_COMBAT = -1.6499999762f; // needs verifying
 |  |  |  | 	public static  float STAMINA_REGEN_FLY_RUN_COMBAT = -1.6499999762f; // needs verifying
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int REGEN_SENSITIVITY_PLAYER = 250; // calc regen ever X
 |  |  |  | 	public static final int REGEN_SENSITIVITY_PLAYER = 250; // calc regen ever X
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// ms
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int REGEN_SENSITIVITY_MOB = 1000; // calc regen ever X
 |  |  |  | 	public static final int REGEN_SENSITIVITY_MOB = 1000; // calc regen ever X
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// ms
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Tombstone type to show Tombstone (2022); Tombstone, Grave (2023); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Tombstone, Skull (2024); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public static final int TOMBSTONE = 2024; |  |  |  | 	public static final int TOMBSTONE = 2024; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int DEATH_SHROUD_DURATION = 1; // 3 minute death shroud
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SAFE_MODE_DURATION = 1; // 3 minute safe mode
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Timers |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int LOGOUT_TIMER_MS = 1000; // logout delay applied
 |  |  |  | 	public static final int LOGOUT_TIMER_MS = 1000; // logout delay applied
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// after the last
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// aggressive action
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int CLEANUP_TIMER_MS = 15 * 60 * 1000; // Remove player
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// from cache
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// after 15
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// minutes
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int CORPSE_CLEANUP_TIMER_MS = 15 * 60 * 1000; // Cleanup
 |  |  |  | 	public static final int CORPSE_CLEANUP_TIMER_MS = 15 * 60 * 1000; // Cleanup
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// corpse
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// in
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// world
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// after
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// 15
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// minutes
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int DEFAULT_SPAWN_TIME_MS = 3 * 60 * 1000; // 3 minute
 |  |  |  | 	public static final int DEFAULT_SPAWN_TIME_MS = 3 * 60 * 1000; // 3 minute
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// respawn
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// on mobs
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// default
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SESSION_CLEANUP_TIMER_MS = 30 * 1000; // cleanup
 |  |  |  | 	public static final int SESSION_CLEANUP_TIMER_MS = 30 * 1000; // cleanup
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// sessions
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	// for login
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// 30
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// seconds
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// after
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// logout
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public static final int MOVEMENT_FREQUENCY_MS = 1000; // Update movement
 |  |  |  | 	public static final int MOVEMENT_FREQUENCY_MS = 1000; // Update movement
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// once every X ms
 |  |  |  | 	// once every X ms
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int FLY_FREQUENCY_MS = 1000; // Update flight once every
 |  |  |  | 	public static final int FLY_FREQUENCY_MS = 1000; // Update flight once every
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -606,7 +411,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final long DB_UPDATE_WARNING_TIME_MS = 250L; |  |  |  | 	public static final long DB_UPDATE_WARNING_TIME_MS = 250L; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final long DB_EXECUTION_WARNING_TIME_MS = 250L; |  |  |  | 	public static final long DB_EXECUTION_WARNING_TIME_MS = 250L; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static boolean DB_ENABLE_QUERY_OUTPUT = false; |  |  |  | 	public static boolean DB_ENABLE_QUERY_OUTPUT = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SUMMON_MAX_WAIT = 18000; // 18 seconds to accept
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// summons
 |  |  |  | 	// summons
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int THIRTY_SECONDS = 30000; |  |  |  | 	public static final int THIRTY_SECONDS = 30000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int FOURTYFIVE_SECONDS = 45000; |  |  |  | 	public static final int FOURTYFIVE_SECONDS = 45000; | 
			
		
	
	
		
		
			
				
					|  |  | @ -616,27 +420,13 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int THIRTY_MINUTES = 1800000; |  |  |  | 	public static final int THIRTY_MINUTES = 1800000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final long TWENTY_FOUR_HOURS = 86400000; |  |  |  | 	public static final long TWENTY_FOUR_HOURS = 86400000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int LOAD_OBJECT_DELAY = 500; // long to wait to update
 |  |  |  | 	public static final int LOAD_OBJECT_DELAY = 500; // long to wait to update
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static int IPLimit = 5000; |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	// group list after
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// LoadChar
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int UPDATE_LINK_WORLD = 2500; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int UPDATE_LINK_LOGIN = 2500; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public static final int TELEPORT_TIME_IN_SECONDS = 10; |  |  |  | 	public static final int TELEPORT_TIME_IN_SECONDS = 10; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int REPLEDGE_TIME_IN_SECONDS = 0; |  |  |  | 	public static final int REPLEDGE_TIME_IN_SECONDS = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int CHECK_DATABASE_UPDATES = 10000; // update database
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// changes every 10
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// seconds.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int RUNEGATE_CLOSE_TIME = 30000; // runegate close timer
 |  |  |  | 	public static final int RUNEGATE_CLOSE_TIME = 30000; // runegate close timer
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final long PLAYER_KILL_XP_TIMER = 60 * 60 * 1000; // 60
 |  |  |  | 	public static final long PLAYER_KILL_XP_TIMER = 60 * 60 * 1000; // 60
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// minutes
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// between
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// grant xp
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// on same
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// target
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int UPDATE_GROUP_RATE = 10000; // Update group info
 |  |  |  | 	public static final int UPDATE_GROUP_RATE = 10000; // Update group info
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// every 10 seconds
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static float PLAYER_HATE_DELIMITER = 50; // reduces 50 hate a second
 |  |  |  | 	public static float PLAYER_HATE_DELIMITER = 50; // reduces 50 hate a second
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// while player idling.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static float PLAYER_COMBAT_HATE_MODIFIER = 2; |  |  |  | 	public static float PLAYER_COMBAT_HATE_MODIFIER = 2; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  | 	/* | 
			
		
	
	
		
		
			
				
					|  |  | @ -662,16 +452,9 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Pet Settings
 |  |  |  | 	// Pet Settings
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float PET_TELEPORT_DISTANCE = 600; // distance a pet
 |  |  |  | 	public static final float PET_TELEPORT_DISTANCE = 600; // distance a pet
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// teleports to
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// player
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float PET_FOLLOW_DISTANCE = 10; // distance a pet starts
 |  |  |  | 	public static final float PET_FOLLOW_DISTANCE = 10; // distance a pet starts
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// moving towards owner
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float PET_REST_DISTANCE = 4; // distance a pet stops
 |  |  |  | 	public static final float PET_REST_DISTANCE = 4; // distance a pet stops
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// moving towards owner
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Combat |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int COMBAT_SEND_DODGE = 20; |  |  |  | 	public static final int COMBAT_SEND_DODGE = 20; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int COMBAT_SEND_BLOCK = 21; |  |  |  | 	public static final int COMBAT_SEND_BLOCK = 21; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int COMBAT_SEND_PARRY = 22; |  |  |  | 	public static final int COMBAT_SEND_PARRY = 22; | 
			
		
	
	
		
		
			
				
					|  |  | @ -684,48 +467,6 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int MAX_COMBAT_HITBOX_RADIUS = 80; |  |  |  | 	public static final int MAX_COMBAT_HITBOX_RADIUS = 80; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int PROC_CHANCE = 5; // %chance to proc
 |  |  |  | 	public static final int PROC_CHANCE = 5; // %chance to proc
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Mob loot -- gold calculations |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final String STRONGBOX_DELAY_STRING = "StrongboxSpam"; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final String STRONGBOX_DELAY_OUTPUT = "You must wait 1 minute to do this again."; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int BIG_SPAM_DELAY = 10000; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static String BIG_SPAM_DELAY_STRING = "BIGSPAM"; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final double GOLD_DROP_PERCENTAGE_CHANCE = 61d; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final double GOLD_DROP_MULTIPLIER_GLOBAL = 1.0d; // tweak all
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// rates at
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// once
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final double GOLD_DROP_MULTIPLIER_HOTZONE = 2.0d; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final double GOLD_DROP_MULTIPLIER_MAELSTROM = 1.1d; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final double GOLD_DROP_MULTIPLIER_OBLIVION = 1.1d; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final double[] GOLD_DROP_MINIMUM_PER_MOB_LEVEL = { 450, 450, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			450, 450, 450, // 0 - 4
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			450, 450, 450, 450, 450, // 5 - 9
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			450, 1000, 1000, 1000, 1000, // 10 - 14
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			1000, 1000, 1000, 1000, 1000, // 15 - 19
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			1000, 1000, 1000, 1000, 1000, // 20 - 24
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			2000, 2000, 2000, 2000, 2000, // 25 - 29
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			2000, 2000, 2000, 2000, 2000, // 30 - 34
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			2000, 2000, 2000, 2000, 2000, // 35 - 39
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			4000, 4000, 4000, 4000, 4000, // 40 - 44
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			4000, 4000, 4000, 4000, 4000, // 45 - 49
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			5000 // 50+
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final double[] GOLD_DROP_MAXIMUM_PER_MOB_LEVEL = { 1000, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			1000, 1000, 1000, 1000, // 0 - 4
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			1000, 1000, 1000, 1000, 1000, // 5 - 9
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			1000, 2500, 2500, 2500, 2500, // 10 - 14
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			2500, 2500, 2500, 2500, 2500, // 15 - 19
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			2500, 2500, 2500, 2500, 2500, // 20 - 24
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			4000, 4000, 4000, 4000, 4000, // 25 - 29
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			4000, 4000, 4000, 4000, 4000, // 30 - 34
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			4000, 4000, 4000, 4000, 4000, // 35 - 39
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			9000, 9000, 9000, 9000, 9000, // 40 - 44
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			9000, 9000, 9000, 9000, 9000, // 45 - 49
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			12000 // 50+
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     // DO NOT FINAL THESE FIELD!
 |  |  |  |     // DO NOT FINAL THESE FIELD!
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static Enum.AccountStatus accessLevel; // Min account level to login to server
 |  |  |  |     public static Enum.AccountStatus accessLevel; // Min account level to login to server
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static boolean blockLogin = false; |  |  |  |     public static boolean blockLogin = false; | 
			
		
	
	
		
		
			
				
					|  |  | @ -734,61 +475,23 @@ public class MBServerStatics { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static boolean ENABLE_AUDIT_JOB_WORKERS = true; |  |  |  | 	public static boolean ENABLE_AUDIT_JOB_WORKERS = true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static boolean ENABLE_COMBAT_TARGET_HITBOX = true; |  |  |  | 	public static boolean ENABLE_COMBAT_TARGET_HITBOX = true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Track Sensitivity |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Rate that track arrow refreshes. When inside TRACK_ARROW_FAST_RANGE, use
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// TRACK_ARROW_SENSITIVITY_FAST speed, otherwise use TRACK_ARROW_SENSITIVITY
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// speed.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float TRACK_ARROW_FAST_RANGE = 50f; // Range to go from
 |  |  |  | 	public static final float TRACK_ARROW_FAST_RANGE = 50f; // Range to go from
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Fast arrow to
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	// slow
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public static final int TRACK_ARROW_SENSITIVITY = 1000; // Refresh track
 |  |  |  | 	public static final int TRACK_ARROW_SENSITIVITY = 1000; // Refresh track
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// arrows every X ms
 |  |  |  | 	// arrows every X ms
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int TRACK_ARROW_SENSITIVITY_FAST = 250; // Refresh track
 |  |  |  | 	public static final int TRACK_ARROW_SENSITIVITY_FAST = 250; // Refresh track
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// arrows every
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// X ms
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/* |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Population breakpoints |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int LOW_POPULATION = 100; |  |  |  | 	public static final int LOW_POPULATION = 100; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int NORMAL_POPULATION = 500; |  |  |  | 	public static final int NORMAL_POPULATION = 500; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int HIGH_POPULATION = 1000; |  |  |  | 	public static final int HIGH_POPULATION = 1000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int VERY_OVERPOPULATED_POPULATION = 3000; |  |  |  | 	public static final int VERY_OVERPOPULATED_POPULATION = 3000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int FULL_POPULATION = 5000; |  |  |  | 	public static final int FULL_POPULATION = 5000; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Refresh sensetivities
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int TRACK_WINDOW_THRESHOLD = 1000; // max refresh once
 |  |  |  | 	public static final int TRACK_WINDOW_THRESHOLD = 1000; // max refresh once
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// every 1 seconds.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int WHO_WINDOW_THRESHOLD = 3000; // max refresh once
 |  |  |  | 	public static final int WHO_WINDOW_THRESHOLD = 3000; // max refresh once
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// every 3 seconds.
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int VENDOR_WINDOW_THRESHOLD = 2000; // max refresh once
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// every 2 seconds.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int PURCHASE_THRESHOLD = 500; // max refresh once every
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// 0.5 seconds.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int SELL_THRESHOLD = 100; // max refresh once every 0.1
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// seconds.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int MAX_PLAYER_LOAD_SIZE = 1000; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Mine related
 |  |  |  | 	// Mine related
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int MINE_EARLY_WINDOW = 16; // 4pm
 |  |  |  | 	public static final int MINE_EARLY_WINDOW = 16; // 4pm
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final int MINE_LATE_WINDOW = 0; // Midnight
 |  |  |  | 	public static final int MINE_LATE_WINDOW = 0; // Midnight
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Race
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float RADIUS_ARACOIX = 0.68999999761581f; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float RADIUS_MINOTAUR = 0.69960004091263f; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float RADIUS_DWARF = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float RADIUS_HUMAN = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float RADIUS_NEPHILIM = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static final float RADIUS_AELFBORN = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static final float RADIUS_ELF = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static final float RADIUS_VAMPIRE = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static final float RADIUS_IREKEI = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static final float RADIUS_HALF_GIANT = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static final float RADIUS_SHADE = 0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static final float RADIUS_CENTAUR = 0.68999999761581f; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static String JUNIOR = "Junior"; |  |  |  |     public static String JUNIOR = "Junior"; | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static String VETERAN = "Veteran"; |  |  |  |     public static String VETERAN = "Veteran"; | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static String ELITE = "Elite"; |  |  |  |     public static String ELITE = "Elite"; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |