From c704d4687a813f3ae5ef49a17ef8d819304fc5e9 Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Wed, 31 Jul 2019 10:03:25 +0000
Subject: [PATCH] Configuration adjustments to match other branches.
---
.../custom/{CustomServer.ini => Other.ini} | 0
.../dist/game/config/main/Access.ini | 26 +-
.../dist/game/config/main/AltSettings.ini | 388 -----
.../dist/game/config/main/Character.ini | 301 ++++
.../dist/game/config/main/Developer.ini | 108 --
.../dist/game/config/main/General.ini | 621 ++++++++
.../dist/game/config/main/Options.ini | 195 ---
.../dist/game/config/main/Other.ini | 258 ---
.../config/main/{Boss.ini => RaidBoss.ini} | 53 +-
.../main/{GameServer.ini => Server.ini} | 68 +
.../dist/game/config/protected/Daemons.ini | 15 +-
.../java/org/l2jmobius/Config.java | 1384 ++++++++---------
.../commons/util/OlympiadLogger.java | 13 -
.../commons/util/object/L2ObjectHashMap.java | 22 -
.../commons/util/object/L2ObjectHashSet.java | 18 -
.../l2jmobius/gameserver/model/Inventory.java | 16 -
.../gameserver/model/ObjectPosition.java | 10 -
.../gameserver/model/WorldObject.java | 40 -
.../gameserver/model/WorldRegion.java | 10 -
.../model/actor/instance/ItemInstance.java | 30 -
.../network/clientpackets/EnterWorld.java | 7 -
.../clientpackets/ProtocolVersion.java | 6 +-
22 files changed, 1707 insertions(+), 1882 deletions(-)
rename L2J_Mobius_C6_Interlude/dist/game/config/custom/{CustomServer.ini => Other.ini} (100%)
delete mode 100644 L2J_Mobius_C6_Interlude/dist/game/config/main/AltSettings.ini
create mode 100644 L2J_Mobius_C6_Interlude/dist/game/config/main/Character.ini
delete mode 100644 L2J_Mobius_C6_Interlude/dist/game/config/main/Developer.ini
create mode 100644 L2J_Mobius_C6_Interlude/dist/game/config/main/General.ini
delete mode 100644 L2J_Mobius_C6_Interlude/dist/game/config/main/Options.ini
delete mode 100644 L2J_Mobius_C6_Interlude/dist/game/config/main/Other.ini
rename L2J_Mobius_C6_Interlude/dist/game/config/main/{Boss.ini => RaidBoss.ini} (78%)
rename L2J_Mobius_C6_Interlude/dist/game/config/main/{GameServer.ini => Server.ini} (61%)
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/custom/CustomServer.ini b/L2J_Mobius_C6_Interlude/dist/game/config/custom/Other.ini
similarity index 100%
rename from L2J_Mobius_C6_Interlude/dist/game/config/custom/CustomServer.ini
rename to L2J_Mobius_C6_Interlude/dist/game/config/custom/Other.ini
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/Access.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/Access.ini
index e93352dc32..9934d46e57 100644
--- a/L2J_Mobius_C6_Interlude/dist/game/config/main/Access.ini
+++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/Access.ini
@@ -1,10 +1,11 @@
-#============================================================#
-# Access Level #
-#============================================================#
+# ---------------------------------------------------------------------------
+# Access Level
+# ---------------------------------------------------------------------------
-# --------------------------------------
-# Section: Admin Rights
-# --------------------------------------
+
+# ---------------------------------------------------------------------------
+# Admin Rights
+# ---------------------------------------------------------------------------
# If next switch set to true every created character will have Admin access.
EverybodyHasAdminRights = False
@@ -19,9 +20,10 @@ MasterAccessLevel = 1
# Default = 0 - Max. 255
UserAccessLevel = 0
-# --------------------------------------
-# Section: GM Rights
-# --------------------------------------
+
+# ---------------------------------------------------------------------------
+# GM Rights
+# ---------------------------------------------------------------------------
# The way //admin panel looks can be "modern" or "classic"
# (default is modern while classic provides more compatibility)
GMAdminMenuStyle = modern
@@ -48,11 +50,15 @@ GMStartupBuilderHide = True
# Show message when GM Login and GM will not invis/silence as default
ShowGMLogin = False
-# Show the GM's name who made the announcement.
+# Show the GMs name who made the announcement.
# example: "Announce: hi [GMNAME]"
# only works when you use the command //announce
AnnounceGmName = False
+# Use GM name when sending critical announce.
+# Default: False
+CritAnnounceName = False
+
# Earthquake around a GM that logs in
GmLoginSpecialEffect = False
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/AltSettings.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/AltSettings.ini
deleted file mode 100644
index 56e5086300..0000000000
--- a/L2J_Mobius_C6_Interlude/dist/game/config/main/AltSettings.ini
+++ /dev/null
@@ -1,388 +0,0 @@
-#==============================================================#
-# AltSettings Properties #
-#==============================================================#
-
-# ------------------------
-# Server Config
-# ------------------------
-# AutoLoot enable. True to enable, False to disable
-AutoLoot = False
-
-# If False herbs will drop on ground even if AutoLoot is enabled
-AutoLootHerbs = False
-
-# Auto loot from Raid Boss's drop
-AutoLootBoss = False
-
-# AutoLearnSkills: True to enable, False to disable
-AutoLearnSkills = False
-
-# AutoLearn DivineInspiration: True to enable, False to disable
-AutoLearnDivineInspiration = False
-
-# When you made damage to a mob and are inside this range, you will be considered as player to reward.
-# Checks for party range to mob to calculate rewards(exp, items).
-# Default: 1500
-AltPartyRange = 1500
-
-# Weight Limit multiplier - default 1
-# If >1 - Weight Limit Double
-AltWeightLimit = 1
-
-# If XP loss (and deleveling) is enabled, default is 'true'
-Delevel = True
-
-# If disabled, magic dmg has always 100% chance of success, default is 'true'
-MagicFailures = True
-
-# Alternative cancel of attack (bow, cast, all)
-AltGameCancelByHit = cast
-
-# Alternative rules for shields - if they block, the damage is powerAtk-shieldDef,
-# otherwise it's powerAttack / (shieldDef + powerDef)
-AltShieldBlocks = False
-
-# Alternative Rate Value for Perfect Shield Block Rate.
-AltPerfectShieldBlockRate = 5
-
-# Alternative AltGameMobAttackAI, like C1
-AltGameMobAttackAI = False
-
-# Alternative mob behavior in peace zones
-# Default = True; Set to False to prevent mobs from auto-agro against players in peace zones
-AltMobAgroInPeaceZone = True
-
-# Alternative Freight mode. If true, freights can be withdrawed from any place.
-# Also, possibility to change Freight price (in adena) for each item slot in freight.
-# NOTE: AltGameFreightPrice WILL NOT change the value shown to the player, but the
-# player will actually get charged for the value set in here.
-AltGameFreights = True
-AltGameFreightPrice = 1000
-
-# Alternative Xp/Sp rewards, if not 0, then calculated as 2^((mob.level-player.level) / coef),
-# A few examples for "AltGameExponentXp = 5." and "AltGameExponentSp = 3."
-# diff = 0 (player and mob has the same level), XP bonus rate = 1, SP bonus rate = 1
-# diff = 3 (mob is 3 levels above), XP bonus rate = 1.52, SP bonus rate = 2
-# diff = 5 (mob is 5 levels above), XP bonus rate = 2, SP bonus rate = 3.17
-# diff = -8 (mob is 8 levels below), XP bonus rate = 0.4, SP bonus rate = 0.16
-AltGameExponentXp = 0
-AltGameExponentSp = 0
-
-# Use tiredness (instead of combat points)
-AltGameTiredness = False
-
-# Allow free teleportation around the world.
-AltFreeTeleporting = False
-
-# Set true for disallow recommend character twice or more a day
-AltRecommend = False
-
-# Alternative Max Recommendation Number
-AltMaxRecommendationNumber = 255
-
-# -----------------------
-# Class Master
-# -----------------------
-# Allow Change Class with ClassMaster
-AllowClassMasters = False
-# Allow Upgrade Strider with ClassMaster
-AllowClassMastersStriderUpdate = False
-
-# Allow to define which class is allowed to be assigned through class master
-AllowClassMastersFirstClass = True
-AllowClassMastersSecondClass = True
-AllowClassMastersThirdClass = True
-
-# Config for special Class Master npc that can change players occupation
-# If you need change occupation only use quest then set this to False (Default)
-# Syntax: occupation number;[required item id(count)],[],...;[reward item id(count)],[],...;occupation number...
-# Examples:
-#
-# ConfigClassMaster = 1;[57(100000)];[];2;[57(1000000)];[];3;[57(10000000)],[5575(1000000)];[6622(1)]
-# 1st occupation change for 100.000 Adena (item id 57)
-# 2nd occupation change for 1.000.0000 Adena (item id 57)
-# 3rd occupation change for 10.000.0000 Adena (item id 57) and 1.000.000 Ancient Adena (item id 5575)
-# On 3rd occupation change player will be rewarded with 1 Book of Giants (item id 6622)
-#
-# ConfigClassMaster = 1;[];[];2;[];[];3;[];[]
-# 1st, 2nd, 3rd occupation change for free, without rewards
-ConfigClassMaster = 1;[];[];2;[];[];3;[];[]
-
-# Class Manager Handled Remotely at Level 20/40/76
-AllowRemoteClassMasters = True
-
-# Life crystal needed to learn clan skills
-LifeCrystalNeeded = True
-
-# Spell Books needed to learn skills
-SpBookNeeded = True
-# Books needed to enchant skills
-EnchantSkillSpBookNeeded = True
-# Books needed to Divine Inspiration
-DivineInspirationSpBookNeeded = True
-
-# Alternative skill learn rules:
-# - all classes can learn all skills
-# - skills of another class costs x2 SP
-# - skills of another race costs x2 SP
-# - skills of fighters/mages costs x3 SP
-AltGameSkillLearn = False
-
-# Allow player sub-class addition without checking for unique quest items.
-AltSubClassWithoutQuests = False
-
-# Restore Buffs On Subclass Change.
-# IMPORTANT: It's better put it False to avoid exploit
-AltRestoreEffectOnSub = False
-
-# ----------------------
-# Buffs Config
-# ----------------------
-# Maximum number of buffs (default = 20 + 4 Divine Inspiration in C5)
-MaxBuffAmount = 20
-# Maximum number of debuffs
-MaxDebuffAmount = 6
-
-# -----------------------
-# Clans Config
-# -----------------------
-# Number of days you have to wait before :
-# - joining another clan
-DaysBeforeJoinAClan = 1
-# - creating a new clan
-DaysBeforeCreateAClan = 10
-# Number of days it takes to dissolve a clan
-DaysToPassToDissolveAClan = 7
-# Number of days before joining a new alliance when clan voluntarily leave an alliance
-DaysBeforeJoinAllyWhenLeaved = 1
-# Number of days before joining a new alliance when clan was dismissed from an alliance
-DaysBeforeJoinAllyWhenDismissed = 1
-# Number of days before accepting a new clan for alliance when clan was dismissed from an alliance
-DaysBeforeAcceptNewClanWhenDismissed = 1
-# Number of days before creating a new alliance when dissolved an alliance
-DaysBeforeCreateNewAllyWhenDissolved = 10
-
-# Maximum number of clans in ally
-AltMaxNumOfClansInAlly = 3
-
-# Number of members needed to request a clan war
-AltClanMembersForWar = 15
-
-# All new characters of the same account are newbies, not only first one
-AltNewCharAlwaysIsNewbie = True
-
-# Privilege browse warehouse enables at the same time also withdraw from warehouse!
-AltMembersCanWithdrawFromClanWH = False
-
-# Remove Castle circlets after a clan lose its castle or a player leaves a clan? - default true
-RemoveCastleCirclets = True
-
-# Reputation score gained per clan member listed as top raid killers.
-1stRaidRankingPoints = 1250
-2ndRaidRankingPoints = 900
-3rdRaidRankingPoints = 700
-4thRaidRankingPoints = 600
-5thRaidRankingPoints = 450
-6thRaidRankingPoints = 350
-7thRaidRankingPoints = 300
-8thRaidRankingPoints = 200
-9thRaidRankingPoints = 150
-10thRaidRankingPoints = 100
-UpTo50thRaidRankingPoints = 25
-UpTo100thRaidRankingPoints = 12
-
-# ------------------------
-# Manor Config
-# ------------------------
-# Manor Refresh Time in Military hours Default 8pm (20)
-AltManorRefreshTime = 20
-
-# Manor Refresh Time for Min's, Default 00 so at the start of the hour.
-AltManorRefreshMin = 00
-
-# Manor Next Period Approve Time in Military hours Default 6am
-AltManorApproveTime = 6
-
-# Manor Next Period Approve Time for Min's, Default 00 so at the start of the hour.
-AltManorApproveMin = 00
-
-# Manor Maintenance time, Default 6 minutes.
-AltManorMaintenancePeriod = 360000
-
-# Manor Save Type. 1-Save data into db after every action;
-# Default false
-AltManorSaveAllActions = True
-
-# Manor Save Period (used only if AltManorSaveAllActions = False) Default very 2 hours
-AltManorSavePeriodRate = 2
-
-# -------------------------
-# Lottery Config
-# -------------------------
-# Initial Lottery prize
-AltLotteryPrize = 50000
-
-# Lottery Ticket Price
-AltLotteryTicketPrice = 2000
-
-# What part of Jackpot amount should receive characters who pick 5 wining numbers
-AltLottery5NumberRate = 0.6
-
-# What part of Jackpot amount should receive characters who pick 4 wining numbers
-AltLottery4NumberRate = 0.2
-
-# What part of Jackpot amount should receive characters who pick 3 wining numbers
-AltLottery3NumberRate = 0.2
-
-# How much adena receive characters who pick two or less of the winning number
-AltLottery2and1NumberPrize = 200
-
-
-# -------------------------------------
-# Fishing Tournament
-# -------------------------------------
-# Enable or disable the Fishing Tournament system
-AltFishChampionshipEnabled = True
-
-# Item Id used as reward
-AltFishChampionshipRewardItemId = 57
-
-# Item count used as reward (for the 5 first winners)
-AltFishChampionshipReward1 = 800000
-AltFishChampionshipReward2 = 500000
-AltFishChampionshipReward3 = 300000
-AltFishChampionshipReward4 = 200000
-AltFishChampionshipReward5 = 100000
-
-
-# -------------------------------------
-# Dimension Rift Config
-# -------------------------------------
-# Minimal party size to enter rift. Min = 2, Max = 9.
-# If in rift party will become smaller all members will be teleported back
-RiftMinPartySize = 5
-
-# Number of maximum jumps between rooms allowed, after this time party will be teleported back
-MaxRiftJumps = 4
-
-# Time in ms the party has to wait until the mobs spawn when entering a room. C4 retail: 10s
-RiftSpawnDelay = 10000
-
-# Time between automatic jumps in seconds
-AutoJumpsDelayMin = 480
-AutoJumpsDelayMax = 600
-
-# Time Multiplier for stay in the boss room
-BossRoomTimeMultiply = 1.5
-
-# Cost in dimension fragments to enter the rift, each party member must own this amount
-RecruitCost = 18
-SoldierCost = 21
-OfficerCost = 24
-CaptainCost = 27
-CommanderCost = 30
-HeroCost = 33
-
-# On / off infinite nipples (SS/BSS)
-DontDestroySS = False
-
-# Maximum level players who can not be attacked
-MaxLevelNewbie = 20
-
-# When char lost newbie status > = value
-MaxLevelNewbieStatus = 40
-
-# NPC respawn time (default 180 seconds)
-StandardRespawnDelay = 180
-
-# Disable tutorial on new player enter into Game
-# Please remember its sometimes important to novice players
-# Default: False
-DisableTutorial = False
-
-# ExpertisePenalty, to disable grade penalty
-# False: Players can use equip S grade at level 1.
-# True: Players can't use equip S grade at level 1.
-ExpertisePenalty = True
-
-# MasteryPenalty, to disable Heavy expertise.
-# True: Players like dagger or archer can't use Heavy armor.
-MasteryPenalty = False
-# MasteryPenalty starting level.
-# Default from 20
-LevelToGetPenalty = 20
-
-# MasteryWeaponPenalty, to disable weapons expertise.
-# True: Players that have not weapon mastery cannot use that weapon type.
-MasteryWeaponPenality = False
-# MasteryWeaponPenality starting level.
-# Default from 20
-LevelToGetWeaponPenalty = 20
-
-#Augmentation Active skills start time: time in seconds that the
-#players need to wait until an active augment skill is available
-#once the augmented weapon is equipped. After the first time wait,
-#the players will be able to use the skill with correct reuse time
-#xml defined.
-AugmStartReuseTime = 0
-
-
-# ---------------------------------------------- #
-# Npc #
-# ---------------------------------------------- #
-# Npc Attackable
-# True: You can attack Npcs
-# False: Npc/Mobs don't take damages
-NpcAttackable = True
-
-# Npc List Invul eg. 51,90,...
-InvulNpcList = 93000
-
-# If True ActiveChar will not be able to Attack the Listed Npc Types.
-DisableAttackToNpcs = False
-
-# List of NPC's that allow casting skills on them
-# Any other type will not allow casting
-AllowedNPCTypes = GrandBoss,Chest,FestivalMonster,Minion,Monster,Pet,RaidBoss,SiegeGuard,SiegeNpc,ControlTower,Artefact,PenaltyMonster,FeedableBeast,SiegeFlag,RiftInvader,Guard,GuardNoHTML
-
-# Allows Players to Shift-click Mobs and view their Stats and Droplist
-AltGameViewNpc = False
-
-# Custom Private store SELL/BUY
-# For example you can use private store with Event Medal or Gold Bar
-# Default: False (Adena)
-SellByItem = False
-# Custom Item ID
-SellItem = 6392
-
-# Number of allowed Subclasses
-AllowedSubclass = 3
-
-# Starting level for subclasses.
-# Default: 40
-BaseSubclassLevel = 40
-
-# Maximum subclass level. 81 is liv 80 99%
-# Default: 81
-MaxSubclassLevel = 81
-
-# Monster stats (PAtk,Pdef,etc..) based just on Database Values
-# and without STR,WIT,CON,MEN,INT,DEX influences.
-# ATTENTION: enabling this option, monster instances could be simple to kill,
-# check your database to increase their stats..
-#
-# True: All Monster Instances haven't the Bonus of Stats. (Easy to kill)
-# False: All Monster Instances have the Bonus of Stats. (Hard to kill)
-# We got the correct value on database, so disable it.
-# Default: True
-AltMobsStatsBonus = True
-# Monster stats (PAtk,Pdef,etc..) based just on Database Values
-# and without STR,WIT,CON,MEN,INT,DEX influences.
-# ATTENTION: enabling this option, monster instances could be simple to kill,
-# check your database to increase their stats..
-#
-# True: All Monster Instances haven't the Bonus of Stats. (Easy to kill)
-# False: All Monster Instances have the Bonus of Stats. (Hard to kill)
-# We got the correct value on database, so disable it.
-# Default: True
-AltPetsStatsBonus = True
\ No newline at end of file
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/Character.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/Character.ini
new file mode 100644
index 0000000000..7b20d19f4d
--- /dev/null
+++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/Character.ini
@@ -0,0 +1,301 @@
+# ---------------------------------------------------------------------------
+# Character Settings
+# ---------------------------------------------------------------------------
+
+# AutoLoot enable. True to enable, False to disable
+AutoLoot = False
+
+# If False herbs will drop on ground even if AutoLoot is enabled
+AutoLootHerbs = False
+
+# Auto loot from Raid Boss's drop
+AutoLootBoss = False
+
+# AutoLearnSkills: True to enable, False to disable
+AutoLearnSkills = False
+
+# AutoLearn DivineInspiration: True to enable, False to disable
+AutoLearnDivineInspiration = False
+
+# Life crystal needed to learn clan skills
+LifeCrystalNeeded = True
+
+# Spell Books needed to learn skills
+SpBookNeeded = True
+# Books needed to enchant skills
+EnchantSkillSpBookNeeded = True
+# Books needed to Divine Inspiration
+DivineInspirationSpBookNeeded = True
+
+# Alternative skill learn rules:
+# - all classes can learn all skills
+# - skills of another class costs x2 SP
+# - skills of another race costs x2 SP
+# - skills of fighters/mages costs x3 SP
+AltGameSkillLearn = False
+
+# Number of allowed Subclasses
+AllowedSubclass = 3
+
+# Starting level for subclasses.
+# Default: 40
+BaseSubclassLevel = 40
+
+# Maximum subclass level. 81 is level 80 99%
+# Default: 81
+MaxSubclassLevel = 81
+
+# Allow player sub-class addition without checking for unique quest items.
+AltSubClassWithoutQuests = False
+
+# Restore Buffs On Subclass Change.
+# IMPORTANT: It's better put it False to avoid exploit
+AltRestoreEffectOnSub = False
+
+# When you made damage to a mob and are inside this range, you will be considered as player to reward.
+# Checks for party range to mob to calculate rewards(exp, items).
+# Default: 1500
+AltPartyRange = 1500
+
+# Weight Limit multiplier - default 1
+# If >1 - Weight Limit Double
+AltWeightLimit = 1
+
+# If XP loss (and deleveling) is enabled, default is 'true'
+Delevel = True
+
+# If disabled, magic dmg has always 100% chance of success, default is 'true'
+MagicFailures = True
+
+# Alternative cancel of attack (bow, cast, all)
+AltGameCancelByHit = cast
+
+# Alternative rules for shields - if they block, the damage is powerAtk-shieldDef,
+# otherwise it's powerAttack / (shieldDef + powerDef)
+AltShieldBlocks = False
+
+# Alternative Rate Value for Perfect Shield Block Rate.
+AltPerfectShieldBlockRate = 5
+
+# Alternative AltGameMobAttackAI, like C1
+AltGameMobAttackAI = False
+
+# Alternative mob behavior in peace zones
+# Default = True; Set to False to prevent mobs from auto-agro against players in peace zones
+AltMobAgroInPeaceZone = True
+
+# Alternative Freight mode. If true, freights can be withdrawed from any place.
+# Also, possibility to change Freight price (in adena) for each item slot in freight.
+# NOTE: AltGameFreightPrice WILL NOT change the value shown to the player, but the
+# player will actually get charged for the value set in here.
+AltGameFreights = True
+AltGameFreightPrice = 1000
+
+# Alternative Xp/Sp rewards, if not 0, then calculated as 2^((mob.level-player.level) / coef),
+# A few examples for "AltGameExponentXp = 5." and "AltGameExponentSp = 3."
+# diff = 0 (player and mob has the same level), XP bonus rate = 1, SP bonus rate = 1
+# diff = 3 (mob is 3 levels above), XP bonus rate = 1.52, SP bonus rate = 2
+# diff = 5 (mob is 5 levels above), XP bonus rate = 2, SP bonus rate = 3.17
+# diff = -8 (mob is 8 levels below), XP bonus rate = 0.4, SP bonus rate = 0.16
+AltGameExponentXp = 0
+AltGameExponentSp = 0
+
+# Use tiredness (instead of combat points)
+AltGameTiredness = False
+
+# Allow free teleportation around the world.
+AltFreeTeleporting = False
+
+# Set true for disallow recommend character twice or more a day
+AltRecommend = False
+
+# Alternative Max Recommendation Number
+AltMaxRecommendationNumber = 255
+
+# Maximum number of chars per account - Default 7 (0 = unlimited [7 is the client limit])
+CharMaxNumber = 7
+
+# Maximum level players who can not be attacked
+MaxLevelNewbie = 20
+
+# When char lost newbie status > = value
+MaxLevelNewbieStatus = 40
+
+# Disable tutorial on new player enter into Game
+# Please remember its sometimes important to novice players
+# Default: False
+DisableTutorial = False
+
+# Amount of adena/AA that a new character is given
+StartingAdena = 0
+StartingAncientAdena = 0
+
+# Enable this if you want the below configuration to work.
+# Default: False
+CustomStarterItemsEnabled = False
+# Starting itens for fighter's classes
+StartingCustomItemsFighter = 57,1000;
+# Starting itens for mage's classes
+StartingCustomItemsMage = 57,1000;
+
+# Inventory space limits
+# All race without dwarf
+MaximumSlotsForNoDwarf = 80
+# Dwarf race
+MaximumSlotsForDwarf = 100
+# GM char
+MaximumSlotsForGMPlayer = 250
+
+# Warehouse space limits (Must be < 300 for prevent client crash)
+# Dwarfs will get bonus from lvl 60
+MaximumWarehouseSlotsForDwarf = 120
+MaximumWarehouseSlotsForNoDwarf = 100
+MaximumWarehouseSlotsForClan = 200
+MaximumFreightSlots = 20
+
+# The maximum number of slots for the purchase / sale (for dwarves and other races)
+# By default, dwarf 5 slots, the other 4 races
+MaxPvtStoreSlotsDwarf = 5
+MaxPvtStoreSlotsOther = 4
+
+# % regeneration of normal regeneration speed
+HpRegenMultiplier = 100
+MpRegenMultiplier = 100
+CpRegenMultiplier = 100
+
+# Enable keyboard movement.
+# Retail: True
+KeyboardMovement = True
+
+# Unstuck interval, seconds, default is 300 sec.
+UnstuckInterval = 300
+
+# Player Protection on login in seconds, 0 for disabled
+PlayerSpawnProtection = 0
+
+# Player Protection after teleporting, 0 for disabled
+PlayerTeleportProtection = 0
+
+# Player Protection from (agro) mobs after getting up from fake death; in seconds, 0 for disabled
+PlayerFakeDeathUpProtection = 0
+
+# If True, the following deep blue mobs' drop penalties will be applied:
+# - When player's level is 9 times greater than mob's level, drops got divided by 3
+# - After 9 lvl's of difference between player and deep blue mobs, drop chance is
+# lowered by 9% each lvl that difference increases. (9lvls diff = -9%; 10lvls diff = -18%; ...)
+# NOTE1: These rules are applied to both normal and sweep drops
+# NOTE2: These rules ignores the server's rate when drop is of adena type (Complies with retail server)
+UseDeepBlueDropRules = True
+
+# PARTY XP DISTRIBUTION
+# The first option can be set to auto, percentage, level, none.
+# When is "auto" member of the party receives less Exp / SP, where its level is low
+# If the party received a bonus for him (30% for 2 members of the party)
+# In this case, he will not get Exp / SP of the party, and will not receive a bonus party
+# Not used quite too high values of the parameter "percentage"!
+# Not used quite too low values of the parameter "level"!
+# If you do not want to be the distribution of XP for the members of the Party
+# Just put "none". Default:, 3.0, 30
+PartyXpCutoffMethod = auto
+PartyXpCutoffPercent = 3.0
+PartyXpCutoffLevel = 30
+
+# Levels restore HP, MP, and CP after death
+# Values are specified in percentage
+RespawnRestoreCP = 70
+RespawnRestoreHP = 70
+RespawnRestoreMP = 70
+
+# Allow random regeneration in cities, indicating the maximum displacement
+# From the main origin.
+RespawnRandomInTown = True
+RespawnRandomMaxOffset = 20
+
+# Allow player to send petition?
+PetitioningAllowed = True
+# The number of petitions per session
+MaxPetitionsPerPlayer = 5
+# The number of petitions, which may consider GM
+MaxPetitionsPending = 25
+
+# Chance to get Death Penalty
+DeathPenaltyChance = 20
+
+# If True, when effects of the same stack group are used, lesser
+# effects will be canceled if stronger effects are used. New effects
+# that are added will be canceled if they are of lesser priority to the old one.
+# If False, they will not be canceled, and it will switch to them after the
+# stronger one runs out, if the lesser one is still in effect.
+CancelLesserEffect = True
+
+# Keep the effects buffs and debuff when you exit the game
+StoreSkillCooltime = True
+
+
+# ---------------------------------------------------------------------------
+# Buffs
+# ---------------------------------------------------------------------------
+# Maximum number of buffs (default = 20 + 4 Divine Inspiration in C5)
+MaxBuffAmount = 20
+# Maximum number of debuffs
+MaxDebuffAmount = 6
+
+
+# --------------------------------------
+# Alternative time buffs
+# --------------------------------------
+# When the reads, buff, and their duration.
+# Default: False
+EnableModifySkillDuration = False
+# Format: id_skill time; id_skill2, time2 ;....
+# Example:
+#SkillDurationList = 264,3660;265,3660;266,3660;267,3660;268,3660;\
+#269,3660;270,3660;304,3660;305,3660;306,3660;308,3660;349,3660;\
+#363,3660;364,3660;529,3660;271,3660;272,3660;273,3660;274,3660;\
+#275,3660;276,3660;277,3660;307,3660;309,3660;310,3660;311,3660;\
+#305,3660;366,3660;530,3660;365,3660;\
+#1086,3660;1240,3660;1242,3660;1243,3660;1388,3660;1389,3660;336,3660;\
+#1035,3660;1043,3660;1044,3660;1062,3660;1268,3660;1040,3660;1393,3660;\
+#1077,3660;1078,3660;1085,3660;1204,3660;1036,3660;1045,3660;1048,3660;\
+#1007,3660;1006,3660;1009,3660;1251,3660;1252,3660;1253,3660;1307,3660;\
+#1284,3660;1308,3660;1309,3660;1310,3660;1390,3660;1391,3660;1362,3660;\
+#1303,3660;1087,3660;1259,3660;1059,3660;1311,3660;1033,3660;1002,3660;\
+#1068,3660;1397,3660;1032,3660;1189,3660;1191,3660;1182,3660;1365,3660;\
+#1010,3660;1282,3660;1004,3660;1008,3660;1249,3660;1250,3660;1260,3660;\
+#1261,3660;1364,3660;1259,3660;1073,3660;1257,3660;1304,3660;1460,3660;\
+#1353,3660;1354,3660;1003,3660;1005,3660;\
+#1352,3660;1442,3660;1392,3660;\
+#1355,3660;1356,3660;1357,3660;1363,3660;1461,3660;1413,3660;1414,3660
+SkillDurationList =
+
+
+# ---------------------------------------------------------------------------
+# Class Master
+# ---------------------------------------------------------------------------
+# Allow Change Class with ClassMaster
+AllowClassMasters = False
+# Allow Upgrade Strider with ClassMaster
+AllowClassMastersStriderUpdate = False
+
+# Allow to define which class is allowed to be assigned through class master
+AllowClassMastersFirstClass = True
+AllowClassMastersSecondClass = True
+AllowClassMastersThirdClass = True
+
+# Config for special Class Master npc that can change players occupation
+# If you need change occupation only use quest then set this to False (Default)
+# Syntax: occupation number;[required item id(count)],[],...;[reward item id(count)],[],...;occupation number...
+# Examples:
+#
+# ConfigClassMaster = 1;[57(100000)];[];2;[57(1000000)];[];3;[57(10000000)],[5575(1000000)];[6622(1)]
+# 1st occupation change for 100.000 Adena (item id 57)
+# 2nd occupation change for 1.000.0000 Adena (item id 57)
+# 3rd occupation change for 10.000.0000 Adena (item id 57) and 1.000.000 Ancient Adena (item id 5575)
+# On 3rd occupation change player will be rewarded with 1 Book of Giants (item id 6622)
+#
+# ConfigClassMaster = 1;[];[];2;[];[];3;[];[]
+# 1st, 2nd, 3rd occupation change for free, without rewards
+ConfigClassMaster = 1;[];[];2;[];[];3;[];[]
+
+# Class Manager Handled Remotely at Level 20/40/76
+AllowRemoteClassMasters = True
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/Developer.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/Developer.ini
deleted file mode 100644
index 063fe010fd..0000000000
--- a/L2J_Mobius_C6_Interlude/dist/game/config/main/Developer.ini
+++ /dev/null
@@ -1,108 +0,0 @@
-#============================================================#
-# Dev Properties #
-#============================================================#
-
-# BETA SERVER: Use this config for better testing during your BETA
-# All players on login (also no GM char) will got Gm Speed 4 for better testing.
-BetaServer = False
-
-#---------------------------------------------
-# Debug & Developer Config
-#---------------------------------------------
-# Don't load quests
-AltDevNoQuests = False
-
-# Don't load spawntable
-AltDevNoSpawns = False
-
-# Don't load Script's
-AltDevNoScript = False
-
-# Don't load RaidBoss
-AltDevNoRB = False
-
-#-------------------------------------------
-# Additional server settings
-#-------------------------------------------
-Assert = False
-
-# if true the server will be a test server (listed by test server clients only)
-TestServer = False
-
-# Setting for serverList
-# Displays [] in front of server name
-ServerListBrackets = False
-
-# Displays a clock next to the server name
-ServerListClock = False
-
-# If true, the server will be set as GM only
-ServerGMOnly = False
-
-# Accept Geoeditor Conection (Default = False)
-AcceptGeoeditorConn = False
-# IP Geoeditor
-GeoEditorHost = 127.0.0.1
-# Port GeoEditor
-GeoEditorPort = 2109
-
-# Define character name template
-# Example to use only : CnameTemplate = [A-Z][a-z]{3,3}[A-Za-z0-9]*
-# will allow names with first capital letter, next three small letters,
-# and any (capital or not) letter or number, like ZbigN1eW
-# Most rational to have CnameTemplate = [A-Z][a-z]*
-# meaning names only of letters with first one capital, like Zbigniew
-# Default .* - any namy of any symbols
-CnameTemplate = .*
-PetNameTemplate = .*
-ClanNameTemplate = .*
-AllyNameTemplate = .*
-
-# Maximum number of chars per account - Default 7 (0 = unlimited [7 is the client limit])
-CharMaxNumber = 7
-
-# Minimum and maximum protocol revision that server allow to connect.
-# You must keep MinProtocolRevision <= MaxProtocolRevision.
-# Retail 740 - 746
-MinProtocolRevision = 740
-MaxProtocolRevision = 746
-
-#------------------------------
-# Logging features
-#------------------------------
-# Log GM actions
-GMAudit = True
-
-# Logging ChatWindow
-LogChat = False
-
-# Logging Item handling (Trades,Drops,Pickups,Actions)
-# NOTE: This can be very space consuming if enabled for all items.
-LogItems = False
-
-# ---------------------------------------------------------------------------
-# Thread Configuration
-# ---------------------------------------------------------------------------
-# Specifies how many threads will be in the scheduled pool.
-# Default: 40
-ScheduledThreadPoolCount = 40
-
-# Specifies how many threads will be in the single instant pool.
-# Default: 20
-InstantThreadPoolCount = 20
-
-# This is the server id that the gameserver will request (i.e. 1 is Bartz)
-RequestServerID = 1
-
-# If set to true, the login will give an other id to the server if the requested id is already reserved
-AcceptAlternateID = True
-
-# Define how many players are allowed to play simultaneously on your server.
-MaximumOnlineUsers = 2000
-
-# Set the html cache's lazy loading True or False
-# (Load html's into cache only on first time requested)
-LazyCache = True
-
-# Interval in ms to check for deadlocks, 0 to disable
-DeadLockCheck = 0
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/General.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/General.ini
new file mode 100644
index 0000000000..e1828d602f
--- /dev/null
+++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/General.ini
@@ -0,0 +1,621 @@
+# ---------------------------------------------------------------------------
+# General Server Settings
+# ---------------------------------------------------------------------------
+
+# ---------------------------------------------------------------------------
+# Debug
+# ---------------------------------------------------------------------------
+# Don't load quests
+AltDevNoQuests = False
+
+# Don't load spawntable
+AltDevNoSpawns = False
+
+# Don't load Script's
+AltDevNoScript = False
+
+# Don't load RaidBoss
+AltDevNoRB = False
+
+
+# ---------------------------------------------------------------------------
+# Logging
+# ---------------------------------------------------------------------------
+# Log GM actions
+GMAudit = True
+
+# Logging ChatWindow
+LogChat = False
+
+# Logging Item handling (Trades,Drops,Pickups,Actions)
+# NOTE: This can be very space consuming if enabled for all items.
+LogItems = False
+
+
+# ---------------------------------------------------------------------------
+# Server
+# ---------------------------------------------------------------------------
+
+# Set the html cache's lazy loading True or False
+# (Load html's into cache only on first time requested)
+LazyCache = True
+
+# If true the server will be a test server (listed by test server clients only)
+TestServer = False
+
+# If true, the server will be set as GM only
+ServerGMOnly = False
+
+# Accept Geoeditor Conection (Default = False)
+AcceptGeoeditorConn = False
+# IP Geoeditor
+GeoEditorHost = 127.0.0.1
+# Port GeoEditor
+GeoEditorPort = 2109
+
+
+# ---------------------------------------------------------------------------
+# Clans
+# ---------------------------------------------------------------------------
+# Number of days you have to wait before :
+# - joining another clan
+DaysBeforeJoinAClan = 1
+# - creating a new clan
+DaysBeforeCreateAClan = 10
+# Number of days it takes to dissolve a clan
+DaysToPassToDissolveAClan = 7
+# Number of days before joining a new alliance when clan voluntarily leave an alliance
+DaysBeforeJoinAllyWhenLeaved = 1
+# Number of days before joining a new alliance when clan was dismissed from an alliance
+DaysBeforeJoinAllyWhenDismissed = 1
+# Number of days before accepting a new clan for alliance when clan was dismissed from an alliance
+DaysBeforeAcceptNewClanWhenDismissed = 1
+# Number of days before creating a new alliance when dissolved an alliance
+DaysBeforeCreateNewAllyWhenDissolved = 10
+
+# Maximum number of clans in ally
+AltMaxNumOfClansInAlly = 3
+
+# Number of members needed to request a clan war
+AltClanMembersForWar = 15
+
+# All new characters of the same account are newbies, not only first one
+AltNewCharAlwaysIsNewbie = True
+
+# Privilege browse warehouse enables at the same time also withdraw from warehouse!
+AltMembersCanWithdrawFromClanWH = False
+
+# Remove Castle circlets after a clan lose its castle or a player leaves a clan? - default true
+RemoveCastleCirclets = True
+
+# Reputation score gained per clan member listed as top raid killers.
+1stRaidRankingPoints = 1250
+2ndRaidRankingPoints = 900
+3rdRaidRankingPoints = 700
+4thRaidRankingPoints = 600
+5thRaidRankingPoints = 450
+6thRaidRankingPoints = 350
+7thRaidRankingPoints = 300
+8thRaidRankingPoints = 200
+9thRaidRankingPoints = 150
+10thRaidRankingPoints = 100
+UpTo50thRaidRankingPoints = 25
+UpTo100thRaidRankingPoints = 12
+
+
+# ---------------------------------------------------------------------------
+# Manor
+# ---------------------------------------------------------------------------
+# Manor Refresh Time in Military hours Default 8pm (20)
+AltManorRefreshTime = 20
+
+# Manor Refresh Time for Min's, Default 00 so at the start of the hour.
+AltManorRefreshMin = 00
+
+# Manor Next Period Approve Time in Military hours Default 6am
+AltManorApproveTime = 6
+
+# Manor Next Period Approve Time for Min's, Default 00 so at the start of the hour.
+AltManorApproveMin = 00
+
+# Manor Maintenance time, Default 6 minutes.
+AltManorMaintenancePeriod = 360000
+
+# Manor Save Type. 1-Save data into db after every action;
+# Default false
+AltManorSaveAllActions = True
+
+# Manor Save Period (used only if AltManorSaveAllActions = False) Default very 2 hours
+AltManorSavePeriodRate = 2
+
+
+# ---------------------------------------------------------------------------
+# Lottery
+# ---------------------------------------------------------------------------
+# Initial Lottery prize
+AltLotteryPrize = 50000
+
+# Lottery Ticket Price
+AltLotteryTicketPrice = 2000
+
+# What part of Jackpot amount should receive characters who pick 5 wining numbers
+AltLottery5NumberRate = 0.6
+
+# What part of Jackpot amount should receive characters who pick 4 wining numbers
+AltLottery4NumberRate = 0.2
+
+# What part of Jackpot amount should receive characters who pick 3 wining numbers
+AltLottery3NumberRate = 0.2
+
+# How much adena receive characters who pick two or less of the winning number
+AltLottery2and1NumberPrize = 200
+
+
+# ---------------------------------------------------------------------------
+# Fishing Tournament
+# ---------------------------------------------------------------------------
+# Enable or disable the Fishing Tournament system
+AltFishChampionshipEnabled = True
+
+# Item Id used as reward
+AltFishChampionshipRewardItemId = 57
+
+# Item count used as reward (for the 5 first winners)
+AltFishChampionshipReward1 = 800000
+AltFishChampionshipReward2 = 500000
+AltFishChampionshipReward3 = 300000
+AltFishChampionshipReward4 = 200000
+AltFishChampionshipReward5 = 100000
+
+
+# ---------------------------------------------------------------------------
+# Dimension Rift
+# ---------------------------------------------------------------------------
+# Minimal party size to enter rift. Min = 2, Max = 9.
+# If in rift party will become smaller all members will be teleported back
+RiftMinPartySize = 5
+
+# Number of maximum jumps between rooms allowed, after this time party will be teleported back
+MaxRiftJumps = 4
+
+# Time in ms the party has to wait until the mobs spawn when entering a room. C4 retail: 10s
+RiftSpawnDelay = 10000
+
+# Time between automatic jumps in seconds
+AutoJumpsDelayMin = 480
+AutoJumpsDelayMax = 600
+
+# Time Multiplier for stay in the boss room
+BossRoomTimeMultiply = 1.5
+
+# Cost in dimension fragments to enter the rift, each party member must own this amount
+RecruitCost = 18
+SoldierCost = 21
+OfficerCost = 24
+CaptainCost = 27
+CommanderCost = 30
+HeroCost = 33
+
+# Infinite shots (SS/BSS)
+DontDestroySS = False
+
+# NPC respawn time (default 180 seconds)
+StandardRespawnDelay = 180
+
+# ExpertisePenalty, to disable grade penalty
+# False: Players can use equip S grade at level 1.
+# True: Players can't use equip S grade at level 1.
+ExpertisePenalty = True
+
+# MasteryPenalty, to disable Heavy expertise.
+# True: Players like dagger or archer can't use Heavy armor.
+MasteryPenalty = False
+# MasteryPenalty starting level.
+# Default from 20
+LevelToGetPenalty = 20
+
+# MasteryWeaponPenalty, to disable weapons expertise.
+# True: Players that have not weapon mastery cannot use that weapon type.
+MasteryWeaponPenality = False
+# MasteryWeaponPenality starting level.
+# Default from 20
+LevelToGetWeaponPenalty = 20
+
+#Augmentation Active skills start time: time in seconds that the
+#players need to wait until an active augment skill is available
+#once the augmented weapon is equipped. After the first time wait,
+#the players will be able to use the skill with correct reuse time
+#xml defined.
+AugmStartReuseTime = 0
+
+
+# ---------------------------------------------------------------------------
+# NPCs
+# ---------------------------------------------------------------------------
+# NPC attackable
+# True: You can attack NPCs
+# False: Npc/Mobs don't take damage
+NpcAttackable = True
+
+# NPC invulnerable list eg. 51,90,...
+InvulNpcList = 93000
+
+# If True ActiveChar will not be able to Attack the Listed Npc Types.
+DisableAttackToNpcs = False
+
+# List of NPC's that allow casting skills on them
+# Any other type will not allow casting
+AllowedNPCTypes = GrandBoss,Chest,FestivalMonster,Minion,Monster,Pet,RaidBoss,SiegeGuard,SiegeNpc,ControlTower,Artefact,PenaltyMonster,FeedableBeast,SiegeFlag,RiftInvader,Guard,GuardNoHTML
+
+# Allows Players to Shift-click Mobs and view their Stats and Droplist
+AltGameViewNpc = False
+
+# Custom Private store SELL/BUY
+# For example you can use private store with Event Medal or Gold Bar
+# Default: False (Adena)
+SellByItem = False
+# Custom Item ID
+SellItem = 6392
+
+# Monster stats (PAtk,Pdef,etc..) based just on Database Values
+# and without STR,WIT,CON,MEN,INT,DEX influences.
+# ATTENTION: enabling this option, monster instances could be simple to kill,
+# check your database to increase their stats..
+#
+# True: All Monster Instances haven't the Bonus of Stats. (Easy to kill)
+# False: All Monster Instances have the Bonus of Stats. (Hard to kill)
+# We got the correct value on database, so disable it.
+# Default: True
+AltMobsStatsBonus = True
+
+# Monster stats (PAtk,Pdef,etc..) based just on Database Values
+# and without STR,WIT,CON,MEN,INT,DEX influences.
+# ATTENTION: enabling this option, monster instances could be simple to kill,
+# check your database to increase their stats..
+#
+# True: All Monster Instances haven't the Bonus of Stats. (Easy to kill)
+# False: All Monster Instances have the Bonus of Stats. (Hard to kill)
+# We got the correct value on database, so disable it.
+# Default: True
+AltPetsStatsBonus = True
+
+# % regeneration and defence for RaidBoss and their minions
+RaidHpRegenMultiplier = 100
+RaidMpRegenMultiplier = 100
+RaidPhysicalDefenceMultiplier = 100
+RaidMagicalDefenceMultiplier = 100
+
+#Configure Minimum and Maximum multiplier time between RaidBoss respawn.
+#By Default 12Hours*1.0 for Minimum Time and 24Hours*1.0 for Maximum Time.
+RaidMinRespawnMultiplier = 1.0
+RaidMaxRespawnMultiplier = 1.0
+
+# Minions respawn timer 300000 = 5 mins
+RaidMinionRespawnTime = 300000
+
+# Click task delay when targeting an NPC.
+# Leave as default if you don't know what this is.
+# Default: 50
+ClickTaskDelay = 50
+
+
+# ---------------------------------------------------------------------------
+# Pets
+# ---------------------------------------------------------------------------
+# movement speed for strider and wyvern
+WyvernSpeed = 100
+StriderSpeed = 80
+
+#Allow the wyvern manager located in every castle to train wyverns and striders from hatchlings
+AllowWyvernUpgrader = True
+
+# Rent with pets (wyvern and Strider). Example: 111,222,333
+ListPetRentNpc = 30827
+
+
+# ---------------------------------------------------------------------------
+# Jail
+# ---------------------------------------------------------------------------
+# Set jail as PvP zone.
+JailIsPvp = False
+
+# Turn off all chats except basics.
+JailDisableChat = True
+
+
+# ---------------------------------------------------------------------------
+# Chat Filter System
+# ---------------------------------------------------------------------------
+# Enable chat filter default: false
+UseChatFilter = False
+
+# Replace illegal words with following chars
+ChatFilterChars = -_-
+
+# Punishment for bad words:
+# Options:
+# off - there is no punishment for the words
+# Karma - karma giving
+# Jail - jail
+# Chat - chat ban
+ChatFilterPunishment = off
+
+# How long penalty minutes
+ChatFilterPunishmentParam1 = 5
+
+# How to give karma for the bad word
+ChatFilterPunishmentParam2 = 1000
+
+
+# ---------------------------------------------------------------------------
+# Four Sepulchers
+# ---------------------------------------------------------------------------
+# The time allowed for the attack
+TimeOfAttack = 50
+
+# The time allowed for rest
+TimeOfCoolDown = 5
+
+# The time allowed to the input
+TimeOfEntry = 3
+
+# The time allowed for warm-up
+TimeOfWarmUp = 2
+
+# Minimum players in the party
+NumberOfNecessaryPartyMembers = 4
+
+
+# ---------------------------------------------------------------------------
+# Quake / Killing Spree System
+# ---------------------------------------------------------------------------
+# Enable The Killing Spree System
+# When a Player Hits an Amount of pvp's an announcement appears
+AllowQuakeSystem = False
+
+# Enable Messages to GMs on 4-5 consecutive pvp of a player
+# Why? to see if a char are farming!
+EnableAntiPvpFarmMsg = True
+
+
+# ---------------------------------------------------------------------------
+# Aio System
+# ---------------------------------------------------------------------------
+# Enable Aion System
+EnableAioSystem = True
+
+# Name Color
+AllowAioNameColor = True
+AioNameColor = 88AA88
+
+# Title Color
+AllowAioTitleColor = True
+AioTitleColor = 88AA88
+
+# List of Aio Skills
+# Format : skillid,skilllvl;skillid2,skilllvl2;....skillidn,skilllvln
+AioSkills = 1085,3;1304,3;1087,3;1354,1;1062,2;1005,3;1243,6;1045,6;1048,6;\
+1311,6;168,3;213,8;1007,3;1309,3;1552,3;1006,3;1229,15;1308,3;1253,3;1284,3;\
+1009,3;1310,4;1363,1;1362,1;1397,3;1292,6;1078,6;307,1;276,1;309,1;274,1;275,1;\
+272,1;277,1;273,1;311,1;366,1;365,1;310,1;271,1;1242,3;1257,3;1353,3;1391,3;\
+1352,1;229,7;228,3;1077,3;1218,33;1059,3;1219,33;1217,33;1388,3;1389,3;1240,3;\
+1086,2;1032,3;1073,2;1036,2;1035,4;1068,3;1003,3;1282,2;1356,1;1355,1;1357,33;\
+1044,3;1182,3;1191,3;1033,3;1189,3;1259,4;1306,6;234,23;1040,3;364,1;264,1;306,1;\
+269,1;270,1;265,1;363,1;349,1;308,1;305,1;304,1;267,1;266,1;268,1;1390,3;1303,2;\
+1204,2;1268,4;1413,1;4699,8;4700,8;4703,8
+
+# Aio Buffers can use GK?
+AllowAioUseGk = False
+
+# Aio Buffers can speak to Class Master?
+AllowAioUseClassMaster = False
+
+# Allow AIO in events?
+AllowAioInEvents = False
+
+
+# ---------------------------------------------------------------------------
+# Additional Settings
+# ---------------------------------------------------------------------------
+
+# Announce castle lords on enter game. default = False
+AnnounceCastleLords = False
+
+# Declare the location of Mammon NPCs to players during the ratification of the press.
+AnnounceMammonSpawn = False
+
+# If you wish to disable the use of guards against aggressive monsters.
+# Default is False.
+AllowGuards = False
+
+# Configure zones
+# 0 = World Peace
+# 1 = PVP sieges in
+# 2 = PVP everywhere
+ZoneTown = 0
+
+# Configure IM
+# Global Chat (ON (region), OFF, GM, GLOBAL)
+GlobalChat = ON
+# Global Trade chat (ON, OFF, GM, LIMITED (region))
+TradeChat = LIMITED
+
+# Who can write in the global chat if is it trade?
+# True = only players with the pvpamount, false = all
+TradeChatWithPvP = False
+TradePvPAmount = 100
+
+# Who can write in the global chat if is it global?
+# True = only players with the pvpamount, false = all
+GlobalChatWithPvP = False
+GlobalPvPAmount = 100
+
+# Who can write in the trade chat if is it global?
+# True = only nubless, false = all
+TradeChatIsNooble = False
+
+# Maximum number of characters for chat phrase
+MaxChatLength = 100
+
+# The penalty for illegal character of
+# 1 - Sending GM reporting the action
+# 2 - Throw a player (kick)
+# 3 - Throw and ban
+# 4 - Jail player
+DefaultPunish = 2
+# Minutes to stay in jail if punishment is jail
+DefaultPunishParam = 0
+
+# On / Off Warehouse
+AllowWarehouse = True
+
+# On / Off hashing Warehouse
+WarehouseCache = False
+
+# How much memory should occupy hash Warehouse
+WarehouseCacheTime = 15
+
+# On / Off use Freight Warehouse
+AllowFreight = True
+
+# If True player can try on weapon and armor in shop.
+# Default: True
+AllowWear = True
+
+# Default: 5
+WearDelay = 5
+
+#Adena cost to try on an item.
+# Default: 10
+WearPrice = 10
+
+
+# ---------------------------------------------------------------------------
+# Enable/Disable features
+# ---------------------------------------------------------------------------
+AllowLottery = True
+AllowRace = True
+AllowRentPet = False
+AllowFishing = True
+AllowBoat = True
+AllowCursedWeapons = True
+AllowManor = True
+AllowNpcWalkers = True
+
+
+# ---------------------------------------------------------------------------
+# Server Optimization
+# ---------------------------------------------------------------------------
+
+# Remove the character from account
+DeleteCharAfterDays = 7
+
+# Allow players to drop items on the ground.
+AllowDiscardItem = True
+
+# Delete dropped reward items from world after a specified amount of seconds. Disabled = 0.
+AutoDestroyDroppedItemAfter = 0
+
+# Time in secs after which dropped herb will be auto-destroyed
+AutoDestroyHerbTime = 15
+
+# List of item id that will not be destroyed (separated by "," like 57,5575,6673).
+# Notes:
+# Make sure the lists do NOT CONTAIN trailing spaces or spaces between the numbers!
+# Items on this list will be protected regardless of the following options.
+ListOfProtectedItems = 57,5575,6673
+
+# Just delete the stuff that fell out of players
+# WARNING: only works when AutoDestroyDroppedItemAfter> 0
+DestroyPlayerDroppedItem = False
+
+# Just to destroy such things as: armor, weapons, jewelry
+# WARNING: only works when DestroyPlayerDroppedItem = True
+DestroyEquipableItem = False
+
+# Keep discarded things in the database to be restored after restarting the server
+SaveDroppedItem = False
+
+# Clean up the table after loading things into memory - Safe Settings
+# If the server crashes before you save things at next start will be restored old things
+# And the players will be able to collect some of them - that will prevent duplicate
+EmptyDroppedItemTableAfterLoad = False
+
+# Time in minutes to save the discarded items in the database, 0 to disable
+# WARNING: If this option is disabled SaveDroppedItemInterval,
+# Things will remain in the database only when you restart the server
+SaveDroppedItemInterval = 60
+
+# Delete all saved items from the database at next start
+# WARNING: only works when SaveDroppedItem = False
+ClearDroppedItemTable = False
+
+# Remove broken quests player
+AutoDeleteInvalidQuestData = False
+
+# Set to false can improve the performance of servers with high concurrence
+PreciseDropCalculation = False
+
+# Allow create spliced things
+MultipleItemDrop = True
+
+# Sending information about all the things your character, and not only that with which the operation takes place.
+# WARNING: Incredible traffic loads.
+ForceInventoryUpdate = False
+
+# Sending information about all the stats your character, and not only that with which the operation takes place.
+# WARNING: Higher traffic loads.
+ForceCompletePlayerStatusUpdate = True
+
+# The maximum deviation from the point of Spawn mobs
+MaxDriftRange = 200
+
+# Minimum and maximum variables in seconds for NPC animation delay.
+# You must keep MinNpcAnimation lower or equal to MaxNpcAnimation.
+# Set values to 0 for disabling random animations.
+# Default: 5
+MinNpcAnimation = 5
+# Default: 60
+MaxNpcAnimation = 60
+# Default: 5
+MinMonsterAnimation = 5
+# Default: 60
+MaxMonsterAnimation = 60
+
+# Show the lvl and type of aggro mobs?
+ShowNpcLevel = False
+
+# Record the location of the characters in the file before the off / restarting the server?
+ActivatePositionRecorder = False
+
+# On/Off Hight rate Server.
+# Only Adena, LifeStones, SealStones, Boss Jewels Drop Option
+HighRateServerDrops = False
+
+
+# ---------------------------------------------------------------------------
+# Community board
+# ---------------------------------------------------------------------------
+# Activate or no the community board.
+EnableCommunityBoard = True
+
+# Show this community board section when you open it.
+BBSDefault = _bbshome
+
+
+# Options grid: Grid can be enabled or disabled. This also will affect
+# Loading and processing of all tasks of artificial intelligence and geodata to work in conjunction with the grid.
+# When playing in this place the character begins to work immediately grid and in addition
+# Start lining up for a specified number of seconds from 8 neighboring character grids.
+# After exiting the main square and adjacent characters within a few seconds is
+# Coordinates, if all this time in the area had no players.
+# Enabling this option allows grids to be always active.
+GridsAlwaysOn = False
+GridNeighborTurnOnTime = 30
+GridNeighborTurnOffTime = 300
+
+# Combining streams prioritized implementation
+# The default values -1,0,1 (group low / med / high)
+ExecutorPriLow = -1
+ExecutorPriMed = 0
+ExecutorPriHigh = 1
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/Options.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/Options.ini
deleted file mode 100644
index ca5498151a..0000000000
--- a/L2J_Mobius_C6_Interlude/dist/game/config/main/Options.ini
+++ /dev/null
@@ -1,195 +0,0 @@
-#=============================================================#
-# Option Settings #
-#=============================================================#
-
-# Configure zones
-# 0 = World Peace
-# 1 = PVP sieges in
-# 2 = PVP everywhere
-ZoneTown = 0
-
-# Configure IM
-# Global Chat (ON (region), OFF, GM, GLOBAL)
-GlobalChat = ON
-# Global Trade chat (ON, OFF, GM, LIMITED (region))
-TradeChat = LIMITED
-
-# Who can write in the global chat if is it trade?
-# True = only players with the pvpamount, false = all
-TradeChatWithPvP = False
-TradePvPAmount = 100
-
-# Who can write in the global chat if is it global?
-# True = only players with the pvpamount, false = all
-GlobalChatWithPvP = False
-GlobalPvPAmount = 100
-
-# Who can write in the trade chat if is it global?
-# True = only nubless, false = all
-TradeChatIsNooble = False
-
-# Maximum number of characters for chat phrase
-MaxChatLength = 100
-
-# The penalty for illegal character of
-# 1 - Sending GM reporting the action
-# 2 - Throw a player (kick)
-# 3 - Throw and ban
-# 4 - Jail player
-DefaultPunish = 2
-# Minutes to stay in jail if punishment is jail
-DefaultPunishParam = 0
-
-# -----------------------------------
-# Server Optimization
-# -----------------------------------
-
-# Remove the character from account
-DeleteCharAfterDays = 7
-
-# Allow players to drop items on the ground.
-AllowDiscardItem = True
-
-# Delete dropped reward items from world after a specified amount of seconds. Disabled = 0.
-AutoDestroyDroppedItemAfter = 0
-
-# Time in secs after which dropped herb will be auto-destroyed
-AutoDestroyHerbTime = 15
-
-# List of item id that will not be destroyed (separated by "," like 57,5575,6673).
-# Notes:
-# Make sure the lists do NOT CONTAIN trailing spaces or spaces between the numbers!
-# Items on this list will be protected regardless of the following options.
-ListOfProtectedItems = 57,5575,6673
-
-# Just delete the stuff that fell out of players
-# WARNING: only works when AutoDestroyDroppedItemAfter> 0
-DestroyPlayerDroppedItem = False
-
-# Just to destroy such things as: armor, weapons, jewelry
-# WARNING: only works when DestroyPlayerDroppedItem = True
-DestroyEquipableItem = False
-
-# Keep discarded things in the database to be restored after restarting the server
-SaveDroppedItem = False
-
-# Clean up the table after loading things into memory - Safe Settings
-# If the server crashes before you save things at next start will be restored old things
-# And the players will be able to collect some of them - that will prevent duplicate
-EmptyDroppedItemTableAfterLoad = False
-
-# Time in minutes to save the discarded items in the database, 0 to disable
-# WARNING: If this option is disabled SaveDroppedItemInterval,
-# Things will remain in the database only when you restart the server
-SaveDroppedItemInterval = 60
-
-# Delete all saved items from the database at next start
-# WARNING: only works when SaveDroppedItem = False
-ClearDroppedItemTable = False
-
-# Remove broken quests player
-AutoDeleteInvalidQuestData = False
-
-# Set to false can improve the performance of servers with high concurrence
-PreciseDropCalculation = False
-
-# Allow create spliced things
-MultipleItemDrop = True
-
-# Sending information about all the things your character, and not only that with which the operation takes place.
-# WARNING: Incredible traffic loads.
-ForceInventoryUpdate = False
-
-# Sending information about all the stats your character, and not only that with which the operation takes place.
-# WARNING: Higher traffic loads.
-ForceCompletePlayerStatusUpdate = True
-
-# The maximum deviation from the point of Spawn mobs
-MaxDriftRange = 200
-
-# Minimum and maximum variables in seconds for NPC animation delay.
-# You must keep MinNpcAnimation lower or equal to MaxNpcAnimation.
-# Set values to 0 for disabling random animations.
-# Default: 5
-MinNpcAnimation = 5
-# Default: 60
-MaxNpcAnimation = 60
-# Default: 5
-MinMonsterAnimation = 5
-# Default: 60
-MaxMonsterAnimation = 60
-
-# Show the lvl and type of aggro mobs?
-ShowNpcLevel = False
-
-# Record the location of the characters in the file before the off / restarting the server?
-ActivatePositionRecorder = False
-
-# On/Off Hight rate Server.
-# Only Adena, LifeStones, SealStones, Boss Jewels Drop Option
-HighRateServerDrops = False
-
-# ----------------------------------
-# Additional Settings
-# ----------------------------------
-# On / Off Warehouse
-AllowWarehouse = True
-
-# On / Off hashing Warehouse
-WarehouseCache = False
-
-# How much memory should occupy hash Warehouse
-WarehouseCacheTime = 15
-
-# On / Off use Freight Warehouse
-AllowFreight = True
-
-# If True player can try on weapon and armor in shop.
-# Default: True
-AllowWear = True
-# Default: 5
-WearDelay = 5
-#Adena cost to try on an item.
-# Default: 10
-WearPrice = 10
-
-
-# ======= Test configuration ======#
-# True Enabled / False Disabled #
-AllowLottery = True
-AllowRace = True
-AllowRentPet = False
-AllowFishing = True
-AllowBoat = True
-AllowCursedWeapons = True
-AllowManor = True
-AllowNpcWalkers = True
-# =============================
-
-
-# -------------------------------
-# Community board
-# -------------------------------
-# Activate or no the community board.
-EnableCommunityBoard = True
-
-# Show this community board section when you open it.
-BBSDefault = _bbshome
-
-
-# Options grid: Grid can be enabled or disabled. This also will affect
-# Loading and processing of all tasks of artificial intelligence and geodata to work in conjunction with the grid.
-# When playing in this place the character begins to work immediately grid and in addition
-# Start lining up for a specified number of seconds from 8 neighboring character grids.
-# After exiting the main square and adjacent characters within a few seconds is
-# Coordinates, if all this time in the area had no players.
-# Enabling this option allows grids to be always active.
-GridsAlwaysOn = False
-GridNeighborTurnOnTime = 30
-GridNeighborTurnOffTime = 300
-
-# Combining streams prioritized implementation
-# The default values -1,0,1 (group low / med / high)
-ExecutorPriLow = -1
-ExecutorPriMed = 0
-ExecutorPriHigh = 1
\ No newline at end of file
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/Other.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/Other.ini
deleted file mode 100644
index e687c6e41e..0000000000
--- a/L2J_Mobius_C6_Interlude/dist/game/config/main/Other.ini
+++ /dev/null
@@ -1,258 +0,0 @@
-#============================================================#
-# Other Settings #
-#============================================================#
-
-#Amount of adena/AA that a new character is given
-StartingAdena = 0
-StartingAncientAdena = 0
-
-# Enable this if you want the below configuration to work.
-# Default: False
-CustomStarterItemsEnabled = False
-# Starting itens for fighter's classes
-StartingCustomItemsFighter = 57,1000;
-# Starting itens for mage's classes
-StartingCustomItemsMage = 57,1000;
-
-# movement speed for strider and wyvern
-WyvernSpeed = 100
-StriderSpeed = 80
-
-#Allow the wyvern manager located in every castle to train wyverns and striders from hatchlings
-AllowWyvernUpgrader = True
-
-# If True, when effects of the same stack group are used, lesser
-# effects will be canceled if stronger effects are used. New effects
-# that are added will be canceled if they are of lesser priority to the old one.
-# If False, they will not be canceled, and it will switch to them after the
-# stronger one runs out, if the lesser one is still in effect.
-CancelLesserEffect = True
-
-# If you wish to disable the use of guards agains agressive monsters.
-# Default is False.
-AllowGuards = False
-
-# If True, the following deep blue mobs' drop penalties will be applied:
-# - When player's level is 9 times greater than mob's level, drops got divided by 3
-# - After 9 lvl's of difference between player and deep blue mobs, drop chance is
-# lowered by 9% each lvl that difference increases. (9lvls diff = -9%; 10lvls diff = -18%; ...)
-# NOTE1: These rules are applied to both normal and sweep drops
-# NOTE2: These rules ignores the server's rate when drop is of adena type (Complies with retail server)
-UseDeepBlueDropRules = True
-
-# Inventory space limits
-# All race without dwarf
-MaximumSlotsForNoDwarf = 80
-# Dwarf race
-MaximumSlotsForDwarf = 100
-# GM char
-MaximumSlotsForGMPlayer = 250
-
-# Warehouse space limits (Must be < 300 for prevent client crash)
-# Dwarfs will get bonus from lvl 60
-MaximumWarehouseSlotsForDwarf = 120
-MaximumWarehouseSlotsForNoDwarf = 100
-MaximumWarehouseSlotsForClan = 200
-MaximumFreightSlots = 20
-
-# % regeneration of normal regeneration speed
-HpRegenMultiplier = 100
-MpRegenMultiplier = 100
-CpRegenMultiplier = 100
-
-# % regeneration and defence for RaidBoss and their minions
-RaidHpRegenMultiplier = 100
-RaidMpRegenMultiplier = 100
-RaidPhysicalDefenceMultiplier = 100
-RaidMagicalDefenceMultiplier = 100
-
-#Configure Minimum and Maximum multiplier time between RaidBoss respawn.
-#By Default 12Hours*1.0 for Minimum Time and 24Hours*1.0 for Maximum Time.
-RaidMinRespawnMultiplier = 1.0
-RaidMaxRespawnMultiplier = 1.0
-
-# Minions respawn timer 300000 = 5 mins
-RaidMinionRespawnTime = 300000
-
-# Enable keyboard movement.
-# Retail: True
-KeyboardMovement = True
-
-# Unstuck interval, seconds, default is 300 sec.
-UnstuckInterval = 300
-
-# Player Protection on login in seconds, 0 for disabled
-PlayerSpawnProtection = 0
-
-# Player Protection after teleporting, 0 for disabled
-PlayerTeleportProtection = 0
-
-# Player Protection from (agro) mobs after getting up from fake death; in seconds, 0 for disabled
-PlayerFakeDeathUpProtection = 0
-
-# PARTY XP DISTRIBUTION
-# The first option can be set to auto, percentage, level, none.
-# When is "auto" member of the party receives less Exp / SP, where its level is low
-# If the party received a bonus for him (30% for 2 members of the party)
-# In this case, he will not get Exp / SP of the party, and will not receive a bonus party
-# Not used quite too high values of the parameter "percentage"!
-# Not used quite too low values of the parameter "level"!
-# If you do not want to be the distribution of XP for the members of the Party
-# Just put "none". Default:, 3.0, 30
-PartyXpCutoffMethod = auto
-PartyXpCutoffPercent = 3.0
-PartyXpCutoffLevel = 30
-
-# Levels restore HP, MP, and CP after death
-# Values are specified in percentage
-RespawnRestoreCP = 70
-RespawnRestoreHP = 70
-RespawnRestoreMP = 70
-
-# Allow random regeneration in cities, indicating the maximum displacement
-# From the main origin.
-RespawnRandomInTown = True
-RespawnRandomMaxOffset = 20
-
-# The maximum number of slots for the purchase / sale (for dwarves and other races)
-# By default, dwarf 5 slots, the other 4 races
-MaxPvtStoreSlotsDwarf = 5
-MaxPvtStoreSlotsOther = 4
-
-# Keep the effects buffs and debuff when you exit the game
-StoreSkillCooltime = True
-
-# Rent with pets (wyvern and Strider). Example: 111,222,333
-ListPetRentNpc = 30827
-
-# Declare the location of Mammon NPCs to players during the ratification of the press.
-AnnounceMammonSpawn = False
-
-# Allow player to send petition?
-PetitioningAllowed = True
-# The number of petitions per session
-MaxPetitionsPerPlayer = 5
-# The number of petitions, which may consider GM
-MaxPetitionsPending = 25
-
-# ------------------------------
-# Configure prison
-# ------------------------------
-# PvP zone?
-JailIsPvp = False
-# Turn off all chats except basics?
-JailDisableChat = True
-
-# Chance to get Death Penalty
-DeathPenaltyChance = 20
-
-# --------------------------------------
-# Alternative time buffs
-# --------------------------------------
-# When the reads, buff, and their duration.
-# Default: False
-EnableModifySkillDuration = False
-# Format: id_skill time; id_skill2, time2 ;....
-# Example:
-#SkillDurationList = 264,3660;265,3660;266,3660;267,3660;268,3660;\
-#269,3660;270,3660;304,3660;305,3660;306,3660;308,3660;349,3660;\
-#363,3660;364,3660;529,3660;271,3660;272,3660;273,3660;274,3660;\
-#275,3660;276,3660;277,3660;307,3660;309,3660;310,3660;311,3660;\
-#305,3660;366,3660;530,3660;365,3660;\
-#1086,3660;1240,3660;1242,3660;1243,3660;1388,3660;1389,3660;336,3660;\
-#1035,3660;1043,3660;1044,3660;1062,3660;1268,3660;1040,3660;1393,3660;\
-#1077,3660;1078,3660;1085,3660;1204,3660;1036,3660;1045,3660;1048,3660;\
-#1007,3660;1006,3660;1009,3660;1251,3660;1252,3660;1253,3660;1307,3660;\
-#1284,3660;1308,3660;1309,3660;1310,3660;1390,3660;1391,3660;1362,3660;\
-#1303,3660;1087,3660;1259,3660;1059,3660;1311,3660;1033,3660;1002,3660;\
-#1068,3660;1397,3660;1032,3660;1189,3660;1191,3660;1182,3660;1365,3660;\
-#1010,3660;1282,3660;1004,3660;1008,3660;1249,3660;1250,3660;1260,3660;\
-#1261,3660;1364,3660;1259,3660;1073,3660;1257,3660;1304,3660;1460,3660;\
-#1353,3660;1354,3660;1003,3660;1005,3660;\
-#1352,3660;1442,3660;1392,3660;\
-#1355,3660;1356,3660;1357,3660;1363,3660;1461,3660;1413,3660;1414,3660
-SkillDurationList =
-
-# --------------------------------
-# Chat Filter System
-# --------------------------------
-# Enable chat filter default: false
-UseChatFilter = False
-# Replace illegal words with following chars
-ChatFilterChars = -_-
-# Punishment for bad words:
-# Options:
-# off - there is no punishment for the words
-# Karma - karma giving
-# Jail - jail
-# Chat - chat ban
-ChatFilterPunishment = off
-# How long penalty minutes
-ChatFilterPunishmentParam1 = 5
-# How to give karma for the bad word
-ChatFilterPunishmentParam2 = 1000
-
-# -----------------------------
-# Four Sepulchers
-# -----------------------------
-# The time allowed for the attack
-TimeOfAttack = 50
-# The time allowed for rest
-TimeOfCoolDown = 5
-# The time allowed to the input
-TimeOfEntry = 3
-# The time allowed for warm-up
-TimeOfWarmUp = 2
-# Minimum players in the party
-NumberOfNecessaryPartyMembers = 4
-
-# --------------------------------------------------
-# Quake / Killing Spree System
-# --------------------------------------------------
-# Enable The Killing Spree System
-# When a Player Hits an Amount of pvp's an announcement appears
-AllowQuakeSystem = False
-
-# Enable Messages to GMs on 4-5 consecutive pvp of a player
-# Why? to see if a char are farming!
-EnableAntiPvpFarmMsg = True
-
-# -----------------------------------------
-# Aio System
-# -----------------------------------------
-# Enable / Disable Aion System
-EnableAioSystem = True
-# Enable / Disable Name Color
-AllowAioNameColor = True
-AioNameColor = 88AA88
-# Enable / Disable Title Color
-AllowAioTitleColor = True
-AioTitleColor = 88AA88
-# List of Aio Skills
-# Format : skillid,skilllvl;skillid2,skilllvl2;....skillidn,skilllvln
-AioSkills = 1085,3;1304,3;1087,3;1354,1;1062,2;1005,3;1243,6;1045,6;1048,6;\
-1311,6;168,3;213,8;1007,3;1309,3;1552,3;1006,3;1229,15;1308,3;1253,3;1284,3;\
-1009,3;1310,4;1363,1;1362,1;1397,3;1292,6;1078,6;307,1;276,1;309,1;274,1;275,1;\
-272,1;277,1;273,1;311,1;366,1;365,1;310,1;271,1;1242,3;1257,3;1353,3;1391,3;\
-1352,1;229,7;228,3;1077,3;1218,33;1059,3;1219,33;1217,33;1388,3;1389,3;1240,3;\
-1086,2;1032,3;1073,2;1036,2;1035,4;1068,3;1003,3;1282,2;1356,1;1355,1;1357,33;\
-1044,3;1182,3;1191,3;1033,3;1189,3;1259,4;1306,6;234,23;1040,3;364,1;264,1;306,1;\
-269,1;270,1;265,1;363,1;349,1;308,1;305,1;304,1;267,1;266,1;268,1;1390,3;1303,2;\
-1204,2;1268,4;1413,1;4699,8;4700,8;4703,8
-# Aio Buffers can use GK?
-AllowAioUseGk = False
-# Aio Buffers can speak to Class Master?
-AllowAioUseClassMaster = False
-# Allow AIO in events?
-AllowAioInEvents = False
-
-# Announce castle lords on enter game. default = False
-AnnounceCastleLords = False
-
-# Click task when target an Npc
-# Leave as default if you don't know what you are changing
-# Default: 50
-ClickTask = 50
-
-# Crit announce
-GMShowCritAnnouncerName = False
\ No newline at end of file
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/Boss.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/RaidBoss.ini
similarity index 78%
rename from L2J_Mobius_C6_Interlude/dist/game/config/main/Boss.ini
rename to L2J_Mobius_C6_Interlude/dist/game/config/main/RaidBoss.ini
index 2055982956..ff8f535bab 100644
--- a/L2J_Mobius_C6_Interlude/dist/game/config/main/Boss.ini
+++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/RaidBoss.ini
@@ -1,6 +1,6 @@
-#=========================================#
-# Boss Configuration #
-#=========================================#
+# ---------------------------------------------------------------------------
+# Raidboss Settings
+# ---------------------------------------------------------------------------
# If True: Player can heal RB
# If False: Player can't heal RB
@@ -42,9 +42,10 @@ AllowDirectTeleportToBossRoom = False
# Raid Info IDs showed
RaidInfoIDs = 29001,29006,29014,29019,29020,29022,29028,29045
-# -----------------
+
+# ---------------------------------------------------------------------------
# Antharas
-# -----------------
+# ---------------------------------------------------------------------------
# If true, the Interlude Script is used, meanwhile if you want new
# script feature (different Antharas Instances since weak to strong
# Antharas as for Freya) just set false
@@ -66,9 +67,10 @@ AntharasWaitTime = 30
# Default 1.0 = retail
AntharasPowerMultiplier = 1.0
-# --------------
+
+# ---------------------------------------------------------------------------
# Baium
-# --------------
+# ---------------------------------------------------------------------------
# Time left Baium into hibernation after the last attack on him.
# The value in seconds.
BaiumSleep = 1800
@@ -81,9 +83,10 @@ BaiumRespSecond = 16
# Default 1.0 = retail
BaiumPowerMultiplier = 1.0
-# -----------
+
+# ---------------------------------------------------------------------------
# Core
-# -----------
+# ---------------------------------------------------------------------------
# Time minion respawn after their murder.
# The value in seconds.
CoreRespMinion = 60
@@ -99,9 +102,10 @@ CoreRingChance = 0
# Default 1.0 = retail
CorePowerMultiplier = 1.0
-# -----------
+
+# ---------------------------------------------------------------------------
# Zaken
-# -----------
+# ---------------------------------------------------------------------------
# Time respawn core after the murder. Total time respawn shield as follows:
# The first value + value in the range from 0 up to the second value.
# Value in hours.
@@ -114,9 +118,10 @@ ZakenEarringChance = 0
# Default 1.0 = retail
ZakenPowerMultiplier = 1.0
-# -----------
+
+# ---------------------------------------------------------------------------
# Orfen
-# -----------
+# ---------------------------------------------------------------------------
# Time respawn core after the murder. Total time respawn shield as follows:
# The first value + value in the range from 0 up to the second value.
# Value in hours.
@@ -129,9 +134,10 @@ OrfenEarringChance = 0
# Default 1.0 = retail
OrfenPowerMultiplier = 1.0
-# -----------
+
+# ---------------------------------------------------------------------------
# Valakas
-# -----------
+# ---------------------------------------------------------------------------
# Time respawn valakas after the murder. Total time respawn shield as follows:
# The first value + value in the range from 0 up to the second value.
# Value in hours.
@@ -144,9 +150,10 @@ ValakasWaitTime = 30
ValakasDespawnTime = 240
ValakasPowerMultiplier = 1.0
-# --------------------
+
+# ---------------------------------------------------------------------------
# Queen Ant
-# -------------------
+# ---------------------------------------------------------------------------
# Time minion respawn after their murder.
# The value in seconds.
# Nurses
@@ -165,9 +172,10 @@ QARingChance = 0
# Default 1.0 = retail
QueenAntPowerMultiplier = 1.0
-# --------------------
-# Frintezza -
-# -------------------
+
+# ---------------------------------------------------------------------------
+# Frintezza
+# ---------------------------------------------------------------------------
# Frintezza respawn time after the murder. Total time respawn shield as follows:
# The first value + value in the range from 0 up to the second value.
# Value in hours.
@@ -188,9 +196,10 @@ BypassPartiesCheck = False
# in this mode: power = retail_power * ((level_diff/10)*LevelDiffMultiplier)
LevelDiffMultiplierMinion = 0.5
-# --------------------------------------
+
+# ---------------------------------------------------------------------------
# High Priest van Halter
-# --------------------------------------
+# ---------------------------------------------------------------------------
# Time for the High Priest van Halter.
# Value in seconds. Interval 300-864000
# The time taken from random FixIntervalOfVanHalter before FixIntervalOfVanHalter + RandomIntervalOfVanHalter.
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/GameServer.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/Server.ini
similarity index 61%
rename from L2J_Mobius_C6_Interlude/dist/game/config/main/GameServer.ini
rename to L2J_Mobius_C6_Interlude/dist/game/config/main/Server.ini
index b2b75a048b..7e69e7e4ae 100644
--- a/L2J_Mobius_C6_Interlude/dist/game/config/main/GameServer.ini
+++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/Server.ini
@@ -81,6 +81,15 @@ BackupDays = 30
# Misc Server Settings
# ---------------------------------------------------------------------------
+# This is the server ID that the Game Server will request.
+# Example: 1 = Bartz
+# Default: 1
+RequestServerID = 1
+
+# True = The Login Server will give an other ID to the server if the requested ID is already reserved.
+# Default: True
+AcceptAlternateID = True
+
# Datapack root directory.
# Defaults to current directory from which the server is started unless the below line is uncommented.
# WARNING: If the specified path is invalid, it will lead to multiple errors!
@@ -89,3 +98,62 @@ DatapackRoot = .
# Scripts root directory.
ScriptRoot = ./data/scripts
+
+# Define how many players are allowed to play simultaneously on your server.
+# Default: 2000
+MaximumOnlineUsers = 2000
+
+# Minimum and maximum protocol revision that server allow to connect.
+# You must keep MinProtocolRevision <= MaxProtocolRevision.
+# Retail 740 - 746
+MinProtocolRevision = 740
+MaxProtocolRevision = 746
+
+# Setting for serverList.
+# Displays [] in front of server name.
+# Default: False
+ServerListBrackets = False
+
+# Displays a clock next to the server name.
+# Default: False
+ServerListClock = False
+
+
+# ---------------------------------------------------------------------------
+# Thread Configuration
+# ---------------------------------------------------------------------------
+
+# Specifies how many threads will be in the scheduled pool.
+# Default: 40
+ScheduledThreadPoolCount = 40
+
+# Specifies how many threads will be in the single instant pool.
+# Default: 20
+InstantThreadPoolCount = 20
+
+
+# ---------------------------------------------------------------------------
+# Misc Player Settings
+# ---------------------------------------------------------------------------
+
+# Character name template.
+# Examples:
+# CnameTemplate = [A-Z][a-z]{3,3}[A-Za-z0-9]*
+# The above setting will allow names with first capital letter, next three small letters,
+# and any letter (case insensitive) or number, like OmfgWTF1
+# CnameTemplate = [A-Z][a-z]*
+# The above setting will allow names only of letters with first one capital, like Omfgwtf
+# Default .* (allows any symbol)
+CnameTemplate = .*
+
+# This setting restricts names players can give to their pets.
+# See CnameTemplate for details
+PetNameTemplate = .*
+
+# This setting restricts clan/subpledge names players can set.
+# See CnameTemplate for details
+ClanNameTemplate = .*
+
+# This setting restricts ally names players can set.
+# See CnameTemplate for details
+AllyNameTemplate = .*
diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/protected/Daemons.ini b/L2J_Mobius_C6_Interlude/dist/game/config/protected/Daemons.ini
index d8692709fa..b70c661bdd 100644
--- a/L2J_Mobius_C6_Interlude/dist/game/config/protected/Daemons.ini
+++ b/L2J_Mobius_C6_Interlude/dist/game/config/protected/Daemons.ini
@@ -1,3 +1,6 @@
+# ---------------------------------------------------------------------------
+# Daemons settings
+# ---------------------------------------------------------------------------
# Preamble:
# Standard set up is possible only two parameters of demons:
# - Pereodichnost run in milliseconds
@@ -29,8 +32,12 @@ CheckTeleportZombiesDelay = 60000
CleanDBInitial = 300000
CleanDBDelay = 900000
-# DEAD LOCK CHECK DAEMON:
-# Allows to block the flow and see what they blocked
-# More details: http://en.wikipedia.org/wiki/Deadlock
+
+# ---------------------------------------------------------------------------
+# Dead Lock Detector (separate thread for detecting deadlocks)
+# ---------------------------------------------------------------------------
+# For improved crash logs and automatic restart in deadlock case if enabled.
+# Check interval is in seconds.
+# Default: 0 (disabled)
DeadLockCheck = 0
-DeadLockDelay = 0
\ No newline at end of file
+DeadLockDelay = 0
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java
index 8348c98fad..54574e4e8f 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java
@@ -56,23 +56,21 @@ public final class Config
private static final String HEXID_FILE = "./config/hexid.txt";
// main
private static final String ACCESS_CONFIG_FILE = "./config/main/Access.ini";
- private static final String ALT_SETTINGS_CONFIG_FILE = "./config/main/AltSettings.ini";
- private static final String BOSS_CONFIG_FILE = "./config/main/Boss.ini";
+ private static final String CHARACTER_CONFIG_FILE = "./config/main/Character.ini";
private static final String CLANHALL_CONFIG_FILE = "./config/main/Clanhall.ini";
public static final String CLASS_DAMAGE_CONFIG_FILE = "./config/main/ClassDamage.ini";
private static final String CRAFTING_CONFIG_FILE = "./config/main/Crafting.ini";
- private static final String DEVELOPER_CONFIG_FILE = "./config/main/Developer.ini";
private static final String ELIT_CLANHALL_CONFIG_FILE = "./config/main/EliteClanhall.ini";
private static final String ENCHANT_CONFIG_FILE = "./config/main/Enchant.ini";
public static final String FORTSIEGE_CONFIG_FILE = "./config/main/Fort.ini";
- private static final String SERVER_CONFIG_FILE = "./config/main/GameServer.ini";
+ private static final String GENERAL_CONFIG_FILE = "./config/main/General.ini";
private static final String GEODATA_CONFIG_FILE = "./config/main/GeoEngine.ini";
private static final String OLYMP_CONFIG_FILE = "./config/main/Olympiad.ini";
- private static final String OPTIONS_CONFIG_FILE = "./config/main/Options.ini";
- private static final String OTHER_CONFIG_FILE = "./config/main/Other.ini";
private static final String PHYSICS_CONFIG_FILE = "./config/main/Physics.ini";
private static final String PVP_CONFIG_FILE = "./config/main/PvP.ini";
+ private static final String RAIDBOSS_CONFIG_FILE = "./config/main/RaidBoss.ini";
private static final String RATES_CONFIG_FILE = "./config/main/Rates.ini";
+ private static final String SERVER_CONFIG_FILE = "./config/main/Server.ini";
private static final String SEVENSIGNS_CONFIG_FILE = "./config/main/SevenSigns.ini";
public static final String SIEGE_CONFIG_FILE = "./config/main/Siege.ini";
// protected
@@ -92,8 +90,8 @@ public final class Config
private static final String BANK_CONFIG_FILE = "./config/custom/Bank.ini";
private static final String BUFFER_CONFIG_FILE = "./config/custom/Buffer.ini";
private static final String EVENT_CHAMPION_CONFIG_FILE = "./config/custom/Champion.ini";
- private static final String CUSTOM_SERVER_CONFIG_FILE = "./config/custom/CustomServer.ini";
private static final String OFFLINE_CONFIG_FILE = "./config/custom/Offline.ini";
+ private static final String OTHER_CONFIG_FILE = "./config/custom/Other.ini";
private static final String EVENT_REBIRTH_CONFIG_FILE = "./config/custom/Rebirth.ini";
private static final String EVENT_WEDDING_CONFIG_FILE = "./config/custom/Wedding.ini";
// login
@@ -126,6 +124,7 @@ public final class Config
public static boolean GM_STARTUP_BUILDER_HIDE;
public static boolean GM_STARTUP_INVULNERABLE;
public static boolean GM_ANNOUNCER_NAME;
+ public static boolean GM_CRITANNOUNCER_NAME;
public static boolean GM_DEBUG_HTML_PATHS;
public static boolean USE_SUPER_HASTE_AS_GM_SPEED;
@@ -220,36 +219,15 @@ public final class Config
public static ObjectMapType MAP_TYPE;
public static ObjectSetType SET_TYPE;
- public static int MAX_ITEM_IN_PACKET;
public static boolean JAIL_IS_PVP;
public static boolean JAIL_DISABLE_CHAT;
public static int WYVERN_SPEED;
public static int STRIDER_SPEED;
public static boolean ALLOW_WYVERN_UPGRADER;
- public static int INVENTORY_MAXIMUM_NO_DWARF;
- public static int INVENTORY_MAXIMUM_DWARF;
- public static int INVENTORY_MAXIMUM_GM;
- public static int WAREHOUSE_SLOTS_NO_DWARF;
- public static int WAREHOUSE_SLOTS_DWARF;
- public static int WAREHOUSE_SLOTS_CLAN;
- public static int FREIGHT_SLOTS;
public static String NONDROPPABLE_ITEMS;
public static List LIST_NONDROPPABLE_ITEMS = new ArrayList<>();
public static String PET_RENT_NPC;
public static List LIST_PET_RENT_NPC = new ArrayList<>();
- public static boolean EFFECT_CANCELING;
- public static double HP_REGEN_MULTIPLIER;
- public static double MP_REGEN_MULTIPLIER;
- public static double CP_REGEN_MULTIPLIER;
- public static double RAID_HP_REGEN_MULTIPLIER;
- public static double RAID_MP_REGEN_MULTIPLIER;
- public static double RAID_P_DEFENCE_MULTIPLIER;
- public static double RAID_M_DEFENCE_MULTIPLIER;
- public static double RAID_MINION_RESPAWN_TIMER;
- public static float RAID_MIN_RESPAWN_MULTIPLIER;
- public static float RAID_MAX_RESPAWN_MULTIPLIER;
- public static int STARTING_ADENA;
- public static int STARTING_AA;
public static boolean ENABLE_AIO_SYSTEM;
public static Map AIO_SKILLS;
public static boolean ALLOW_AIO_NCOLOR;
@@ -259,34 +237,6 @@ public final class Config
public static boolean ALLOW_AIO_USE_GK;
public static boolean ALLOW_AIO_USE_CM;
public static boolean ALLOW_AIO_IN_EVENTS;
- public static boolean ANNOUNCE_CASTLE_LORDS;
- public static boolean CUSTOM_STARTER_ITEMS_ENABLED;
- public static List STARTING_CUSTOM_ITEMS_F = new ArrayList<>();
- public static List STARTING_CUSTOM_ITEMS_M = new ArrayList<>();
- public static boolean DEEPBLUE_DROP_RULES;
- public static boolean ENABLE_KEYBOARD_MOVEMENT;
- public static int UNSTUCK_INTERVAL;
- public static int DEATH_PENALTY_CHANCE;
- public static int PLAYER_SPAWN_PROTECTION;
- public static int PLAYER_TELEPORT_PROTECTION;
- public static boolean EFFECT_TELEPORT_PROTECTION;
- public static int PLAYER_FAKEDEATH_UP_PROTECTION;
- public static String PARTY_XP_CUTOFF_METHOD;
- public static int PARTY_XP_CUTOFF_LEVEL;
- public static double PARTY_XP_CUTOFF_PERCENT;
- public static double RESPAWN_RESTORE_CP;
- public static double RESPAWN_RESTORE_HP;
- public static double RESPAWN_RESTORE_MP;
- public static boolean RESPAWN_RANDOM_ENABLED;
- public static int RESPAWN_RANDOM_MAX_OFFSET;
- public static int MAX_PVTSTORE_SLOTS_DWARF;
- public static int MAX_PVTSTORE_SLOTS_OTHER;
- public static boolean PETITIONING_ALLOWED;
- public static int MAX_PETITIONS_PER_PLAYER;
- public static int MAX_PETITIONS_PENDING;
- public static boolean ANNOUNCE_MAMMON_SPAWN;
- public static boolean ENABLE_MODIFY_SKILL_DURATION;
- public static Map SKILL_DURATION_LIST;
public static int CHAT_FILTER_PUNISHMENT_PARAM1;
public static int CHAT_FILTER_PUNISHMENT_PARAM2;
public static int CHAT_FILTER_PUNISHMENT_PARAM3;
@@ -301,7 +251,6 @@ public final class Config
public static int FS_PARTY_MEMBER_COUNT;
public static boolean ALLOW_QUAKE_SYSTEM;
public static boolean ENABLE_ANTI_PVP_FARM_MSG;
- public static long CLICK_TASK;
public static float RATE_XP;
public static float RATE_SP;
public static float RATE_PARTY_XP;
@@ -344,30 +293,8 @@ public final class Config
public static float SPOIL_RAID;
public static float SPOIL_MINON;
- public static boolean AUTO_LOOT;
- public static boolean AUTO_LOOT_BOSS;
- public static boolean AUTO_LOOT_HERBS;
public static boolean REMOVE_CASTLE_CIRCLETS;
- public static double ALT_WEIGHT_LIMIT;
- public static boolean ALT_GAME_SKILL_LEARN;
- public static boolean AUTO_LEARN_SKILLS;
- public static boolean ALT_GAME_CANCEL_BOW;
- public static boolean ALT_GAME_CANCEL_CAST;
- public static boolean ALT_GAME_TIREDNESS;
- public static int ALT_PARTY_RANGE;
- public static boolean ALT_GAME_SHIELD_BLOCKS;
- public static int ALT_PERFECT_SHLD_BLOCK;
- public static boolean ALT_GAME_MOB_ATTACK_AI;
- public static boolean ALT_MOB_AGRO_IN_PEACEZONE;
- public static boolean ALT_GAME_FREIGHTS;
- public static int ALT_GAME_FREIGHT_PRICE;
public static float ALT_GAME_SKILL_HIT_RATE;
- public static boolean ALT_GAME_DELEVEL;
- public static boolean ALT_GAME_MAGICFAILURES;
- public static boolean ALT_GAME_FREE_TELEPORT;
- public static boolean ALT_RECOMMEND;
- public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
- public static boolean ALT_RESTORE_EFFECTS_ON_SUBCLASS_CHANGE;
public static boolean ALT_GAME_VIEWNPC;
public static int ALT_CLAN_MEMBERS_FOR_WAR;
public static int ALT_CLAN_JOIN_DAYS;
@@ -380,9 +307,6 @@ public final class Config
public static boolean ALT_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE;
public static boolean ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH;
public static int ALT_MAX_NUM_OF_CLANS_IN_ALLY;
- public static boolean LIFE_CRYSTAL_NEEDED;
- public static boolean SP_BOOK_NEEDED;
- public static boolean ES_SP_BOOK_NEEDED;
public static boolean ALT_PRIVILEGES_SECURE_CHECK;
public static int ALT_PRIVILEGES_DEFAULT_LEVEL;
public static int ALT_MANOR_REFRESH_TIME;
@@ -417,16 +341,7 @@ public final class Config
public static int RIFT_ENTER_COST_COMMANDER;
public static int RIFT_ENTER_COST_HERO;
public static float RIFT_BOSS_ROOM_TIME_MUTIPLY;
- public static float ALT_GAME_EXPONENT_XP;
- public static float ALT_GAME_EXPONENT_SP;
public static boolean FORCE_INVENTORY_UPDATE;
- public static boolean ALLOW_GUARDS;
- public static boolean ALLOW_CLASS_MASTERS;
- public static boolean ALLOW_CLASS_MASTERS_FIRST_CLASS;
- public static boolean ALLOW_CLASS_MASTERS_SECOND_CLASS;
- public static boolean ALLOW_CLASS_MASTERS_THIRD_CLASS;
- public static boolean CLASS_MASTER_STRIDER_UPDATE;
- public static ClassMasterSettings CLASS_MASTER_SETTINGS;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_SHOP;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_USE_GK;
@@ -434,16 +349,8 @@ public final class Config
public static boolean ALT_GAME_KARMA_PLAYER_CAN_TRADE;
public static boolean ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE;
public static boolean ALT_KARMA_TELEPORT_TO_FLORAN;
- public static byte BUFFS_MAX_AMOUNT;
- public static byte DEBUFFS_MAX_AMOUNT;
- public static boolean AUTO_LEARN_DIVINE_INSPIRATION;
- public static boolean DIVINE_SP_BOOK_NEEDED;
- public static boolean ALLOW_REMOTE_CLASS_MASTERS;
public static boolean DONT_DESTROY_SS;
- public static int MAX_LEVEL_NEWBIE;
- public static int MAX_LEVEL_NEWBIE_STATUS;
public static int STANDARD_RESPAWN_DELAY;
- public static int ALT_RECOMMENDATIONS_NUMBER;
public static int RAID_RANKING_1ST;
public static int RAID_RANKING_2ND;
public static int RAID_RANKING_3RD;
@@ -456,7 +363,6 @@ public final class Config
public static int RAID_RANKING_10TH;
public static int RAID_RANKING_UP_TO_50TH;
public static int RAID_RANKING_UP_TO_100TH;
- public static boolean DISABLE_TUTORIAL;
public static boolean EXPERTISE_PENALTY;
public static boolean MASTERY_PENALTY;
public static int LEVEL_TO_GET_PENALTY;
@@ -470,13 +376,21 @@ public final class Config
public static List LIST_ALLOWED_NPC_TYPES = new ArrayList<>();
public static boolean SELL_BY_ITEM;
public static int SELL_ITEM;
- public static int ALLOWED_SUBCLASS;
- public static byte BASE_SUBCLASS_LEVEL;
- public static byte MAX_SUBCLASS_LEVEL;
public static String DISABLE_BOW_CLASSES_STRING;
public static List DISABLE_BOW_CLASSES = new ArrayList<>();
public static boolean ALT_MOBS_STATS_BONUS;
public static boolean ALT_PETS_STATS_BONUS;
+ public static double RAID_HP_REGEN_MULTIPLIER;
+ public static double RAID_MP_REGEN_MULTIPLIER;
+ public static double RAID_P_DEFENCE_MULTIPLIER;
+ public static double RAID_M_DEFENCE_MULTIPLIER;
+ public static double RAID_MINION_RESPAWN_TIMER;
+ public static float RAID_MIN_RESPAWN_MULTIPLIER;
+ public static float RAID_MAX_RESPAWN_MULTIPLIER;
+ public static long CLICK_TASK;
+ public static boolean ANNOUNCE_CASTLE_LORDS;
+ public static boolean ANNOUNCE_MAMMON_SPAWN;
+ public static boolean ALLOW_GUARDS;
public static boolean ALT_GAME_REQUIRE_CASTLE_DAWN;
public static boolean ALT_GAME_REQUIRE_CLAN_CASTLE;
@@ -630,29 +544,12 @@ public final class Config
public static boolean ALT_DEV_NO_SPAWNS;
public static boolean ALT_DEV_NO_SCRIPT;
public static boolean ALT_DEV_NO_RB;
- public static boolean ASSERT;
public static boolean SERVER_LIST_TESTSERVER;
- public static boolean BETASERVER;
- public static boolean SERVER_LIST_BRACKET;
- public static boolean SERVER_LIST_CLOCK;
public static boolean SERVER_GMONLY;
- public static int REQUEST_ID;
- public static boolean ACCEPT_ALTERNATE_ID;
- public static int MAXIMUM_ONLINE_USERS;
- public static String CNAME_TEMPLATE;
- public static String PET_NAME_TEMPLATE;
- public static String CLAN_NAME_TEMPLATE;
- public static String ALLY_NAME_TEMPLATE;
- public static int MAX_CHARACTERS_NUMBER_PER_ACCOUNT;
- public static int MIN_PROTOCOL_REVISION;
- public static int MAX_PROTOCOL_REVISION;
public static boolean GMAUDIT;
public static boolean LOG_CHAT;
public static boolean LOG_ITEMS;
- public static int SCHEDULED_THREAD_POOL_COUNT;
- public static int INSTANT_THREAD_POOL_COUNT;
-
public static boolean LAZY_CACHE;
public static boolean IS_CRAFTING_ENABLED;
@@ -820,7 +717,6 @@ public final class Config
public static String PVP1_CUSTOM_MESSAGE;
public static String PVP2_CUSTOM_MESSAGE;
public static boolean GM_TRADE_RESTRICTED_ITEMS;
- public static boolean GM_CRITANNOUNCER_NAME;
public static boolean GM_RESTART_FIGHTING;
public static boolean PM_MESSAGE_ON_START;
public static boolean SERVER_TIME_ON_START;
@@ -1133,6 +1029,93 @@ public final class Config
public static String RAID_INFO_IDS;
public static List RAID_INFO_IDS_LIST = new ArrayList<>();
+ public static boolean AUTO_LOOT;
+ public static boolean AUTO_LOOT_HERBS;
+ public static boolean AUTO_LOOT_BOSS;
+ public static boolean AUTO_LEARN_SKILLS;
+ public static boolean AUTO_LEARN_DIVINE_INSPIRATION;
+ public static boolean LIFE_CRYSTAL_NEEDED;
+ public static boolean SP_BOOK_NEEDED;
+ public static boolean ES_SP_BOOK_NEEDED;
+ public static boolean DIVINE_SP_BOOK_NEEDED;
+ public static boolean ALT_GAME_SKILL_LEARN;
+ public static int ALLOWED_SUBCLASS;
+ public static byte BASE_SUBCLASS_LEVEL;
+ public static byte MAX_SUBCLASS_LEVEL;
+ public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
+ public static boolean ALT_RESTORE_EFFECTS_ON_SUBCLASS_CHANGE;
+ public static int ALT_PARTY_RANGE;
+ public static double ALT_WEIGHT_LIMIT;
+ public static boolean ALT_GAME_DELEVEL;
+ public static boolean ALT_GAME_MAGICFAILURES;
+ public static boolean ALT_GAME_CANCEL_CAST;
+ public static boolean ALT_GAME_CANCEL_BOW;
+ public static boolean ALT_GAME_SHIELD_BLOCKS;
+ public static int ALT_PERFECT_SHLD_BLOCK;
+ public static boolean ALT_GAME_MOB_ATTACK_AI;
+ public static boolean ALT_MOB_AGRO_IN_PEACEZONE;
+ public static boolean ALT_GAME_FREIGHTS;
+ public static int ALT_GAME_FREIGHT_PRICE;
+ public static float ALT_GAME_EXPONENT_XP;
+ public static float ALT_GAME_EXPONENT_SP;
+ public static boolean ALT_GAME_TIREDNESS;
+ public static boolean ALT_GAME_FREE_TELEPORT;
+ public static boolean ALT_RECOMMEND;
+ public static int ALT_RECOMMENDATIONS_NUMBER;
+ public static int MAX_CHARACTERS_NUMBER_PER_ACCOUNT;
+ public static int MAX_LEVEL_NEWBIE;
+ public static int MAX_LEVEL_NEWBIE_STATUS;
+ public static boolean DISABLE_TUTORIAL;
+ public static int STARTING_ADENA;
+ public static int STARTING_AA;
+ public static boolean CUSTOM_STARTER_ITEMS_ENABLED;
+ public static List STARTING_CUSTOM_ITEMS_F = new ArrayList<>();
+ public static List STARTING_CUSTOM_ITEMS_M = new ArrayList<>();
+ public static int INVENTORY_MAXIMUM_NO_DWARF;
+ public static int INVENTORY_MAXIMUM_DWARF;
+ public static int INVENTORY_MAXIMUM_GM;
+ public static int MAX_ITEM_IN_PACKET;
+ public static int WAREHOUSE_SLOTS_DWARF;
+ public static int WAREHOUSE_SLOTS_NO_DWARF;
+ public static int WAREHOUSE_SLOTS_CLAN;
+ public static int FREIGHT_SLOTS;
+ public static int MAX_PVTSTORE_SLOTS_DWARF;
+ public static int MAX_PVTSTORE_SLOTS_OTHER;
+ public static double HP_REGEN_MULTIPLIER;
+ public static double MP_REGEN_MULTIPLIER;
+ public static double CP_REGEN_MULTIPLIER;
+ public static boolean ENABLE_KEYBOARD_MOVEMENT;
+ public static int UNSTUCK_INTERVAL;
+ public static int PLAYER_SPAWN_PROTECTION;
+ public static int PLAYER_TELEPORT_PROTECTION;
+ public static int PLAYER_FAKEDEATH_UP_PROTECTION;
+ public static boolean DEEPBLUE_DROP_RULES;
+ public static String PARTY_XP_CUTOFF_METHOD;
+ public static double PARTY_XP_CUTOFF_PERCENT;
+ public static int PARTY_XP_CUTOFF_LEVEL;
+ public static double RESPAWN_RESTORE_CP;
+ public static double RESPAWN_RESTORE_HP;
+ public static double RESPAWN_RESTORE_MP;
+ public static boolean RESPAWN_RANDOM_ENABLED;
+ public static int RESPAWN_RANDOM_MAX_OFFSET;
+ public static boolean PETITIONING_ALLOWED;
+ public static int MAX_PETITIONS_PER_PLAYER;
+ public static int MAX_PETITIONS_PENDING;
+ public static int DEATH_PENALTY_CHANCE;
+ public static boolean EFFECT_CANCELING;
+ public static boolean STORE_SKILL_COOLTIME;
+ public static byte BUFFS_MAX_AMOUNT;
+ public static byte DEBUFFS_MAX_AMOUNT;
+ public static boolean ENABLE_MODIFY_SKILL_DURATION;
+ public static Map SKILL_DURATION_LIST;
+ public static boolean ALLOW_CLASS_MASTERS;
+ public static boolean CLASS_MASTER_STRIDER_UPDATE;
+ public static boolean ALLOW_CLASS_MASTERS_FIRST_CLASS;
+ public static boolean ALLOW_CLASS_MASTERS_SECOND_CLASS;
+ public static boolean ALLOW_CLASS_MASTERS_THIRD_CLASS;
+ public static ClassMasterSettings CLASS_MASTER_SETTINGS;
+ public static boolean ALLOW_REMOTE_CLASS_MASTERS;
+
public static long AUTOSAVE_INITIAL_TIME;
public static long AUTOSAVE_DELAY_TIME;
public static long CHECK_CONNECTION_INACTIVITY_TIME;
@@ -1153,14 +1136,27 @@ public final class Config
public static String LOGIN_BIND_ADDRESS;
public static int LOGIN_TRY_BEFORE_BAN;
public static int LOGIN_BLOCK_AFTER_BAN;
- public static File DATAPACK_ROOT;
- public static File SCRIPT_ROOT;
public static int GAME_SERVER_LOGIN_PORT;
public static String GAME_SERVER_LOGIN_HOST;
public static String INTERNAL_HOSTNAME;
public static String EXTERNAL_HOSTNAME;
+ public static int REQUEST_ID;
+ public static boolean ACCEPT_ALTERNATE_ID;
+ public static File DATAPACK_ROOT;
+ public static File SCRIPT_ROOT;
+ public static int MAXIMUM_ONLINE_USERS;
+ public static boolean SERVER_LIST_BRACKET;
+ public static boolean SERVER_LIST_CLOCK;
+ public static int MIN_PROTOCOL_REVISION;
+ public static int MAX_PROTOCOL_REVISION;
+ public static int SCHEDULED_THREAD_POOL_COUNT;
+ public static int INSTANT_THREAD_POOL_COUNT;
+ public static String CNAME_TEMPLATE;
+ public static String PET_NAME_TEMPLATE;
+ public static String CLAN_NAME_TEMPLATE;
+ public static String ALLY_NAME_TEMPLATE;
+
public static int IP_UPDATE_TIME;
- public static boolean STORE_SKILL_COOLTIME;
public static boolean SHOW_LICENCE;
public static boolean FORCE_GGAUTH;
public static boolean FLOOD_PROTECTION;
@@ -1178,30 +1174,31 @@ public final class Config
{
try
{
- final Properties AccessSettings = new Properties();
+ final Properties accessSettings = new Properties();
final InputStream is = new FileInputStream(new File(ACCESS_CONFIG_FILE));
- AccessSettings.load(is);
+ accessSettings.load(is);
is.close();
- EVERYBODY_HAS_ADMIN_RIGHTS = Boolean.parseBoolean(AccessSettings.getProperty("EverybodyHasAdminRights", "false"));
- MASTERACCESS_LEVEL = Integer.parseInt(AccessSettings.getProperty("MasterAccessLevel", "1"));
- MASTERACCESS_NAME_COLOR_ENABLED = Boolean.parseBoolean(AccessSettings.getProperty("MasterNameColorEnabled", "false"));
- MASTERACCESS_TITLE_COLOR_ENABLED = Boolean.parseBoolean(AccessSettings.getProperty("MasterTitleColorEnabled", "false"));
- MASTERACCESS_NAME_COLOR = Integer.decode("0x" + AccessSettings.getProperty("MasterNameColor", "00FF00"));
- MASTERACCESS_TITLE_COLOR = Integer.decode("0x" + AccessSettings.getProperty("MasterTitleColor", "00FF00"));
- USERACCESS_LEVEL = Integer.parseInt(AccessSettings.getProperty("UserAccessLevel", "0"));
- GM_STARTUP_AUTO_LIST = Boolean.parseBoolean(AccessSettings.getProperty("GMStartupAutoList", "true"));
- GM_ADMIN_MENU_STYLE = AccessSettings.getProperty("GMAdminMenuStyle", "modern");
- GM_HERO_AURA = Boolean.parseBoolean(AccessSettings.getProperty("GMHeroAura", "false"));
- GM_STARTUP_BUILDER_HIDE = Boolean.parseBoolean(AccessSettings.getProperty("GMStartupBuilderHide", "true"));
- GM_STARTUP_INVULNERABLE = Boolean.parseBoolean(AccessSettings.getProperty("GMStartupInvulnerable", "true"));
- GM_ANNOUNCER_NAME = Boolean.parseBoolean(AccessSettings.getProperty("AnnounceGmName", "false"));
- SHOW_GM_LOGIN = Boolean.parseBoolean(AccessSettings.getProperty("ShowGMLogin", "false"));
- GM_STARTUP_INVISIBLE = Boolean.parseBoolean(AccessSettings.getProperty("GMStartupInvisible", "true"));
- GM_SPECIAL_EFFECT = Boolean.parseBoolean(AccessSettings.getProperty("GmLoginSpecialEffect", "false"));
- GM_STARTUP_SILENCE = Boolean.parseBoolean(AccessSettings.getProperty("GMStartupSilence", "true"));
- GM_DEBUG_HTML_PATHS = Boolean.parseBoolean(AccessSettings.getProperty("GMDebugHtmlPaths", "true"));
- USE_SUPER_HASTE_AS_GM_SPEED = Boolean.parseBoolean(AccessSettings.getProperty("UseSuperHasteAsGMSpeed", "false"));
+ EVERYBODY_HAS_ADMIN_RIGHTS = Boolean.parseBoolean(accessSettings.getProperty("EverybodyHasAdminRights", "false"));
+ MASTERACCESS_LEVEL = Integer.parseInt(accessSettings.getProperty("MasterAccessLevel", "1"));
+ MASTERACCESS_NAME_COLOR_ENABLED = Boolean.parseBoolean(accessSettings.getProperty("MasterNameColorEnabled", "false"));
+ MASTERACCESS_TITLE_COLOR_ENABLED = Boolean.parseBoolean(accessSettings.getProperty("MasterTitleColorEnabled", "false"));
+ MASTERACCESS_NAME_COLOR = Integer.decode("0x" + accessSettings.getProperty("MasterNameColor", "00FF00"));
+ MASTERACCESS_TITLE_COLOR = Integer.decode("0x" + accessSettings.getProperty("MasterTitleColor", "00FF00"));
+ USERACCESS_LEVEL = Integer.parseInt(accessSettings.getProperty("UserAccessLevel", "0"));
+ GM_STARTUP_AUTO_LIST = Boolean.parseBoolean(accessSettings.getProperty("GMStartupAutoList", "true"));
+ GM_ADMIN_MENU_STYLE = accessSettings.getProperty("GMAdminMenuStyle", "modern");
+ GM_HERO_AURA = Boolean.parseBoolean(accessSettings.getProperty("GMHeroAura", "false"));
+ GM_STARTUP_BUILDER_HIDE = Boolean.parseBoolean(accessSettings.getProperty("GMStartupBuilderHide", "true"));
+ GM_STARTUP_INVULNERABLE = Boolean.parseBoolean(accessSettings.getProperty("GMStartupInvulnerable", "true"));
+ GM_ANNOUNCER_NAME = Boolean.parseBoolean(accessSettings.getProperty("AnnounceGmName", "false"));
+ GM_CRITANNOUNCER_NAME = Boolean.parseBoolean(accessSettings.getProperty("CritAnnounceName", "false"));
+ SHOW_GM_LOGIN = Boolean.parseBoolean(accessSettings.getProperty("ShowGMLogin", "false"));
+ GM_STARTUP_INVISIBLE = Boolean.parseBoolean(accessSettings.getProperty("GMStartupInvisible", "true"));
+ GM_SPECIAL_EFFECT = Boolean.parseBoolean(accessSettings.getProperty("GmLoginSpecialEffect", "false"));
+ GM_STARTUP_SILENCE = Boolean.parseBoolean(accessSettings.getProperty("GMStartupSilence", "true"));
+ GM_DEBUG_HTML_PATHS = Boolean.parseBoolean(accessSettings.getProperty("GMDebugHtmlPaths", "true"));
+ USE_SUPER_HASTE_AS_GM_SPEED = Boolean.parseBoolean(accessSettings.getProperty("UseSuperHasteAsGMSpeed", "false"));
}
catch (Exception e)
{
@@ -1210,114 +1207,6 @@ public final class Config
}
}
- public static void loadOptionsConfig()
- {
- try
- {
- final Properties optionsSettings = new Properties();
- final InputStream is = new FileInputStream(new File(OPTIONS_CONFIG_FILE));
- optionsSettings.load(is);
- is.close();
-
- AUTODESTROY_ITEM_AFTER = Integer.parseInt(optionsSettings.getProperty("AutoDestroyDroppedItemAfter", "0"));
- HERB_AUTO_DESTROY_TIME = Integer.parseInt(optionsSettings.getProperty("AutoDestroyHerbTime", "15")) * 1000;
- PROTECTED_ITEMS = optionsSettings.getProperty("ListOfProtectedItems");
- LIST_PROTECTED_ITEMS = new ArrayList<>();
- for (String id : PROTECTED_ITEMS.split(","))
- {
- LIST_PROTECTED_ITEMS.add(Integer.parseInt(id));
- }
- DESTROY_DROPPED_PLAYER_ITEM = Boolean.valueOf(optionsSettings.getProperty("DestroyPlayerDroppedItem", "false"));
- DESTROY_EQUIPABLE_PLAYER_ITEM = Boolean.valueOf(optionsSettings.getProperty("DestroyEquipableItem", "false"));
- SAVE_DROPPED_ITEM = Boolean.valueOf(optionsSettings.getProperty("SaveDroppedItem", "false"));
- EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD = Boolean.valueOf(optionsSettings.getProperty("EmptyDroppedItemTableAfterLoad", "false"));
- SAVE_DROPPED_ITEM_INTERVAL = Integer.parseInt(optionsSettings.getProperty("SaveDroppedItemInterval", "0")) * 60000;
- CLEAR_DROPPED_ITEM_TABLE = Boolean.valueOf(optionsSettings.getProperty("ClearDroppedItemTable", "false"));
-
- PRECISE_DROP_CALCULATION = Boolean.valueOf(optionsSettings.getProperty("PreciseDropCalculation", "true"));
- MULTIPLE_ITEM_DROP = Boolean.valueOf(optionsSettings.getProperty("MultipleItemDrop", "true"));
-
- ALLOW_WAREHOUSE = Boolean.valueOf(optionsSettings.getProperty("AllowWarehouse", "true"));
- WAREHOUSE_CACHE = Boolean.valueOf(optionsSettings.getProperty("WarehouseCache", "false"));
- WAREHOUSE_CACHE_TIME = Integer.parseInt(optionsSettings.getProperty("WarehouseCacheTime", "15"));
- ALLOW_FREIGHT = Boolean.valueOf(optionsSettings.getProperty("AllowFreight", "true"));
- ALLOW_WEAR = Boolean.valueOf(optionsSettings.getProperty("AllowWear", "false"));
- WEAR_DELAY = Integer.parseInt(optionsSettings.getProperty("WearDelay", "5"));
- WEAR_PRICE = Integer.parseInt(optionsSettings.getProperty("WearPrice", "10"));
- ALLOW_LOTTERY = Boolean.valueOf(optionsSettings.getProperty("AllowLottery", "false"));
- ALLOW_RACE = Boolean.valueOf(optionsSettings.getProperty("AllowRace", "false"));
- ALLOW_RENTPET = Boolean.valueOf(optionsSettings.getProperty("AllowRentPet", "false"));
- ALLOW_DISCARDITEM = Boolean.valueOf(optionsSettings.getProperty("AllowDiscardItem", "true"));
- ALLOWFISHING = Boolean.valueOf(optionsSettings.getProperty("AllowFishing", "false"));
- ALLOW_MANOR = Boolean.parseBoolean(optionsSettings.getProperty("AllowManor", "false"));
- ALLOW_BOAT = Boolean.valueOf(optionsSettings.getProperty("AllowBoat", "false"));
- ALLOW_NPC_WALKERS = Boolean.valueOf(optionsSettings.getProperty("AllowNpcWalkers", "true"));
- ALLOW_CURSED_WEAPONS = Boolean.valueOf(optionsSettings.getProperty("AllowCursedWeapons", "false"));
-
- DEFAULT_GLOBAL_CHAT = optionsSettings.getProperty("GlobalChat", "ON");
- DEFAULT_TRADE_CHAT = optionsSettings.getProperty("TradeChat", "ON");
- MAX_CHAT_LENGTH = Integer.parseInt(optionsSettings.getProperty("MaxChatLength", "100"));
-
- TRADE_CHAT_IS_NOOBLE = Boolean.valueOf(optionsSettings.getProperty("TradeChatIsNooble", "false"));
- TRADE_CHAT_WITH_PVP = Boolean.valueOf(optionsSettings.getProperty("TradeChatWithPvP", "false"));
- TRADE_PVP_AMOUNT = Integer.parseInt(optionsSettings.getProperty("TradePvPAmount", "800"));
- GLOBAL_CHAT_WITH_PVP = Boolean.valueOf(optionsSettings.getProperty("GlobalChatWithPvP", "false"));
- GLOBAL_PVP_AMOUNT = Integer.parseInt(optionsSettings.getProperty("GlobalPvPAmount", "1500"));
-
- ENABLE_COMMUNITY_BOARD = Boolean.valueOf(optionsSettings.getProperty("EnableCommunityBoard", "true"));
- BBS_DEFAULT = optionsSettings.getProperty("BBSDefault", "_bbshome");
-
- ZONE_TOWN = Integer.parseInt(optionsSettings.getProperty("ZoneTown", "0"));
-
- MAX_DRIFT_RANGE = Integer.parseInt(optionsSettings.getProperty("MaxDriftRange", "300"));
-
- MIN_NPC_ANIMATION = Integer.parseInt(optionsSettings.getProperty("MinNpcAnimation", "5"));
- MAX_NPC_ANIMATION = Integer.parseInt(optionsSettings.getProperty("MaxNpcAnimation", "60"));
- MIN_MONSTER_ANIMATION = Integer.parseInt(optionsSettings.getProperty("MinMonsterAnimation", "5"));
- MAX_MONSTER_ANIMATION = Integer.parseInt(optionsSettings.getProperty("MaxMonsterAnimation", "60"));
-
- SHOW_NPC_LVL = Boolean.valueOf(optionsSettings.getProperty("ShowNpcLevel", "false"));
-
- FORCE_INVENTORY_UPDATE = Boolean.valueOf(optionsSettings.getProperty("ForceInventoryUpdate", "false"));
-
- FORCE_COMPLETE_STATUS_UPDATE = Boolean.valueOf(optionsSettings.getProperty("ForceCompletePlayerStatusUpdate", "true"));
-
- AUTODELETE_INVALID_QUEST_DATA = Boolean.valueOf(optionsSettings.getProperty("AutoDeleteInvalidQuestData", "false"));
-
- DELETE_DAYS = Integer.parseInt(optionsSettings.getProperty("DeleteCharAfterDays", "7"));
-
- DEFAULT_PUNISH = Integer.parseInt(optionsSettings.getProperty("DefaultPunish", "2"));
- DEFAULT_PUNISH_PARAM = Integer.parseInt(optionsSettings.getProperty("DefaultPunishParam", "0"));
-
- GRIDS_ALWAYS_ON = Boolean.parseBoolean(optionsSettings.getProperty("GridsAlwaysOn", "false"));
- GRID_NEIGHBOR_TURNON_TIME = Integer.parseInt(optionsSettings.getProperty("GridNeighborTurnOnTime", "30"));
- GRID_NEIGHBOR_TURNOFF_TIME = Integer.parseInt(optionsSettings.getProperty("GridNeighborTurnOffTime", "300"));
-
- USE_3D_MAP = Boolean.valueOf(optionsSettings.getProperty("Use3DMap", "false"));
-
- PATH_NODE_RADIUS = Integer.parseInt(optionsSettings.getProperty("PathNodeRadius", "50"));
- NEW_NODE_ID = Integer.parseInt(optionsSettings.getProperty("NewNodeId", "7952"));
- SELECTED_NODE_ID = Integer.parseInt(optionsSettings.getProperty("NewNodeId", "7952"));
- LINKED_NODE_ID = Integer.parseInt(optionsSettings.getProperty("NewNodeId", "7952"));
- NEW_NODE_TYPE = optionsSettings.getProperty("NewNodeType", "npc");
-
- COUNT_PACKETS = Boolean.valueOf(optionsSettings.getProperty("CountPacket", "false"));
- DUMP_PACKET_COUNTS = Boolean.valueOf(optionsSettings.getProperty("DumpPacketCounts", "false"));
- DUMP_INTERVAL_SECONDS = Integer.parseInt(optionsSettings.getProperty("PacketDumpInterval", "60"));
-
- MINIMUM_UPDATE_DISTANCE = Integer.parseInt(optionsSettings.getProperty("MaximumUpdateDistance", "50"));
- MINIMUN_UPDATE_TIME = Integer.parseInt(optionsSettings.getProperty("MinimumUpdateTime", "500"));
- KNOWNLIST_FORGET_DELAY = Integer.parseInt(optionsSettings.getProperty("KnownListForgetDelay", "10000"));
-
- HIGH_RATE_SERVER_DROPS = Boolean.valueOf(optionsSettings.getProperty("HighRateServerDrops", "false"));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw new Error("Failed to Load " + OPTIONS_CONFIG_FILE + " File.");
- }
- }
-
public static void loadServerConfig()
{
try
@@ -1347,8 +1236,31 @@ public final class Config
BACKUP_PATH = serverSettings.getProperty("BackupPath", "../backup/");
BACKUP_DAYS = Integer.parseInt(serverSettings.getProperty("BackupDays", "30"));
+ REQUEST_ID = Integer.parseInt(serverSettings.getProperty("RequestServerID", "0"));
+ ACCEPT_ALTERNATE_ID = Boolean.parseBoolean(serverSettings.getProperty("AcceptAlternateID", "true"));
+
DATAPACK_ROOT = new File(serverSettings.getProperty("DatapackRoot", ".")).getCanonicalFile();
SCRIPT_ROOT = new File(serverSettings.getProperty("ScriptRoot", "./data/scripts").replaceAll("\\\\", "/")).getCanonicalFile();
+
+ MAXIMUM_ONLINE_USERS = Integer.parseInt(serverSettings.getProperty("MaximumOnlineUsers", "100"));
+
+ SERVER_LIST_BRACKET = Boolean.valueOf(serverSettings.getProperty("ServerListBrackets", "false"));
+ SERVER_LIST_CLOCK = Boolean.valueOf(serverSettings.getProperty("ServerListClock", "false"));
+
+ MIN_PROTOCOL_REVISION = Integer.parseInt(serverSettings.getProperty("MinProtocolRevision", "660"));
+ MAX_PROTOCOL_REVISION = Integer.parseInt(serverSettings.getProperty("MaxProtocolRevision", "665"));
+ if (MIN_PROTOCOL_REVISION > MAX_PROTOCOL_REVISION)
+ {
+ throw new Error("MinProtocolRevision is bigger than MaxProtocolRevision in server configuration file.");
+ }
+
+ SCHEDULED_THREAD_POOL_COUNT = Integer.parseInt(serverSettings.getProperty("ScheduledThreadPoolCount", "40"));
+ INSTANT_THREAD_POOL_COUNT = Integer.parseInt(serverSettings.getProperty("InstantThreadPoolCount", "20"));
+
+ CNAME_TEMPLATE = serverSettings.getProperty("CnameTemplate", ".*");
+ PET_NAME_TEMPLATE = serverSettings.getProperty("PetNameTemplate", ".*");
+ CLAN_NAME_TEMPLATE = serverSettings.getProperty("ClanNameTemplate", ".*");
+ ALLY_NAME_TEMPLATE = serverSettings.getProperty("AllyNameTemplate", ".*");
}
catch (Exception e)
{
@@ -1412,279 +1324,6 @@ public final class Config
}
}
- public static void loadOtherConfig()
- {
- try
- {
- final Properties otherSettings = new Properties();
- final InputStream is = new FileInputStream(new File(OTHER_CONFIG_FILE));
- otherSettings.load(is);
- is.close();
-
- DEEPBLUE_DROP_RULES = Boolean.parseBoolean(otherSettings.getProperty("UseDeepBlueDropRules", "true"));
- ALLOW_GUARDS = Boolean.valueOf(otherSettings.getProperty("AllowGuards", "false"));
- EFFECT_CANCELING = Boolean.valueOf(otherSettings.getProperty("CancelLesserEffect", "true"));
- WYVERN_SPEED = Integer.parseInt(otherSettings.getProperty("WyvernSpeed", "100"));
- STRIDER_SPEED = Integer.parseInt(otherSettings.getProperty("StriderSpeed", "80"));
- ALLOW_WYVERN_UPGRADER = Boolean.valueOf(otherSettings.getProperty("AllowWyvernUpgrader", "false"));
-
- /* Select hit task */
- CLICK_TASK = Integer.parseInt(otherSettings.getProperty("ClickTask", "50"));
-
- GM_CRITANNOUNCER_NAME = Boolean.parseBoolean(otherSettings.getProperty("GMShowCritAnnouncerName", "false"));
-
- /* Inventory slots limits */
- INVENTORY_MAXIMUM_NO_DWARF = Integer.parseInt(otherSettings.getProperty("MaximumSlotsForNoDwarf", "80"));
- INVENTORY_MAXIMUM_DWARF = Integer.parseInt(otherSettings.getProperty("MaximumSlotsForDwarf", "100"));
- INVENTORY_MAXIMUM_GM = Integer.parseInt(otherSettings.getProperty("MaximumSlotsForGMPlayer", "250"));
- MAX_ITEM_IN_PACKET = Math.max(INVENTORY_MAXIMUM_NO_DWARF, Math.max(INVENTORY_MAXIMUM_DWARF, INVENTORY_MAXIMUM_GM));
-
- /* Inventory slots limits */
- WAREHOUSE_SLOTS_NO_DWARF = Integer.parseInt(otherSettings.getProperty("MaximumWarehouseSlotsForNoDwarf", "100"));
- WAREHOUSE_SLOTS_DWARF = Integer.parseInt(otherSettings.getProperty("MaximumWarehouseSlotsForDwarf", "120"));
- WAREHOUSE_SLOTS_CLAN = Integer.parseInt(otherSettings.getProperty("MaximumWarehouseSlotsForClan", "150"));
- FREIGHT_SLOTS = Integer.parseInt(otherSettings.getProperty("MaximumFreightSlots", "20"));
-
- /* If different from 100 (ie 100%) heal rate is modified acordingly */
- HP_REGEN_MULTIPLIER = Double.parseDouble(otherSettings.getProperty("HpRegenMultiplier", "100")) / 100;
- MP_REGEN_MULTIPLIER = Double.parseDouble(otherSettings.getProperty("MpRegenMultiplier", "100")) / 100;
- CP_REGEN_MULTIPLIER = Double.parseDouble(otherSettings.getProperty("CpRegenMultiplier", "100")) / 100;
-
- RAID_HP_REGEN_MULTIPLIER = Double.parseDouble(otherSettings.getProperty("RaidHpRegenMultiplier", "100")) / 100;
- RAID_MP_REGEN_MULTIPLIER = Double.parseDouble(otherSettings.getProperty("RaidMpRegenMultiplier", "100")) / 100;
- RAID_P_DEFENCE_MULTIPLIER = Double.parseDouble(otherSettings.getProperty("RaidPhysicalDefenceMultiplier", "100")) / 100;
- RAID_M_DEFENCE_MULTIPLIER = Double.parseDouble(otherSettings.getProperty("RaidMagicalDefenceMultiplier", "100")) / 100;
- RAID_MINION_RESPAWN_TIMER = Integer.parseInt(otherSettings.getProperty("RaidMinionRespawnTime", "300000"));
- RAID_MIN_RESPAWN_MULTIPLIER = Float.parseFloat(otherSettings.getProperty("RaidMinRespawnMultiplier", "1.0"));
- RAID_MAX_RESPAWN_MULTIPLIER = Float.parseFloat(otherSettings.getProperty("RaidMaxRespawnMultiplier", "1.0"));
- ENABLE_AIO_SYSTEM = Boolean.parseBoolean(otherSettings.getProperty("EnableAioSystem", "true"));
- ALLOW_AIO_NCOLOR = Boolean.parseBoolean(otherSettings.getProperty("AllowAioNameColor", "true"));
- AIO_NCOLOR = Integer.decode("0x" + otherSettings.getProperty("AioNameColor", "88AA88"));
- ALLOW_AIO_TCOLOR = Boolean.parseBoolean(otherSettings.getProperty("AllowAioTitleColor", "true"));
- AIO_TCOLOR = Integer.decode("0x" + otherSettings.getProperty("AioTitleColor", "88AA88"));
- ALLOW_AIO_USE_GK = Boolean.parseBoolean(otherSettings.getProperty("AllowAioUseGk", "false"));
- ALLOW_AIO_USE_CM = Boolean.parseBoolean(otherSettings.getProperty("AllowAioUseClassMaster", "false"));
- ALLOW_AIO_IN_EVENTS = Boolean.parseBoolean(otherSettings.getProperty("AllowAioInEvents", "false"));
- ANNOUNCE_CASTLE_LORDS = Boolean.parseBoolean(otherSettings.getProperty("AnnounceCastleLords", "false"));
- if (ENABLE_AIO_SYSTEM) // create map if system is enabled
- {
- final String[] AioSkillsSplit = otherSettings.getProperty("AioSkills", "").split(";");
- AIO_SKILLS = new HashMap<>(AioSkillsSplit.length);
- for (String skill : AioSkillsSplit)
- {
- final String[] skillSplit = skill.split(",");
- if (skillSplit.length != 2)
- {
- LOGGER.info("[Aio System]: invalid config property in " + OTHER_CONFIG_FILE + " -> AioSkills \"" + skill + "\"");
- }
- else
- {
- try
- {
- AIO_SKILLS.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1]));
- }
- catch (NumberFormatException nfe)
- {
- if (!skill.equals(""))
- {
- LOGGER.info("[Aio System]: invalid config property in " + OTHER_CONFIG_FILE + " -> AioSkills \"" + skillSplit[0] + "\"" + skillSplit[1]);
- }
- }
- }
- }
- }
- STARTING_ADENA = Integer.parseInt(otherSettings.getProperty("StartingAdena", "100"));
- STARTING_AA = Integer.parseInt(otherSettings.getProperty("StartingAncientAdena", "0"));
-
- CUSTOM_STARTER_ITEMS_ENABLED = Boolean.parseBoolean(otherSettings.getProperty("CustomStarterItemsEnabled", "false"));
- if (CUSTOM_STARTER_ITEMS_ENABLED)
- {
- String[] propertySplit = otherSettings.getProperty("StartingCustomItemsMage", "57,0").split(";");
- STARTING_CUSTOM_ITEMS_M.clear();
- for (String reward : propertySplit)
- {
- final String[] rewardSplit = reward.split(",");
- if (rewardSplit.length != 2)
- {
- LOGGER.warning("StartingCustomItemsMage[Config.load()]: invalid config property -> StartingCustomItemsMage \"" + reward + "\"");
- }
- else
- {
- try
- {
- STARTING_CUSTOM_ITEMS_M.add(new int[]
- {
- Integer.parseInt(rewardSplit[0]),
- Integer.parseInt(rewardSplit[1])
- });
- }
- catch (NumberFormatException nfe)
- {
- if (!reward.isEmpty())
- {
- LOGGER.warning("StartingCustomItemsMage[Config.load()]: invalid config property -> StartingCustomItemsMage \"" + reward + "\"");
- }
- }
- }
- }
-
- propertySplit = otherSettings.getProperty("StartingCustomItemsFighter", "57,0").split(";");
- STARTING_CUSTOM_ITEMS_F.clear();
- for (String reward : propertySplit)
- {
- final String[] rewardSplit = reward.split(",");
- if (rewardSplit.length != 2)
- {
- LOGGER.warning("StartingCustomItemsFighter[Config.load()]: invalid config property -> StartingCustomItemsFighter \"" + reward + "\"");
- }
- else
- {
- try
- {
- STARTING_CUSTOM_ITEMS_F.add(new int[]
- {
- Integer.parseInt(rewardSplit[0]),
- Integer.parseInt(rewardSplit[1])
- });
- }
- catch (NumberFormatException nfe)
- {
- if (!reward.isEmpty())
- {
- LOGGER.warning("StartingCustomItemsFighter[Config.load()]: invalid config property -> StartingCustomItemsFighter \"" + reward + "\"");
- }
- }
- }
- }
- }
-
- ENABLE_KEYBOARD_MOVEMENT = Boolean.parseBoolean(otherSettings.getProperty("KeyboardMovement", "true"));
- UNSTUCK_INTERVAL = Integer.parseInt(otherSettings.getProperty("UnstuckInterval", "300"));
-
- /* Player protection after teleport or login */
- PLAYER_SPAWN_PROTECTION = Integer.parseInt(otherSettings.getProperty("PlayerSpawnProtection", "0"));
- PLAYER_TELEPORT_PROTECTION = Integer.parseInt(otherSettings.getProperty("PlayerTeleportProtection", "0"));
- EFFECT_TELEPORT_PROTECTION = Boolean.parseBoolean(otherSettings.getProperty("EffectTeleportProtection", "false"));
-
- /* Player protection after recovering from fake death (works against mobs only) */
- PLAYER_FAKEDEATH_UP_PROTECTION = Integer.parseInt(otherSettings.getProperty("PlayerFakeDeathUpProtection", "0"));
-
- /* Defines some Party XP related values */
- PARTY_XP_CUTOFF_METHOD = otherSettings.getProperty("PartyXpCutoffMethod", "percentage");
- PARTY_XP_CUTOFF_PERCENT = Double.parseDouble(otherSettings.getProperty("PartyXpCutoffPercent", "3."));
- PARTY_XP_CUTOFF_LEVEL = Integer.parseInt(otherSettings.getProperty("PartyXpCutoffLevel", "30"));
-
- /* Amount of HP, MP, and CP is restored */
- RESPAWN_RESTORE_CP = Double.parseDouble(otherSettings.getProperty("RespawnRestoreCP", "0")) / 100;
- RESPAWN_RESTORE_HP = Double.parseDouble(otherSettings.getProperty("RespawnRestoreHP", "70")) / 100;
- RESPAWN_RESTORE_MP = Double.parseDouble(otherSettings.getProperty("RespawnRestoreMP", "70")) / 100;
-
- RESPAWN_RANDOM_ENABLED = Boolean.parseBoolean(otherSettings.getProperty("RespawnRandomInTown", "false"));
- RESPAWN_RANDOM_MAX_OFFSET = Integer.parseInt(otherSettings.getProperty("RespawnRandomMaxOffset", "50"));
-
- /* Maximum number of available slots for pvt stores */
- MAX_PVTSTORE_SLOTS_DWARF = Integer.parseInt(otherSettings.getProperty("MaxPvtStoreSlotsDwarf", "5"));
- MAX_PVTSTORE_SLOTS_OTHER = Integer.parseInt(otherSettings.getProperty("MaxPvtStoreSlotsOther", "4"));
-
- STORE_SKILL_COOLTIME = Boolean.parseBoolean(otherSettings.getProperty("StoreSkillCooltime", "true"));
-
- PET_RENT_NPC = otherSettings.getProperty("ListPetRentNpc", "30827");
- LIST_PET_RENT_NPC = new ArrayList<>();
- for (String id : PET_RENT_NPC.split(","))
- {
- LIST_PET_RENT_NPC.add(Integer.parseInt(id));
- }
- NONDROPPABLE_ITEMS = otherSettings.getProperty("ListOfNonDroppableItems", "1147,425,1146,461,10,2368,7,6,2370,2369,5598");
-
- LIST_NONDROPPABLE_ITEMS = new ArrayList<>();
- for (String id : NONDROPPABLE_ITEMS.split(","))
- {
- LIST_NONDROPPABLE_ITEMS.add(Integer.parseInt(id));
- }
-
- ANNOUNCE_MAMMON_SPAWN = Boolean.parseBoolean(otherSettings.getProperty("AnnounceMammonSpawn", "true"));
- PETITIONING_ALLOWED = Boolean.parseBoolean(otherSettings.getProperty("PetitioningAllowed", "true"));
- MAX_PETITIONS_PER_PLAYER = Integer.parseInt(otherSettings.getProperty("MaxPetitionsPerPlayer", "5"));
- MAX_PETITIONS_PENDING = Integer.parseInt(otherSettings.getProperty("MaxPetitionsPending", "25"));
- JAIL_IS_PVP = Boolean.valueOf(otherSettings.getProperty("JailIsPvp", "true"));
- JAIL_DISABLE_CHAT = Boolean.valueOf(otherSettings.getProperty("JailDisableChat", "true"));
- DEATH_PENALTY_CHANCE = Integer.parseInt(otherSettings.getProperty("DeathPenaltyChance", "20"));
- // ////////////
- ENABLE_MODIFY_SKILL_DURATION = Boolean.parseBoolean(otherSettings.getProperty("EnableModifySkillDuration", "false"));
- if (ENABLE_MODIFY_SKILL_DURATION)
- {
- SKILL_DURATION_LIST = new HashMap<>();
-
- String[] propertySplit;
- propertySplit = otherSettings.getProperty("SkillDurationList", "").split(";");
-
- for (String skill : propertySplit)
- {
- final String[] skillSplit = skill.split(",");
- if (skillSplit.length != 2)
- {
- LOGGER.info("[SkillDurationList]: invalid config property -> SkillDurationList \"" + skill + "\"");
- }
- else
- {
- try
- {
- SKILL_DURATION_LIST.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1]));
- }
- catch (NumberFormatException nfe)
- {
- if (!skill.equals(""))
- {
- LOGGER.info("[SkillDurationList]: invalid config property -> SkillList \"" + skillSplit[0] + "\"" + skillSplit[1]);
- }
- }
- }
- }
- }
-
- USE_SAY_FILTER = Boolean.parseBoolean(otherSettings.getProperty("UseChatFilter", "false"));
- CHAT_FILTER_CHARS = otherSettings.getProperty("ChatFilterChars", "[I love L2jMobius]");
- CHAT_FILTER_PUNISHMENT = otherSettings.getProperty("ChatFilterPunishment", "off");
- CHAT_FILTER_PUNISHMENT_PARAM1 = Integer.parseInt(otherSettings.getProperty("ChatFilterPunishmentParam1", "1"));
- CHAT_FILTER_PUNISHMENT_PARAM2 = Integer.parseInt(otherSettings.getProperty("ChatFilterPunishmentParam2", "1000"));
-
- FS_TIME_ATTACK = Integer.parseInt(otherSettings.getProperty("TimeOfAttack", "50"));
- FS_TIME_COOLDOWN = Integer.parseInt(otherSettings.getProperty("TimeOfCoolDown", "5"));
- FS_TIME_ENTRY = Integer.parseInt(otherSettings.getProperty("TimeOfEntry", "3"));
- FS_TIME_WARMUP = Integer.parseInt(otherSettings.getProperty("TimeOfWarmUp", "2"));
- FS_PARTY_MEMBER_COUNT = Integer.parseInt(otherSettings.getProperty("NumberOfNecessaryPartyMembers", "4"));
-
- if (FS_TIME_ATTACK <= 0)
- {
- FS_TIME_ATTACK = 50;
- }
- if (FS_TIME_COOLDOWN <= 0)
- {
- FS_TIME_COOLDOWN = 5;
- }
- if (FS_TIME_ENTRY <= 0)
- {
- FS_TIME_ENTRY = 3;
- }
- if (FS_TIME_WARMUP <= 0)
- {
- FS_TIME_WARMUP = 2;
- }
- if (FS_PARTY_MEMBER_COUNT <= 0)
- {
- FS_PARTY_MEMBER_COUNT = 4;
- }
-
- ALLOW_QUAKE_SYSTEM = Boolean.parseBoolean(otherSettings.getProperty("AllowQuakeSystem", "false"));
- ENABLE_ANTI_PVP_FARM_MSG = Boolean.parseBoolean(otherSettings.getProperty("EnableAntiPvpFarmMsg", "false"));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw new Error("Failed to Load " + OTHER_CONFIG_FILE + " File.");
- }
- }
-
public static void loadRatesConfig()
{
try
@@ -1748,145 +1387,107 @@ public final class Config
}
}
- public static void loadAltConfig()
+ public static void loadGeneralConfig()
{
try
{
- final Properties altSettings = new Properties();
- final InputStream is = new FileInputStream(new File(ALT_SETTINGS_CONFIG_FILE));
- altSettings.load(is);
+ final Properties generalSettings = new Properties();
+ final InputStream is = new FileInputStream(new File(GENERAL_CONFIG_FILE));
+ generalSettings.load(is);
is.close();
- /* General Information */
- ALT_GAME_TIREDNESS = Boolean.parseBoolean(altSettings.getProperty("AltGameTiredness", "false"));
- ALT_WEIGHT_LIMIT = Double.parseDouble(altSettings.getProperty("AltWeightLimit", "1"));
- ALT_GAME_SKILL_LEARN = Boolean.parseBoolean(altSettings.getProperty("AltGameSkillLearn", "false"));
- AUTO_LEARN_SKILLS = Boolean.parseBoolean(altSettings.getProperty("AutoLearnSkills", "false"));
- ALT_GAME_CANCEL_BOW = altSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || altSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
- ALT_GAME_CANCEL_CAST = altSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || altSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
- ALT_GAME_SHIELD_BLOCKS = Boolean.parseBoolean(altSettings.getProperty("AltShieldBlocks", "false"));
- ALT_PERFECT_SHLD_BLOCK = Integer.parseInt(altSettings.getProperty("AltPerfectShieldBlockRate", "10"));
- ALT_GAME_DELEVEL = Boolean.parseBoolean(altSettings.getProperty("Delevel", "true"));
- ALT_GAME_MAGICFAILURES = Boolean.parseBoolean(altSettings.getProperty("MagicFailures", "false"));
- ALT_GAME_MOB_ATTACK_AI = Boolean.parseBoolean(altSettings.getProperty("AltGameMobAttackAI", "false"));
- ALT_MOB_AGRO_IN_PEACEZONE = Boolean.parseBoolean(altSettings.getProperty("AltMobAgroInPeaceZone", "true"));
- ALT_GAME_EXPONENT_XP = Float.parseFloat(altSettings.getProperty("AltGameExponentXp", "0."));
- ALT_GAME_EXPONENT_SP = Float.parseFloat(altSettings.getProperty("AltGameExponentSp", "0."));
- AUTO_LEARN_DIVINE_INSPIRATION = Boolean.parseBoolean(altSettings.getProperty("AutoLearnDivineInspiration", "false"));
- DIVINE_SP_BOOK_NEEDED = Boolean.parseBoolean(altSettings.getProperty("DivineInspirationSpBookNeeded", "true"));
- ALLOW_CLASS_MASTERS = Boolean.valueOf(altSettings.getProperty("AllowClassMasters", "false"));
- CLASS_MASTER_STRIDER_UPDATE = Boolean.valueOf(altSettings.getProperty("AllowClassMastersStriderUpdate", "false"));
- CLASS_MASTER_SETTINGS = new ClassMasterSettings(altSettings.getProperty("ConfigClassMaster"));
- ALLOW_REMOTE_CLASS_MASTERS = Boolean.valueOf(altSettings.getProperty("AllowRemoteClassMasters", "false"));
- ALLOW_CLASS_MASTERS_FIRST_CLASS = Boolean.valueOf(altSettings.getProperty("AllowClassMastersFirstClass", "true"));
- ALLOW_CLASS_MASTERS_SECOND_CLASS = Boolean.valueOf(altSettings.getProperty("AllowClassMastersSecondClass", "true"));
- ALLOW_CLASS_MASTERS_THIRD_CLASS = Boolean.valueOf(altSettings.getProperty("AllowClassMastersThirdClass", "true"));
+ SERVER_LIST_TESTSERVER = Boolean.parseBoolean(generalSettings.getProperty("TestServer", "false"));
+ SERVER_GMONLY = Boolean.valueOf(generalSettings.getProperty("ServerGMOnly", "false"));
+ ALT_DEV_NO_QUESTS = Boolean.parseBoolean(generalSettings.getProperty("AltDevNoQuests", "false"));
+ ALT_DEV_NO_SPAWNS = Boolean.parseBoolean(generalSettings.getProperty("AltDevNoSpawns", "false"));
+ ALT_DEV_NO_SCRIPT = Boolean.parseBoolean(generalSettings.getProperty("AltDevNoScript", "false"));
+ ALT_DEV_NO_RB = Boolean.parseBoolean(generalSettings.getProperty("AltDevNoRB", "false"));
- ALT_GAME_FREIGHTS = Boolean.parseBoolean(altSettings.getProperty("AltGameFreights", "false"));
- ALT_GAME_FREIGHT_PRICE = Integer.parseInt(altSettings.getProperty("AltGameFreightPrice", "1000"));
- ALT_PARTY_RANGE = Integer.parseInt(altSettings.getProperty("AltPartyRange", "1500"));
- REMOVE_CASTLE_CIRCLETS = Boolean.parseBoolean(altSettings.getProperty("RemoveCastleCirclets", "true"));
- LIFE_CRYSTAL_NEEDED = Boolean.parseBoolean(altSettings.getProperty("LifeCrystalNeeded", "true"));
- SP_BOOK_NEEDED = Boolean.parseBoolean(altSettings.getProperty("SpBookNeeded", "true"));
- ES_SP_BOOK_NEEDED = Boolean.parseBoolean(altSettings.getProperty("EnchantSkillSpBookNeeded", "true"));
- AUTO_LOOT = altSettings.getProperty("AutoLoot").equalsIgnoreCase("true");
- AUTO_LOOT_BOSS = altSettings.getProperty("AutoLootBoss").equalsIgnoreCase("true");
- AUTO_LOOT_HERBS = altSettings.getProperty("AutoLootHerbs").equalsIgnoreCase("true");
- ALT_GAME_FREE_TELEPORT = Boolean.parseBoolean(altSettings.getProperty("AltFreeTeleporting", "false"));
- ALT_RECOMMEND = Boolean.parseBoolean(altSettings.getProperty("AltRecommend", "false"));
- ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(altSettings.getProperty("AltSubClassWithoutQuests", "false"));
- ALT_RESTORE_EFFECTS_ON_SUBCLASS_CHANGE = Boolean.parseBoolean(altSettings.getProperty("AltRestoreEffectOnSub", "false"));
- ALT_GAME_VIEWNPC = Boolean.parseBoolean(altSettings.getProperty("AltGameViewNpc", "false"));
- ALT_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE = Boolean.parseBoolean(altSettings.getProperty("AltNewCharAlwaysIsNewbie", "false"));
- ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Boolean.parseBoolean(altSettings.getProperty("AltMembersCanWithdrawFromClanWH", "false"));
- ALT_MAX_NUM_OF_CLANS_IN_ALLY = Integer.parseInt(altSettings.getProperty("AltMaxNumOfClansInAlly", "3"));
+ GMAUDIT = Boolean.valueOf(generalSettings.getProperty("GMAudit", "false"));
+ LOG_CHAT = Boolean.valueOf(generalSettings.getProperty("LogChat", "false"));
+ LOG_ITEMS = Boolean.valueOf(generalSettings.getProperty("LogItems", "false"));
- ALT_CLAN_MEMBERS_FOR_WAR = Integer.parseInt(altSettings.getProperty("AltClanMembersForWar", "15"));
- ALT_CLAN_JOIN_DAYS = Integer.parseInt(altSettings.getProperty("DaysBeforeJoinAClan", "5"));
- ALT_CLAN_CREATE_DAYS = Integer.parseInt(altSettings.getProperty("DaysBeforeCreateAClan", "10"));
- ALT_CLAN_DISSOLVE_DAYS = Integer.parseInt(altSettings.getProperty("DaysToPassToDissolveAClan", "7"));
- ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = Integer.parseInt(altSettings.getProperty("DaysBeforeJoinAllyWhenLeaved", "1"));
- ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = Integer.parseInt(altSettings.getProperty("DaysBeforeJoinAllyWhenDismissed", "1"));
- ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = Integer.parseInt(altSettings.getProperty("DaysBeforeAcceptNewClanWhenDismissed", "1"));
- ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = Integer.parseInt(altSettings.getProperty("DaysBeforeCreateNewAllyWhenDissolved", "10"));
+ LAZY_CACHE = Boolean.valueOf(generalSettings.getProperty("LazyCache", "false"));
- ALT_MANOR_REFRESH_TIME = Integer.parseInt(altSettings.getProperty("AltManorRefreshTime", "20"));
- ALT_MANOR_REFRESH_MIN = Integer.parseInt(altSettings.getProperty("AltManorRefreshMin", "00"));
- ALT_MANOR_APPROVE_TIME = Integer.parseInt(altSettings.getProperty("AltManorApproveTime", "6"));
- ALT_MANOR_APPROVE_MIN = Integer.parseInt(altSettings.getProperty("AltManorApproveMin", "00"));
- ALT_MANOR_MAINTENANCE_PERIOD = Integer.parseInt(altSettings.getProperty("AltManorMaintenancePeriod", "360000"));
- ALT_MANOR_SAVE_ALL_ACTIONS = Boolean.parseBoolean(altSettings.getProperty("AltManorSaveAllActions", "false"));
- ALT_MANOR_SAVE_PERIOD_RATE = Integer.parseInt(altSettings.getProperty("AltManorSavePeriodRate", "2"));
+ REMOVE_CASTLE_CIRCLETS = Boolean.parseBoolean(generalSettings.getProperty("RemoveCastleCirclets", "true"));
+ ALT_GAME_VIEWNPC = Boolean.parseBoolean(generalSettings.getProperty("AltGameViewNpc", "false"));
+ ALT_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE = Boolean.parseBoolean(generalSettings.getProperty("AltNewCharAlwaysIsNewbie", "false"));
+ ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Boolean.parseBoolean(generalSettings.getProperty("AltMembersCanWithdrawFromClanWH", "false"));
+ ALT_MAX_NUM_OF_CLANS_IN_ALLY = Integer.parseInt(generalSettings.getProperty("AltMaxNumOfClansInAlly", "3"));
- ALT_LOTTERY_PRIZE = Integer.parseInt(altSettings.getProperty("AltLotteryPrize", "50000"));
- ALT_LOTTERY_TICKET_PRICE = Integer.parseInt(altSettings.getProperty("AltLotteryTicketPrice", "2000"));
- ALT_LOTTERY_5_NUMBER_RATE = Float.parseFloat(altSettings.getProperty("AltLottery5NumberRate", "0.6"));
- ALT_LOTTERY_4_NUMBER_RATE = Float.parseFloat(altSettings.getProperty("AltLottery4NumberRate", "0.2"));
- ALT_LOTTERY_3_NUMBER_RATE = Float.parseFloat(altSettings.getProperty("AltLottery3NumberRate", "0.2"));
- ALT_LOTTERY_2_AND_1_NUMBER_PRIZE = Integer.parseInt(altSettings.getProperty("AltLottery2and1NumberPrize", "200"));
+ ALT_CLAN_MEMBERS_FOR_WAR = Integer.parseInt(generalSettings.getProperty("AltClanMembersForWar", "15"));
+ ALT_CLAN_JOIN_DAYS = Integer.parseInt(generalSettings.getProperty("DaysBeforeJoinAClan", "5"));
+ ALT_CLAN_CREATE_DAYS = Integer.parseInt(generalSettings.getProperty("DaysBeforeCreateAClan", "10"));
+ ALT_CLAN_DISSOLVE_DAYS = Integer.parseInt(generalSettings.getProperty("DaysToPassToDissolveAClan", "7"));
+ ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = Integer.parseInt(generalSettings.getProperty("DaysBeforeJoinAllyWhenLeaved", "1"));
+ ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = Integer.parseInt(generalSettings.getProperty("DaysBeforeJoinAllyWhenDismissed", "1"));
+ ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = Integer.parseInt(generalSettings.getProperty("DaysBeforeAcceptNewClanWhenDismissed", "1"));
+ ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = Integer.parseInt(generalSettings.getProperty("DaysBeforeCreateNewAllyWhenDissolved", "10"));
- ALT_FISH_CHAMPIONSHIP_ENABLED = Boolean.parseBoolean(altSettings.getProperty("AltFishChampionshipEnabled", "true"));
- ALT_FISH_CHAMPIONSHIP_REWARD_ITEM = Integer.parseInt(altSettings.getProperty("AltFishChampionshipRewardItemId", "57"));
- ALT_FISH_CHAMPIONSHIP_REWARD_1 = Integer.parseInt(altSettings.getProperty("AltFishChampionshipReward1", "800000"));
- ALT_FISH_CHAMPIONSHIP_REWARD_2 = Integer.parseInt(altSettings.getProperty("AltFishChampionshipReward2", "500000"));
- ALT_FISH_CHAMPIONSHIP_REWARD_3 = Integer.parseInt(altSettings.getProperty("AltFishChampionshipReward3", "300000"));
- ALT_FISH_CHAMPIONSHIP_REWARD_4 = Integer.parseInt(altSettings.getProperty("AltFishChampionshipReward4", "200000"));
- ALT_FISH_CHAMPIONSHIP_REWARD_5 = Integer.parseInt(altSettings.getProperty("AltFishChampionshipReward5", "100000"));
+ ALT_MANOR_REFRESH_TIME = Integer.parseInt(generalSettings.getProperty("AltManorRefreshTime", "20"));
+ ALT_MANOR_REFRESH_MIN = Integer.parseInt(generalSettings.getProperty("AltManorRefreshMin", "00"));
+ ALT_MANOR_APPROVE_TIME = Integer.parseInt(generalSettings.getProperty("AltManorApproveTime", "6"));
+ ALT_MANOR_APPROVE_MIN = Integer.parseInt(generalSettings.getProperty("AltManorApproveMin", "00"));
+ ALT_MANOR_MAINTENANCE_PERIOD = Integer.parseInt(generalSettings.getProperty("AltManorMaintenancePeriod", "360000"));
+ ALT_MANOR_SAVE_ALL_ACTIONS = Boolean.parseBoolean(generalSettings.getProperty("AltManorSaveAllActions", "false"));
+ ALT_MANOR_SAVE_PERIOD_RATE = Integer.parseInt(generalSettings.getProperty("AltManorSavePeriodRate", "2"));
- BUFFS_MAX_AMOUNT = Byte.parseByte(altSettings.getProperty("MaxBuffAmount", "24"));
- DEBUFFS_MAX_AMOUNT = Byte.parseByte(altSettings.getProperty("MaxDebuffAmount", "6"));
+ ALT_LOTTERY_PRIZE = Integer.parseInt(generalSettings.getProperty("AltLotteryPrize", "50000"));
+ ALT_LOTTERY_TICKET_PRICE = Integer.parseInt(generalSettings.getProperty("AltLotteryTicketPrice", "2000"));
+ ALT_LOTTERY_5_NUMBER_RATE = Float.parseFloat(generalSettings.getProperty("AltLottery5NumberRate", "0.6"));
+ ALT_LOTTERY_4_NUMBER_RATE = Float.parseFloat(generalSettings.getProperty("AltLottery4NumberRate", "0.2"));
+ ALT_LOTTERY_3_NUMBER_RATE = Float.parseFloat(generalSettings.getProperty("AltLottery3NumberRate", "0.2"));
+ ALT_LOTTERY_2_AND_1_NUMBER_PRIZE = Integer.parseInt(generalSettings.getProperty("AltLottery2and1NumberPrize", "200"));
- // Dimensional Rift Config
- RIFT_MIN_PARTY_SIZE = Integer.parseInt(altSettings.getProperty("RiftMinPartySize", "5"));
- RIFT_MAX_JUMPS = Integer.parseInt(altSettings.getProperty("MaxRiftJumps", "4"));
- RIFT_SPAWN_DELAY = Integer.parseInt(altSettings.getProperty("RiftSpawnDelay", "10000"));
- RIFT_AUTO_JUMPS_TIME_MIN = Integer.parseInt(altSettings.getProperty("AutoJumpsDelayMin", "480"));
- RIFT_AUTO_JUMPS_TIME_MAX = Integer.parseInt(altSettings.getProperty("AutoJumpsDelayMax", "600"));
- RIFT_ENTER_COST_RECRUIT = Integer.parseInt(altSettings.getProperty("RecruitCost", "18"));
- RIFT_ENTER_COST_SOLDIER = Integer.parseInt(altSettings.getProperty("SoldierCost", "21"));
- RIFT_ENTER_COST_OFFICER = Integer.parseInt(altSettings.getProperty("OfficerCost", "24"));
- RIFT_ENTER_COST_CAPTAIN = Integer.parseInt(altSettings.getProperty("CaptainCost", "27"));
- RIFT_ENTER_COST_COMMANDER = Integer.parseInt(altSettings.getProperty("CommanderCost", "30"));
- RIFT_ENTER_COST_HERO = Integer.parseInt(altSettings.getProperty("HeroCost", "33"));
- RIFT_BOSS_ROOM_TIME_MUTIPLY = Float.parseFloat(altSettings.getProperty("BossRoomTimeMultiply", "1.5"));
+ ALT_FISH_CHAMPIONSHIP_ENABLED = Boolean.parseBoolean(generalSettings.getProperty("AltFishChampionshipEnabled", "true"));
+ ALT_FISH_CHAMPIONSHIP_REWARD_ITEM = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipRewardItemId", "57"));
+ ALT_FISH_CHAMPIONSHIP_REWARD_1 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward1", "800000"));
+ ALT_FISH_CHAMPIONSHIP_REWARD_2 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward2", "500000"));
+ ALT_FISH_CHAMPIONSHIP_REWARD_3 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward3", "300000"));
+ ALT_FISH_CHAMPIONSHIP_REWARD_4 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward4", "200000"));
+ ALT_FISH_CHAMPIONSHIP_REWARD_5 = Integer.parseInt(generalSettings.getProperty("AltFishChampionshipReward5", "100000"));
- // Destroy ss
- DONT_DESTROY_SS = Boolean.parseBoolean(altSettings.getProperty("DontDestroySS", "false"));
+ RIFT_MIN_PARTY_SIZE = Integer.parseInt(generalSettings.getProperty("RiftMinPartySize", "5"));
+ RIFT_MAX_JUMPS = Integer.parseInt(generalSettings.getProperty("MaxRiftJumps", "4"));
+ RIFT_SPAWN_DELAY = Integer.parseInt(generalSettings.getProperty("RiftSpawnDelay", "10000"));
+ RIFT_AUTO_JUMPS_TIME_MIN = Integer.parseInt(generalSettings.getProperty("AutoJumpsDelayMin", "480"));
+ RIFT_AUTO_JUMPS_TIME_MAX = Integer.parseInt(generalSettings.getProperty("AutoJumpsDelayMax", "600"));
+ RIFT_ENTER_COST_RECRUIT = Integer.parseInt(generalSettings.getProperty("RecruitCost", "18"));
+ RIFT_ENTER_COST_SOLDIER = Integer.parseInt(generalSettings.getProperty("SoldierCost", "21"));
+ RIFT_ENTER_COST_OFFICER = Integer.parseInt(generalSettings.getProperty("OfficerCost", "24"));
+ RIFT_ENTER_COST_CAPTAIN = Integer.parseInt(generalSettings.getProperty("CaptainCost", "27"));
+ RIFT_ENTER_COST_COMMANDER = Integer.parseInt(generalSettings.getProperty("CommanderCost", "30"));
+ RIFT_ENTER_COST_HERO = Integer.parseInt(generalSettings.getProperty("HeroCost", "33"));
+ RIFT_BOSS_ROOM_TIME_MUTIPLY = Float.parseFloat(generalSettings.getProperty("BossRoomTimeMultiply", "1.5"));
- // Max level newbie
- MAX_LEVEL_NEWBIE = Integer.parseInt(altSettings.getProperty("MaxLevelNewbie", "20"));
- // Level when Char lost Newbie status
- MAX_LEVEL_NEWBIE_STATUS = Integer.parseInt(altSettings.getProperty("MaxLevelNewbieStatus", "40"));
+ DONT_DESTROY_SS = Boolean.parseBoolean(generalSettings.getProperty("DontDestroySS", "false"));
- STANDARD_RESPAWN_DELAY = Integer.parseInt(altSettings.getProperty("StandardRespawnDelay", "180"));
- ALT_RECOMMENDATIONS_NUMBER = Integer.parseInt(altSettings.getProperty("AltMaxRecommendationNumber", "255"));
+ STANDARD_RESPAWN_DELAY = Integer.parseInt(generalSettings.getProperty("StandardRespawnDelay", "180"));
- RAID_RANKING_1ST = Integer.parseInt(altSettings.getProperty("1stRaidRankingPoints", "1250"));
- RAID_RANKING_2ND = Integer.parseInt(altSettings.getProperty("2ndRaidRankingPoints", "900"));
- RAID_RANKING_3RD = Integer.parseInt(altSettings.getProperty("3rdRaidRankingPoints", "700"));
- RAID_RANKING_4TH = Integer.parseInt(altSettings.getProperty("4thRaidRankingPoints", "600"));
- RAID_RANKING_5TH = Integer.parseInt(altSettings.getProperty("5thRaidRankingPoints", "450"));
- RAID_RANKING_6TH = Integer.parseInt(altSettings.getProperty("6thRaidRankingPoints", "350"));
- RAID_RANKING_7TH = Integer.parseInt(altSettings.getProperty("7thRaidRankingPoints", "300"));
- RAID_RANKING_8TH = Integer.parseInt(altSettings.getProperty("8thRaidRankingPoints", "200"));
- RAID_RANKING_9TH = Integer.parseInt(altSettings.getProperty("9thRaidRankingPoints", "150"));
- RAID_RANKING_10TH = Integer.parseInt(altSettings.getProperty("10thRaidRankingPoints", "100"));
- RAID_RANKING_UP_TO_50TH = Integer.parseInt(altSettings.getProperty("UpTo50thRaidRankingPoints", "25"));
- RAID_RANKING_UP_TO_100TH = Integer.parseInt(altSettings.getProperty("UpTo100thRaidRankingPoints", "12"));
+ RAID_RANKING_1ST = Integer.parseInt(generalSettings.getProperty("1stRaidRankingPoints", "1250"));
+ RAID_RANKING_2ND = Integer.parseInt(generalSettings.getProperty("2ndRaidRankingPoints", "900"));
+ RAID_RANKING_3RD = Integer.parseInt(generalSettings.getProperty("3rdRaidRankingPoints", "700"));
+ RAID_RANKING_4TH = Integer.parseInt(generalSettings.getProperty("4thRaidRankingPoints", "600"));
+ RAID_RANKING_5TH = Integer.parseInt(generalSettings.getProperty("5thRaidRankingPoints", "450"));
+ RAID_RANKING_6TH = Integer.parseInt(generalSettings.getProperty("6thRaidRankingPoints", "350"));
+ RAID_RANKING_7TH = Integer.parseInt(generalSettings.getProperty("7thRaidRankingPoints", "300"));
+ RAID_RANKING_8TH = Integer.parseInt(generalSettings.getProperty("8thRaidRankingPoints", "200"));
+ RAID_RANKING_9TH = Integer.parseInt(generalSettings.getProperty("9thRaidRankingPoints", "150"));
+ RAID_RANKING_10TH = Integer.parseInt(generalSettings.getProperty("10thRaidRankingPoints", "100"));
+ RAID_RANKING_UP_TO_50TH = Integer.parseInt(generalSettings.getProperty("UpTo50thRaidRankingPoints", "25"));
+ RAID_RANKING_UP_TO_100TH = Integer.parseInt(generalSettings.getProperty("UpTo100thRaidRankingPoints", "12"));
- DISABLE_TUTORIAL = Boolean.parseBoolean(altSettings.getProperty("DisableTutorial", "false"));
- EXPERTISE_PENALTY = Boolean.parseBoolean(altSettings.getProperty("ExpertisePenalty", "true"));
- MASTERY_PENALTY = Boolean.parseBoolean(altSettings.getProperty("MasteryPenalty", "false"));
- LEVEL_TO_GET_PENALTY = Integer.parseInt(altSettings.getProperty("LevelToGetPenalty", "20"));
+ EXPERTISE_PENALTY = Boolean.parseBoolean(generalSettings.getProperty("ExpertisePenalty", "true"));
+ MASTERY_PENALTY = Boolean.parseBoolean(generalSettings.getProperty("MasteryPenalty", "false"));
+ LEVEL_TO_GET_PENALTY = Integer.parseInt(generalSettings.getProperty("LevelToGetPenalty", "20"));
- MASTERY_WEAPON_PENALTY = Boolean.parseBoolean(altSettings.getProperty("MasteryWeaponPenality", "false"));
- LEVEL_TO_GET_WEAPON_PENALTY = Integer.parseInt(altSettings.getProperty("LevelToGetWeaponPenalty", "20"));
+ MASTERY_WEAPON_PENALTY = Boolean.parseBoolean(generalSettings.getProperty("MasteryWeaponPenality", "false"));
+ LEVEL_TO_GET_WEAPON_PENALTY = Integer.parseInt(generalSettings.getProperty("LevelToGetWeaponPenalty", "20"));
- /** augmentation start reuse time **/
- ACTIVE_AUGMENTS_START_REUSE_TIME = Integer.parseInt(altSettings.getProperty("AugmStartReuseTime", "0"));
+ ACTIVE_AUGMENTS_START_REUSE_TIME = Integer.parseInt(generalSettings.getProperty("AugmStartReuseTime", "0"));
INVUL_NPC_LIST = new ArrayList<>();
- final String t = altSettings.getProperty("InvulNpcList", "30001-32132,35092-35103,35142-35146,35176-35187,35218-35232,35261-35278,35308-35319,35352-35367,35382-35407,35417-35427,35433-35469,35497-35513,35544-35587,35600-35617,35623-35628,35638-35640,35644,35645,50007,70010,99999");
+ final String t = generalSettings.getProperty("InvulNpcList", "30001-32132,35092-35103,35142-35146,35176-35187,35218-35232,35261-35278,35308-35319,35352-35367,35382-35407,35417-35427,35433-35469,35497-35513,35544-35587,35600-35617,35623-35628,35638-35640,35644,35645,50007,70010,99999");
String as[];
final int k = (as = t.split(",")).length;
for (int j = 0; j < k; j++)
@@ -1906,29 +1507,224 @@ public final class Config
INVUL_NPC_LIST.add(Integer.valueOf(Integer.parseInt(t2)));
}
}
- DISABLE_ATTACK_NPC_TYPE = Boolean.parseBoolean(altSettings.getProperty("DisableAttackToNpcs", "false"));
- ALLOWED_NPC_TYPES = altSettings.getProperty("AllowedNPCTypes");
+ DISABLE_ATTACK_NPC_TYPE = Boolean.parseBoolean(generalSettings.getProperty("DisableAttackToNpcs", "false"));
+ ALLOWED_NPC_TYPES = generalSettings.getProperty("AllowedNPCTypes");
LIST_ALLOWED_NPC_TYPES = new ArrayList<>();
for (String npc_type : ALLOWED_NPC_TYPES.split(","))
{
LIST_ALLOWED_NPC_TYPES.add(npc_type);
}
- NPC_ATTACKABLE = Boolean.parseBoolean(altSettings.getProperty("NpcAttackable", "false"));
+ NPC_ATTACKABLE = Boolean.parseBoolean(generalSettings.getProperty("NpcAttackable", "false"));
- SELL_BY_ITEM = Boolean.parseBoolean(altSettings.getProperty("SellByItem", "false"));
- SELL_ITEM = Integer.parseInt(altSettings.getProperty("SellItem", "57"));
+ SELL_BY_ITEM = Boolean.parseBoolean(generalSettings.getProperty("SellByItem", "false"));
+ SELL_ITEM = Integer.parseInt(generalSettings.getProperty("SellItem", "57"));
- ALLOWED_SUBCLASS = Integer.parseInt(altSettings.getProperty("AllowedSubclass", "3"));
- BASE_SUBCLASS_LEVEL = Byte.parseByte(altSettings.getProperty("BaseSubclassLevel", "40"));
- MAX_SUBCLASS_LEVEL = Byte.parseByte(altSettings.getProperty("MaxSubclassLevel", "81"));
+ ALT_MOBS_STATS_BONUS = Boolean.parseBoolean(generalSettings.getProperty("AltMobsStatsBonus", "true"));
+ ALT_PETS_STATS_BONUS = Boolean.parseBoolean(generalSettings.getProperty("AltPetsStatsBonus", "true"));
- ALT_MOBS_STATS_BONUS = Boolean.parseBoolean(altSettings.getProperty("AltMobsStatsBonus", "true"));
- ALT_PETS_STATS_BONUS = Boolean.parseBoolean(altSettings.getProperty("AltPetsStatsBonus", "true"));
+ RAID_HP_REGEN_MULTIPLIER = Double.parseDouble(generalSettings.getProperty("RaidHpRegenMultiplier", "100")) / 100;
+ RAID_MP_REGEN_MULTIPLIER = Double.parseDouble(generalSettings.getProperty("RaidMpRegenMultiplier", "100")) / 100;
+ RAID_P_DEFENCE_MULTIPLIER = Double.parseDouble(generalSettings.getProperty("RaidPhysicalDefenceMultiplier", "100")) / 100;
+ RAID_M_DEFENCE_MULTIPLIER = Double.parseDouble(generalSettings.getProperty("RaidMagicalDefenceMultiplier", "100")) / 100;
+ RAID_MINION_RESPAWN_TIMER = Integer.parseInt(generalSettings.getProperty("RaidMinionRespawnTime", "300000"));
+ RAID_MIN_RESPAWN_MULTIPLIER = Float.parseFloat(generalSettings.getProperty("RaidMinRespawnMultiplier", "1.0"));
+ RAID_MAX_RESPAWN_MULTIPLIER = Float.parseFloat(generalSettings.getProperty("RaidMaxRespawnMultiplier", "1.0"));
+
+ CLICK_TASK = Integer.parseInt(generalSettings.getProperty("ClickTaskDelay", "50"));
+
+ WYVERN_SPEED = Integer.parseInt(generalSettings.getProperty("WyvernSpeed", "100"));
+ STRIDER_SPEED = Integer.parseInt(generalSettings.getProperty("StriderSpeed", "80"));
+ ALLOW_WYVERN_UPGRADER = Boolean.valueOf(generalSettings.getProperty("AllowWyvernUpgrader", "false"));
+
+ ENABLE_AIO_SYSTEM = Boolean.parseBoolean(generalSettings.getProperty("EnableAioSystem", "true"));
+ ALLOW_AIO_NCOLOR = Boolean.parseBoolean(generalSettings.getProperty("AllowAioNameColor", "true"));
+ AIO_NCOLOR = Integer.decode("0x" + generalSettings.getProperty("AioNameColor", "88AA88"));
+ ALLOW_AIO_TCOLOR = Boolean.parseBoolean(generalSettings.getProperty("AllowAioTitleColor", "true"));
+ AIO_TCOLOR = Integer.decode("0x" + generalSettings.getProperty("AioTitleColor", "88AA88"));
+ ALLOW_AIO_USE_GK = Boolean.parseBoolean(generalSettings.getProperty("AllowAioUseGk", "false"));
+ ALLOW_AIO_USE_CM = Boolean.parseBoolean(generalSettings.getProperty("AllowAioUseClassMaster", "false"));
+ ALLOW_AIO_IN_EVENTS = Boolean.parseBoolean(generalSettings.getProperty("AllowAioInEvents", "false"));
+ if (ENABLE_AIO_SYSTEM)
+ {
+ final String[] AioSkillsSplit = generalSettings.getProperty("AioSkills", "").split(";");
+ AIO_SKILLS = new HashMap<>(AioSkillsSplit.length);
+ for (String skill : AioSkillsSplit)
+ {
+ final String[] skillSplit = skill.split(",");
+ if (skillSplit.length != 2)
+ {
+ LOGGER.info("[Aio System]: invalid config property in " + GENERAL_CONFIG_FILE + " -> AioSkills \"" + skill + "\"");
+ }
+ else
+ {
+ try
+ {
+ AIO_SKILLS.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1]));
+ }
+ catch (NumberFormatException nfe)
+ {
+ if (!skill.equals(""))
+ {
+ LOGGER.info("[Aio System]: invalid config property in " + GENERAL_CONFIG_FILE + " -> AioSkills \"" + skillSplit[0] + "\"" + skillSplit[1]);
+ }
+ }
+ }
+ }
+ }
+
+ PET_RENT_NPC = generalSettings.getProperty("ListPetRentNpc", "30827");
+ LIST_PET_RENT_NPC = new ArrayList<>();
+ for (String id : PET_RENT_NPC.split(","))
+ {
+ LIST_PET_RENT_NPC.add(Integer.parseInt(id));
+ }
+ NONDROPPABLE_ITEMS = generalSettings.getProperty("ListOfNonDroppableItems", "1147,425,1146,461,10,2368,7,6,2370,2369,5598");
+
+ LIST_NONDROPPABLE_ITEMS = new ArrayList<>();
+ for (String id : NONDROPPABLE_ITEMS.split(","))
+ {
+ LIST_NONDROPPABLE_ITEMS.add(Integer.parseInt(id));
+ }
+
+ JAIL_IS_PVP = Boolean.valueOf(generalSettings.getProperty("JailIsPvp", "true"));
+ JAIL_DISABLE_CHAT = Boolean.valueOf(generalSettings.getProperty("JailDisableChat", "true"));
+
+ USE_SAY_FILTER = Boolean.parseBoolean(generalSettings.getProperty("UseChatFilter", "false"));
+ CHAT_FILTER_CHARS = generalSettings.getProperty("ChatFilterChars", "[I love L2jMobius]");
+ CHAT_FILTER_PUNISHMENT = generalSettings.getProperty("ChatFilterPunishment", "off");
+ CHAT_FILTER_PUNISHMENT_PARAM1 = Integer.parseInt(generalSettings.getProperty("ChatFilterPunishmentParam1", "1"));
+ CHAT_FILTER_PUNISHMENT_PARAM2 = Integer.parseInt(generalSettings.getProperty("ChatFilterPunishmentParam2", "1000"));
+
+ FS_TIME_ATTACK = Integer.parseInt(generalSettings.getProperty("TimeOfAttack", "50"));
+ FS_TIME_COOLDOWN = Integer.parseInt(generalSettings.getProperty("TimeOfCoolDown", "5"));
+ FS_TIME_ENTRY = Integer.parseInt(generalSettings.getProperty("TimeOfEntry", "3"));
+ FS_TIME_WARMUP = Integer.parseInt(generalSettings.getProperty("TimeOfWarmUp", "2"));
+ FS_PARTY_MEMBER_COUNT = Integer.parseInt(generalSettings.getProperty("NumberOfNecessaryPartyMembers", "4"));
+
+ if (FS_TIME_ATTACK <= 0)
+ {
+ FS_TIME_ATTACK = 50;
+ }
+ if (FS_TIME_COOLDOWN <= 0)
+ {
+ FS_TIME_COOLDOWN = 5;
+ }
+ if (FS_TIME_ENTRY <= 0)
+ {
+ FS_TIME_ENTRY = 3;
+ }
+ if (FS_TIME_WARMUP <= 0)
+ {
+ FS_TIME_WARMUP = 2;
+ }
+ if (FS_PARTY_MEMBER_COUNT <= 0)
+ {
+ FS_PARTY_MEMBER_COUNT = 4;
+ }
+
+ ALLOW_QUAKE_SYSTEM = Boolean.parseBoolean(generalSettings.getProperty("AllowQuakeSystem", "false"));
+ ENABLE_ANTI_PVP_FARM_MSG = Boolean.parseBoolean(generalSettings.getProperty("EnableAntiPvpFarmMsg", "false"));
+
+ ANNOUNCE_CASTLE_LORDS = Boolean.parseBoolean(generalSettings.getProperty("AnnounceCastleLords", "false"));
+ ANNOUNCE_MAMMON_SPAWN = Boolean.parseBoolean(generalSettings.getProperty("AnnounceMammonSpawn", "true"));
+ ALLOW_GUARDS = Boolean.valueOf(generalSettings.getProperty("AllowGuards", "false"));
+
+ AUTODESTROY_ITEM_AFTER = Integer.parseInt(generalSettings.getProperty("AutoDestroyDroppedItemAfter", "0"));
+ HERB_AUTO_DESTROY_TIME = Integer.parseInt(generalSettings.getProperty("AutoDestroyHerbTime", "15")) * 1000;
+ PROTECTED_ITEMS = generalSettings.getProperty("ListOfProtectedItems");
+ LIST_PROTECTED_ITEMS = new ArrayList<>();
+ for (String id : PROTECTED_ITEMS.split(","))
+ {
+ LIST_PROTECTED_ITEMS.add(Integer.parseInt(id));
+ }
+ DESTROY_DROPPED_PLAYER_ITEM = Boolean.valueOf(generalSettings.getProperty("DestroyPlayerDroppedItem", "false"));
+ DESTROY_EQUIPABLE_PLAYER_ITEM = Boolean.valueOf(generalSettings.getProperty("DestroyEquipableItem", "false"));
+ SAVE_DROPPED_ITEM = Boolean.valueOf(generalSettings.getProperty("SaveDroppedItem", "false"));
+ EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD = Boolean.valueOf(generalSettings.getProperty("EmptyDroppedItemTableAfterLoad", "false"));
+ SAVE_DROPPED_ITEM_INTERVAL = Integer.parseInt(generalSettings.getProperty("SaveDroppedItemInterval", "0")) * 60000;
+ CLEAR_DROPPED_ITEM_TABLE = Boolean.valueOf(generalSettings.getProperty("ClearDroppedItemTable", "false"));
+
+ PRECISE_DROP_CALCULATION = Boolean.valueOf(generalSettings.getProperty("PreciseDropCalculation", "true"));
+ MULTIPLE_ITEM_DROP = Boolean.valueOf(generalSettings.getProperty("MultipleItemDrop", "true"));
+
+ ALLOW_WAREHOUSE = Boolean.valueOf(generalSettings.getProperty("AllowWarehouse", "true"));
+ WAREHOUSE_CACHE = Boolean.valueOf(generalSettings.getProperty("WarehouseCache", "false"));
+ WAREHOUSE_CACHE_TIME = Integer.parseInt(generalSettings.getProperty("WarehouseCacheTime", "15"));
+ ALLOW_FREIGHT = Boolean.valueOf(generalSettings.getProperty("AllowFreight", "true"));
+ ALLOW_WEAR = Boolean.valueOf(generalSettings.getProperty("AllowWear", "false"));
+ WEAR_DELAY = Integer.parseInt(generalSettings.getProperty("WearDelay", "5"));
+ WEAR_PRICE = Integer.parseInt(generalSettings.getProperty("WearPrice", "10"));
+ ALLOW_LOTTERY = Boolean.valueOf(generalSettings.getProperty("AllowLottery", "false"));
+ ALLOW_RACE = Boolean.valueOf(generalSettings.getProperty("AllowRace", "false"));
+ ALLOW_RENTPET = Boolean.valueOf(generalSettings.getProperty("AllowRentPet", "false"));
+ ALLOW_DISCARDITEM = Boolean.valueOf(generalSettings.getProperty("AllowDiscardItem", "true"));
+ ALLOWFISHING = Boolean.valueOf(generalSettings.getProperty("AllowFishing", "false"));
+ ALLOW_MANOR = Boolean.parseBoolean(generalSettings.getProperty("AllowManor", "false"));
+ ALLOW_BOAT = Boolean.valueOf(generalSettings.getProperty("AllowBoat", "false"));
+ ALLOW_NPC_WALKERS = Boolean.valueOf(generalSettings.getProperty("AllowNpcWalkers", "true"));
+ ALLOW_CURSED_WEAPONS = Boolean.valueOf(generalSettings.getProperty("AllowCursedWeapons", "false"));
+
+ DEFAULT_GLOBAL_CHAT = generalSettings.getProperty("GlobalChat", "ON");
+ DEFAULT_TRADE_CHAT = generalSettings.getProperty("TradeChat", "ON");
+ MAX_CHAT_LENGTH = Integer.parseInt(generalSettings.getProperty("MaxChatLength", "100"));
+
+ TRADE_CHAT_IS_NOOBLE = Boolean.valueOf(generalSettings.getProperty("TradeChatIsNooble", "false"));
+ TRADE_CHAT_WITH_PVP = Boolean.valueOf(generalSettings.getProperty("TradeChatWithPvP", "false"));
+ TRADE_PVP_AMOUNT = Integer.parseInt(generalSettings.getProperty("TradePvPAmount", "800"));
+ GLOBAL_CHAT_WITH_PVP = Boolean.valueOf(generalSettings.getProperty("GlobalChatWithPvP", "false"));
+ GLOBAL_PVP_AMOUNT = Integer.parseInt(generalSettings.getProperty("GlobalPvPAmount", "1500"));
+
+ ENABLE_COMMUNITY_BOARD = Boolean.valueOf(generalSettings.getProperty("EnableCommunityBoard", "true"));
+ BBS_DEFAULT = generalSettings.getProperty("BBSDefault", "_bbshome");
+
+ ZONE_TOWN = Integer.parseInt(generalSettings.getProperty("ZoneTown", "0"));
+
+ MAX_DRIFT_RANGE = Integer.parseInt(generalSettings.getProperty("MaxDriftRange", "300"));
+
+ MIN_NPC_ANIMATION = Integer.parseInt(generalSettings.getProperty("MinNpcAnimation", "5"));
+ MAX_NPC_ANIMATION = Integer.parseInt(generalSettings.getProperty("MaxNpcAnimation", "60"));
+ MIN_MONSTER_ANIMATION = Integer.parseInt(generalSettings.getProperty("MinMonsterAnimation", "5"));
+ MAX_MONSTER_ANIMATION = Integer.parseInt(generalSettings.getProperty("MaxMonsterAnimation", "60"));
+
+ SHOW_NPC_LVL = Boolean.valueOf(generalSettings.getProperty("ShowNpcLevel", "false"));
+
+ FORCE_INVENTORY_UPDATE = Boolean.valueOf(generalSettings.getProperty("ForceInventoryUpdate", "false"));
+
+ FORCE_COMPLETE_STATUS_UPDATE = Boolean.valueOf(generalSettings.getProperty("ForceCompletePlayerStatusUpdate", "true"));
+
+ AUTODELETE_INVALID_QUEST_DATA = Boolean.valueOf(generalSettings.getProperty("AutoDeleteInvalidQuestData", "false"));
+
+ DELETE_DAYS = Integer.parseInt(generalSettings.getProperty("DeleteCharAfterDays", "7"));
+
+ DEFAULT_PUNISH = Integer.parseInt(generalSettings.getProperty("DefaultPunish", "2"));
+ DEFAULT_PUNISH_PARAM = Integer.parseInt(generalSettings.getProperty("DefaultPunishParam", "0"));
+
+ GRIDS_ALWAYS_ON = Boolean.parseBoolean(generalSettings.getProperty("GridsAlwaysOn", "false"));
+ GRID_NEIGHBOR_TURNON_TIME = Integer.parseInt(generalSettings.getProperty("GridNeighborTurnOnTime", "30"));
+ GRID_NEIGHBOR_TURNOFF_TIME = Integer.parseInt(generalSettings.getProperty("GridNeighborTurnOffTime", "300"));
+
+ USE_3D_MAP = Boolean.valueOf(generalSettings.getProperty("Use3DMap", "false"));
+
+ PATH_NODE_RADIUS = Integer.parseInt(generalSettings.getProperty("PathNodeRadius", "50"));
+ NEW_NODE_ID = Integer.parseInt(generalSettings.getProperty("NewNodeId", "7952"));
+ SELECTED_NODE_ID = Integer.parseInt(generalSettings.getProperty("NewNodeId", "7952"));
+ LINKED_NODE_ID = Integer.parseInt(generalSettings.getProperty("NewNodeId", "7952"));
+ NEW_NODE_TYPE = generalSettings.getProperty("NewNodeType", "npc");
+
+ COUNT_PACKETS = Boolean.valueOf(generalSettings.getProperty("CountPacket", "false"));
+ DUMP_PACKET_COUNTS = Boolean.valueOf(generalSettings.getProperty("DumpPacketCounts", "false"));
+ DUMP_INTERVAL_SECONDS = Integer.parseInt(generalSettings.getProperty("PacketDumpInterval", "60"));
+
+ MINIMUM_UPDATE_DISTANCE = Integer.parseInt(generalSettings.getProperty("MaximumUpdateDistance", "50"));
+ MINIMUN_UPDATE_TIME = Integer.parseInt(generalSettings.getProperty("MinimumUpdateTime", "500"));
+ KNOWNLIST_FORGET_DELAY = Integer.parseInt(generalSettings.getProperty("KnownListForgetDelay", "10000"));
+
+ HIGH_RATE_SERVER_DROPS = Boolean.valueOf(generalSettings.getProperty("HighRateServerDrops", "false"));
}
catch (Exception e)
{
e.printStackTrace();
- throw new Error("Failed to Load " + ALT_SETTINGS_CONFIG_FILE + " File.");
+ throw new Error("Failed to Load " + GENERAL_CONFIG_FILE + " File.");
}
}
@@ -2238,60 +2034,6 @@ public final class Config
}
}
- public static void loadDevConfig()
- {
- try
- {
- final Properties devSettings = new Properties();
- final InputStream is = new FileInputStream(new File(DEVELOPER_CONFIG_FILE));
- devSettings.load(is);
- is.close();
-
- ASSERT = Boolean.parseBoolean(devSettings.getProperty("Assert", "false"));
- SERVER_LIST_TESTSERVER = Boolean.parseBoolean(devSettings.getProperty("TestServer", "false"));
- BETASERVER = Boolean.parseBoolean(devSettings.getProperty("BetaServer", "false"));
- SERVER_LIST_BRACKET = Boolean.valueOf(devSettings.getProperty("ServerListBrackets", "false"));
- SERVER_LIST_CLOCK = Boolean.valueOf(devSettings.getProperty("ServerListClock", "false"));
- SERVER_GMONLY = Boolean.valueOf(devSettings.getProperty("ServerGMOnly", "false"));
- ALT_DEV_NO_QUESTS = Boolean.parseBoolean(devSettings.getProperty("AltDevNoQuests", "false"));
- ALT_DEV_NO_SPAWNS = Boolean.parseBoolean(devSettings.getProperty("AltDevNoSpawns", "false"));
- ALT_DEV_NO_SCRIPT = Boolean.parseBoolean(devSettings.getProperty("AltDevNoScript", "false"));
- ALT_DEV_NO_RB = Boolean.parseBoolean(devSettings.getProperty("AltDevNoRB", "false"));
-
- REQUEST_ID = Integer.parseInt(devSettings.getProperty("RequestServerID", "0"));
- ACCEPT_ALTERNATE_ID = Boolean.parseBoolean(devSettings.getProperty("AcceptAlternateID", "true"));
-
- CNAME_TEMPLATE = devSettings.getProperty("CnameTemplate", ".*");
- PET_NAME_TEMPLATE = devSettings.getProperty("PetNameTemplate", ".*");
- CLAN_NAME_TEMPLATE = devSettings.getProperty("ClanNameTemplate", ".*");
- ALLY_NAME_TEMPLATE = devSettings.getProperty("AllyNameTemplate", ".*");
- MAX_CHARACTERS_NUMBER_PER_ACCOUNT = Integer.parseInt(devSettings.getProperty("CharMaxNumber", "0"));
-
- MAXIMUM_ONLINE_USERS = Integer.parseInt(devSettings.getProperty("MaximumOnlineUsers", "100"));
-
- MIN_PROTOCOL_REVISION = Integer.parseInt(devSettings.getProperty("MinProtocolRevision", "660"));
- MAX_PROTOCOL_REVISION = Integer.parseInt(devSettings.getProperty("MaxProtocolRevision", "665"));
- if (MIN_PROTOCOL_REVISION > MAX_PROTOCOL_REVISION)
- {
- throw new Error("MinProtocolRevision is bigger than MaxProtocolRevision in server configuration file.");
- }
-
- GMAUDIT = Boolean.valueOf(devSettings.getProperty("GMAudit", "false"));
- LOG_CHAT = Boolean.valueOf(devSettings.getProperty("LogChat", "false"));
- LOG_ITEMS = Boolean.valueOf(devSettings.getProperty("LogItems", "false"));
-
- SCHEDULED_THREAD_POOL_COUNT = Integer.parseInt(devSettings.getProperty("ScheduledThreadPoolCount", "40"));
- INSTANT_THREAD_POOL_COUNT = Integer.parseInt(devSettings.getProperty("InstantThreadPoolCount", "20"));
-
- LAZY_CACHE = Boolean.valueOf(devSettings.getProperty("LazyCache", "false"));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw new Error("Failed to Load " + DEVELOPER_CONFIG_FILE + " File.");
- }
- }
-
public static void loadCraftConfig()
{
try
@@ -2502,7 +2244,7 @@ public final class Config
try
{
final Properties CustomServerSettings = new Properties();
- final InputStream is = new FileInputStream(new File(CUSTOM_SERVER_CONFIG_FILE));
+ final InputStream is = new FileInputStream(new File(OTHER_CONFIG_FILE));
CustomServerSettings.load(is);
is.close();
@@ -2623,7 +2365,7 @@ public final class Config
catch (Exception e)
{
e.printStackTrace();
- throw new Error("Failed to Load " + CUSTOM_SERVER_CONFIG_FILE + " File.");
+ throw new Error("Failed to Load " + OTHER_CONFIG_FILE + " File.");
}
}
@@ -3347,7 +3089,7 @@ public final class Config
try
{
final Properties bossSettings = new Properties();
- final InputStream is = new FileInputStream(new File(BOSS_CONFIG_FILE));
+ final InputStream is = new FileInputStream(new File(RAIDBOSS_CONFIG_FILE));
bossSettings.load(is);
is.close();
@@ -3532,7 +3274,193 @@ public final class Config
catch (Exception e)
{
e.printStackTrace();
- throw new Error("Failed to Load " + BOSS_CONFIG_FILE + " File.");
+ throw new Error("Failed to Load " + RAIDBOSS_CONFIG_FILE + " File.");
+ }
+ }
+
+ public static void loadCharacterConfig()
+ {
+ try
+ {
+ final L2Properties characterSettings = new L2Properties(CHARACTER_CONFIG_FILE);
+
+ AUTO_LOOT = characterSettings.getProperty("AutoLoot").equalsIgnoreCase("true");
+ AUTO_LOOT_HERBS = characterSettings.getProperty("AutoLootHerbs").equalsIgnoreCase("true");
+ AUTO_LOOT_BOSS = characterSettings.getProperty("AutoLootBoss").equalsIgnoreCase("true");
+ AUTO_LEARN_SKILLS = Boolean.parseBoolean(characterSettings.getProperty("AutoLearnSkills", "false"));
+ AUTO_LEARN_DIVINE_INSPIRATION = Boolean.parseBoolean(characterSettings.getProperty("AutoLearnDivineInspiration", "false"));
+ LIFE_CRYSTAL_NEEDED = Boolean.parseBoolean(characterSettings.getProperty("LifeCrystalNeeded", "true"));
+ SP_BOOK_NEEDED = Boolean.parseBoolean(characterSettings.getProperty("SpBookNeeded", "true"));
+ ES_SP_BOOK_NEEDED = Boolean.parseBoolean(characterSettings.getProperty("EnchantSkillSpBookNeeded", "true"));
+ DIVINE_SP_BOOK_NEEDED = Boolean.parseBoolean(characterSettings.getProperty("DivineInspirationSpBookNeeded", "true"));
+ ALT_GAME_SKILL_LEARN = Boolean.parseBoolean(characterSettings.getProperty("AltGameSkillLearn", "false"));
+ ALLOWED_SUBCLASS = Integer.parseInt(characterSettings.getProperty("AllowedSubclass", "3"));
+ BASE_SUBCLASS_LEVEL = Byte.parseByte(characterSettings.getProperty("BaseSubclassLevel", "40"));
+ MAX_SUBCLASS_LEVEL = Byte.parseByte(characterSettings.getProperty("MaxSubclassLevel", "81"));
+ ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(characterSettings.getProperty("AltSubClassWithoutQuests", "false"));
+ ALT_RESTORE_EFFECTS_ON_SUBCLASS_CHANGE = Boolean.parseBoolean(characterSettings.getProperty("AltRestoreEffectOnSub", "false"));
+ ALT_PARTY_RANGE = Integer.parseInt(characterSettings.getProperty("AltPartyRange", "1500"));
+ ALT_WEIGHT_LIMIT = Double.parseDouble(characterSettings.getProperty("AltWeightLimit", "1"));
+ ALT_GAME_DELEVEL = Boolean.parseBoolean(characterSettings.getProperty("Delevel", "true"));
+ ALT_GAME_MAGICFAILURES = Boolean.parseBoolean(characterSettings.getProperty("MagicFailures", "false"));
+ ALT_GAME_CANCEL_CAST = characterSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || characterSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
+ ALT_GAME_CANCEL_BOW = characterSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || characterSettings.getProperty("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
+ ALT_GAME_SHIELD_BLOCKS = Boolean.parseBoolean(characterSettings.getProperty("AltShieldBlocks", "false"));
+ ALT_PERFECT_SHLD_BLOCK = Integer.parseInt(characterSettings.getProperty("AltPerfectShieldBlockRate", "10"));
+ ALT_GAME_MOB_ATTACK_AI = Boolean.parseBoolean(characterSettings.getProperty("AltGameMobAttackAI", "false"));
+ ALT_MOB_AGRO_IN_PEACEZONE = Boolean.parseBoolean(characterSettings.getProperty("AltMobAgroInPeaceZone", "true"));
+ ALT_GAME_FREIGHTS = Boolean.parseBoolean(characterSettings.getProperty("AltGameFreights", "false"));
+ ALT_GAME_FREIGHT_PRICE = Integer.parseInt(characterSettings.getProperty("AltGameFreightPrice", "1000"));
+ ALT_GAME_EXPONENT_XP = Float.parseFloat(characterSettings.getProperty("AltGameExponentXp", "0."));
+ ALT_GAME_EXPONENT_SP = Float.parseFloat(characterSettings.getProperty("AltGameExponentSp", "0."));
+ ALT_GAME_TIREDNESS = Boolean.parseBoolean(characterSettings.getProperty("AltGameTiredness", "false"));
+ ALT_GAME_FREE_TELEPORT = Boolean.parseBoolean(characterSettings.getProperty("AltFreeTeleporting", "false"));
+ ALT_RECOMMEND = Boolean.parseBoolean(characterSettings.getProperty("AltRecommend", "false"));
+ ALT_RECOMMENDATIONS_NUMBER = Integer.parseInt(characterSettings.getProperty("AltMaxRecommendationNumber", "255"));
+ MAX_CHARACTERS_NUMBER_PER_ACCOUNT = Integer.parseInt(characterSettings.getProperty("CharMaxNumber", "0"));
+ MAX_LEVEL_NEWBIE = Integer.parseInt(characterSettings.getProperty("MaxLevelNewbie", "20"));
+ MAX_LEVEL_NEWBIE_STATUS = Integer.parseInt(characterSettings.getProperty("MaxLevelNewbieStatus", "40"));
+ DISABLE_TUTORIAL = Boolean.parseBoolean(characterSettings.getProperty("DisableTutorial", "false"));
+ STARTING_ADENA = Integer.parseInt(characterSettings.getProperty("StartingAdena", "100"));
+ STARTING_AA = Integer.parseInt(characterSettings.getProperty("StartingAncientAdena", "0"));
+ CUSTOM_STARTER_ITEMS_ENABLED = Boolean.parseBoolean(characterSettings.getProperty("CustomStarterItemsEnabled", "false"));
+ if (CUSTOM_STARTER_ITEMS_ENABLED)
+ {
+ STARTING_CUSTOM_ITEMS_M.clear();
+ String[] propertySplit = characterSettings.getProperty("StartingCustomItemsMage", "57,0").split(";");
+ for (String reward : propertySplit)
+ {
+ final String[] rewardSplit = reward.split(",");
+ if (rewardSplit.length != 2)
+ {
+ LOGGER.warning("StartingCustomItemsMage[Config.load()]: invalid config property -> StartingCustomItemsMage \"" + reward + "\"");
+ }
+ else
+ {
+ try
+ {
+ STARTING_CUSTOM_ITEMS_M.add(new int[]
+ {
+ Integer.parseInt(rewardSplit[0]),
+ Integer.parseInt(rewardSplit[1])
+ });
+ }
+ catch (NumberFormatException nfe)
+ {
+ if (!reward.isEmpty())
+ {
+ LOGGER.warning("StartingCustomItemsMage[Config.load()]: invalid config property -> StartingCustomItemsMage \"" + reward + "\"");
+ }
+ }
+ }
+ }
+
+ STARTING_CUSTOM_ITEMS_F.clear();
+ propertySplit = characterSettings.getProperty("StartingCustomItemsFighter", "57,0").split(";");
+ for (String reward : propertySplit)
+ {
+ final String[] rewardSplit = reward.split(",");
+ if (rewardSplit.length != 2)
+ {
+ LOGGER.warning("StartingCustomItemsFighter[Config.load()]: invalid config property -> StartingCustomItemsFighter \"" + reward + "\"");
+ }
+ else
+ {
+ try
+ {
+ STARTING_CUSTOM_ITEMS_F.add(new int[]
+ {
+ Integer.parseInt(rewardSplit[0]),
+ Integer.parseInt(rewardSplit[1])
+ });
+ }
+ catch (NumberFormatException nfe)
+ {
+ if (!reward.isEmpty())
+ {
+ LOGGER.warning("StartingCustomItemsFighter[Config.load()]: invalid config property -> StartingCustomItemsFighter \"" + reward + "\"");
+ }
+ }
+ }
+ }
+ }
+ INVENTORY_MAXIMUM_NO_DWARF = Integer.parseInt(characterSettings.getProperty("MaximumSlotsForNoDwarf", "80"));
+ INVENTORY_MAXIMUM_DWARF = Integer.parseInt(characterSettings.getProperty("MaximumSlotsForDwarf", "100"));
+ INVENTORY_MAXIMUM_GM = Integer.parseInt(characterSettings.getProperty("MaximumSlotsForGMPlayer", "250"));
+ MAX_ITEM_IN_PACKET = Math.max(INVENTORY_MAXIMUM_NO_DWARF, Math.max(INVENTORY_MAXIMUM_DWARF, INVENTORY_MAXIMUM_GM));
+ WAREHOUSE_SLOTS_DWARF = Integer.parseInt(characterSettings.getProperty("MaximumWarehouseSlotsForDwarf", "120"));
+ WAREHOUSE_SLOTS_NO_DWARF = Integer.parseInt(characterSettings.getProperty("MaximumWarehouseSlotsForNoDwarf", "100"));
+ WAREHOUSE_SLOTS_CLAN = Integer.parseInt(characterSettings.getProperty("MaximumWarehouseSlotsForClan", "150"));
+ FREIGHT_SLOTS = Integer.parseInt(characterSettings.getProperty("MaximumFreightSlots", "20"));
+ MAX_PVTSTORE_SLOTS_DWARF = Integer.parseInt(characterSettings.getProperty("MaxPvtStoreSlotsDwarf", "5"));
+ MAX_PVTSTORE_SLOTS_OTHER = Integer.parseInt(characterSettings.getProperty("MaxPvtStoreSlotsOther", "4"));
+ HP_REGEN_MULTIPLIER = Double.parseDouble(characterSettings.getProperty("HpRegenMultiplier", "100")) / 100;
+ MP_REGEN_MULTIPLIER = Double.parseDouble(characterSettings.getProperty("MpRegenMultiplier", "100")) / 100;
+ CP_REGEN_MULTIPLIER = Double.parseDouble(characterSettings.getProperty("CpRegenMultiplier", "100")) / 100;
+ ENABLE_KEYBOARD_MOVEMENT = Boolean.parseBoolean(characterSettings.getProperty("KeyboardMovement", "true"));
+ UNSTUCK_INTERVAL = Integer.parseInt(characterSettings.getProperty("UnstuckInterval", "300"));
+ PLAYER_SPAWN_PROTECTION = Integer.parseInt(characterSettings.getProperty("PlayerSpawnProtection", "0"));
+ PLAYER_TELEPORT_PROTECTION = Integer.parseInt(characterSettings.getProperty("PlayerTeleportProtection", "0"));
+ PLAYER_FAKEDEATH_UP_PROTECTION = Integer.parseInt(characterSettings.getProperty("PlayerFakeDeathUpProtection", "0"));
+ DEEPBLUE_DROP_RULES = Boolean.parseBoolean(characterSettings.getProperty("UseDeepBlueDropRules", "true"));
+ PARTY_XP_CUTOFF_METHOD = characterSettings.getProperty("PartyXpCutoffMethod", "percentage");
+ PARTY_XP_CUTOFF_PERCENT = Double.parseDouble(characterSettings.getProperty("PartyXpCutoffPercent", "3."));
+ PARTY_XP_CUTOFF_LEVEL = Integer.parseInt(characterSettings.getProperty("PartyXpCutoffLevel", "30"));
+ RESPAWN_RESTORE_CP = Double.parseDouble(characterSettings.getProperty("RespawnRestoreCP", "0")) / 100;
+ RESPAWN_RESTORE_HP = Double.parseDouble(characterSettings.getProperty("RespawnRestoreHP", "70")) / 100;
+ RESPAWN_RESTORE_MP = Double.parseDouble(characterSettings.getProperty("RespawnRestoreMP", "70")) / 100;
+ RESPAWN_RANDOM_ENABLED = Boolean.parseBoolean(characterSettings.getProperty("RespawnRandomInTown", "false"));
+ RESPAWN_RANDOM_MAX_OFFSET = Integer.parseInt(characterSettings.getProperty("RespawnRandomMaxOffset", "50"));
+ PETITIONING_ALLOWED = Boolean.parseBoolean(characterSettings.getProperty("PetitioningAllowed", "true"));
+ MAX_PETITIONS_PER_PLAYER = Integer.parseInt(characterSettings.getProperty("MaxPetitionsPerPlayer", "5"));
+ MAX_PETITIONS_PENDING = Integer.parseInt(characterSettings.getProperty("MaxPetitionsPending", "25"));
+ DEATH_PENALTY_CHANCE = Integer.parseInt(characterSettings.getProperty("DeathPenaltyChance", "20"));
+ EFFECT_CANCELING = Boolean.valueOf(characterSettings.getProperty("CancelLesserEffect", "true"));
+ STORE_SKILL_COOLTIME = Boolean.parseBoolean(characterSettings.getProperty("StoreSkillCooltime", "true"));
+ BUFFS_MAX_AMOUNT = Byte.parseByte(characterSettings.getProperty("MaxBuffAmount", "24"));
+ DEBUFFS_MAX_AMOUNT = Byte.parseByte(characterSettings.getProperty("MaxDebuffAmount", "6"));
+ ENABLE_MODIFY_SKILL_DURATION = Boolean.parseBoolean(characterSettings.getProperty("EnableModifySkillDuration", "false"));
+ if (ENABLE_MODIFY_SKILL_DURATION)
+ {
+ SKILL_DURATION_LIST = new HashMap<>();
+
+ String[] propertySplit;
+ propertySplit = characterSettings.getProperty("SkillDurationList", "").split(";");
+
+ for (String skill : propertySplit)
+ {
+ final String[] skillSplit = skill.split(",");
+ if (skillSplit.length != 2)
+ {
+ LOGGER.info("[SkillDurationList]: invalid config property -> SkillDurationList \"" + skill + "\"");
+ }
+ else
+ {
+ try
+ {
+ SKILL_DURATION_LIST.put(Integer.parseInt(skillSplit[0]), Integer.parseInt(skillSplit[1]));
+ }
+ catch (NumberFormatException nfe)
+ {
+ if (!skill.equals(""))
+ {
+ LOGGER.info("[SkillDurationList]: invalid config property -> SkillList \"" + skillSplit[0] + "\"" + skillSplit[1]);
+ }
+ }
+ }
+ }
+ }
+ ALLOW_CLASS_MASTERS = Boolean.valueOf(characterSettings.getProperty("AllowClassMasters", "false"));
+ CLASS_MASTER_STRIDER_UPDATE = Boolean.valueOf(characterSettings.getProperty("AllowClassMastersStriderUpdate", "false"));
+ ALLOW_CLASS_MASTERS_FIRST_CLASS = Boolean.valueOf(characterSettings.getProperty("AllowClassMastersFirstClass", "true"));
+ ALLOW_CLASS_MASTERS_SECOND_CLASS = Boolean.valueOf(characterSettings.getProperty("AllowClassMastersSecondClass", "true"));
+ ALLOW_CLASS_MASTERS_THIRD_CLASS = Boolean.valueOf(characterSettings.getProperty("AllowClassMastersThirdClass", "true"));
+ CLASS_MASTER_SETTINGS = new ClassMasterSettings(characterSettings.getProperty("ConfigClassMaster"));
+ ALLOW_REMOTE_CLASS_MASTERS = Boolean.valueOf(characterSettings.getProperty("AllowRemoteClassMasters", "false"));
+ }
+ catch (Exception e)
+ {
+ LOGGER.warning("Failed to load " + CHARACTER_CONFIG_FILE + " file.");
}
}
@@ -3540,18 +3468,18 @@ public final class Config
{
try
{
- final L2Properties p = new L2Properties(DAEMONS_CONFIG_FILE);
+ final L2Properties daemonsSettings = new L2Properties(DAEMONS_CONFIG_FILE);
- AUTOSAVE_INITIAL_TIME = Long.parseLong(p.getProperty("AutoSaveInitial", "300000"));
- AUTOSAVE_DELAY_TIME = Long.parseLong(p.getProperty("AutoSaveDelay", "900000"));
- CHECK_CONNECTION_INITIAL_TIME = Long.parseLong(p.getProperty("CheckConnectionInitial", "300000"));
- CHECK_CONNECTION_DELAY_TIME = Long.parseLong(p.getProperty("CheckConnectionDelay", "900000"));
- CHECK_CONNECTION_INACTIVITY_TIME = Long.parseLong(p.getProperty("CheckConnectionInactivityTime", "90000"));
- CLEANDB_INITIAL_TIME = Long.parseLong(p.getProperty("CleanDBInitial", "300000"));
- CLEANDB_DELAY_TIME = Long.parseLong(p.getProperty("CleanDBDelay", "900000"));
- CHECK_TELEPORT_ZOMBIE_DELAY_TIME = Long.parseLong(p.getProperty("CheckTeleportZombiesDelay", "90000"));
- DEADLOCKCHECK_INTIAL_TIME = Long.parseLong(p.getProperty("DeadLockCheck", "0"));
- DEADLOCKCHECK_DELAY_TIME = Long.parseLong(p.getProperty("DeadLockDelay", "0"));
+ AUTOSAVE_INITIAL_TIME = Long.parseLong(daemonsSettings.getProperty("AutoSaveInitial", "300000"));
+ AUTOSAVE_DELAY_TIME = Long.parseLong(daemonsSettings.getProperty("AutoSaveDelay", "900000"));
+ CHECK_CONNECTION_INITIAL_TIME = Long.parseLong(daemonsSettings.getProperty("CheckConnectionInitial", "300000"));
+ CHECK_CONNECTION_DELAY_TIME = Long.parseLong(daemonsSettings.getProperty("CheckConnectionDelay", "900000"));
+ CHECK_CONNECTION_INACTIVITY_TIME = Long.parseLong(daemonsSettings.getProperty("CheckConnectionInactivityTime", "90000"));
+ CLEANDB_INITIAL_TIME = Long.parseLong(daemonsSettings.getProperty("CleanDBInitial", "300000"));
+ CLEANDB_DELAY_TIME = Long.parseLong(daemonsSettings.getProperty("CleanDBDelay", "900000"));
+ CHECK_TELEPORT_ZOMBIE_DELAY_TIME = Long.parseLong(daemonsSettings.getProperty("CheckTeleportZombiesDelay", "90000"));
+ DEADLOCKCHECK_INTIAL_TIME = Long.parseLong(daemonsSettings.getProperty("DeadLockCheck", "0"));
+ DEADLOCKCHECK_DELAY_TIME = Long.parseLong(daemonsSettings.getProperty("DeadLockDelay", "0"));
}
catch (Exception e)
{
@@ -3896,14 +3824,10 @@ public final class Config
// Load system
loadIdFactoryConfig();
- // Load developer parameters
- loadDevConfig();
-
// Head
- loadOptionsConfig();
- loadOtherConfig();
loadRatesConfig();
- loadAltConfig();
+ loadCharacterConfig();
+ loadGeneralConfig();
load7sConfig();
loadCHConfig();
loadElitCHConfig();
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/OlympiadLogger.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/OlympiadLogger.java
index 3623071b41..a263085111 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/OlympiadLogger.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/OlympiadLogger.java
@@ -23,8 +23,6 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Logger;
-import org.l2jmobius.Config;
-
public class OlympiadLogger
{
private static final Logger LOGGER = Logger.getLogger(OlympiadLogger.class.getName());
@@ -69,15 +67,4 @@ public class OlympiadLogger
add(text, null);
}
}
-
- public static final void Assert(boolean exp, String cmt)
- {
- if (exp || !Config.ASSERT)
- {
- return;
- }
-
- LOGGER.info("Assertion error [" + cmt + "]");
- Thread.dumpStack();
- }
}
\ No newline at end of file
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/object/L2ObjectHashMap.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/object/L2ObjectHashMap.java
index 82b1e70171..bfffa0e147 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/object/L2ObjectHashMap.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/object/L2ObjectHashMap.java
@@ -20,7 +20,6 @@ import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.logging.Logger;
-import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.WorldObject;
/**
@@ -213,10 +212,6 @@ public final class L2ObjectHashMapextends L2ObjectMap
expand();
}
final int hashcode = obj.getObjectId();
- if (Config.ASSERT)
- {
- assert hashcode > 0;
- }
int seed = hashcode;
final int incr = 1 + (((seed >> 5) + 1) % (_table.length - 1));
int ntry = 0;
@@ -255,11 +250,6 @@ public final class L2ObjectHashMapextends L2ObjectMap
{
return;
}
- // this should never happen
- if (Config.ASSERT)
- {
- assert obj.getObjectId() != _table[pos].getObjectId();
- }
// if there was no collisions at this slot, and we found a free
// slot previously - use found slot
if ((slot >= 0) && (_keys[pos] > 0))
@@ -300,10 +290,6 @@ public final class L2ObjectHashMapextends L2ObjectMap
public synchronized void remove(T obj)
{
final int hashcode = obj.getObjectId();
- if (Config.ASSERT)
- {
- assert hashcode > 0;
- }
int seed = hashcode;
final int incr = 1 + (((seed >> 5) + 1) % (_table.length - 1));
int ntry = 0;
@@ -418,10 +404,6 @@ public final class L2ObjectHashMapextends L2ObjectMap
continue;
}
final int hashcode = _keys[i] & 0x7FFFFFFF;
- if (Config.ASSERT)
- {
- assert hashcode == obj.getObjectId();
- }
int seed = hashcode;
final int incr = 1 + (((seed >> 5) + 1) % (newSize - 1));
int ntry = 0;
@@ -430,10 +412,6 @@ public final class L2ObjectHashMapextends L2ObjectMap
final int pos = (seed % newSize) & 0x7FFFFFFF;
if (newTable[pos] == null)
{
- if (Config.ASSERT)
- {
- assert (newKeys[pos] == 0) && (hashcode != 0);
- }
// found an empty slot without previous collisions,
// but use previously found slot
newKeys[pos] = hashcode;
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/object/L2ObjectHashSet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/object/L2ObjectHashSet.java
index ca910f9c00..0a7b51f522 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/object/L2ObjectHashSet.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/object/L2ObjectHashSet.java
@@ -20,7 +20,6 @@ import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.logging.Logger;
-import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.WorldObject;
/**
@@ -174,10 +173,6 @@ public final class L2ObjectHashSetextends L2ObjectSet
expand();
}
final int hashcode = obj.getObjectId();
- if (Config.ASSERT)
- {
- assert hashcode > 0;
- }
int seed = hashcode;
final int incr = 1 + (((seed >> 5) + 1) % (_table.length - 1));
int ntry = 0;
@@ -211,11 +206,6 @@ public final class L2ObjectHashSetextends L2ObjectSet
{
return;
}
- // this should never happen
- if (Config.ASSERT)
- {
- assert obj.getObjectId() != _table[pos].getObjectId();
- }
// if there was no collisions at this slot, and we found a free
// slot previously - use found slot
if ((slot >= 0) && ((_collisions[pos >> 5] & (1 << (pos & 31))) == 0))
@@ -252,10 +242,6 @@ public final class L2ObjectHashSetextends L2ObjectSet
return;
}
final int hashcode = obj.getObjectId();
- if (Config.ASSERT)
- {
- assert hashcode > 0;
- }
int seed = hashcode;
final int incr = 1 + (((seed >> 5) + 1) % (_table.length - 1));
int ntry = 0;
@@ -307,10 +293,6 @@ public final class L2ObjectHashSetextends L2ObjectSet
return false;
}
final int hashcode = obj.getObjectId();
- if (Config.ASSERT)
- {
- assert hashcode > 0;
- }
int seed = hashcode;
final int incr = 1 + (((seed >> 5) + 1) % (size - 1));
int ntry = 0;
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Inventory.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Inventory.java
index a5ffd5dff1..1d36d3b131 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Inventory.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Inventory.java
@@ -22,7 +22,6 @@ import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
-import org.l2jmobius.Config;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.datatables.SkillTable;
import org.l2jmobius.gameserver.datatables.sql.ArmorSetsTable;
@@ -196,11 +195,6 @@ public abstract class Inventory extends ItemContainer
return;
}
- if (Config.ASSERT)
- {
- assert null == getPaperdollItem(PAPERDOLL_LRHAND);
- }
-
if (item.getItemType() == WeaponType.BOW)
{
ItemInstance arrow = getPaperdollItem(PAPERDOLL_LHAND);
@@ -234,11 +228,6 @@ public abstract class Inventory extends ItemContainer
return;
}
- if (Config.ASSERT)
- {
- assert item == getPaperdollItem(PAPERDOLL_LRHAND);
- }
-
if (item.getItemType() == WeaponType.BOW)
{
ItemInstance arrow = findArrowForBow(item.getItem());
@@ -889,11 +878,6 @@ public abstract class Inventory extends ItemContainer
*/
public synchronized void addPaperdollListener(PaperdollListener listener)
{
- if (Config.ASSERT)
- {
- assert !_paperdollListeners.contains(listener);
- }
-
_paperdollListeners.add(listener);
}
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/ObjectPosition.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/ObjectPosition.java
index d7598d19e5..bb685f9f08 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/ObjectPosition.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/ObjectPosition.java
@@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model;
import java.util.logging.Logger;
-import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -58,11 +57,6 @@ public class ObjectPosition
*/
public final void setXYZ(int x, int y, int z)
{
- if (Config.ASSERT)
- {
- assert getWorldRegion() != null;
- }
-
setWorldPosition(x, y, z);
try
@@ -110,10 +104,6 @@ public class ObjectPosition
*/
public final void setXYZInvisible(int x, int y, int z)
{
- if (Config.ASSERT)
- {
- assert getWorldRegion() == null;
- }
if (x > World.MAP_MAX_X)
{
x = World.MAP_MAX_X - 5000;
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java
index bba6a1a8fb..648af2f696 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -109,31 +109,16 @@ public abstract class WorldObject
public final int getX()
{
- if (Config.ASSERT)
- {
- assert (getPosition().getWorldRegion() != null) || _isVisible;
- }
-
return getPosition().getX();
}
public final int getY()
{
- if (Config.ASSERT)
- {
- assert (getPosition().getWorldRegion() != null) || _isVisible;
- }
-
return getPosition().getY();
}
public final int getZ()
{
- if (Config.ASSERT)
- {
- assert (getPosition().getWorldRegion() != null) || _isVisible;
- }
-
return getPosition().getZ();
}
@@ -158,11 +143,6 @@ public abstract class WorldObject
*/
public final void decayMe()
{
- if (Config.ASSERT)
- {
- assert getPosition().getWorldRegion() != null;
- }
-
// Remove the WorldObject from the world
_isVisible = false;
World.getInstance().removeVisibleObject(this, getPosition().getWorldRegion());
@@ -198,16 +178,6 @@ public abstract class WorldObject
*/
public final void pickupMe(Creature creature) // NOTE: Should move this function into ItemInstance because it does not apply to Creature
{
- if (Config.ASSERT)
- {
- assert this instanceof ItemInstance;
- }
-
- if (Config.ASSERT)
- {
- assert getPosition().getWorldRegion() != null;
- }
-
WorldRegion oldregion = getPosition().getWorldRegion();
// Create a server->client GetItem packet to pick up the ItemInstance
@@ -264,11 +234,6 @@ public abstract class WorldObject
*/
public final void spawnMe()
{
- if (Config.ASSERT)
- {
- assert (getPosition().getWorldRegion() == null) && (getPosition().getWorldPosition().getX() != 0) && (getPosition().getWorldPosition().getY() != 0) && (getPosition().getWorldPosition().getZ() != 0);
- }
-
synchronized (this)
{
// Set the x,y,z position of the WorldObject spawn and update its _worldregion
@@ -291,11 +256,6 @@ public abstract class WorldObject
public final void spawnMe(int x, int y, int z)
{
- if (Config.ASSERT)
- {
- assert getPosition().getWorldRegion() == null;
- }
-
synchronized (this)
{
// Set the x,y,z position of the WorldObject spawn and update its _worldregion
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldRegion.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldRegion.java
index 402f447c09..a72bf3785a 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldRegion.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldRegion.java
@@ -339,11 +339,6 @@ public final class WorldRegion
*/
public void addVisibleObject(WorldObject object)
{
- if (Config.ASSERT)
- {
- assert object.getWorldRegion() == this;
- }
-
if (object == null)
{
return;
@@ -372,11 +367,6 @@ public final class WorldRegion
*/
public void removeVisibleObject(WorldObject object)
{
- if (Config.ASSERT)
- {
- assert (object.getWorldRegion() == this) || (object.getWorldRegion() == null);
- }
-
if (object == null)
{
return;
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ItemInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ItemInstance.java
index 29fa559332..09c841af91 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ItemInstance.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ItemInstance.java
@@ -353,11 +353,6 @@ public final class ItemInstance extends WorldObject
*/
public int getEquipSlot()
{
- if (Config.ASSERT)
- {
- assert (_loc == ItemLocation.PAPERDOLL) || (_loc == ItemLocation.PET_EQUIP) || (_loc == ItemLocation.FREIGHT);
- }
-
return _locData;
}
@@ -1162,11 +1157,6 @@ public final class ItemInstance extends WorldObject
*/
public final void dropMe(Creature dropper, int x, int y, int z)
{
- if (Config.ASSERT)
- {
- assert getPosition().getWorldRegion() == null;
- }
-
if (Config.PATHFINDING && (dropper != null))
{
Location dropDest = GeoEngine.getInstance().canMoveToTargetLoc(dropper.getX(), dropper.getY(), dropper.getZ(), x, y, z, dropper.getInstanceId());
@@ -1207,11 +1197,6 @@ public final class ItemInstance extends WorldObject
*/
private void updateInDb()
{
- if (Config.ASSERT)
- {
- assert _existsInDb;
- }
-
if (_wear)
{
return;
@@ -1257,11 +1242,6 @@ public final class ItemInstance extends WorldObject
return;
}
- if (Config.ASSERT)
- {
- assert !_existsInDb && (getObjectId() != 0);
- }
-
try (Connection con = DatabaseFactory.getConnection())
{
PreparedStatement statement = con.prepareStatement("INSERT INTO items (owner_id,item_id,count,loc,loc_data,enchant_level,price_sell,price_buy,object_id,custom_type1,custom_type2,mana_left) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");
@@ -1299,11 +1279,6 @@ public final class ItemInstance extends WorldObject
return;
}
- if (Config.ASSERT)
- {
- assert _existsInDb;
- }
-
// delete augmentation data
if (isAugmented())
{
@@ -1470,11 +1445,6 @@ public final class ItemInstance extends WorldObject
*/
public int getLocationSlot()
{
- if (Config.ASSERT)
- {
- assert (_loc == ItemLocation.PAPERDOLL) || (_loc == ItemLocation.PET_EQUIP) || (_loc == ItemLocation.FREIGHT) || (_loc == ItemLocation.INVENTORY);
- }
-
return _locData;
}
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java
index 4f24fa2865..05d6c8fdf3 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java
@@ -550,13 +550,6 @@ public class EnterWorld extends GameClientPacket
player.removeSkill(3628, true);
}
- // If it's a Beta server all players got GM SPEED skill for better testing
- if (Config.BETASERVER)
- {
- player.addSkill(SkillTable.getInstance().getInfo(7029, 4), true);
- player.sendMessage("Server is on Beta mode. Skill Gm Haste 4 added for better testing.");
- }
-
// Send all skills to char
player.sendSkillList();
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java
index 0fed2f9439..d8b9242801 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java
@@ -36,7 +36,11 @@ public final class ProtocolVersion extends GameClientPacket
@Override
protected void runImpl()
{
- if ((_version < Config.MIN_PROTOCOL_REVISION) || (_version > Config.MAX_PROTOCOL_REVISION))
+ if ((_version == 65534) || (_version == -2)) // Ping
+ {
+ getClient().close((GameServerPacket) null);
+ }
+ else if ((_version < Config.MIN_PROTOCOL_REVISION) || (_version > Config.MAX_PROTOCOL_REVISION))
{
LOGGER.info("Client: " + getClient() + " -> Protocol Revision: " + _version + " is invalid. Minimum is " + Config.MIN_PROTOCOL_REVISION + " and Maximum is " + Config.MAX_PROTOCOL_REVISION + " are supported. Closing connection.");
LOGGER.warning("Wrong Protocol Version " + _version);