diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom.ini deleted file mode 100644 index 9693bfc928..0000000000 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom.ini +++ /dev/null @@ -1,719 +0,0 @@ -# --------------------------------------------------------------------------- -# Custom - non-retail-like systems that have been integrated into the project. -# Be warned that there may be no support for these mods beyond the original author's assistance. - -# --------------------------------------------------------------------------- -# Champion mobs - Turn random mobs into Champions -# --------------------------------------------------------------------------- - -# Enable/Disable Champion Mob System. -ChampionEnable = False - -# Force Champion mobs to be passive? -# To leave champion mobs to default/Aggressive, set to False. -# To set all champion mobs to Passive, set True. -ChampionPassive = False - -# % chance for a mob to became champion (0 to disable). -ChampionFrequency = 5 - -# Title of all Champion Mobs. -ChampionTitle = Champion - -# Red aura for Champion Mobs. -ChampionAura = True - -# Min and max levels allowed for a mob to be a Champion mob. -ChampionMinLevel = 20 -ChampionMaxLevel = 70 - -# Hp multiplier for Champion mobs. -ChampionHp = 8 - -# Hp Regen Multiplier for Champion mobs. -ChampionHpRegen = 1.0 - -# Exp/Sp rewards multiplier for Champion mobs. -ChampionRewardsExpSp = 8.0 - -# Standard rewards chance multiplier for Champion mobs. -ChampionRewardsChance = 8.0 - -# Standard rewards amount multiplier for Champion mobs. -ChampionRewardsAmount = 1.0 - -# Adena & Seal Stone rewards chance multiplier for Champion mobs. -ChampionAdenasRewardsChance = 1.0 - -# Adena & Seal Stone rewards amount multiplier for Champion mobs. -ChampionAdenasRewardsAmount = 1.0 - -# P. Attack and M. Attack bonus for Champion mobs. -ChampionAtk = 1.0 - -# Physical/Magical Attack Speed bonus for Champion mobs. -ChampionSpdAtk = 1.0 - -# Specified reward item ID -ChampionRewardItemID = 6393 - -# The amount of the specified reward a player will receive if they are awarded the item. -ChampionRewardItemQty = 1 - -# % Chance to obtain a specified reward item from a higher level Champion mob. -# Default: 0 -ChampionRewardLowerLvlItemChance = 0 - -# % Chance to obtain a specified reward item from a lower level Champion mob. -# Default: 0 -ChampionRewardHigherLvlItemChance = 0 - -# Do you want to enable the vitality calculation when killing champion mobs? -# Be aware that it can lead to huge unbalance on your server, your rate for that mob would -# then be "mobXP x serverRate x vitalityRate x championXpRate -# Notes: -# Works only if EnableVitality = True -# Default: False -ChampionEnableVitality = False - -# Enable spawning of the champions in instances -# Default = False -ChampionEnableInInstances = False - -# --------------------------------------------------------------------------- -# Wedding System (by evill33t) -# --------------------------------------------------------------------------- -# WARNING: this mod require custom NPC table support turned on ! -# CustomNpcTable = True in General.properties -# --------------------------------------------------------------------------- -# Wedding Manager ID: 50007 -# -# First part - "Engagement" -# 1) Target the player that you want to make a couple with. -# 2) Use the voice command ".engage nameofyourpartner" then press enter. -# 3) If the target player has you on listed as a friend (ie. you are in each other's friends list) a popup will appear with an engagement request along with a system message that you want to be engaged with him/her. -# 4) If the target player accepts the engagement invitation, you will be engaged. -# -# Second part - "Marriage" -# 1) Once two players are engaged, they can speak to Andromeda, the Wedding Priest in the Hot Springs Guild House (Goddard Area). -# (You may need Formal Wear and Adena to pay wedding fees!) -# 2) Each player needs to speak to the NPC and make the request to be married. -# 3) Once done, fireworks will display and the two players will be married. -# -# Afterwards you can use the voice command ".gotolove nameofyourpartner" to teleport to your partner if you're married (there may also be a fee which can be specified below) -# -# If you want to cancel your Engagement/Marriage, use the voice command ".divorce nameofyourpartner". -# -# If you're married you have to pay a specified % of your adena to your partner. -# -# If a player attempts to become engaged to another player while married they may suffer a penalty if it's enabled below. -# --------------------------------------------------------------------------- -# Enable/Disable Wedding System -AllowWedding = False - -# Amount of Adena required to get married -WeddingPrice = 250000000 - -# Enable/Disable punishing of players who attempt to be engaged to other players while married. -WeddingPunishInfidelity = True - -# Enable/Disable teleport function for married couples. -WeddingTeleport = True - -# Amount of Adena required to teleport to spouse. -WeddingTeleportPrice = 50000 - -# Time before character is teleported after using the skill. -WeddingTeleportDuration = 60 - -# Enable/Disable same sex marriages. -WeddingAllowSameSex = False - -# Require players to wear formal wear to be married? -WeddingFormalWear = True - -# Amount of Adena (%) a player must pay to the other to get divorced. -WeddingDivorceCosts = 20 - - -# --------------------------------------------------------------------------- -# Team vs. Team Event Engine (by HorridoJoho) -# --------------------------------------------------------------------------- - -# WARNING: this mod require custom NPC table support turned on ! -# CustomNpcTable = True in General.properties -# --------------------------------------------------------------------------- -# Enable/Disable TvTEvent System -# Default: False -TvTEventEnabled = False - -# TvT in instance -# Default: False -TvTEventInInstance = False - -# Name of the instance file for TvT -# Default: coliseum.xml -TvTEventInstanceFile = coliseum.xml - -# Times TvT will occur (24h format). -# Default: 9:00,15:00,21:00,3:00 -TvTEventInterval = 9:00,15:00,21:00,3:00 - -# Registration timer from start of event (in minutes). -# Default: 30 -TvTEventParticipationTime = 30 - -# Event running time (in minutes). -# Default: 20 -TvTEventRunningTime = 20 - -# TvT Event NPC (create a custom npc of type L2TvTEventNpc). -# Default: 70010 -TvTEventParticipationNpcId = 70010 - -# TvT Event Participation Fee (itemId, number). Fee is not returned. -# Example: 57,100000 -# Default: 0,0 -TvTEventParticipationFee = 0,0 - -# Location for TvTEvent NPC to spawn in form x,y,z[,heading] -# Default: 83425,148585,-3406 -TvTEventParticipationNpcCoordinates = 83425,148585,-3406 - -# Minimum amount of players allowed in each team. -# Default: 1 -TvTEventMinPlayersInTeams = 1 -# Maximum amount of players allowed in each team. -# Default: 20 -TvTEventMaxPlayersInTeams = 20 - -# Minimum level of players that may join the event. -# Default: 1 -TvTEventMinPlayerLevel = 1 -# Maximum level of players that may join the event. -# Default: 85 -TvTEventMaxPlayerLevel = 85 - -# Respawn delay timer (in seconds). -# Default: 10 -TvTEventRespawnTeleportDelay = 10 -# Exit delay timer (in seconds). -# Default: 10 -TvTEventStartLeaveTeleportDelay = 10 - -# First Team - Name, Start/Death x,y,z location. -TvTEventTeam1Name = Team1 -TvTEventTeam1Coordinates = 148695,46725,-3414 - -# Second Team - Name, Start/Death x,y,z location. -TvTEventTeam2Name = Team2 -TvTEventTeam2Coordinates = 149999,46728,-3414 - -# Reward for winning team. -# Example: TvTEventReward = itemId,amount;itemId,amount;itemId,amount -TvTEventReward = 57,100000 - -# TvTEvent Rules -TvTEventTargetTeamMembersAllowed = True -TvTEventScrollsAllowed = False -TvTEventPotionsAllowed = False -TvTEventSummonByItemAllowed = False - -# Door ID's to open/close on start/end. -# Not supported in instance, use xml template for defining doors. -# Example: TvTDoorsToOpen = 1;2;3;4;5;6 -TvTDoorsToOpen = -TvTDoorsToClose = - -# Should both teams get reward if there's a tie? -TvTRewardTeamTie = False - -# Participant's effects handling on teleport/death. -# Effects lasting through death never removed. -# 0 - always remove all effects. -# 1 - remove all effects only during port to event (noblesse blessing can be used) -# 2 - never remove any effect -# Default: 0 -TvTEventEffectsRemoval = 0 - -# Fighter-class participants will be buffed with those buffs each respawn -# Format: skill1Id,skill1Level;skill2Id,skill2Level... -# Example: 1504,1;1501,1;1502,1;1499,1 -TvTEventFighterBuffs = - -# Mage-class participants will be buffed with those buffs each respawn -# Format: skill1Id,skill1Level;skill2Id,skill2Level... -# Example: 1504,1;1500,1;1501,1;1085,3 -TvTEventMageBuffs = - -# Maximum number of allowed participants per IP address (dualbox check) -# Default: 0 (no limits) -TvTEventMaxParticipantsPerIP = 0 - -# Voiced command (.tvt) working during TVT event to get information about event status -TvTAllowVoicedInfoCommand = false - - -# --------------------------------------------------------------------------- -# L2J Banking System -# --------------------------------------------------------------------------- - -# Enable/Disable Banking System -BankingEnabled = False - -# Amount of Goldbars a player gets when they use the ".deposit" command. Also the same amount they will lose with ".withdraw". -BankingGoldbarCount = 1 - -# Amount of Adena a player gets when they use the ".withdraw" command. Also the same amount they will lose with ".deposit". -BankingAdenaCount = 1000000000 - - -# --------------------------------------------------------------------------- -# Warehouse Sorting -# Shows Withdraw Window sorted by ItemType (Armor/Weapon/Spellbook....) -# --------------------------------------------------------------------------- - -EnableWarehouseSortingClan = False -EnableWarehouseSortingPrivate = False - - -# --------------------------------------------------------------------------- -# Offline trade/craft -# --------------------------------------------------------------------------- - -# Option to enable or disable offline trade feature. -# Enable -> true, Disable -> false -OfflineTradeEnable = True - -# Option to enable or disable offline craft feature. -# Enable -> true, Disable -> false -OfflineCraftEnable = True - -# If set to True, off-line shops will be possible only peace zones. -# Default: False -OfflineModeInPeaceZone = True - -# If set to True, players in off-line shop mode wont take any damage, thus they cannot be killed. -# Default: False -OfflineModeNoDamage = True - -# If set to True, name color will be changed then entering offline mode -OfflineSetNameColor = True - -# Color of the name in offline mode (if OfflineSetNameColor = True) -OfflineNameColor = 808080 - -# Allow fame for characters in offline mode -# Enable -> true, Disable -> false -OfflineFame = True - -#Restore offline traders/crafters after restart/shutdown. Default: false. -RestoreOffliners = True - -#Do not restore offline characters, after OfflineMaxDays days spent from first restore. -#Require server restart to disconnect expired shops. -#0 = disabled (always restore). -#Default: 10 -OfflineMaxDays = 10 - -#Disconnect shop after finished selling, buying. -#Default: True -OfflineDisconnectFinished = True - -#Store offline trader transactions in realtime. -#Uses more datatabase resources, but helps if server shuts down unexpectedly. -StoreOfflineTradeInRealtime = True - - -# --------------------------------------------------------------------------- -# Display Server Time -# --------------------------------------------------------------------------- - -# This option will enable displaying of the local server time for /time command. -DisplayServerTime = True - - -# --------------------------------------------------------------------------- -# Welcome message -# --------------------------------------------------------------------------- - -# Show screen welcome message on character login -# Default: False -ScreenWelcomeMessageEnable = False - -# Screen welcome message text to show on character login if enabled -# ('#' for a new line, but message can have max 2 lines) -ScreenWelcomeMessageText = Welcome to our server! - -# Show screen welcome message for x seconds when character log in to game if enabled -ScreenWelcomeMessageTime = 10 - - -# --------------------------------------------------------------------------- -# AntiFeed -# --------------------------------------------------------------------------- - -# This option will enable antifeed for pvp/pk/clanrep points. -# Default: False -AntiFeedEnable = False - -# If set to True, kills from dualbox will not increase pvp/pk points -# and clan reputation will not be transferred. -# Default: True -AntiFeedDualbox = True - -# If set to True, server will count disconnected (unable to determine ip address) -# as dualbox. -# Default: True -AntiFeedDisconnectedAsDualbox = True - -# If character died faster than timeout - pvp/pk points for killer will not increase -# and clan reputation will not be transferred. -# Setting to 0 will disable this feature. -# Default: 120 seconds. -AntiFeedInterval = 120 - - -# --------------------------------------------------------------------------- -# Pvp/pk Announce -# --------------------------------------------------------------------------- - -# Default: False -AnnouncePkPvP = False - -# Announce this as normal system message -# Default: True -AnnouncePkPvPNormalMessage = True - -# PK message template -# variables: $killer, $target -AnnouncePkMsg = $killer has slaughtered $target - -# Pvp message template -# variables: $killer, $target -AnnouncePvpMsg = $killer has defeated $target - - -# --------------------------------------------------------------------------- -# Chat Moderation -# --------------------------------------------------------------------------- - -# This option will enable using of the voice commands .banchat and .unbanchat -# for players with corresponding access level (default: 100). -# Check access_levels.sql and admin_command_access_rights for details. -# Default: True -ChatAdmin = True - - -# --------------------------------------------------------------------------- -# Hellbound Status Voice Command -# --------------------------------------------------------------------------- - -# This option will enable using of the voice commands .hellbound -# for retrieving information about current Hellbound level and trust. -# Default: False -HellboundStatus = False - - -# --------------------------------------------------------------------------- -# Multilingual support -# --------------------------------------------------------------------------- - -# Enable or disable multilingual support. -# Default: False -MultiLangEnable = False - -# Default language, if not defined. -# Default: en -MultiLangDefault = en - -# List of allowed languages, semicolon separated. -# Default: en;ru -MultiLangAllowed = en;ru - -# Enable or disable voice command .lang for changing languages on the fly. -# Default: True -MultiLangVoiceCommand = True - -# Enable or disable multilingual SystemMessages support. -# Default: False -MultiLangSystemMessageEnable = False - -# List of allowed languages for SystemMessages, semicolon separated. -# Default: -MultiLangSystemMessageAllowed = - -# Enable or disable multilingual NpcStrings support. -# Default: False -MultiLangNpcStringEnable = False - -# List of allowed languages for NpcStrings, semicolon separated. -# Default: -MultiLangNpcStringAllowed = - - -# --------------------------------------------------------------------------- -# Walker/Bot protection -# --------------------------------------------------------------------------- - -# Basic protection against L2Walker. -# Default: False -L2WalkerProtection = False - - -# --------------------------------------------------------------------------- -# Dualbox Check -# --------------------------------------------------------------------------- - -# Maximum number of players per IP address allowed to enter game. -# Default: 0 (unlimited) -DualboxCheckMaxPlayersPerIP = 0 - -# Maximum number of players per IP address allowed to participate in olympiad. -# Default: 0 (unlimited) -DualboxCheckMaxOlympiadParticipantsPerIP = 0 - -# Maximum number of players per IP address allowed to participate in events using L2J Event Engine (//event). -# Default: 0 (unlimited) -DualboxCheckMaxL2EventParticipantsPerIP = 0 - -# Whitelist of the addresses for dualbox checks. -# Format: Address1,Number1;Address2,Number2... -# Network address can be number (127.0.0.1) or symbolic (localhost) formats. -# Additional connection number added to the global limits for this address. -# For example, if number of TvT event participants per IP address set to the 1 (no dualbox) -# and whitelist contains "l2jmobius.com,2" then number of allowed participants from l2jmobius.com -# will be 1+2=3. Use 0 or negative value for unlimited number of connections. -# Default: 127.0.0.1,0 (no limits from localhost) -DualboxCheckWhitelist = 127.0.0.1,0 - - -# --------------------------------------------------------------------------- -# Password Change -# --------------------------------------------------------------------------- - -# Enables .changepassword voiced command which allows the players to change their account's password ingame. -# Default: False -AllowChangePassword = False - - -# --------------------------------------------------------------------------- -# Custom Starting Location -# --------------------------------------------------------------------------- - -# Enable custom starting location. -# Default: False -CustomStartingLocation = False - -# Coords for custom starting location -# Default: 83020, 147880, -3469 (Giran) -CustomStartingLocX = 83020 -CustomStartingLocY = 147880 -CustomStartingLocZ = -3469 - - -# --------------------------------------------------------------------------- -# Random Spawn System for Monsters -# --------------------------------------------------------------------------- - -# Enable random monster spawns. -# Default: True -EnableRandomMonsterSpawns = True - -# Max range for X and Y coords. -# Default: 150 -MaxSpawnMobRange = 150 - -# Examples: No random spawns for Kasha's Eye, Pagan Guards, Sel Mahums, Four Sepulchers -# MobsSpawnNotRandom = 18812,18813,18814 -MobsSpawnNotRandom = 18812,18813,18814,22138,\ -18908,22775,22776,22777,22778,22779,22780,22781,22782,22783,22784,22785,22786,22787,22788,\ -18120,18132,18133,18137,18141,18145,18150,18151,18152,18153,18154,18155,18156,18157,18166,\ -18170,18171,18183,18184,18185,18186,18187,18191,18195,18196,18197,18198,18199,18212,18220,\ -18221,18222,18226,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,\ -18242,18243,18256,31452,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,\ -31479,31480,31481,31482,31483,31484,31485,31486,31487 - - -# --------------------------------------------------------------------------- -# Minimum Range for Private Stores -# --------------------------------------------------------------------------- - -# Minimum distance from player / npc to open a new private store. -# Default: 0 -ShopMinRangeFromPlayer = 50 -ShopMinRangeFromNpc = 100 - - -# --------------------------------------------------------------------------- -# Custom Community Board -# --------------------------------------------------------------------------- - -# Enable Custom Community Board. -# Default: False -CustomCommunityBoard = True - -# Currency used by the Community Board (itemId). -# Default: 57 (Adena) -CommunityCurrencyId = 57 - -# Enable Multisells. -# Default: True -CommunityEnableMultisells = True - -# Enable Teleports. -# Default: True -CommunityEnableTeleports = True - -# Enable Buffs. -# Default: True -CommunityEnableBuffs = True - -# Enable Heal. -# Default: True -CommunityEnableHeal = True - -# Price for Teleports. -# Default: 0 (free) -CommunityTeleportPrice = 0 - -# Price for Buffs. -# Default: 0 (free) -CommunityBuffPrice = 0 - -# Price for Heal. -# Default: 0 (free) -CommunityHealPrice = 0 - -# Disable Community Board while in combat. -# Default: True -CommunityCombatDisabled = True - -# Disable Community Board while player has Karma. -# Default: True -CommunityKarmaDisabled = True - -# Cast animations of each buff. -# Default: False -CommunityCastAnimations = False - -# Enable buying premium from community board. -# Premium System must be enabled. -# Default: False -CommunityPremiumSystem = False - -# ItemID for buying premium in community board. -# Check data/html/CommunityBoard/Custom/premium/main.html -CommunityPremiumBuyCoinId = 57 - -# Amount of coins needed for each premium day bought. -CommunityPremiumPricePerDay = 1000000 - -# List of available buffs to avoid exploits. -# Usage: SkillId1,SkillId2... -CommunityAvailableBuffs = 1077,1240,1086,1032,1073,1036,1035,1068,1040,1044,1182,1191,1033,1189,1392,1393,1303,1059,1242,1268 - -# List of available teleports to avoid exploits. -# Usage: TeleportName1,X1,Y1,Z1;TeleportName2,X2,Y2,Z2... -# the "\" indicates a new line -CommunityTeleportList = \ -Giran,82698,148638,-3473;\ -Aden,147450,27064,-2208;\ -Goddard,147725,-56517,-2780;\ -Rune,44070,-50243,-796;\ -Dion,18748,145437,-3132;\ -Oren,82321,55139,-1529;\ -Gludio,-14225,123540,-3121;\ -Schuttgart,87358,-141982,-1341;\ -Heine,111115,219017,-3547;\ -Gludin,-83063,150791,-3133;\ -Hunters,116589,76268,-2734;\ -TalkingIsland,-82687,243157,-3734;\ -Dwarven,116551,-182493,-1525;\ -Orc,-44211,-113521,-241;\ -DarkElven,12428,16551,-4588;\ -Elven,45873,49288,-3064;\ -Kamael,-116934,46616,368; - - -# --------------------------------------------------------------------------- -# Premium System (VIP) -# --------------------------------------------------------------------------- -# -Admins can manage subscriptions from main admin menu. -# -Players can use .premium to view account related info. -# -Caution: Premium rates multiply existing server rates. - -# Enable premium system. -# Default: False -EnablePremiumSystem = False - -# Xp rate for premium players. -PremiumRateXp = 2 - -# Sp rate for premium players. -PremiumRateSp = 2 - -# Drop chance for premium players. -PremiumRateDropChance = 1 - -# Drop amount for premium players. -PremiumRateDropAmount = 2 - -# Spoil chance for premium players. -PremiumRateSpoilChance = 1 - -# Spoil amount for premium players. -PremiumRateSpoilAmount = 2 - -# Caution: Raid bosses and herbs are not affected by premium rates, but specific items can be affected by rates bellow. -# List of items affected by custom drop rate by id, used now for Adena rate too. -# Usage: itemId1,multiplier1;itemId2,multiplier2;... -PremiumRateDropChanceByItemId = 57,2;6656,1;6657,1;6658,1;6659,1;6660,1;6661,1;6662,1;8191,1;10170,1;10314,1 -PremiumRateDropAmountByItemId = 57,2;6656,1;6657,1;6658,1;6659,1;6660,1;6661,1;6662,1;8191,1;10170,1;10314,1 - - -# --------------------------------------------------------------------------- -# Find PvP -# --------------------------------------------------------------------------- -# Bypass example: -# Go to PvP! - -# Enable FindPvP bypass. -# Default: False -EnableFindPvP = False - - -# --------------------------------------------------------------------------- -# Auto Potion Settings -# --------------------------------------------------------------------------- -# Use .apon / .apoff voiced commands to enable / disable. - -# Enable auto potion commands. -AutoPotionsEnabled = false - -# Use auto potions in Olympiad. -AutoPotionsInOlympiad = false - -# Minimum player level to use the commands. -AutoPotionMinimumLevel = 1 - -# Enable auto CP potions. -AutoCpEnabled = true -# Percentage that CP potions will be used. -AutoCpPercentage = 70 -# Auto CP item ids. Order by use priority. -AutoCpItemIds = 5592,5591 - -# Enable auto HP potions. -AutoHpEnabled = true -# Percentage that HP potions will be used. -AutoHpPercentage = 70 -# Auto HP item ids. Order by use priority. -AutoHpItemIds = 1540,1539,1061,1060 - -# Enable auto MP potions. -AutoMpEnabled = true -# Percentage that MP potions will be used. -AutoMpPercentage = 70 -# Auto MP item ids. Order by use priority. -AutoMpItemIds = 728 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/AntiFeed.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/AntiFeed.ini new file mode 100644 index 0000000000..323243e1f2 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/AntiFeed.ini @@ -0,0 +1,23 @@ +# --------------------------------------------------------------------------- +# AntiFeed +# --------------------------------------------------------------------------- + +# This option will enable antifeed for pvp/pk/clanrep points. +# Default: False +AntiFeedEnable = False + +# If set to True, kills from dualbox will not increase pvp/pk points +# and clan reputation will not be transferred. +# Default: True +AntiFeedDualbox = True + +# If set to True, server will count disconnected (unable to determine ip address) +# as dualbox. +# Default: True +AntiFeedDisconnectedAsDualbox = True + +# If character died faster than timeout - pvp/pk points for killer will not increase +# and clan reputation will not be transferred. +# Setting to 0 will disable this feature. +# Default: 120 seconds. +AntiFeedInterval = 120 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/AutoPotions.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/AutoPotions.ini new file mode 100644 index 0000000000..6e78f6515f --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/AutoPotions.ini @@ -0,0 +1,34 @@ +# --------------------------------------------------------------------------- +# Auto Potion Settings +# --------------------------------------------------------------------------- +# Use .apon / .apoff voiced commands to enable / disable. + +# Enable auto potion commands. +AutoPotionsEnabled = false + +# Use auto potions in Olympiad. +AutoPotionsInOlympiad = false + +# Minimum player level to use the commands. +AutoPotionMinimumLevel = 1 + +# Enable auto CP potions. +AutoCpEnabled = true +# Percentage that CP potions will be used. +AutoCpPercentage = 70 +# Auto CP item ids. Order by use priority. +AutoCpItemIds = 5592,5591 + +# Enable auto HP potions. +AutoHpEnabled = true +# Percentage that HP potions will be used. +AutoHpPercentage = 70 +# Auto HP item ids. Order by use priority. +AutoHpItemIds = 1540,1539,1061,1060 + +# Enable auto MP potions. +AutoMpEnabled = true +# Percentage that MP potions will be used. +AutoMpPercentage = 70 +# Auto MP item ids. Order by use priority. +AutoMpItemIds = 728 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/Banking.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/Banking.ini new file mode 100644 index 0000000000..823fae764a --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/Banking.ini @@ -0,0 +1,12 @@ +# --------------------------------------------------------------------------- +# Banking System +# --------------------------------------------------------------------------- + +# Enable/Disable Banking System +BankingEnabled = False + +# Amount of Goldbars a player gets when they use the ".deposit" command. Also the same amount they will lose with ".withdraw". +BankingGoldbarCount = 1 + +# Amount of Adena a player gets when they use the ".withdraw" command. Also the same amount they will lose with ".deposit". +BankingAdenaCount = 1000000000 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ChampionMonsters.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ChampionMonsters.ini new file mode 100644 index 0000000000..14eba96c93 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ChampionMonsters.ini @@ -0,0 +1,77 @@ +# --------------------------------------------------------------------------- +# Champion mobs - Turn random mobs into Champions +# --------------------------------------------------------------------------- + +# Enable/Disable Champion Mob System. +ChampionEnable = False + +# Force Champion mobs to be passive? +# To leave champion mobs to default/Aggressive, set to False. +# To set all champion mobs to Passive, set True. +ChampionPassive = False + +# % chance for a mob to became champion (0 to disable). +ChampionFrequency = 5 + +# Title of all Champion Mobs. +ChampionTitle = Champion + +# Red aura for Champion Mobs. +ChampionAura = True + +# Min and max levels allowed for a mob to be a Champion mob. +ChampionMinLevel = 20 +ChampionMaxLevel = 70 + +# Hp multiplier for Champion mobs. +ChampionHp = 8 + +# Hp Regen Multiplier for Champion mobs. +ChampionHpRegen = 1.0 + +# Exp/Sp rewards multiplier for Champion mobs. +ChampionRewardsExpSp = 8.0 + +# Standard rewards chance multiplier for Champion mobs. +ChampionRewardsChance = 8.0 + +# Standard rewards amount multiplier for Champion mobs. +ChampionRewardsAmount = 1.0 + +# Adena & Seal Stone rewards chance multiplier for Champion mobs. +ChampionAdenasRewardsChance = 1.0 + +# Adena & Seal Stone rewards amount multiplier for Champion mobs. +ChampionAdenasRewardsAmount = 1.0 + +# P. Attack and M. Attack bonus for Champion mobs. +ChampionAtk = 1.0 + +# Physical/Magical Attack Speed bonus for Champion mobs. +ChampionSpdAtk = 1.0 + +# Specified reward item ID +ChampionRewardItemID = 6393 + +# The amount of the specified reward a player will receive if they are awarded the item. +ChampionRewardItemQty = 1 + +# % Chance to obtain a specified reward item from a higher level Champion mob. +# Default: 0 +ChampionRewardLowerLvlItemChance = 0 + +# % Chance to obtain a specified reward item from a lower level Champion mob. +# Default: 0 +ChampionRewardHigherLvlItemChance = 0 + +# Do you want to enable the vitality calculation when killing champion mobs? +# Be aware that it can lead to huge unbalance on your server, your rate for that mob would +# then be "mobXP x serverRate x vitalityRate x championXpRate +# Notes: +# Works only if EnableVitality = True +# Default: False +ChampionEnableVitality = False + +# Enable spawning of the champions in instances +# Default = False +ChampionEnableInInstances = False diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ChatModeration.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ChatModeration.ini new file mode 100644 index 0000000000..8e588a9dd9 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ChatModeration.ini @@ -0,0 +1,9 @@ +# --------------------------------------------------------------------------- +# Chat Moderation +# --------------------------------------------------------------------------- + +# This option will enable using of the voice commands .banchat and .unbanchat +# for players with corresponding access level (default: 100). +# Check access_levels.sql and admin_command_access_rights for details. +# Default: True +ChatAdmin = True diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/CommunityBoard.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/CommunityBoard.ini new file mode 100644 index 0000000000..cb26af3544 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/CommunityBoard.ini @@ -0,0 +1,89 @@ +# --------------------------------------------------------------------------- +# Custom Community Board +# --------------------------------------------------------------------------- + +# Enable Custom Community Board. +# Default: False +CustomCommunityBoard = True + +# Currency used by the Community Board (itemId). +# Default: 57 (Adena) +CommunityCurrencyId = 57 + +# Enable Multisells. +# Default: True +CommunityEnableMultisells = True + +# Enable Teleports. +# Default: True +CommunityEnableTeleports = True + +# Enable Buffs. +# Default: True +CommunityEnableBuffs = True + +# Enable Heal. +# Default: True +CommunityEnableHeal = True + +# Price for Teleports. +# Default: 0 (free) +CommunityTeleportPrice = 0 + +# Price for Buffs. +# Default: 0 (free) +CommunityBuffPrice = 0 + +# Price for Heal. +# Default: 0 (free) +CommunityHealPrice = 0 + +# Disable Community Board while in combat. +# Default: True +CommunityCombatDisabled = True + +# Disable Community Board while player has Karma. +# Default: True +CommunityKarmaDisabled = True + +# Cast animations of each buff. +# Default: False +CommunityCastAnimations = False + +# Enable buying premium from community board. +# Premium System must be enabled. +# Default: False +CommunityPremiumSystem = False + +# ItemID for buying premium in community board. +# Check data/html/CommunityBoard/Custom/premium/main.html +CommunityPremiumBuyCoinId = 57 + +# Amount of coins needed for each premium day bought. +CommunityPremiumPricePerDay = 1000000 + +# List of available buffs to avoid exploits. +# Usage: SkillId1,SkillId2... +CommunityAvailableBuffs = 1077,1240,1086,1032,1073,1036,1035,1068,1040,1044,1182,1191,1033,1189,1392,1393,1303,1059,1242,1268 + +# List of available teleports to avoid exploits. +# Usage: TeleportName1,X1,Y1,Z1;TeleportName2,X2,Y2,Z2... +# the "\" indicates a new line +CommunityTeleportList = \ +Giran,82698,148638,-3473;\ +Aden,147450,27064,-2208;\ +Goddard,147725,-56517,-2780;\ +Rune,44070,-50243,-796;\ +Dion,18748,145437,-3132;\ +Oren,82321,55139,-1529;\ +Gludio,-14225,123540,-3121;\ +Schuttgart,87358,-141982,-1341;\ +Heine,111115,219017,-3547;\ +Gludin,-83063,150791,-3133;\ +Hunters,116589,76268,-2734;\ +TalkingIsland,-82687,243157,-3734;\ +Dwarven,116551,-182493,-1525;\ +Orc,-44211,-113521,-241;\ +DarkElven,12428,16551,-4588;\ +Elven,45873,49288,-3064;\ +Kamael,-116934,46616,368; diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/DualboxCheck.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/DualboxCheck.ini new file mode 100644 index 0000000000..19cf3f4004 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/DualboxCheck.ini @@ -0,0 +1,25 @@ +# --------------------------------------------------------------------------- +# Dualbox Check +# --------------------------------------------------------------------------- + +# Maximum number of players per IP address allowed to enter game. +# Default: 0 (unlimited) +DualboxCheckMaxPlayersPerIP = 0 + +# Maximum number of players per IP address allowed to participate in olympiad. +# Default: 0 (unlimited) +DualboxCheckMaxOlympiadParticipantsPerIP = 0 + +# Maximum number of players per IP address allowed to participate in events using L2J Event Engine (//event). +# Default: 0 (unlimited) +DualboxCheckMaxL2EventParticipantsPerIP = 0 + +# Whitelist of the addresses for dualbox checks. +# Format: Address1,Number1;Address2,Number2... +# Network address can be number (127.0.0.1) or symbolic (localhost) formats. +# Additional connection number added to the global limits for this address. +# For example, if number of TvT event participants per IP address set to the 1 (no dualbox) +# and whitelist contains "l2jmobius.com,2" then number of allowed participants from l2jmobius.com +# will be 1+2=3. Use 0 or negative value for unlimited number of connections. +# Default: 127.0.0.1,0 (no limits from localhost) +DualboxCheckWhitelist = 127.0.0.1,0 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/FindPvP.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/FindPvP.ini new file mode 100644 index 0000000000..a8dab24871 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/FindPvP.ini @@ -0,0 +1,9 @@ +# --------------------------------------------------------------------------- +# Find PvP +# --------------------------------------------------------------------------- +# Bypass example: +# Go to PvP! + +# Enable FindPvP bypass. +# Default: False +EnableFindPvP = False diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/HellboundStatus.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/HellboundStatus.ini new file mode 100644 index 0000000000..94d4e7d75d --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/HellboundStatus.ini @@ -0,0 +1,8 @@ +# --------------------------------------------------------------------------- +# Hellbound Status Voice Command +# --------------------------------------------------------------------------- + +# This option will enable using of the voice commands .hellbound +# for retrieving information about current Hellbound level and trust. +# Default: False +HellboundStatus = False diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/MultilingualSupport.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/MultilingualSupport.ini new file mode 100644 index 0000000000..61c9ee657d --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/MultilingualSupport.ini @@ -0,0 +1,35 @@ +# --------------------------------------------------------------------------- +# Multilingual support +# --------------------------------------------------------------------------- + +# Enable or disable multilingual support. +# Default: False +MultiLangEnable = False + +# Default language, if not defined. +# Default: en +MultiLangDefault = en + +# List of allowed languages, semicolon separated. +# Default: en;ru +MultiLangAllowed = en;ru + +# Enable or disable voice command .lang for changing languages on the fly. +# Default: True +MultiLangVoiceCommand = True + +# Enable or disable multilingual SystemMessages support. +# Default: False +MultiLangSystemMessageEnable = False + +# List of allowed languages for SystemMessages, semicolon separated. +# Default: +MultiLangSystemMessageAllowed = + +# Enable or disable multilingual NpcStrings support. +# Default: False +MultiLangNpcStringEnable = False + +# List of allowed languages for NpcStrings, semicolon separated. +# Default: +MultiLangNpcStringAllowed = diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/OfflineTrade.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/OfflineTrade.ini new file mode 100644 index 0000000000..86a32a4fe4 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/OfflineTrade.ini @@ -0,0 +1,46 @@ +# --------------------------------------------------------------------------- +# Offline trade/craft +# --------------------------------------------------------------------------- + +# Option to enable or disable offline trade feature. +# Enable -> true, Disable -> false +OfflineTradeEnable = True + +# Option to enable or disable offline craft feature. +# Enable -> true, Disable -> false +OfflineCraftEnable = True + +# If set to True, off-line shops will be possible only peace zones. +# Default: False +OfflineModeInPeaceZone = True + +# If set to True, players in off-line shop mode wont take any damage, thus they cannot be killed. +# Default: False +OfflineModeNoDamage = True + +# If set to True, name color will be changed then entering offline mode +OfflineSetNameColor = True + +# Color of the name in offline mode (if OfflineSetNameColor = True) +OfflineNameColor = 808080 + +# Allow fame for characters in offline mode +# Enable -> true, Disable -> false +OfflineFame = True + +#Restore offline traders/crafters after restart/shutdown. Default: false. +RestoreOffliners = True + +#Do not restore offline characters, after OfflineMaxDays days spent from first restore. +#Require server restart to disconnect expired shops. +#0 = disabled (always restore). +#Default: 10 +OfflineMaxDays = 10 + +#Disconnect shop after finished selling, buying. +#Default: True +OfflineDisconnectFinished = True + +#Store offline trader transactions in realtime. +#Uses more datatabase resources, but helps if server shuts down unexpectedly. +StoreOfflineTradeInRealtime = True diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PasswordChange.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PasswordChange.ini new file mode 100644 index 0000000000..691930f26a --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PasswordChange.ini @@ -0,0 +1,7 @@ +# --------------------------------------------------------------------------- +# Password Change +# --------------------------------------------------------------------------- + +# Enables .changepassword voiced command which allows the players to change their account's password ingame. +# Default: False +AllowChangePassword = False diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PremiumSystem.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PremiumSystem.ini new file mode 100644 index 0000000000..08b2b7bd8c --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PremiumSystem.ini @@ -0,0 +1,34 @@ +# --------------------------------------------------------------------------- +# Premium System (VIP) +# --------------------------------------------------------------------------- +# -Admins can manage subscriptions from main admin menu. +# -Players can use .premium to view account related info. +# -Caution: Premium rates multiply existing server rates. + +# Enable premium system. +# Default: False +EnablePremiumSystem = False + +# Xp rate for premium players. +PremiumRateXp = 2 + +# Sp rate for premium players. +PremiumRateSp = 2 + +# Drop chance for premium players. +PremiumRateDropChance = 1 + +# Drop amount for premium players. +PremiumRateDropAmount = 2 + +# Spoil chance for premium players. +PremiumRateSpoilChance = 1 + +# Spoil amount for premium players. +PremiumRateSpoilAmount = 2 + +# Caution: Raid bosses and herbs are not affected by premium rates, but specific items can be affected by rates bellow. +# List of items affected by custom drop rate by id, used now for Adena rate too. +# Usage: itemId1,multiplier1;itemId2,multiplier2;... +PremiumRateDropChanceByItemId = 57,2;6656,1;6657,1;6658,1;6659,1;6660,1;6661,1;6662,1;8191,1;10170,1;10314,1 +PremiumRateDropAmountByItemId = 57,2;6656,1;6657,1;6658,1;6659,1;6660,1;6661,1;6662,1;8191,1;10170,1;10314,1 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PrivateStoreRange.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PrivateStoreRange.ini new file mode 100644 index 0000000000..fb52014c14 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PrivateStoreRange.ini @@ -0,0 +1,8 @@ +# --------------------------------------------------------------------------- +# Minimum Range for Private Stores +# --------------------------------------------------------------------------- + +# Minimum distance from player / npc to open a new private store. +# Default: 0 +ShopMinRangeFromPlayer = 50 +ShopMinRangeFromNpc = 100 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PvpAnnounce.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PvpAnnounce.ini new file mode 100644 index 0000000000..0c77571421 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/PvpAnnounce.ini @@ -0,0 +1,18 @@ +# --------------------------------------------------------------------------- +# Pvp/pk Announce +# --------------------------------------------------------------------------- + +# Default: False +AnnouncePkPvP = False + +# Announce this as normal system message +# Default: True +AnnouncePkPvPNormalMessage = True + +# PK message template +# variables: $killer, $target +AnnouncePkMsg = $killer has slaughtered $target + +# Pvp message template +# variables: $killer, $target +AnnouncePvpMsg = $killer has defeated $target diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/RandomSpawns.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/RandomSpawns.ini new file mode 100644 index 0000000000..0e55b3bb57 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/RandomSpawns.ini @@ -0,0 +1,21 @@ +# --------------------------------------------------------------------------- +# Random Spawn System for Monsters +# --------------------------------------------------------------------------- + +# Enable random monster spawns. +# Default: True +EnableRandomMonsterSpawns = True + +# Max range for X and Y coords. +# Default: 150 +MaxSpawnMobRange = 150 + +# Examples: No random spawns for Kasha's Eye, Pagan Guards, Sel Mahums, Four Sepulchers +# MobsSpawnNotRandom = 18812,18813,18814 +MobsSpawnNotRandom = 18812,18813,18814,22138,\ +18908,22775,22776,22777,22778,22779,22780,22781,22782,22783,22784,22785,22786,22787,22788,\ +18120,18132,18133,18137,18141,18145,18150,18151,18152,18153,18154,18155,18156,18157,18166,\ +18170,18171,18183,18184,18185,18186,18187,18191,18195,18196,18197,18198,18199,18212,18220,\ +18221,18222,18226,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,\ +18242,18243,18256,31452,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,\ +31479,31480,31481,31482,31483,31484,31485,31486,31487 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ScreenWelcomeMessage.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ScreenWelcomeMessage.ini new file mode 100644 index 0000000000..3bb8870dbe --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ScreenWelcomeMessage.ini @@ -0,0 +1,14 @@ +# --------------------------------------------------------------------------- +# Welcome message +# --------------------------------------------------------------------------- + +# Show screen welcome message on character login +# Default: False +ScreenWelcomeMessageEnable = False + +# Screen welcome message text to show on character login if enabled +# ('#' for a new line, but message can have max 2 lines) +ScreenWelcomeMessageText = Welcome to our server! + +# Show screen welcome message for x seconds when character log in to game if enabled +ScreenWelcomeMessageTime = 10 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ServerTime.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ServerTime.ini new file mode 100644 index 0000000000..b17ec386b2 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/ServerTime.ini @@ -0,0 +1,6 @@ +# --------------------------------------------------------------------------- +# Display Server Time +# --------------------------------------------------------------------------- + +# This option will enable displaying of the local server time for /time command. +DisplayServerTime = True diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/StartingLocation.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/StartingLocation.ini new file mode 100644 index 0000000000..74c91a1934 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/StartingLocation.ini @@ -0,0 +1,13 @@ +# --------------------------------------------------------------------------- +# Custom Starting Location +# --------------------------------------------------------------------------- + +# Enable custom starting location. +# Default: False +CustomStartingLocation = False + +# Coords for custom starting location +# Default: 83020, 147880, -3469 (Giran) +CustomStartingLocX = 83020 +CustomStartingLocY = 147880 +CustomStartingLocZ = -3469 diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/TeamVersusTeam.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/TeamVersusTeam.ini new file mode 100644 index 0000000000..11457bd0e8 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/TeamVersusTeam.ini @@ -0,0 +1,116 @@ +# --------------------------------------------------------------------------- +# Team vs. Team Event Engine (by HorridoJoho) +# --------------------------------------------------------------------------- + +# WARNING: this mod require custom NPC table support turned on ! +# CustomNpcTable = True in General.properties +# --------------------------------------------------------------------------- +# Enable/Disable TvTEvent System +# Default: False +TvTEventEnabled = False + +# TvT in instance +# Default: False +TvTEventInInstance = False + +# Name of the instance file for TvT +# Default: coliseum.xml +TvTEventInstanceFile = coliseum.xml + +# Times TvT will occur (24h format). +# Default: 9:00,15:00,21:00,3:00 +TvTEventInterval = 9:00,15:00,21:00,3:00 + +# Registration timer from start of event (in minutes). +# Default: 30 +TvTEventParticipationTime = 30 + +# Event running time (in minutes). +# Default: 20 +TvTEventRunningTime = 20 + +# TvT Event NPC (create a custom npc of type L2TvTEventNpc). +# Default: 70010 +TvTEventParticipationNpcId = 70010 + +# TvT Event Participation Fee (itemId, number). Fee is not returned. +# Example: 57,100000 +# Default: 0,0 +TvTEventParticipationFee = 0,0 + +# Location for TvTEvent NPC to spawn in form x,y,z[,heading] +# Default: 83425,148585,-3406 +TvTEventParticipationNpcCoordinates = 83425,148585,-3406 + +# Minimum amount of players allowed in each team. +# Default: 1 +TvTEventMinPlayersInTeams = 1 +# Maximum amount of players allowed in each team. +# Default: 20 +TvTEventMaxPlayersInTeams = 20 + +# Minimum level of players that may join the event. +# Default: 1 +TvTEventMinPlayerLevel = 1 +# Maximum level of players that may join the event. +# Default: 85 +TvTEventMaxPlayerLevel = 85 + +# Respawn delay timer (in seconds). +# Default: 10 +TvTEventRespawnTeleportDelay = 10 +# Exit delay timer (in seconds). +# Default: 10 +TvTEventStartLeaveTeleportDelay = 10 + +# First Team - Name, Start/Death x,y,z location. +TvTEventTeam1Name = Team1 +TvTEventTeam1Coordinates = 148695,46725,-3414 + +# Second Team - Name, Start/Death x,y,z location. +TvTEventTeam2Name = Team2 +TvTEventTeam2Coordinates = 149999,46728,-3414 + +# Reward for winning team. +# Example: TvTEventReward = itemId,amount;itemId,amount;itemId,amount +TvTEventReward = 57,100000 + +# TvTEvent Rules +TvTEventTargetTeamMembersAllowed = True +TvTEventScrollsAllowed = False +TvTEventPotionsAllowed = False +TvTEventSummonByItemAllowed = False + +# Door ID's to open/close on start/end. +# Not supported in instance, use xml template for defining doors. +# Example: TvTDoorsToOpen = 1;2;3;4;5;6 +TvTDoorsToOpen = +TvTDoorsToClose = + +# Should both teams get reward if there's a tie? +TvTRewardTeamTie = False + +# Participant's effects handling on teleport/death. +# Effects lasting through death never removed. +# 0 - always remove all effects. +# 1 - remove all effects only during port to event (noblesse blessing can be used) +# 2 - never remove any effect +# Default: 0 +TvTEventEffectsRemoval = 0 + +# Fighter-class participants will be buffed with those buffs each respawn +# Format: skill1Id,skill1Level;skill2Id,skill2Level... +# Example: 1504,1;1501,1;1502,1;1499,1 +TvTEventFighterBuffs = + +# Mage-class participants will be buffed with those buffs each respawn +# Format: skill1Id,skill1Level;skill2Id,skill2Level... +# Example: 1504,1;1500,1;1501,1;1085,3 +TvTEventMageBuffs = + +# Maximum number of allowed participants per IP address (dualbox check) +# Default: 0 (no limits) +TvTEventMaxParticipantsPerIP = 0 + +# Voiced command (.tvt) working during TVT event to get information about event status +TvTAllowVoicedInfoCommand = false diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/WalkerBotProtection.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/WalkerBotProtection.ini new file mode 100644 index 0000000000..29cd60a0e4 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/WalkerBotProtection.ini @@ -0,0 +1,7 @@ +# --------------------------------------------------------------------------- +# Walker/Bot protection +# --------------------------------------------------------------------------- + +# Basic protection against L2Walker. +# Default: False +L2WalkerProtection = False diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/WarehouseSorting.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/WarehouseSorting.ini new file mode 100644 index 0000000000..57a68e45b2 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/WarehouseSorting.ini @@ -0,0 +1,7 @@ +# --------------------------------------------------------------------------- +# Warehouse Sorting +# Shows Withdraw Window sorted by ItemType (Armor/Weapon/Spellbook....) +# --------------------------------------------------------------------------- + +EnableWarehouseSortingClan = False +EnableWarehouseSortingPrivate = False diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/Wedding.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/Wedding.ini new file mode 100644 index 0000000000..9474a3d35e --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/Wedding.ini @@ -0,0 +1,54 @@ +# --------------------------------------------------------------------------- +# Wedding System (by evill33t) +# --------------------------------------------------------------------------- +# WARNING: this mod require custom NPC table support turned on ! +# CustomNpcTable = True in General.properties +# --------------------------------------------------------------------------- +# Wedding Manager ID: 50007 +# +# First part - "Engagement" +# 1) Target the player that you want to make a couple with. +# 2) Use the voice command ".engage nameofyourpartner" then press enter. +# 3) If the target player has you on listed as a friend (ie. you are in each other's friends list) a popup will appear with an engagement request along with a system message that you want to be engaged with him/her. +# 4) If the target player accepts the engagement invitation, you will be engaged. +# +# Second part - "Marriage" +# 1) Once two players are engaged, they can speak to Andromeda, the Wedding Priest in the Hot Springs Guild House (Goddard Area). +# (You may need Formal Wear and Adena to pay wedding fees!) +# 2) Each player needs to speak to the NPC and make the request to be married. +# 3) Once done, fireworks will display and the two players will be married. +# +# Afterwards you can use the voice command ".gotolove nameofyourpartner" to teleport to your partner if you're married (there may also be a fee which can be specified below) +# +# If you want to cancel your Engagement/Marriage, use the voice command ".divorce nameofyourpartner". +# +# If you're married you have to pay a specified % of your adena to your partner. +# +# If a player attempts to become engaged to another player while married they may suffer a penalty if it's enabled below. +# --------------------------------------------------------------------------- +# Enable/Disable Wedding System +AllowWedding = False + +# Amount of Adena required to get married +WeddingPrice = 250000000 + +# Enable/Disable punishing of players who attempt to be engaged to other players while married. +WeddingPunishInfidelity = True + +# Enable/Disable teleport function for married couples. +WeddingTeleport = True + +# Amount of Adena required to teleport to spouse. +WeddingTeleportPrice = 50000 + +# Time before character is teleported after using the skill. +WeddingTeleportDuration = 60 + +# Enable/Disable same sex marriages. +WeddingAllowSameSex = False + +# Require players to wear formal wear to be married? +WeddingFormalWear = True + +# Amount of Adena (%) a player must pay to the other to get divorced. +WeddingDivorceCosts = 20 diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/Config.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/Config.java index 2c697484e9..147dae6108 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/Config.java @@ -64,10 +64,11 @@ import com.l2jmobius.gameserver.util.Util; /** * This class loads all the game server related configurations from files.
* The files are usually located in config folder in server root folder.
+ * Each configuration has a default value (that should reflect retail behavior). */ public final class Config { - private static final Logger _log = Logger.getLogger(Config.class.getName()); + private static final Logger LOGGER = Logger.getLogger(Config.class.getName()); // -------------------------------------------------- // Constants @@ -79,7 +80,6 @@ public final class Config // -------------------------------------------------- public static final String CHARACTER_CONFIG_FILE = "./config/Character.ini"; public static final String CH_SIEGE_CONFIG_FILE = "./config/ConquerableHallSiege.ini"; - public static final String CUSTOM_CONFIG_FILE = "./config/Custom.ini"; public static final String FEATURE_CONFIG_FILE = "./config/Feature.ini"; public static final String FLOOD_PROTECTOR_CONFIG_FILE = "./config/FloodProtector.ini"; public static final String FORTSIEGE_CONFIG_FILE = "./config/FortSiege.ini"; @@ -102,6 +102,33 @@ public final class Config public static final String HEXID_FILE = "./config/hexid.txt"; public static final String IPCONFIG_FILE = "./config/ipconfig.xml"; + // -------------------------------------------------- + // Custom Config File Definitions + // -------------------------------------------------- + public static final String CUSTOM_ANTIFEED_CONFIG_FILE = "./Config/Custom/AntiFeed.ini"; + public static final String CUSTOM_AUTO_POTIONS_CONFIG_FILE = "./Config/Custom/AutoPotions.ini"; + public static final String CUSTOM_BANKING_CONFIG_FILE = "./Config/Custom/Banking.ini"; + public static final String CUSTOM_CHAMPION_MONSTERS_CONFIG_FILE = "./Config/Custom/ChampionMonsters.ini"; + public static final String CUSTOM_CHAT_MODERATION_CONFIG_FILE = "./Config/Custom/ChatModeration.ini"; + public static final String CUSTOM_COMMUNITY_BOARD_CONFIG_FILE = "./Config/Custom/CommunityBoard.ini"; + public static final String CUSTOM_DUALBOX_CHECK_CONFIG_FILE = "./Config/Custom/DualboxCheck.ini"; + public static final String CUSTOM_FIND_PVP_CONFIG_FILE = "./Config/Custom/FindPvP.ini"; + public static final String CUSTOM_HELLBOUND_STATUS_CONFIG_FILE = "./Config/Custom/HellboundStatus.ini"; + public static final String CUSTOM_OFFLINE_TRADE_CONFIG_FILE = "./Config/Custom/OfflineTrade.ini"; + public static final String CUSTOM_PASSWORD_CHANGE_CONFIG_FILE = "./Config/Custom/PasswordChange.ini"; + public static final String CUSTOM_PREMIUM_SYSTEM_CONFIG_FILE = "./Config/Custom/PremiumSystem.ini"; + public static final String CUSTOM_PRIVATE_STORE_RANGE_CONFIG_FILE = "./Config/Custom/PrivateStoreRange.ini"; + public static final String CUSTOM_PVP_ANNOUNCE_CONFIG_FILE = "./Config/Custom/PvpAnnounce.ini"; + public static final String CUSTOM_RANDOM_SPAWNS_CONFIG_FILE = "./Config/Custom/RandomSpawns.ini"; + public static final String CUSTOM_SCREEN_WELCOME_MESSAGE_CONFIG_FILE = "./Config/Custom/ScreenWelcomeMessage.ini"; + public static final String CUSTOM_SERVER_TIME_CONFIG_FILE = "./Config/Custom/ServerTime.ini"; + public static final String CUSTOM_STARTING_LOCATION_CONFIG_FILE = "./Config/Custom/StartingLocation.ini"; + public static final String CUSTOM_TVT_CONFIG_FILE = "./Config/Custom/TeamVersusTeam.ini"; + public static final String CUSTOM_WAREHOUSE_SORTING_CONFIG_FILE = "./Config/Custom/WarehouseSorting.ini"; + public static final String CUSTOM_WEDDING_CONFIG_FILE = "./Config/Custom/Wedding.ini"; + public static final String CUSTOM_MULTILANGUAL_SUPPORT_CONFIG_FILE = "./Config/Custom/MultilingualSupport.ini"; + public static final String CUSTOM_WALKER_BOT_PROTECTION_CONFIG_FILE = "./Config/Custom/WalkerBotProtection.ini"; + // -------------------------------------------------- // Variable Definitions // -------------------------------------------------- @@ -1232,7 +1259,7 @@ public final class Config } catch (IOException e) { - _log.log(Level.WARNING, "Error setting datapack root!", e); + LOGGER.log(Level.WARNING, "Error setting datapack root!", e); DATAPACK_ROOT = new File("."); } @@ -1253,7 +1280,7 @@ public final class Config } catch (NumberFormatException e) { - _log.log(Level.WARNING, "Wrong config protocol version: " + protocol + ". Skipped."); + LOGGER.log(Level.WARNING, "Wrong config protocol version: " + protocol + ". Skipped."); } } @@ -1477,7 +1504,7 @@ public final class Config final String[] skillSplit = skill.split(","); if (skillSplit.length != 2) { - _log.warning("[SkillDurationList]: invalid config property -> SkillDurationList \"" + skill + "\""); + LOGGER.warning("[SkillDurationList]: invalid config property -> SkillDurationList \"" + skill + "\""); } else { @@ -1489,7 +1516,7 @@ public final class Config { if (!skill.isEmpty()) { - _log.warning("[SkillDurationList]: invalid config property -> SkillList \"" + skillSplit[0] + "\"" + skillSplit[1]); + LOGGER.warning("[SkillDurationList]: invalid config property -> SkillList \"" + skillSplit[0] + "\"" + skillSplit[1]); } } } @@ -1506,7 +1533,7 @@ public final class Config final String[] skillSplit = skill.split(","); if (skillSplit.length != 2) { - _log.warning("[SkillReuseList]: invalid config property -> SkillReuseList \"" + skill + "\""); + LOGGER.warning("[SkillReuseList]: invalid config property -> SkillReuseList \"" + skill + "\""); } else { @@ -1518,7 +1545,7 @@ public final class Config { if (!skill.isEmpty()) { - _log.warning("[SkillReuseList]: invalid config property -> SkillList \"" + skillSplit[0] + "\"" + skillSplit[1]); + LOGGER.warning("[SkillReuseList]: invalid config property -> SkillList \"" + skillSplit[0] + "\"" + skillSplit[1]); } } } @@ -1680,7 +1707,7 @@ public final class Config ALT_CLAN_LEADER_DATE_CHANGE = character.getInt("AltClanLeaderDateChange", 3); if ((ALT_CLAN_LEADER_DATE_CHANGE < 1) || (ALT_CLAN_LEADER_DATE_CHANGE > 7)) { - _log.log(Level.WARNING, "Wrong value specified for AltClanLeaderDateChange: " + ALT_CLAN_LEADER_DATE_CHANGE); + LOGGER.log(Level.WARNING, "Wrong value specified for AltClanLeaderDateChange: " + ALT_CLAN_LEADER_DATE_CHANGE); ALT_CLAN_LEADER_DATE_CHANGE = 3; } ALT_CLAN_LEADER_HOUR_CHANGE = character.getString("AltClanLeaderHourChange", "00:00:00"); @@ -1725,8 +1752,8 @@ public final class Config } catch (NumberFormatException nfe) { - _log.warning("Auto loot item ids: Wrong ItemId passed: " + item); - _log.warning(nfe.getMessage()); + LOGGER.warning("Auto loot item ids: Wrong ItemId passed: " + item); + LOGGER.warning(nfe.getMessage()); } } UNSTUCK_INTERVAL = character.getInt("UnstuckInterval", 300); @@ -1745,8 +1772,8 @@ public final class Config } catch (NumberFormatException nfe) { - _log.warning("Player Spawn Protection: Wrong ItemId passed: " + item); - _log.warning(nfe.getMessage()); + LOGGER.warning("Player Spawn Protection: Wrong ItemId passed: " + item); + LOGGER.warning(nfe.getMessage()); } } @@ -1956,7 +1983,7 @@ public final class Config } catch (NumberFormatException nfe) { - _log.log(Level.WARNING, nfe.getMessage(), nfe); + LOGGER.log(Level.WARNING, nfe.getMessage(), nfe); } ALT_MANOR_REFRESH_TIME = General.getInt("AltManorRefreshTime", 20); ALT_MANOR_REFRESH_MIN = General.getInt("AltManorRefreshMin", 0); @@ -2112,7 +2139,7 @@ public final class Config final String[] propSplit = prop.split(","); if (propSplit.length != 2) { - _log.warning("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime \"" + prop + "\""); + LOGGER.warning("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime \"" + prop + "\""); } try @@ -2123,7 +2150,7 @@ public final class Config { if (!prop.isEmpty()) { - _log.warning("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime \"" + propSplit[0] + "\"" + propSplit[1]); + LOGGER.warning("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime \"" + propSplit[0] + "\"" + propSplit[1]); } } } @@ -2205,7 +2232,7 @@ public final class Config final String[] itemSplit = item.split(","); if (itemSplit.length != 2) { - _log.warning("Config.load(): invalid config property -> RateDropItemsById \"" + item + "\""); + LOGGER.warning("Config.load(): invalid config property -> RateDropItemsById \"" + item + "\""); } else { @@ -2217,7 +2244,7 @@ public final class Config { if (!item.isEmpty()) { - _log.warning("Config.load(): invalid config property -> RateDropItemsById \"" + item + "\""); + LOGGER.warning("Config.load(): invalid config property -> RateDropItemsById \"" + item + "\""); } } } @@ -2233,7 +2260,7 @@ public final class Config final String[] itemSplit = item.split(","); if (itemSplit.length != 2) { - _log.warning("Config.load(): invalid config property -> RateDropItemsById \"" + item + "\""); + LOGGER.warning("Config.load(): invalid config property -> RateDropItemsById \"" + item + "\""); } else { @@ -2245,7 +2272,7 @@ public final class Config { if (!item.isEmpty()) { - _log.warning("Config.load(): invalid config property -> RateDropItemsById \"" + item + "\""); + LOGGER.warning("Config.load(): invalid config property -> RateDropItemsById \"" + item + "\""); } } } @@ -2262,65 +2289,314 @@ public final class Config DROP_ITEM_MAX_LEVEL_DIFFERENCE = RatesSettings.getInt("DropItemMaxLevelDifference", 10); DROP_ITEM_MIN_LEVEL_GAP_CHANCE = RatesSettings.getDouble("DropItemMinLevelGapChance", 10); - // Load Custom L2Properties file (if exists) - final PropertiesParser CustomSettings = new PropertiesParser(CUSTOM_CONFIG_FILE); + // Load Antifeed Properties file (if exists) + final PropertiesParser Antifeed = new PropertiesParser(CUSTOM_ANTIFEED_CONFIG_FILE); - L2JMOD_CHAMPION_ENABLE = CustomSettings.getBoolean("ChampionEnable", false); - L2JMOD_CHAMPION_PASSIVE = CustomSettings.getBoolean("ChampionPassive", false); - L2JMOD_CHAMPION_FREQUENCY = CustomSettings.getInt("ChampionFrequency", 0); - L2JMOD_CHAMP_TITLE = CustomSettings.getString("ChampionTitle", "Champion"); - L2JMOD_SHOW_CHAMPION_AURA = CustomSettings.getBoolean("ChampionAura", true); - L2JMOD_CHAMP_MIN_LVL = CustomSettings.getInt("ChampionMinLevel", 20); - L2JMOD_CHAMP_MAX_LVL = CustomSettings.getInt("ChampionMaxLevel", 60); - L2JMOD_CHAMPION_HP = CustomSettings.getInt("ChampionHp", 7); - L2JMOD_CHAMPION_HP_REGEN = CustomSettings.getFloat("ChampionHpRegen", 1); - L2JMOD_CHAMPION_REWARDS_EXP_SP = CustomSettings.getFloat("ChampionRewardsExpSp", 8); - L2JMOD_CHAMPION_REWARDS_CHANCE = CustomSettings.getFloat("ChampionRewardsChance", 8); - L2JMOD_CHAMPION_REWARDS_AMOUNT = CustomSettings.getFloat("ChampionRewardsAmount", 1); - L2JMOD_CHAMPION_ADENAS_REWARDS_CHANCE = CustomSettings.getFloat("ChampionAdenasRewardsChance", 1); - L2JMOD_CHAMPION_ADENAS_REWARDS_AMOUNT = CustomSettings.getFloat("ChampionAdenasRewardsAmount", 1); - L2JMOD_CHAMPION_ATK = CustomSettings.getFloat("ChampionAtk", 1); - L2JMOD_CHAMPION_SPD_ATK = CustomSettings.getFloat("ChampionSpdAtk", 1); - L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = CustomSettings.getInt("ChampionRewardLowerLvlItemChance", 0); - L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = CustomSettings.getInt("ChampionRewardHigherLvlItemChance", 0); - L2JMOD_CHAMPION_REWARD_ID = CustomSettings.getInt("ChampionRewardItemID", 6393); - L2JMOD_CHAMPION_REWARD_QTY = CustomSettings.getInt("ChampionRewardItemQty", 1); - L2JMOD_CHAMPION_ENABLE_VITALITY = CustomSettings.getBoolean("ChampionEnableVitality", false); - L2JMOD_CHAMPION_ENABLE_IN_INSTANCES = CustomSettings.getBoolean("ChampionEnableInInstances", false); + L2JMOD_ANTIFEED_ENABLE = Antifeed.getBoolean("AntiFeedEnable", false); + L2JMOD_ANTIFEED_DUALBOX = Antifeed.getBoolean("AntiFeedDualbox", true); + L2JMOD_ANTIFEED_DISCONNECTED_AS_DUALBOX = Antifeed.getBoolean("AntiFeedDisconnectedAsDualbox", true); + L2JMOD_ANTIFEED_INTERVAL = Antifeed.getInt("AntiFeedInterval", 120) * 1000; - TVT_EVENT_ENABLED = CustomSettings.getBoolean("TvTEventEnabled", false); - TVT_EVENT_IN_INSTANCE = CustomSettings.getBoolean("TvTEventInInstance", false); - TVT_EVENT_INSTANCE_FILE = CustomSettings.getString("TvTEventInstanceFile", "coliseum.xml"); - TVT_EVENT_INTERVAL = CustomSettings.getString("TvTEventInterval", "20:00").split(","); - TVT_EVENT_PARTICIPATION_TIME = CustomSettings.getInt("TvTEventParticipationTime", 3600); - TVT_EVENT_RUNNING_TIME = CustomSettings.getInt("TvTEventRunningTime", 1800); - TVT_EVENT_PARTICIPATION_NPC_ID = CustomSettings.getInt("TvTEventParticipationNpcId", 0); + // Load AutoPotions Properties file (if exists) + final PropertiesParser AutoPotions = new PropertiesParser(CUSTOM_AUTO_POTIONS_CONFIG_FILE); - L2JMOD_ALLOW_WEDDING = CustomSettings.getBoolean("AllowWedding", false); - L2JMOD_WEDDING_PRICE = CustomSettings.getInt("WeddingPrice", 250000000); - L2JMOD_WEDDING_PUNISH_INFIDELITY = CustomSettings.getBoolean("WeddingPunishInfidelity", true); - L2JMOD_WEDDING_TELEPORT = CustomSettings.getBoolean("WeddingTeleport", true); - L2JMOD_WEDDING_TELEPORT_PRICE = CustomSettings.getInt("WeddingTeleportPrice", 50000); - L2JMOD_WEDDING_TELEPORT_DURATION = CustomSettings.getInt("WeddingTeleportDuration", 60); - L2JMOD_WEDDING_SAMESEX = CustomSettings.getBoolean("WeddingAllowSameSex", false); - L2JMOD_WEDDING_FORMALWEAR = CustomSettings.getBoolean("WeddingFormalWear", true); - L2JMOD_WEDDING_DIVORCE_COSTS = CustomSettings.getInt("WeddingDivorceCosts", 20); + AUTO_POTIONS_ENABLED = AutoPotions.getBoolean("AutoPotionsEnabled", false); + AUTO_POTIONS_IN_OLYMPIAD = AutoPotions.getBoolean("AutoPotionsInOlympiad", false); + AUTO_POTION_MIN_LVL = AutoPotions.getInt("AutoPotionMinimumLevel", 1); + AUTO_CP_ENABLED = AutoPotions.getBoolean("AutoCpEnabled", true); + AUTO_HP_ENABLED = AutoPotions.getBoolean("AutoHpEnabled", true); + AUTO_MP_ENABLED = AutoPotions.getBoolean("AutoMpEnabled", true); + AUTO_CP_PERCENTAGE = AutoPotions.getInt("AutoCpPercentage", 70); + AUTO_HP_PERCENTAGE = AutoPotions.getInt("AutoHpPercentage", 70); + AUTO_MP_PERCENTAGE = AutoPotions.getInt("AutoMpPercentage", 70); + AUTO_CP_ITEM_IDS = new ArrayList<>(); + for (String s : AutoPotions.getString("AutoCpItemIds", "0").split(",")) + { + AUTO_CP_ITEM_IDS.add(Integer.parseInt(s)); + } + AUTO_HP_ITEM_IDS = new ArrayList<>(); + for (String s : AutoPotions.getString("AutoHpItemIds", "0").split(",")) + { + AUTO_HP_ITEM_IDS.add(Integer.parseInt(s)); + } + AUTO_MP_ITEM_IDS = new ArrayList<>(); + for (String s : AutoPotions.getString("AutoMpItemIds", "0").split(",")) + { + AUTO_MP_ITEM_IDS.add(Integer.parseInt(s)); + } - L2JMOD_ENABLE_WAREHOUSESORTING_CLAN = CustomSettings.getBoolean("EnableWarehouseSortingClan", false); - L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE = CustomSettings.getBoolean("EnableWarehouseSortingPrivate", false); + // Load Banking Properties file (if exists) + final PropertiesParser Banking = new PropertiesParser(CUSTOM_BANKING_CONFIG_FILE); + + BANKING_SYSTEM_ENABLED = Banking.getBoolean("BankingEnabled", false); + BANKING_SYSTEM_GOLDBARS = Banking.getInt("BankingGoldbarCount", 1); + BANKING_SYSTEM_ADENA = Banking.getInt("BankingAdenaCount", 500000000); + + // Load ChampionMonster Properties file (if exists) + final PropertiesParser ChampionMonster = new PropertiesParser(CUSTOM_CHAMPION_MONSTERS_CONFIG_FILE); + + L2JMOD_CHAMPION_ENABLE = ChampionMonster.getBoolean("ChampionEnable", false); + L2JMOD_CHAMPION_PASSIVE = ChampionMonster.getBoolean("ChampionPassive", false); + L2JMOD_CHAMPION_FREQUENCY = ChampionMonster.getInt("ChampionFrequency", 0); + L2JMOD_CHAMP_TITLE = ChampionMonster.getString("ChampionTitle", "Champion"); + L2JMOD_SHOW_CHAMPION_AURA = ChampionMonster.getBoolean("ChampionAura", true); + L2JMOD_CHAMP_MIN_LVL = ChampionMonster.getInt("ChampionMinLevel", 20); + L2JMOD_CHAMP_MAX_LVL = ChampionMonster.getInt("ChampionMaxLevel", 60); + L2JMOD_CHAMPION_HP = ChampionMonster.getInt("ChampionHp", 7); + L2JMOD_CHAMPION_HP_REGEN = ChampionMonster.getFloat("ChampionHpRegen", 1); + L2JMOD_CHAMPION_REWARDS_EXP_SP = ChampionMonster.getFloat("ChampionRewardsExpSp", 8); + L2JMOD_CHAMPION_REWARDS_CHANCE = ChampionMonster.getFloat("ChampionRewardsChance", 8); + L2JMOD_CHAMPION_REWARDS_AMOUNT = ChampionMonster.getFloat("ChampionRewardsAmount", 1); + L2JMOD_CHAMPION_ADENAS_REWARDS_CHANCE = ChampionMonster.getFloat("ChampionAdenasRewardsChance", 1); + L2JMOD_CHAMPION_ADENAS_REWARDS_AMOUNT = ChampionMonster.getFloat("ChampionAdenasRewardsAmount", 1); + L2JMOD_CHAMPION_ATK = ChampionMonster.getFloat("ChampionAtk", 1); + L2JMOD_CHAMPION_SPD_ATK = ChampionMonster.getFloat("ChampionSpdAtk", 1); + L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = ChampionMonster.getInt("ChampionRewardLowerLvlItemChance", 0); + L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = ChampionMonster.getInt("ChampionRewardHigherLvlItemChance", 0); + L2JMOD_CHAMPION_REWARD_ID = ChampionMonster.getInt("ChampionRewardItemID", 6393); + L2JMOD_CHAMPION_REWARD_QTY = ChampionMonster.getInt("ChampionRewardItemQty", 1); + L2JMOD_CHAMPION_ENABLE_VITALITY = ChampionMonster.getBoolean("ChampionEnableVitality", false); + L2JMOD_CHAMPION_ENABLE_IN_INSTANCES = ChampionMonster.getBoolean("ChampionEnableInInstances", false); + + // Load ChatModeration Properties file (if exists) + final PropertiesParser ChatModeration = new PropertiesParser(CUSTOM_CHAT_MODERATION_CONFIG_FILE); + + L2JMOD_CHAT_ADMIN = ChatModeration.getBoolean("ChatAdmin", false); + + // Load CommunityBoard Properties file (if exists) + final PropertiesParser CommunityBoard = new PropertiesParser(CUSTOM_COMMUNITY_BOARD_CONFIG_FILE); + + CUSTOM_CB_ENABLED = CommunityBoard.getBoolean("CustomCommunityBoard", false); + COMMUNITYBOARD_CURRENCY = CommunityBoard.getInt("CommunityCurrencyId", 57); + COMMUNITYBOARD_ENABLE_MULTISELLS = CommunityBoard.getBoolean("CommunityEnableMultisells", true); + COMMUNITYBOARD_ENABLE_TELEPORTS = CommunityBoard.getBoolean("CommunityEnableTeleports", true); + COMMUNITYBOARD_ENABLE_BUFFS = CommunityBoard.getBoolean("CommunityEnableBuffs", true); + COMMUNITYBOARD_ENABLE_HEAL = CommunityBoard.getBoolean("CommunityEnableHeal", true); + COMMUNITYBOARD_TELEPORT_PRICE = CommunityBoard.getInt("CommunityTeleportPrice", 0); + COMMUNITYBOARD_BUFF_PRICE = CommunityBoard.getInt("CommunityBuffPrice", 0); + COMMUNITYBOARD_HEAL_PRICE = CommunityBoard.getInt("CommunityHealPrice", 0); + COMMUNITYBOARD_COMBAT_DISABLED = CommunityBoard.getBoolean("CommunityCombatDisabled", true); + COMMUNITYBOARD_KARMA_DISABLED = CommunityBoard.getBoolean("CommunityKarmaDisabled", true); + COMMUNITYBOARD_CAST_ANIMATIONS = CommunityBoard.getBoolean("CommunityCastAnimations", false); + COMMUNITY_PREMIUM_SYSTEM_ENABLED = CommunityBoard.getBoolean("CommunityPremiumSystem", false); + COMMUNITY_PREMIUM_COIN_ID = CommunityBoard.getInt("CommunityPremiumBuyCoinId", 57); + COMMUNITY_PREMIUM_PRICE_PER_DAY = CommunityBoard.getInt("CommunityPremiumPricePerDay", 1000000); + final String[] allowedBuffs = CommunityBoard.getString("CommunityAvailableBuffs", "").split(","); + COMMUNITY_AVAILABLE_BUFFS = new ArrayList<>(allowedBuffs.length); + for (String s : allowedBuffs) + { + COMMUNITY_AVAILABLE_BUFFS.add(Integer.parseInt(s)); + } + final String[] availableTeleports = CommunityBoard.getString("CommunityTeleportList", "").split(";"); + COMMUNITY_AVAILABLE_TELEPORTS = new HashMap<>(availableTeleports.length); + for (String s : availableTeleports) + { + final String splitInfo[] = s.split(","); + COMMUNITY_AVAILABLE_TELEPORTS.put(splitInfo[0], new Location(Integer.parseInt(splitInfo[1]), Integer.parseInt(splitInfo[2]), Integer.parseInt(splitInfo[3]))); + } + + // Load DualboxCheck Properties file (if exists) + final PropertiesParser DualboxCheck = new PropertiesParser(CUSTOM_DUALBOX_CHECK_CONFIG_FILE); + + L2JMOD_DUALBOX_CHECK_MAX_PLAYERS_PER_IP = DualboxCheck.getInt("DualboxCheckMaxPlayersPerIP", 0); + L2JMOD_DUALBOX_CHECK_MAX_OLYMPIAD_PARTICIPANTS_PER_IP = DualboxCheck.getInt("DualboxCheckMaxOlympiadParticipantsPerIP", 0); + L2JMOD_DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP = DualboxCheck.getInt("DualboxCheckMaxL2EventParticipantsPerIP", 0); + final String[] dualboxCheckWhiteList = DualboxCheck.getString("DualboxCheckWhitelist", "127.0.0.1,0").split(";"); + L2JMOD_DUALBOX_CHECK_WHITELIST = new HashMap<>(dualboxCheckWhiteList.length); + for (String entry : dualboxCheckWhiteList) + { + final String[] entrySplit = entry.split(","); + if (entrySplit.length != 2) + { + LOGGER.warning("DualboxCheck[Config.load()]: invalid config property -> DualboxCheckWhitelist \"" + entry + "\""); + } + else + { + try + { + int num = Integer.parseInt(entrySplit[1]); + num = num == 0 ? -1 : num; + L2JMOD_DUALBOX_CHECK_WHITELIST.put(InetAddress.getByName(entrySplit[0]).hashCode(), num); + } + catch (UnknownHostException e) + { + LOGGER.warning("DualboxCheck[Config.load()]: invalid address -> DualboxCheckWhitelist \"" + entrySplit[0] + "\""); + } + catch (NumberFormatException e) + { + LOGGER.warning("DualboxCheck[Config.load()]: invalid number -> DualboxCheckWhitelist \"" + entrySplit[1] + "\""); + } + } + } + + // Load FindPvP Properties file (if exists) + final PropertiesParser FindPvP = new PropertiesParser(CUSTOM_FIND_PVP_CONFIG_FILE); + + ENABLE_FIND_PVP = FindPvP.getBoolean("EnableFindPvP", false); + + // Load HellboundStatus Properties file (if exists) + final PropertiesParser HellboundStatus = new PropertiesParser(CUSTOM_HELLBOUND_STATUS_CONFIG_FILE); + + L2JMOD_HELLBOUND_STATUS = HellboundStatus.getBoolean("HellboundStatus", false); + + // Load OfflineTrade Properties file (if exists) + final PropertiesParser OfflineTrade = new PropertiesParser(CUSTOM_OFFLINE_TRADE_CONFIG_FILE); + + OFFLINE_TRADE_ENABLE = OfflineTrade.getBoolean("OfflineTradeEnable", false); + OFFLINE_CRAFT_ENABLE = OfflineTrade.getBoolean("OfflineCraftEnable", false); + OFFLINE_MODE_IN_PEACE_ZONE = OfflineTrade.getBoolean("OfflineModeInPeaceZone", false); + OFFLINE_MODE_NO_DAMAGE = OfflineTrade.getBoolean("OfflineModeNoDamage", false); + OFFLINE_SET_NAME_COLOR = OfflineTrade.getBoolean("OfflineSetNameColor", false); + OFFLINE_NAME_COLOR = Integer.decode("0x" + OfflineTrade.getString("OfflineNameColor", "808080")); + OFFLINE_FAME = OfflineTrade.getBoolean("OfflineFame", true); + RESTORE_OFFLINERS = OfflineTrade.getBoolean("RestoreOffliners", false); + OFFLINE_MAX_DAYS = OfflineTrade.getInt("OfflineMaxDays", 10); + STORE_OFFLINE_TRADE_IN_REALTIME = OfflineTrade.getBoolean("StoreOfflineTradeInRealtime", true); + OFFLINE_DISCONNECT_FINISHED = OfflineTrade.getBoolean("OfflineDisconnectFinished", true); + + // Load PasswordChange Properties file (if exists) + final PropertiesParser PasswordChange = new PropertiesParser(CUSTOM_PASSWORD_CHANGE_CONFIG_FILE); + + L2JMOD_ALLOW_CHANGE_PASSWORD = PasswordChange.getBoolean("AllowChangePassword", false); + + // Load PremiumSystem Properties file (if exists) + final PropertiesParser PremiumSystem = new PropertiesParser(CUSTOM_PREMIUM_SYSTEM_CONFIG_FILE); + + PREMIUM_SYSTEM_ENABLED = PremiumSystem.getBoolean("EnablePremiumSystem", false); + PREMIUM_RATE_XP = PremiumSystem.getFloat("PremiumRateXp", 2); + PREMIUM_RATE_SP = PremiumSystem.getFloat("PremiumRateSp", 2); + PREMIUM_RATE_DROP_CHANCE = PremiumSystem.getFloat("PremiumRateDropChance", 2); + PREMIUM_RATE_DROP_AMOUNT = PremiumSystem.getFloat("PremiumRateDropAmount", 1); + PREMIUM_RATE_SPOIL_CHANCE = PremiumSystem.getFloat("PremiumRateSpoilChance", 2); + PREMIUM_RATE_SPOIL_AMOUNT = PremiumSystem.getFloat("PremiumRateSpoilAmount", 1); + final String[] premiumDropChanceMultiplier = PremiumSystem.getString("PremiumRateDropChanceByItemId", "").split(";"); + PREMIUM_RATE_DROP_CHANCE_BY_ID = new HashMap<>(premiumDropChanceMultiplier.length); + if (!premiumDropChanceMultiplier[0].isEmpty()) + { + for (String item : premiumDropChanceMultiplier) + { + final String[] itemSplit = item.split(","); + if (itemSplit.length != 2) + { + LOGGER.warning("Config.load(): invalid config property -> PremiumRateDropChanceByItemId \"" + item + "\""); + } + else + { + try + { + PREMIUM_RATE_DROP_CHANCE_BY_ID.put(Integer.valueOf(itemSplit[0]), Float.valueOf(itemSplit[1])); + } + catch (NumberFormatException nfe) + { + if (!item.isEmpty()) + { + LOGGER.warning("Config.load(): invalid config property -> PremiumRateDropChanceByItemId \"" + item + "\""); + } + } + } + } + } + final String[] premiumDropAmountMultiplier = PremiumSystem.getString("PremiumRateDropAmountByItemId", "").split(";"); + PREMIUM_RATE_DROP_AMOUNT_BY_ID = new HashMap<>(premiumDropAmountMultiplier.length); + if (!premiumDropAmountMultiplier[0].isEmpty()) + { + for (String item : premiumDropAmountMultiplier) + { + final String[] itemSplit = item.split(","); + if (itemSplit.length != 2) + { + LOGGER.warning("Config.load(): invalid config property -> PremiumRateDropAmountByItemId \"" + item + "\""); + } + else + { + try + { + PREMIUM_RATE_DROP_AMOUNT_BY_ID.put(Integer.valueOf(itemSplit[0]), Float.valueOf(itemSplit[1])); + } + catch (NumberFormatException nfe) + { + if (!item.isEmpty()) + { + LOGGER.warning("Config.load(): invalid config property -> PremiumRateDropAmountByItemId \"" + item + "\""); + } + } + } + } + } + + // Load CustomSettings Properties file (if exists) + final PropertiesParser PrivateStoreRange = new PropertiesParser(CUSTOM_PRIVATE_STORE_RANGE_CONFIG_FILE); + + SHOP_MIN_RANGE_FROM_PLAYER = PrivateStoreRange.getInt("ShopMinRangeFromPlayer", 50); + SHOP_MIN_RANGE_FROM_NPC = PrivateStoreRange.getInt("ShopMinRangeFromNpc", 100); + + // Load PvpAnnounce Properties file (if exists) + final PropertiesParser PvpAnnounce = new PropertiesParser(CUSTOM_PVP_ANNOUNCE_CONFIG_FILE); + + ANNOUNCE_PK_PVP = PvpAnnounce.getBoolean("AnnouncePkPvP", false); + ANNOUNCE_PK_PVP_NORMAL_MESSAGE = PvpAnnounce.getBoolean("AnnouncePkPvPNormalMessage", true); + ANNOUNCE_PK_MSG = PvpAnnounce.getString("AnnouncePkMsg", "$killer has slaughtered $target"); + ANNOUNCE_PVP_MSG = PvpAnnounce.getString("AnnouncePvpMsg", "$killer has defeated $target"); + + // Load RandomSpawns Properties file (if exists) + final PropertiesParser RandomSpawns = new PropertiesParser(CUSTOM_RANDOM_SPAWNS_CONFIG_FILE); + + ENABLE_RANDOM_MONSTER_SPAWNS = RandomSpawns.getBoolean("EnableRandomMonsterSpawns", false); + MOB_MAX_SPAWN_RANGE = RandomSpawns.getInt("MaxSpawnMobRange", 150); + MOB_MIN_SPAWN_RANGE = MOB_MAX_SPAWN_RANGE * -1; + if (ENABLE_RANDOM_MONSTER_SPAWNS) + { + final String[] mobsIds = RandomSpawns.getString("MobsSpawnNotRandom", "18812,18813,18814,22138").split(","); + MOBS_LIST_NOT_RANDOM = new ArrayList<>(mobsIds.length); + for (String id : mobsIds) + { + MOBS_LIST_NOT_RANDOM.add(Integer.valueOf(id)); + } + } + + // Load ScreenWelcomeMessage Properties file (if exists) + final PropertiesParser ScreenWelcomeMessage = new PropertiesParser(CUSTOM_SCREEN_WELCOME_MESSAGE_CONFIG_FILE); + + WELCOME_MESSAGE_ENABLED = ScreenWelcomeMessage.getBoolean("ScreenWelcomeMessageEnable", false); + WELCOME_MESSAGE_TEXT = ScreenWelcomeMessage.getString("ScreenWelcomeMessageText", "Welcome to L2J server!"); + WELCOME_MESSAGE_TIME = ScreenWelcomeMessage.getInt("ScreenWelcomeMessageTime", 10) * 1000; + + // Load ServerTime Properties file (if exists) + final PropertiesParser ServerTime = new PropertiesParser(CUSTOM_SERVER_TIME_CONFIG_FILE); + + L2JMOD_DISPLAY_SERVER_TIME = ServerTime.getBoolean("DisplayServerTime", false); + + // Load StartingLocation Properties file (if exists) + final PropertiesParser StartingLocation = new PropertiesParser(CUSTOM_STARTING_LOCATION_CONFIG_FILE); + + CUSTOM_STARTING_LOC = StartingLocation.getBoolean("CustomStartingLocation", false); + CUSTOM_STARTING_LOC_X = StartingLocation.getInt("CustomStartingLocX", 83020); + CUSTOM_STARTING_LOC_Y = StartingLocation.getInt("CustomStartingLocY", 147880); + CUSTOM_STARTING_LOC_Z = StartingLocation.getInt("CustomStartingLocZ", -3469); + + // Load TeamVersusTeam Properties file (if exists) + final PropertiesParser TeamVersusTeam = new PropertiesParser(CUSTOM_TVT_CONFIG_FILE); + + TVT_EVENT_ENABLED = TeamVersusTeam.getBoolean("TvTEventEnabled", false); + TVT_EVENT_IN_INSTANCE = TeamVersusTeam.getBoolean("TvTEventInInstance", false); + TVT_EVENT_INSTANCE_FILE = TeamVersusTeam.getString("TvTEventInstanceFile", "coliseum.xml"); + TVT_EVENT_INTERVAL = TeamVersusTeam.getString("TvTEventInterval", "20:00").split(","); + TVT_EVENT_PARTICIPATION_TIME = TeamVersusTeam.getInt("TvTEventParticipationTime", 3600); + TVT_EVENT_RUNNING_TIME = TeamVersusTeam.getInt("TvTEventRunningTime", 1800); + TVT_EVENT_PARTICIPATION_NPC_ID = TeamVersusTeam.getInt("TvTEventParticipationNpcId", 0); if (TVT_EVENT_PARTICIPATION_NPC_ID == 0) { TVT_EVENT_ENABLED = false; - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcId"); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcId"); } else { - String[] tvtNpcCoords = CustomSettings.getString("TvTEventParticipationNpcCoordinates", "0,0,0").split(","); + String[] tvtNpcCoords = TeamVersusTeam.getString("TvTEventParticipationNpcCoordinates", "0,0,0").split(","); if (tvtNpcCoords.length < 3) { TVT_EVENT_ENABLED = false; - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcCoordinates"); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcCoordinates"); } else { @@ -2337,40 +2613,40 @@ public final class Config { TVT_EVENT_PARTICIPATION_NPC_COORDINATES[3] = Integer.parseInt(tvtNpcCoords[3]); } - TVT_EVENT_MIN_PLAYERS_IN_TEAMS = CustomSettings.getInt("TvTEventMinPlayersInTeams", 1); - TVT_EVENT_MAX_PLAYERS_IN_TEAMS = CustomSettings.getInt("TvTEventMaxPlayersInTeams", 20); - TVT_EVENT_MIN_LVL = CustomSettings.getByte("TvTEventMinPlayerLevel", (byte) 1); - TVT_EVENT_MAX_LVL = CustomSettings.getByte("TvTEventMaxPlayerLevel", (byte) 80); - TVT_EVENT_RESPAWN_TELEPORT_DELAY = CustomSettings.getInt("TvTEventRespawnTeleportDelay", 20); - TVT_EVENT_START_LEAVE_TELEPORT_DELAY = CustomSettings.getInt("TvTEventStartLeaveTeleportDelay", 20); - TVT_EVENT_EFFECTS_REMOVAL = CustomSettings.getInt("TvTEventEffectsRemoval", 0); - TVT_EVENT_MAX_PARTICIPANTS_PER_IP = CustomSettings.getInt("TvTEventMaxParticipantsPerIP", 0); - TVT_ALLOW_VOICED_COMMAND = CustomSettings.getBoolean("TvTAllowVoicedInfoCommand", false); - TVT_EVENT_TEAM_1_NAME = CustomSettings.getString("TvTEventTeam1Name", "Team1"); - tvtNpcCoords = CustomSettings.getString("TvTEventTeam1Coordinates", "0,0,0").split(","); + TVT_EVENT_MIN_PLAYERS_IN_TEAMS = TeamVersusTeam.getInt("TvTEventMinPlayersInTeams", 1); + TVT_EVENT_MAX_PLAYERS_IN_TEAMS = TeamVersusTeam.getInt("TvTEventMaxPlayersInTeams", 20); + TVT_EVENT_MIN_LVL = TeamVersusTeam.getByte("TvTEventMinPlayerLevel", (byte) 1); + TVT_EVENT_MAX_LVL = TeamVersusTeam.getByte("TvTEventMaxPlayerLevel", (byte) 80); + TVT_EVENT_RESPAWN_TELEPORT_DELAY = TeamVersusTeam.getInt("TvTEventRespawnTeleportDelay", 20); + TVT_EVENT_START_LEAVE_TELEPORT_DELAY = TeamVersusTeam.getInt("TvTEventStartLeaveTeleportDelay", 20); + TVT_EVENT_EFFECTS_REMOVAL = TeamVersusTeam.getInt("TvTEventEffectsRemoval", 0); + TVT_EVENT_MAX_PARTICIPANTS_PER_IP = TeamVersusTeam.getInt("TvTEventMaxParticipantsPerIP", 0); + TVT_ALLOW_VOICED_COMMAND = TeamVersusTeam.getBoolean("TvTAllowVoicedInfoCommand", false); + TVT_EVENT_TEAM_1_NAME = TeamVersusTeam.getString("TvTEventTeam1Name", "Team1"); + tvtNpcCoords = TeamVersusTeam.getString("TvTEventTeam1Coordinates", "0,0,0").split(","); if (tvtNpcCoords.length < 3) { TVT_EVENT_ENABLED = false; - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam1Coordinates"); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam1Coordinates"); } else { TVT_EVENT_TEAM_1_COORDINATES[0] = Integer.parseInt(tvtNpcCoords[0]); TVT_EVENT_TEAM_1_COORDINATES[1] = Integer.parseInt(tvtNpcCoords[1]); TVT_EVENT_TEAM_1_COORDINATES[2] = Integer.parseInt(tvtNpcCoords[2]); - TVT_EVENT_TEAM_2_NAME = CustomSettings.getString("TvTEventTeam2Name", "Team2"); - tvtNpcCoords = CustomSettings.getString("TvTEventTeam2Coordinates", "0,0,0").split(","); + TVT_EVENT_TEAM_2_NAME = TeamVersusTeam.getString("TvTEventTeam2Name", "Team2"); + tvtNpcCoords = TeamVersusTeam.getString("TvTEventTeam2Coordinates", "0,0,0").split(","); if (tvtNpcCoords.length < 3) { TVT_EVENT_ENABLED = false; - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam2Coordinates"); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam2Coordinates"); } else { TVT_EVENT_TEAM_2_COORDINATES[0] = Integer.parseInt(tvtNpcCoords[0]); TVT_EVENT_TEAM_2_COORDINATES[1] = Integer.parseInt(tvtNpcCoords[1]); TVT_EVENT_TEAM_2_COORDINATES[2] = Integer.parseInt(tvtNpcCoords[2]); - tvtNpcCoords = CustomSettings.getString("TvTEventParticipationFee", "0,0").split(","); + tvtNpcCoords = TeamVersusTeam.getString("TvTEventParticipationFee", "0,0").split(","); try { TVT_EVENT_PARTICIPATION_FEE[0] = Integer.parseInt(tvtNpcCoords[0]); @@ -2380,16 +2656,16 @@ public final class Config { if (tvtNpcCoords.length > 0) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationFee"); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationFee"); } } - tvtNpcCoords = CustomSettings.getString("TvTEventReward", "57,100000").split(";"); + tvtNpcCoords = TeamVersusTeam.getString("TvTEventReward", "57,100000").split(";"); for (String reward : tvtNpcCoords) { final String[] rewardSplit = reward.split(","); if (rewardSplit.length != 2) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"" + reward + "\""); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"" + reward + "\""); } else { @@ -2405,18 +2681,18 @@ public final class Config { if (!reward.isEmpty()) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"" + reward + "\""); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"" + reward + "\""); } } } } - TVT_EVENT_TARGET_TEAM_MEMBERS_ALLOWED = CustomSettings.getBoolean("TvTEventTargetTeamMembersAllowed", true); - TVT_EVENT_SCROLL_ALLOWED = CustomSettings.getBoolean("TvTEventScrollsAllowed", false); - TVT_EVENT_POTIONS_ALLOWED = CustomSettings.getBoolean("TvTEventPotionsAllowed", false); - TVT_EVENT_SUMMON_BY_ITEM_ALLOWED = CustomSettings.getBoolean("TvTEventSummonByItemAllowed", false); - TVT_REWARD_TEAM_TIE = CustomSettings.getBoolean("TvTRewardTeamTie", false); - tvtNpcCoords = CustomSettings.getString("TvTDoorsToOpen", "").split(";"); + TVT_EVENT_TARGET_TEAM_MEMBERS_ALLOWED = TeamVersusTeam.getBoolean("TvTEventTargetTeamMembersAllowed", true); + TVT_EVENT_SCROLL_ALLOWED = TeamVersusTeam.getBoolean("TvTEventScrollsAllowed", false); + TVT_EVENT_POTIONS_ALLOWED = TeamVersusTeam.getBoolean("TvTEventPotionsAllowed", false); + TVT_EVENT_SUMMON_BY_ITEM_ALLOWED = TeamVersusTeam.getBoolean("TvTEventSummonByItemAllowed", false); + TVT_REWARD_TEAM_TIE = TeamVersusTeam.getBoolean("TvTRewardTeamTie", false); + tvtNpcCoords = TeamVersusTeam.getString("TvTDoorsToOpen", "").split(";"); for (String door : tvtNpcCoords) { try @@ -2427,12 +2703,12 @@ public final class Config { if (!door.isEmpty()) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToOpen \"" + door + "\""); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToOpen \"" + door + "\""); } } } - tvtNpcCoords = CustomSettings.getString("TvTDoorsToClose", "").split(";"); + tvtNpcCoords = TeamVersusTeam.getString("TvTDoorsToClose", "").split(";"); for (String door : tvtNpcCoords) { try @@ -2443,12 +2719,12 @@ public final class Config { if (!door.isEmpty()) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToClose \"" + door + "\""); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToClose \"" + door + "\""); } } } - tvtNpcCoords = CustomSettings.getString("TvTEventFighterBuffs", "").split(";"); + tvtNpcCoords = TeamVersusTeam.getString("TvTEventFighterBuffs", "").split(";"); if (!tvtNpcCoords[0].isEmpty()) { TVT_EVENT_FIGHTER_BUFFS = new HashMap<>(tvtNpcCoords.length); @@ -2457,7 +2733,7 @@ public final class Config final String[] skillSplit = skill.split(","); if (skillSplit.length != 2) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs \"" + skill + "\""); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs \"" + skill + "\""); } else { @@ -2469,14 +2745,14 @@ public final class Config { if (!skill.isEmpty()) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs \"" + skill + "\""); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs \"" + skill + "\""); } } } } } - tvtNpcCoords = CustomSettings.getString("TvTEventMageBuffs", "").split(";"); + tvtNpcCoords = TeamVersusTeam.getString("TvTEventMageBuffs", "").split(";"); if (!tvtNpcCoords[0].isEmpty()) { TVT_EVENT_MAGE_BUFFS = new HashMap<>(tvtNpcCoords.length); @@ -2485,7 +2761,7 @@ public final class Config final String[] skillSplit = skill.split(","); if (skillSplit.length != 2) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs \"" + skill + "\""); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs \"" + skill + "\""); } else { @@ -2497,7 +2773,7 @@ public final class Config { if (!skill.isEmpty()) { - _log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs \"" + skill + "\""); + LOGGER.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs \"" + skill + "\""); } } } @@ -2508,42 +2784,31 @@ public final class Config } } - BANKING_SYSTEM_ENABLED = CustomSettings.getBoolean("BankingEnabled", false); - BANKING_SYSTEM_GOLDBARS = CustomSettings.getInt("BankingGoldbarCount", 1); - BANKING_SYSTEM_ADENA = CustomSettings.getInt("BankingAdenaCount", 500000000); + // Load WarehouseSorting Properties file (if exists) + final PropertiesParser WarehouseSorting = new PropertiesParser(CUSTOM_WAREHOUSE_SORTING_CONFIG_FILE); - OFFLINE_TRADE_ENABLE = CustomSettings.getBoolean("OfflineTradeEnable", false); - OFFLINE_CRAFT_ENABLE = CustomSettings.getBoolean("OfflineCraftEnable", false); - OFFLINE_MODE_IN_PEACE_ZONE = CustomSettings.getBoolean("OfflineModeInPeaceZone", false); - OFFLINE_MODE_NO_DAMAGE = CustomSettings.getBoolean("OfflineModeNoDamage", false); - OFFLINE_SET_NAME_COLOR = CustomSettings.getBoolean("OfflineSetNameColor", false); - OFFLINE_NAME_COLOR = Integer.decode("0x" + CustomSettings.getString("OfflineNameColor", "808080")); - OFFLINE_FAME = CustomSettings.getBoolean("OfflineFame", true); - RESTORE_OFFLINERS = CustomSettings.getBoolean("RestoreOffliners", false); - OFFLINE_MAX_DAYS = CustomSettings.getInt("OfflineMaxDays", 10); - STORE_OFFLINE_TRADE_IN_REALTIME = CustomSettings.getBoolean("StoreOfflineTradeInRealtime", true); - OFFLINE_DISCONNECT_FINISHED = CustomSettings.getBoolean("OfflineDisconnectFinished", true); + L2JMOD_ENABLE_WAREHOUSESORTING_CLAN = WarehouseSorting.getBoolean("EnableWarehouseSortingClan", false); + L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE = WarehouseSorting.getBoolean("EnableWarehouseSortingPrivate", false); - L2JMOD_DISPLAY_SERVER_TIME = CustomSettings.getBoolean("DisplayServerTime", false); + // Load Wedding Properties file (if exists) + final PropertiesParser Wedding = new PropertiesParser(CUSTOM_WEDDING_CONFIG_FILE); - WELCOME_MESSAGE_ENABLED = CustomSettings.getBoolean("ScreenWelcomeMessageEnable", false); - WELCOME_MESSAGE_TEXT = CustomSettings.getString("ScreenWelcomeMessageText", "Welcome to L2J server!"); - WELCOME_MESSAGE_TIME = CustomSettings.getInt("ScreenWelcomeMessageTime", 10) * 1000; + L2JMOD_ALLOW_WEDDING = Wedding.getBoolean("AllowWedding", false); + L2JMOD_WEDDING_PRICE = Wedding.getInt("WeddingPrice", 250000000); + L2JMOD_WEDDING_PUNISH_INFIDELITY = Wedding.getBoolean("WeddingPunishInfidelity", true); + L2JMOD_WEDDING_TELEPORT = Wedding.getBoolean("WeddingTeleport", true); + L2JMOD_WEDDING_TELEPORT_PRICE = Wedding.getInt("WeddingTeleportPrice", 50000); + L2JMOD_WEDDING_TELEPORT_DURATION = Wedding.getInt("WeddingTeleportDuration", 60); + L2JMOD_WEDDING_SAMESEX = Wedding.getBoolean("WeddingAllowSameSex", false); + L2JMOD_WEDDING_FORMALWEAR = Wedding.getBoolean("WeddingFormalWear", true); + L2JMOD_WEDDING_DIVORCE_COSTS = Wedding.getInt("WeddingDivorceCosts", 20); - L2JMOD_ANTIFEED_ENABLE = CustomSettings.getBoolean("AntiFeedEnable", false); - L2JMOD_ANTIFEED_DUALBOX = CustomSettings.getBoolean("AntiFeedDualbox", true); - L2JMOD_ANTIFEED_DISCONNECTED_AS_DUALBOX = CustomSettings.getBoolean("AntiFeedDisconnectedAsDualbox", true); - L2JMOD_ANTIFEED_INTERVAL = CustomSettings.getInt("AntiFeedInterval", 120) * 1000; - ANNOUNCE_PK_PVP = CustomSettings.getBoolean("AnnouncePkPvP", false); - ANNOUNCE_PK_PVP_NORMAL_MESSAGE = CustomSettings.getBoolean("AnnouncePkPvPNormalMessage", true); - ANNOUNCE_PK_MSG = CustomSettings.getString("AnnouncePkMsg", "$killer has slaughtered $target"); - ANNOUNCE_PVP_MSG = CustomSettings.getString("AnnouncePvpMsg", "$killer has defeated $target"); + // Load MultilingualSupport Properties file (if exists) + final PropertiesParser MultilingualSupport = new PropertiesParser(CUSTOM_MULTILANGUAL_SUPPORT_CONFIG_FILE); - L2JMOD_CHAT_ADMIN = CustomSettings.getBoolean("ChatAdmin", false); - - L2JMOD_MULTILANG_DEFAULT = CustomSettings.getString("MultiLangDefault", "en"); - L2JMOD_MULTILANG_ENABLE = CustomSettings.getBoolean("MultiLangEnable", false); - String[] allowed = CustomSettings.getString("MultiLangAllowed", L2JMOD_MULTILANG_DEFAULT).split(";"); + L2JMOD_MULTILANG_DEFAULT = MultilingualSupport.getString("MultiLangDefault", "en"); + L2JMOD_MULTILANG_ENABLE = MultilingualSupport.getBoolean("MultiLangEnable", false); + String[] allowed = MultilingualSupport.getString("MultiLangAllowed", L2JMOD_MULTILANG_DEFAULT).split(";"); L2JMOD_MULTILANG_ALLOWED = new ArrayList<>(allowed.length); for (String lang : allowed) { @@ -2552,13 +2817,12 @@ public final class Config if (!L2JMOD_MULTILANG_ALLOWED.contains(L2JMOD_MULTILANG_DEFAULT)) { - _log.warning("MultiLang[Config.load()]: default language: " + L2JMOD_MULTILANG_DEFAULT + " is not in allowed list !"); + LOGGER.warning("MultiLang[Config.load()]: default language: " + L2JMOD_MULTILANG_DEFAULT + " is not in allowed list !"); } - L2JMOD_HELLBOUND_STATUS = CustomSettings.getBoolean("HellboundStatus", false); - L2JMOD_MULTILANG_VOICED_ALLOW = CustomSettings.getBoolean("MultiLangVoiceCommand", true); - L2JMOD_MULTILANG_SM_ENABLE = CustomSettings.getBoolean("MultiLangSystemMessageEnable", false); - allowed = CustomSettings.getString("MultiLangSystemMessageAllowed", "").split(";"); + L2JMOD_MULTILANG_VOICED_ALLOW = MultilingualSupport.getBoolean("MultiLangVoiceCommand", true); + L2JMOD_MULTILANG_SM_ENABLE = MultilingualSupport.getBoolean("MultiLangSystemMessageEnable", false); + allowed = MultilingualSupport.getString("MultiLangSystemMessageAllowed", "").split(";"); L2JMOD_MULTILANG_SM_ALLOWED = new ArrayList<>(allowed.length); for (String lang : allowed) { @@ -2567,8 +2831,8 @@ public final class Config L2JMOD_MULTILANG_SM_ALLOWED.add(lang); } } - L2JMOD_MULTILANG_NS_ENABLE = CustomSettings.getBoolean("MultiLangNpcStringEnable", false); - allowed = CustomSettings.getString("MultiLangNpcStringAllowed", "").split(";"); + L2JMOD_MULTILANG_NS_ENABLE = MultilingualSupport.getBoolean("MultiLangNpcStringEnable", false); + allowed = MultilingualSupport.getString("MultiLangNpcStringAllowed", "").split(";"); L2JMOD_MULTILANG_NS_ALLOWED = new ArrayList<>(allowed.length); for (String lang : allowed) { @@ -2578,178 +2842,10 @@ public final class Config } } - L2WALKER_PROTECTION = CustomSettings.getBoolean("L2WalkerProtection", false); + // Load WalkerBotProtection Properties file (if exists) + final PropertiesParser WalkerBotProtection = new PropertiesParser(CUSTOM_WALKER_BOT_PROTECTION_CONFIG_FILE); - L2JMOD_DUALBOX_CHECK_MAX_PLAYERS_PER_IP = CustomSettings.getInt("DualboxCheckMaxPlayersPerIP", 0); - L2JMOD_DUALBOX_CHECK_MAX_OLYMPIAD_PARTICIPANTS_PER_IP = CustomSettings.getInt("DualboxCheckMaxOlympiadParticipantsPerIP", 0); - L2JMOD_DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP = CustomSettings.getInt("DualboxCheckMaxL2EventParticipantsPerIP", 0); - final String[] dualboxCheckWhiteList = CustomSettings.getString("DualboxCheckWhitelist", "127.0.0.1,0").split(";"); - L2JMOD_DUALBOX_CHECK_WHITELIST = new HashMap<>(dualboxCheckWhiteList.length); - for (String entry : dualboxCheckWhiteList) - { - final String[] entrySplit = entry.split(","); - if (entrySplit.length != 2) - { - _log.warning("DualboxCheck[Config.load()]: invalid config property -> DualboxCheckWhitelist \"" + entry + "\""); - } - else - { - try - { - int num = Integer.parseInt(entrySplit[1]); - num = num == 0 ? -1 : num; - L2JMOD_DUALBOX_CHECK_WHITELIST.put(InetAddress.getByName(entrySplit[0]).hashCode(), num); - } - catch (UnknownHostException e) - { - _log.warning("DualboxCheck[Config.load()]: invalid address -> DualboxCheckWhitelist \"" + entrySplit[0] + "\""); - } - catch (NumberFormatException e) - { - _log.warning("DualboxCheck[Config.load()]: invalid number -> DualboxCheckWhitelist \"" + entrySplit[1] + "\""); - } - } - } - L2JMOD_ALLOW_CHANGE_PASSWORD = CustomSettings.getBoolean("AllowChangePassword", false); - - CUSTOM_STARTING_LOC = CustomSettings.getBoolean("CustomStartingLocation", false); - CUSTOM_STARTING_LOC_X = CustomSettings.getInt("CustomStartingLocX", 83020); - CUSTOM_STARTING_LOC_Y = CustomSettings.getInt("CustomStartingLocY", 147880); - CUSTOM_STARTING_LOC_Z = CustomSettings.getInt("CustomStartingLocZ", -3469); - - SHOP_MIN_RANGE_FROM_PLAYER = CustomSettings.getInt("ShopMinRangeFromPlayer", 50); - SHOP_MIN_RANGE_FROM_NPC = CustomSettings.getInt("ShopMinRangeFromNpc", 100); - - ENABLE_RANDOM_MONSTER_SPAWNS = CustomSettings.getBoolean("EnableRandomMonsterSpawns", false); - MOB_MAX_SPAWN_RANGE = CustomSettings.getInt("MaxSpawnMobRange", 150); - MOB_MIN_SPAWN_RANGE = MOB_MAX_SPAWN_RANGE * -1; - if (ENABLE_RANDOM_MONSTER_SPAWNS) - { - final String[] mobsIds = CustomSettings.getString("MobsSpawnNotRandom", "18812,18813,18814,22138").split(","); - MOBS_LIST_NOT_RANDOM = new ArrayList<>(mobsIds.length); - for (String id : mobsIds) - { - MOBS_LIST_NOT_RANDOM.add(Integer.valueOf(id)); - } - } - - CUSTOM_CB_ENABLED = CustomSettings.getBoolean("CustomCommunityBoard", false); - COMMUNITYBOARD_CURRENCY = CustomSettings.getInt("CommunityCurrencyId", 57); - COMMUNITYBOARD_ENABLE_MULTISELLS = CustomSettings.getBoolean("CommunityEnableMultisells", true); - COMMUNITYBOARD_ENABLE_TELEPORTS = CustomSettings.getBoolean("CommunityEnableTeleports", true); - COMMUNITYBOARD_ENABLE_BUFFS = CustomSettings.getBoolean("CommunityEnableBuffs", true); - COMMUNITYBOARD_ENABLE_HEAL = CustomSettings.getBoolean("CommunityEnableHeal", true); - COMMUNITYBOARD_TELEPORT_PRICE = CustomSettings.getInt("CommunityTeleportPrice", 0); - COMMUNITYBOARD_BUFF_PRICE = CustomSettings.getInt("CommunityBuffPrice", 0); - COMMUNITYBOARD_HEAL_PRICE = CustomSettings.getInt("CommunityHealPrice", 0); - COMMUNITYBOARD_COMBAT_DISABLED = CustomSettings.getBoolean("CommunityCombatDisabled", true); - COMMUNITYBOARD_KARMA_DISABLED = CustomSettings.getBoolean("CommunityKarmaDisabled", true); - COMMUNITYBOARD_CAST_ANIMATIONS = CustomSettings.getBoolean("CommunityCastAnimations", false); - COMMUNITY_PREMIUM_SYSTEM_ENABLED = CustomSettings.getBoolean("CommunityPremiumSystem", false); - COMMUNITY_PREMIUM_COIN_ID = CustomSettings.getInt("CommunityPremiumBuyCoinId", 57); - COMMUNITY_PREMIUM_PRICE_PER_DAY = CustomSettings.getInt("CommunityPremiumPricePerDay", 1000000); - final String[] allowedBuffs = CustomSettings.getString("CommunityAvailableBuffs", "").split(","); - COMMUNITY_AVAILABLE_BUFFS = new ArrayList<>(allowedBuffs.length); - for (String s : allowedBuffs) - { - COMMUNITY_AVAILABLE_BUFFS.add(Integer.parseInt(s)); - } - final String[] availableTeleports = CustomSettings.getString("CommunityTeleportList", "").split(";"); - COMMUNITY_AVAILABLE_TELEPORTS = new HashMap<>(availableTeleports.length); - for (String s : availableTeleports) - { - final String splitInfo[] = s.split(","); - COMMUNITY_AVAILABLE_TELEPORTS.put(splitInfo[0], new Location(Integer.parseInt(splitInfo[1]), Integer.parseInt(splitInfo[2]), Integer.parseInt(splitInfo[3]))); - } - - PREMIUM_SYSTEM_ENABLED = CustomSettings.getBoolean("EnablePremiumSystem", false); - PREMIUM_RATE_XP = CustomSettings.getFloat("PremiumRateXp", 2); - PREMIUM_RATE_SP = CustomSettings.getFloat("PremiumRateSp", 2); - PREMIUM_RATE_DROP_CHANCE = CustomSettings.getFloat("PremiumRateDropChance", 2); - PREMIUM_RATE_DROP_AMOUNT = CustomSettings.getFloat("PremiumRateDropAmount", 1); - PREMIUM_RATE_SPOIL_CHANCE = CustomSettings.getFloat("PremiumRateSpoilChance", 2); - PREMIUM_RATE_SPOIL_AMOUNT = CustomSettings.getFloat("PremiumRateSpoilAmount", 1); - final String[] premiumDropChanceMultiplier = CustomSettings.getString("PremiumRateDropChanceByItemId", "").split(";"); - PREMIUM_RATE_DROP_CHANCE_BY_ID = new HashMap<>(premiumDropChanceMultiplier.length); - if (!premiumDropChanceMultiplier[0].isEmpty()) - { - for (String item : premiumDropChanceMultiplier) - { - final String[] itemSplit = item.split(","); - if (itemSplit.length != 2) - { - _log.warning("Config.load(): invalid config property -> PremiumRateDropChanceByItemId \"" + item + "\""); - } - else - { - try - { - PREMIUM_RATE_DROP_CHANCE_BY_ID.put(Integer.valueOf(itemSplit[0]), Float.valueOf(itemSplit[1])); - } - catch (NumberFormatException nfe) - { - if (!item.isEmpty()) - { - _log.warning("Config.load(): invalid config property -> PremiumRateDropChanceByItemId \"" + item + "\""); - } - } - } - } - } - final String[] premiumDropAmountMultiplier = CustomSettings.getString("PremiumRateDropAmountByItemId", "").split(";"); - PREMIUM_RATE_DROP_AMOUNT_BY_ID = new HashMap<>(premiumDropAmountMultiplier.length); - if (!premiumDropAmountMultiplier[0].isEmpty()) - { - for (String item : premiumDropAmountMultiplier) - { - final String[] itemSplit = item.split(","); - if (itemSplit.length != 2) - { - _log.warning("Config.load(): invalid config property -> PremiumRateDropAmountByItemId \"" + item + "\""); - } - else - { - try - { - PREMIUM_RATE_DROP_AMOUNT_BY_ID.put(Integer.valueOf(itemSplit[0]), Float.valueOf(itemSplit[1])); - } - catch (NumberFormatException nfe) - { - if (!item.isEmpty()) - { - _log.warning("Config.load(): invalid config property -> PremiumRateDropAmountByItemId \"" + item + "\""); - } - } - } - } - } - - ENABLE_FIND_PVP = CustomSettings.getBoolean("EnableFindPvP", false); - - AUTO_POTIONS_ENABLED = CustomSettings.getBoolean("AutoPotionsEnabled", false); - AUTO_POTIONS_IN_OLYMPIAD = CustomSettings.getBoolean("AutoPotionsInOlympiad", false); - AUTO_POTION_MIN_LVL = CustomSettings.getInt("AutoPotionMinimumLevel", 1); - AUTO_CP_ENABLED = CustomSettings.getBoolean("AutoCpEnabled", true); - AUTO_HP_ENABLED = CustomSettings.getBoolean("AutoHpEnabled", true); - AUTO_MP_ENABLED = CustomSettings.getBoolean("AutoMpEnabled", true); - AUTO_CP_PERCENTAGE = CustomSettings.getInt("AutoCpPercentage", 70); - AUTO_HP_PERCENTAGE = CustomSettings.getInt("AutoHpPercentage", 70); - AUTO_MP_PERCENTAGE = CustomSettings.getInt("AutoMpPercentage", 70); - AUTO_CP_ITEM_IDS = new ArrayList<>(); - for (String s : CustomSettings.getString("AutoCpItemIds", "0").split(",")) - { - AUTO_CP_ITEM_IDS.add(Integer.parseInt(s)); - } - AUTO_HP_ITEM_IDS = new ArrayList<>(); - for (String s : CustomSettings.getString("AutoHpItemIds", "0").split(",")) - { - AUTO_HP_ITEM_IDS.add(Integer.parseInt(s)); - } - AUTO_MP_ITEM_IDS = new ArrayList<>(); - for (String s : CustomSettings.getString("AutoMpItemIds", "0").split(",")) - { - AUTO_MP_ITEM_IDS.add(Integer.parseInt(s)); - } + L2WALKER_PROTECTION = WalkerBotProtection.getBoolean("L2WalkerProtection", false); // Load PvP L2Properties file (if exists) final PropertiesParser PVPSettings = new PropertiesParser(PVP_CONFIG_FILE); @@ -2852,17 +2948,17 @@ public final class Config } catch (Exception e) { - _log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one."); + LOGGER.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one."); } } else { - _log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one."); + LOGGER.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one."); } } else { - _log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one."); + LOGGER.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one."); } // Grand bosses @@ -2921,11 +3017,11 @@ public final class Config .filter(line -> (!line.isEmpty() && (line.charAt(0) != '#'))) .collect(Collectors.toList()); //@formatter:on - _log.info("Loaded " + FILTER_LIST.size() + " Filter Words."); + LOGGER.info("Loaded " + FILTER_LIST.size() + " Filter Words."); } catch (IOException ioe) { - _log.log(Level.WARNING, "Error while loading chat filter words!", ioe); + LOGGER.log(Level.WARNING, "Error while loading chat filter words!", ioe); } final PropertiesParser ClanHallSiege = new PropertiesParser(CH_SIEGE_CONFIG_FILE); @@ -2969,7 +3065,7 @@ public final class Config } catch (IOException e) { - _log.log(Level.WARNING, "Error setting datapack root!", e); + LOGGER.log(Level.WARNING, "Error setting datapack root!", e); DATAPACK_ROOT = new File("."); } @@ -3014,7 +3110,7 @@ public final class Config } else { - _log.severe("Could not Load Config: server mode was not set!"); + LOGGER.severe("Could not Load Config: server mode was not set!"); } } @@ -3049,14 +3145,14 @@ public final class Config hexSetting.setProperty("ServerID", String.valueOf(serverId)); hexSetting.setProperty("HexID", hexId); hexSetting.store(out, "The HexId to Auth into LoginServer"); - _log.log(Level.INFO, "Gameserver: Generated new HexID file for server id " + serverId + "."); + LOGGER.log(Level.INFO, "Gameserver: Generated new HexID file for server id " + serverId + "."); } } } catch (Exception e) { - _log.warning("Failed to save hex id to " + fileName + " File."); - _log.warning("Config: " + e.getMessage()); + LOGGER.warning("Failed to save hex id to " + fileName + " File."); + LOGGER.warning("Config: " + e.getMessage()); } } @@ -3270,7 +3366,7 @@ public final class Config valueSplit = value.split(","); if (valueSplit.length != 2) { - _log.warning("parseItemsList[Config.load()]: invalid entry -> \"" + valueSplit[0] + "\", should be itemId,itemNumber. Skipping to the next entry in the list."); + LOGGER.warning("parseItemsList[Config.load()]: invalid entry -> \"" + valueSplit[0] + "\", should be itemId,itemNumber. Skipping to the next entry in the list."); continue; } @@ -3281,7 +3377,7 @@ public final class Config } catch (NumberFormatException e) { - _log.warning("parseItemsList[Config.load()]: invalid itemId -> \"" + valueSplit[0] + "\", value must be an integer. Skipping to the next entry in the list."); + LOGGER.warning("parseItemsList[Config.load()]: invalid itemId -> \"" + valueSplit[0] + "\", value must be an integer. Skipping to the next entry in the list."); continue; } try @@ -3290,7 +3386,7 @@ public final class Config } catch (NumberFormatException e) { - _log.warning("parseItemsList[Config.load()]: invalid item number -> \"" + valueSplit[1] + "\", value must be an integer. Skipping to the next entry in the list."); + LOGGER.warning("parseItemsList[Config.load()]: invalid item number -> \"" + valueSplit[1] + "\", value must be an integer. Skipping to the next entry in the list."); continue; } result[i++] = tmp;