Various unnecessary code changes.
This commit is contained in:
parent
c9b04d53f4
commit
315a4e773c
@ -144,10 +144,6 @@ EnableAlterSkills = True
|
||||
# Default: True
|
||||
LifeCrystalNeeded = True
|
||||
|
||||
# Require book needed to enchant skills.
|
||||
# Default: True
|
||||
EnchantSkillSpBookNeeded = True
|
||||
|
||||
# Require spell book needed to learn Divine Inspiration.
|
||||
# Default: True
|
||||
DivineInspirationSpBookNeeded = True
|
||||
@ -404,46 +400,6 @@ DisableOverEnchanting = True
|
||||
# ---------------------------------------------------------------------------
|
||||
# Augmenting
|
||||
# ---------------------------------------------------------------------------
|
||||
# These control the chance to get a skill in the augmentation process.
|
||||
# Default: 15, 30, 45, 60
|
||||
AugmentationNGSkillChance = 15
|
||||
AugmentationMidSkillChance = 30
|
||||
AugmentationHighSkillChance = 45
|
||||
AugmentationTopSkillChance = 60
|
||||
# Accessory augmentation skills currently disabled
|
||||
AugmentationAccSkillChance = 0
|
||||
|
||||
# This controls the chance to get a base stat modifier in the augmentation process.
|
||||
# Notes:
|
||||
# This has no dependency on the grade of Life Stone.
|
||||
# Default: 1
|
||||
AugmentationBaseStatChance = 1
|
||||
|
||||
# These control the chance to get a glow effect in the augmentation process.
|
||||
# Notes:
|
||||
# No/Mid Grade Life Stone can not have glow effect if you do not get a skill or base stat modifier.
|
||||
# Default: 0, 40, 70, 100
|
||||
AugmentationNGGlowChance = 0
|
||||
AugmentationMidGlowChance = 40
|
||||
AugmentationHighGlowChance = 70
|
||||
AugmentationTopGlowChance = 100
|
||||
|
||||
# This will enable retail like weapon augmentation, but then you cant change
|
||||
# weapon glow, base stat chance, because it wouldnt be retail like again.
|
||||
RetailLikeAugmentation = True
|
||||
|
||||
# This will have effect ONLY when RetailLikeAugmentation is True. The sum of 4 numbers must be 100!
|
||||
# You can change probability (in %) of augment color chances - in order yellow, blue, purple, red
|
||||
# Purple and Red always give skill. Default is 55%,35%,7%,3% for all lifestone grades (ie 7+3=10%
|
||||
# for skill, not counting blue ones, that are very rare and not useful anyway).
|
||||
RetailLikeAugmentationNoGradeChance = 55,35,7,3
|
||||
RetailLikeAugmentationMidGradeChance = 55,35,7,3
|
||||
RetailLikeAugmentationHighGradeChance = 55,35,7,3
|
||||
RetailLikeAugmentationTopGradeChance = 55,35,7,3
|
||||
|
||||
# This will enable retail like accessory augmentation, but then you cant change skill chances for accessory augments
|
||||
RetailLikeAugmentationAccessory = True
|
||||
|
||||
# List of non-augmentable items, currently contains only Grand Boss jewels
|
||||
# Shadow, common, time-limited, hero, pvp, wear items are hardcoded, as well as all etcitems.
|
||||
# Rods can't be augmented too.
|
||||
|
@ -1,24 +0,0 @@
|
||||
# --------------------------------------------------
|
||||
# Contestable halls general configuration
|
||||
# --------------------------------------------------
|
||||
|
||||
# Min level that each clan needs to register
|
||||
# for the siege
|
||||
MinClanLevel = 4
|
||||
|
||||
# Max number of clans allowed to register for
|
||||
# the battle
|
||||
MaxAttackers = 500
|
||||
|
||||
# Max numbers of flags that each clan is allowed
|
||||
# to put
|
||||
MaxFlagsPerClan = 1
|
||||
|
||||
# Enable the fame reward
|
||||
EnableFame = false
|
||||
|
||||
# Fame amount
|
||||
FameAmount = 0
|
||||
|
||||
# Fame Frequency
|
||||
FameFrequency = 0
|
@ -38,10 +38,6 @@ CommunityBuffPrice = 0
|
||||
# Default: 0 (free)
|
||||
CommunityHealPrice = 0
|
||||
|
||||
# Disable Community Board while in combat.
|
||||
# Default: True
|
||||
CommunityCombatDisabled = True
|
||||
|
||||
# Disable Community Board while player has Karma.
|
||||
# Default: True
|
||||
CommunityKarmaDisabled = True
|
||||
|
@ -69,10 +69,6 @@ GMRestartFighting = True
|
||||
# example: "Announce: hi (HanWik)"
|
||||
GMShowAnnouncerName = False
|
||||
|
||||
# Show the GM's name before an announcement made by him
|
||||
# example: "Nyaran: hi"
|
||||
GMShowCritAnnouncerName = False
|
||||
|
||||
# Give special skills for every GM
|
||||
# 7029,7041-7064,7088-7096,23238-23249 (Master's Blessing)
|
||||
# Default: False
|
||||
@ -382,10 +378,6 @@ AllowRace = False
|
||||
# Default: True
|
||||
AllowWater = True
|
||||
|
||||
# Enable pets for rent (wyvern & strider) from pet managers.
|
||||
# Default: False
|
||||
AllowRentPet = False
|
||||
|
||||
# Default: True
|
||||
AllowFishing = True
|
||||
|
||||
@ -522,55 +514,7 @@ AltItemAuctionExpiredAfter = 14
|
||||
AltItemAuctionTimeExtendsOnBid = 0
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Dimension Rift
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Minimal party size to enter rift. Min = 2, Max = 9.
|
||||
# If while inside the rift, the party becomes smaller, all members will be teleported back.
|
||||
# Default: 2
|
||||
RiftMinPartySize = 2
|
||||
|
||||
# Number of maximum jumps between rooms allowed, after this time party will be teleported back
|
||||
# Default: 4
|
||||
MaxRiftJumps = 4
|
||||
|
||||
# Time in ms the party has to wait until the mobs spawn when entering a room. C4 retail: 10s
|
||||
# Default: 10000
|
||||
RiftSpawnDelay = 10000
|
||||
|
||||
# Time between automatic jumps in seconds
|
||||
# Default: 480
|
||||
AutoJumpsDelayMin = 480
|
||||
|
||||
# Default: 600
|
||||
AutoJumpsDelayMax = 600
|
||||
|
||||
# Time Multiplier for stay in the boss room
|
||||
# Default: 1.5
|
||||
BossRoomTimeMultiply = 1.5
|
||||
|
||||
# Cost in dimension fragments to enter the rift, each party member must own this amount
|
||||
# Default: 18
|
||||
RecruitCost = 18
|
||||
|
||||
# Default: 21
|
||||
SoldierCost = 21
|
||||
|
||||
# Default: 24
|
||||
OfficerCost = 24
|
||||
|
||||
# Default: 27
|
||||
CaptainCost = 27
|
||||
|
||||
# Default: 30
|
||||
CommanderCost = 30
|
||||
|
||||
# Default: 33
|
||||
HeroCost = 33
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
---------------------------------------------------------------------------
|
||||
# Punishment
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@ -603,10 +547,6 @@ JailDisableChat = True
|
||||
# Default: False
|
||||
JailDisableTransaction = False
|
||||
|
||||
# Enchant Skill Details Settings
|
||||
# Default: 1,5
|
||||
NormalEnchantCostMultipiler = 1
|
||||
SafeEnchantCostMultipiler = 5
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Custom Components
|
||||
@ -697,17 +637,9 @@ AllowReportsFromSameClanMembers = False
|
||||
# Default: False
|
||||
HtmlActionCacheDebug = False
|
||||
|
||||
# Packet handler debug output
|
||||
# Default: False
|
||||
PacketHandlerDebug = False
|
||||
|
||||
# Default: False
|
||||
Developer = False
|
||||
|
||||
# Don't load Handlers
|
||||
# Default: False
|
||||
AltDevNoHandlers = False
|
||||
|
||||
# Don't load quests.
|
||||
# Default: False
|
||||
AltDevNoQuests = False
|
||||
|
@ -106,12 +106,6 @@ KelbimMaxPlayers = 35
|
||||
# Anakim
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Interval time of Anakim. Value is hour. Range 1-480. Retail: 96
|
||||
IntervalOfAnakimSpawn = 96
|
||||
|
||||
# Random interval. Range 1-192. Retail: 12
|
||||
RandomOfAnakimSpawn = 12
|
||||
|
||||
# Minimal count of players for enter to Anakim. Retail: 98
|
||||
AnakimMinPlayers = 98
|
||||
|
||||
@ -128,12 +122,6 @@ AnakimMaxPlayerLvl = 94
|
||||
# Lilith
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Interval time of Lilith. Value is hour. Range 1-480. Retail: 96
|
||||
IntervalOfLilithSpawn = 96
|
||||
|
||||
# Random interval. Range 1-192. Retail: 12
|
||||
RandomOfLilithSpawn = 12
|
||||
|
||||
# Minimal count of players for enter to Lilith. Retail: 98
|
||||
LilithMinPlayers = 98
|
||||
|
||||
|
@ -75,10 +75,6 @@ SkillChancePenaltyForLvLDifferences = 2.5, 3.0, 3.25, 3.5
|
||||
# Monsters
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Decay Time Task (don't set it too low!) (in milliseconds):
|
||||
# Default: 5000
|
||||
DecayTimeTask = 5000
|
||||
|
||||
# This is the default corpse time (in seconds).
|
||||
# Default: 7
|
||||
DefaultCorpseTime = 7
|
||||
@ -105,11 +101,6 @@ GuardAttackAggroMob = False
|
||||
# Pets
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# This option enables or disables the Wyvern manager located in every castle
|
||||
# to train Wyverns and Striders from Hatchlings.
|
||||
# Default: False
|
||||
AllowWyvernUpgrader = False
|
||||
|
||||
# This will control the inventory space limit for pets (NOT WEIGHT LIMIT).
|
||||
# Default: 12
|
||||
MaximumSlotsForPet = 12
|
||||
|
@ -54,10 +54,6 @@ AntiFeedInterval = 120
|
||||
# Misc.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Should we award a pvp point for killing a player with karma?
|
||||
# Default: False
|
||||
AwardPKKillPVPPoint = False
|
||||
|
||||
# How much time one stays in PvP mode after hitting an innocent (in ms)
|
||||
# Default: 120000
|
||||
PvPVsNormalTime = 120000
|
||||
|
@ -20,14 +20,11 @@ import java.util.logging.Logger;
|
||||
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.holders.MinionHolder;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||
import com.l2jmobius.gameserver.util.Broadcast;
|
||||
import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
@ -76,27 +73,6 @@ public abstract class AbstractNpcAI extends Quest
|
||||
addFactionCallId(mobs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Broadcasts SocialAction packet to self and known players.
|
||||
* @param character
|
||||
* @param actionId
|
||||
*/
|
||||
protected void broadcastSocialAction(L2Character character, int actionId)
|
||||
{
|
||||
Broadcast.toSelfAndKnownPlayers(character, new SocialAction(character.getObjectId(), actionId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Broadcasts SocialAction packet to self and known players in specific radius.
|
||||
* @param character
|
||||
* @param actionId
|
||||
* @param radius
|
||||
*/
|
||||
protected void broadcastSocialAction(L2Character character, int actionId, int radius)
|
||||
{
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(character, new SocialAction(character.getObjectId(), actionId), radius);
|
||||
}
|
||||
|
||||
public void spawnMinions(L2Npc npc, String spawnName)
|
||||
{
|
||||
for (MinionHolder is : npc.getParameters().getMinionList(spawnName))
|
||||
|
@ -167,8 +167,12 @@ public final class Parade extends AbstractNpcAI
|
||||
return (dd * 1000) / 6;
|
||||
}
|
||||
|
||||
class Start implements Runnable
|
||||
private class Start implements Runnable
|
||||
{
|
||||
public Start()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
@ -179,8 +183,12 @@ public final class Parade extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
|
||||
class Spawn implements Runnable
|
||||
private class Spawn implements Runnable
|
||||
{
|
||||
public Spawn()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
@ -209,8 +217,12 @@ public final class Parade extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
|
||||
class Delete implements Runnable
|
||||
private class Delete implements Runnable
|
||||
{
|
||||
public Delete()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
@ -240,8 +252,12 @@ public final class Parade extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
|
||||
class Clean implements Runnable
|
||||
private class Clean implements Runnable
|
||||
{
|
||||
public Clean()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
|
@ -73,12 +73,16 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
public static final class zoneInfo
|
||||
private static final class zoneInfo
|
||||
{
|
||||
private int currentPoints = 0;
|
||||
private int currentMonitorizedDamage = 0;
|
||||
private int zoneStage = 0;
|
||||
|
||||
public zoneInfo()
|
||||
{
|
||||
}
|
||||
|
||||
void setZoneStage(int a)
|
||||
{
|
||||
zoneStage = a;
|
||||
|
@ -122,7 +122,7 @@ public final class Alexandria extends AbstractNpcAI
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
public static class AdditionalQuestItemHolder extends QuestItemHolder
|
||||
private static class AdditionalQuestItemHolder extends QuestItemHolder
|
||||
{
|
||||
private final int _additionalId;
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
package ai.bosses.Baylor;
|
||||
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Attackable;
|
||||
@ -28,6 +29,7 @@ import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureSee;
|
||||
import com.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
@ -326,6 +328,20 @@ public final class BaylorWarzone extends AbstractInstance
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Broadcasts SocialAction packet to self and known players.
|
||||
* @param character
|
||||
* @param actionId
|
||||
*/
|
||||
private void broadcastSocialAction(L2Character character, int actionId)
|
||||
{
|
||||
final SocialAction action = new SocialAction(character.getObjectId(), actionId);
|
||||
L2World.getInstance().forEachVisibleObject(character, L2PcInstance.class, player ->
|
||||
{
|
||||
player.sendPacket(action);
|
||||
});
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new BaylorWarzone();
|
||||
|
@ -70,17 +70,21 @@ public final class Stage1 extends AbstractInstance implements IGameXmlReader
|
||||
{
|
||||
Logger LOGGER = Logger.getLogger(Stage1.class.getName());
|
||||
|
||||
protected static class SODSpawn
|
||||
private static class SODSpawn
|
||||
{
|
||||
public boolean isZone = false;
|
||||
public boolean isNeededNextFlag = false;
|
||||
public int npcId;
|
||||
public int x = 0;
|
||||
public int y = 0;
|
||||
public int z = 0;
|
||||
public int h = 0;
|
||||
public int zone = 0;
|
||||
public int count = 0;
|
||||
public SODSpawn()
|
||||
{
|
||||
}
|
||||
|
||||
boolean isZone = false;
|
||||
boolean isNeededNextFlag = false;
|
||||
int npcId;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
int z = 0;
|
||||
int h = 0;
|
||||
int zone = 0;
|
||||
int count = 0;
|
||||
}
|
||||
|
||||
// Spawn data
|
||||
|
@ -28,7 +28,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class NpcBufferAI implements Runnable
|
||||
class NpcBufferAI implements Runnable
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(NpcBufferAI.class.getName());
|
||||
private final L2Npc _npc;
|
||||
|
@ -22,12 +22,12 @@ import java.util.List;
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class NpcBufferData
|
||||
class NpcBufferData
|
||||
{
|
||||
private final int _id;
|
||||
private final List<NpcBufferSkillData> _skills = new ArrayList<>();
|
||||
|
||||
public NpcBufferData(int id)
|
||||
NpcBufferData(int id)
|
||||
{
|
||||
_id = id;
|
||||
}
|
||||
@ -37,7 +37,7 @@ public class NpcBufferData
|
||||
return _id;
|
||||
}
|
||||
|
||||
public void addSkill(NpcBufferSkillData skill)
|
||||
void addSkill(NpcBufferSkillData skill)
|
||||
{
|
||||
_skills.add(skill);
|
||||
}
|
||||
|
@ -23,13 +23,13 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class NpcBufferSkillData
|
||||
class NpcBufferSkillData
|
||||
{
|
||||
private final SkillHolder _skill;
|
||||
private final int _scaleToLevel;
|
||||
private final int _initialDelay;
|
||||
|
||||
public NpcBufferSkillData(StatsSet set)
|
||||
NpcBufferSkillData(StatsSet set)
|
||||
{
|
||||
_skill = new SkillHolder(set.getInt("id"), set.getInt("level"));
|
||||
_scaleToLevel = set.getInt("scaleToLevel", -1);
|
||||
|
@ -33,7 +33,7 @@ import com.l2jmobius.gameserver.model.StatsSet;
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class NpcBuffersData implements IGameXmlReader
|
||||
class NpcBuffersData implements IGameXmlReader
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(NpcBuffersData.class.getName());
|
||||
|
||||
@ -93,7 +93,7 @@ public class NpcBuffersData implements IGameXmlReader
|
||||
}
|
||||
}
|
||||
|
||||
public NpcBufferData getNpcBuffer(int npcId)
|
||||
NpcBufferData getNpcBuffer(int npcId)
|
||||
{
|
||||
return _npcBuffers.get(npcId);
|
||||
}
|
||||
|
@ -276,7 +276,7 @@ public class AdminBuffs implements IAdminCommandHandler
|
||||
* @param gmchar the player to switch the Game Master skills.
|
||||
* @param toAuraSkills if {@code true} it will remove "GM Aura" skills and add "GM regular" skills, vice versa if {@code false}.
|
||||
*/
|
||||
public static void switchSkills(L2PcInstance gmchar, boolean toAuraSkills)
|
||||
private static void switchSkills(L2PcInstance gmchar, boolean toAuraSkills)
|
||||
{
|
||||
final Collection<Skill> skills = toAuraSkills ? SkillTreesData.getInstance().getGMSkillTree() : SkillTreesData.getInstance().getGMAuraSkillTree();
|
||||
for (Skill skill : skills)
|
||||
@ -292,7 +292,7 @@ public class AdminBuffs implements IAdminCommandHandler
|
||||
return ADMIN_COMMANDS;
|
||||
}
|
||||
|
||||
public static void showBuffs(L2PcInstance activeChar, L2Character target, int page, boolean passive)
|
||||
private static void showBuffs(L2PcInstance activeChar, L2Character target, int page, boolean passive)
|
||||
{
|
||||
final List<BuffInfo> effects = new ArrayList<>();
|
||||
if (!passive)
|
||||
|
@ -464,7 +464,7 @@ public class AdminEventEngine implements IAdminCommandHandler
|
||||
return note + result;
|
||||
}
|
||||
|
||||
public void showMainPage(L2PcInstance activeChar)
|
||||
private void showMainPage(L2PcInstance activeChar)
|
||||
{
|
||||
final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
||||
|
||||
@ -473,7 +473,7 @@ public class AdminEventEngine implements IAdminCommandHandler
|
||||
activeChar.sendPacket(adminReply);
|
||||
}
|
||||
|
||||
public void showNewEventPage(L2PcInstance activeChar)
|
||||
private void showNewEventPage(L2PcInstance activeChar)
|
||||
{
|
||||
final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
||||
|
||||
@ -515,7 +515,7 @@ public class AdminEventEngine implements IAdminCommandHandler
|
||||
activeChar.sendPacket(adminReply);
|
||||
}
|
||||
|
||||
public void showEventParameters(L2PcInstance activeChar, int teamnumbers)
|
||||
private void showEventParameters(L2PcInstance activeChar, int teamnumbers)
|
||||
{
|
||||
final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
|
@ -77,7 +77,7 @@ public class AdminHtml implements IAdminCommandHandler
|
||||
* @param activeChar activeChar where html is shown
|
||||
* @param path relative path from directory data/html/admin/ to html
|
||||
*/
|
||||
public static void showAdminHtml(L2PcInstance activeChar, String path)
|
||||
static void showAdminHtml(L2PcInstance activeChar, String path)
|
||||
{
|
||||
showHtml(activeChar, "data/html/admin/" + path, false);
|
||||
}
|
||||
@ -88,7 +88,7 @@ public class AdminHtml implements IAdminCommandHandler
|
||||
* @param path relative path from Config.DATAPACK_ROOT to html.
|
||||
* @param reload {@code true} will reload html and show it {@code false} will show it from cache.
|
||||
*/
|
||||
public static void showHtml(L2PcInstance activeChar, String path, boolean reload)
|
||||
private static void showHtml(L2PcInstance activeChar, String path, boolean reload)
|
||||
{
|
||||
String content = null;
|
||||
if (!reload)
|
||||
|
@ -37,7 +37,7 @@ public class AdminMonsterRace implements IAdminCommandHandler
|
||||
"admin_mons"
|
||||
};
|
||||
|
||||
protected static int state = -1;
|
||||
static int state = -1;
|
||||
|
||||
@Override
|
||||
public boolean useAdminCommand(String command, L2PcInstance activeChar)
|
||||
@ -112,7 +112,7 @@ public class AdminMonsterRace implements IAdminCommandHandler
|
||||
|
||||
}
|
||||
|
||||
class RunRace implements Runnable
|
||||
private class RunRace implements Runnable
|
||||
{
|
||||
|
||||
private final int[][] codes;
|
||||
|
@ -42,7 +42,7 @@ import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
public class AdminQuest implements IAdminCommandHandler
|
||||
{
|
||||
public static final Logger LOGGER = Logger.getLogger(AdminQuest.class.getName());
|
||||
private static final Logger LOGGER = Logger.getLogger(AdminQuest.class.getName());
|
||||
|
||||
private static final String[] ADMIN_COMMANDS =
|
||||
{
|
||||
|
@ -26,7 +26,7 @@ import com.l2jmobius.gameserver.util.BuilderUtil;
|
||||
*/
|
||||
public class AdminSummon implements IAdminCommandHandler
|
||||
{
|
||||
public static final String[] ADMIN_COMMANDS =
|
||||
private static final String[] ADMIN_COMMANDS =
|
||||
{
|
||||
"admin_summon"
|
||||
};
|
||||
|
@ -29,7 +29,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
*/
|
||||
public final class AdminSuperHaste implements IAdminCommandHandler
|
||||
{
|
||||
public static final String[] ADMIN_COMMANDS =
|
||||
static final String[] ADMIN_COMMANDS =
|
||||
{
|
||||
"admin_superhaste",
|
||||
"admin_superhaste_menu",
|
||||
|
@ -18,6 +18,7 @@ package handlers.bypasshandlers;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.handler.IBypassHandler;
|
||||
import com.l2jmobius.gameserver.model.ClanPrivilege;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
@ -41,6 +42,11 @@ public class ClanWarehouse implements IBypassHandler
|
||||
@Override
|
||||
public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
|
||||
{
|
||||
if (!Config.ALLOW_WAREHOUSE)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!target.isNpc())
|
||||
{
|
||||
return false;
|
||||
|
@ -271,7 +271,7 @@ public class NpcViewMod implements IBypassHandler
|
||||
activeChar.sendPacket(html);
|
||||
}
|
||||
|
||||
public static void sendNpcSkillView(L2PcInstance activeChar, L2Npc npc)
|
||||
private static void sendNpcSkillView(L2PcInstance activeChar, L2Npc npc)
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage();
|
||||
html.setFile(activeChar, "data/html/mods/NpcView/Skills.htm");
|
||||
@ -303,7 +303,7 @@ public class NpcViewMod implements IBypassHandler
|
||||
activeChar.sendPacket(html);
|
||||
}
|
||||
|
||||
public static void sendAggroListView(L2PcInstance activeChar, L2Npc npc)
|
||||
private static void sendAggroListView(L2PcInstance activeChar, L2Npc npc)
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage();
|
||||
html.setFile(activeChar, "data/html/mods/NpcView/AggroList.htm");
|
||||
|
@ -18,6 +18,7 @@ package handlers.bypasshandlers;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.handler.IBypassHandler;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
@ -37,6 +38,11 @@ public class PrivateWarehouse implements IBypassHandler
|
||||
@Override
|
||||
public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
|
||||
{
|
||||
if (!Config.ALLOW_WAREHOUSE)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!target.isNpc())
|
||||
{
|
||||
return false;
|
||||
|
@ -81,7 +81,7 @@ public class QuestLink implements IBypassHandler
|
||||
* @param npc The table containing quests of the L2NpcInstance
|
||||
* @param quests
|
||||
*/
|
||||
public static void showQuestChooseWindow(L2PcInstance player, L2Npc npc, Collection<Quest> quests)
|
||||
private static void showQuestChooseWindow(L2PcInstance player, L2Npc npc, Collection<Quest> quests)
|
||||
{
|
||||
final StringBuilder sbStarted = new StringBuilder(128);
|
||||
final StringBuilder sbCanStart = new StringBuilder(128);
|
||||
@ -186,7 +186,7 @@ public class QuestLink implements IBypassHandler
|
||||
* @param npc the L2NpcInstance that chats with the {@code player}
|
||||
* @param questId the Id of the quest to display the message
|
||||
*/
|
||||
public static void showQuestWindow(L2PcInstance player, L2Npc npc, String questId)
|
||||
private static void showQuestWindow(L2PcInstance player, L2Npc npc, String questId)
|
||||
{
|
||||
String content = null;
|
||||
|
||||
|
@ -55,16 +55,16 @@ public class DropSearchBoard implements IParseBoardHandler
|
||||
"_bbs_npc_trace"
|
||||
};
|
||||
|
||||
class CBDropHolder
|
||||
private class CBDropHolder
|
||||
{
|
||||
int itemId;
|
||||
int npcId;
|
||||
byte npcLevel;
|
||||
long min;
|
||||
long max;
|
||||
double chance;
|
||||
boolean isSpoil;
|
||||
boolean isRaid;
|
||||
final int itemId;
|
||||
final int npcId;
|
||||
final byte npcLevel;
|
||||
final long min;
|
||||
final long max;
|
||||
final double chance;
|
||||
final boolean isSpoil;
|
||||
final boolean isRaid;
|
||||
|
||||
public CBDropHolder(L2NpcTemplate npcTemplate, DropHolder dropHolder)
|
||||
{
|
||||
|
@ -77,7 +77,7 @@ public final class HomeBoard implements IParseBoardHandler
|
||||
Config.COMMUNITYBOARD_ENABLE_HEAL ? "_bbsheal" : null
|
||||
};
|
||||
|
||||
public static final BiPredicate<String, L2PcInstance> COMBAT_CHECK = (command, activeChar) ->
|
||||
private static final BiPredicate<String, L2PcInstance> COMBAT_CHECK = (command, activeChar) ->
|
||||
{
|
||||
boolean commandCheck = false;
|
||||
for (String c : CUSTOM_COMMANDS)
|
||||
@ -92,7 +92,7 @@ public final class HomeBoard implements IParseBoardHandler
|
||||
return commandCheck && (activeChar.isCastingNow() || activeChar.isInCombat() || activeChar.isInDuel() || activeChar.isInOlympiadMode() || activeChar.isInsideZone(ZoneId.SIEGE) || activeChar.isInsideZone(ZoneId.PVP));
|
||||
};
|
||||
|
||||
public static final Predicate<L2PcInstance> KARMA_CHECK = player -> Config.COMMUNITYBOARD_KARMA_DISABLED && (player.getReputation() < 0);
|
||||
private static final Predicate<L2PcInstance> KARMA_CHECK = player -> Config.COMMUNITYBOARD_KARMA_DISABLED && (player.getReputation() < 0);
|
||||
|
||||
@Override
|
||||
public String[] getCommunityBoardCommands()
|
||||
|
@ -24,7 +24,7 @@ import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public abstract class AbstractConditionalHpEffect extends AbstractStatEffect
|
||||
abstract class AbstractConditionalHpEffect extends AbstractStatEffect
|
||||
{
|
||||
private final int _hpPercent;
|
||||
|
||||
|
@ -95,20 +95,6 @@ public final class AirBind extends AbstractEffect
|
||||
|
||||
@Override
|
||||
public void continuousInstant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
airBind(effector, effected);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
if (!effected.isPlayer())
|
||||
{
|
||||
effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
|
||||
}
|
||||
}
|
||||
|
||||
public void airBind(L2Character effector, L2Character effected)
|
||||
{
|
||||
for (L2PcInstance nearbyPlayer : L2World.getInstance().getVisibleObjects(effected, L2PcInstance.class, 1200))
|
||||
{
|
||||
@ -123,4 +109,13 @@ public final class AirBind extends AbstractEffect
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
if (!effected.isPlayer())
|
||||
{
|
||||
effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ public final class BlockSkill extends AbstractEffect
|
||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||
}
|
||||
|
||||
public TerminateReturn onSkillUseEvent(OnCreatureSkillUse event)
|
||||
private TerminateReturn onSkillUseEvent(OnCreatureSkillUse event)
|
||||
{
|
||||
if (CommonUtil.contains(_magicTypes, event.getSkill().getMagicType()))
|
||||
{
|
||||
@ -65,5 +65,4 @@ public final class BlockSkill extends AbstractEffect
|
||||
{
|
||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_USE, listener -> listener.getOwner() == this);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -29,8 +29,8 @@ import com.l2jmobius.gameserver.util.MathUtil;
|
||||
*/
|
||||
public class CriticalDamagePosition extends AbstractEffect
|
||||
{
|
||||
protected final double _amount;
|
||||
protected final Position _position;
|
||||
private final double _amount;
|
||||
private final Position _position;
|
||||
|
||||
public CriticalDamagePosition(StatsSet params)
|
||||
{
|
||||
|
@ -29,8 +29,8 @@ import com.l2jmobius.gameserver.util.MathUtil;
|
||||
*/
|
||||
public class CriticalRatePositionBonus extends AbstractEffect
|
||||
{
|
||||
protected final double _amount;
|
||||
protected final Position _position;
|
||||
private final double _amount;
|
||||
private final Position _position;
|
||||
|
||||
public CriticalRatePositionBonus(StatsSet params)
|
||||
{
|
||||
|
@ -36,7 +36,7 @@ import com.l2jmobius.gameserver.util.Util;
|
||||
*/
|
||||
public final class Fear extends AbstractEffect
|
||||
{
|
||||
public static final int FEAR_RANGE = 500;
|
||||
private static final int FEAR_RANGE = 500;
|
||||
|
||||
public Fear(StatsSet params)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||
*/
|
||||
public class GetMomentum extends AbstractEffect
|
||||
{
|
||||
public static int _ticks;
|
||||
private static int _ticks;
|
||||
|
||||
public GetMomentum(StatsSet params)
|
||||
{
|
||||
|
@ -148,7 +148,7 @@ public final class KnockBack extends AbstractEffect
|
||||
}
|
||||
}
|
||||
|
||||
public void knockBack(L2Character effector, L2Character effected)
|
||||
private void knockBack(L2Character effector, L2Character effected)
|
||||
{
|
||||
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
|
||||
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
|
||||
|
@ -30,7 +30,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
public final class ModifyVital extends AbstractEffect
|
||||
{
|
||||
// Modify types
|
||||
enum ModifyType
|
||||
private enum ModifyType
|
||||
{
|
||||
DIFF,
|
||||
SET,
|
||||
|
@ -45,7 +45,7 @@ import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||
*/
|
||||
public final class RestorationRandom extends AbstractEffect
|
||||
{
|
||||
final List<L2ExtractableProductItem> _products = new ArrayList<>();
|
||||
private final List<L2ExtractableProductItem> _products = new ArrayList<>();
|
||||
|
||||
public RestorationRandom(StatsSet params)
|
||||
{
|
||||
|
@ -69,7 +69,7 @@ public final class SoulEating extends AbstractEffect
|
||||
effected.getStat().mergeAdd(Stats.MAX_SOULS, _maxSouls);
|
||||
}
|
||||
|
||||
public void onExperienceReceived(L2Playable playable, long exp)
|
||||
private void onExperienceReceived(L2Playable playable, long exp)
|
||||
{
|
||||
// TODO: Verify logic.
|
||||
if (playable.isPlayer() && (exp >= _expNeeded))
|
||||
|
@ -34,7 +34,7 @@ import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
public class StatBonusSkillCritical extends AbstractEffect
|
||||
{
|
||||
private final BaseStats _stat;
|
||||
protected final Condition _armorTypeCondition;
|
||||
private final Condition _armorTypeCondition;
|
||||
|
||||
public StatBonusSkillCritical(StatsSet params)
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
public class StatBonusSpeed extends AbstractEffect
|
||||
{
|
||||
private final BaseStats _stat;
|
||||
protected final Condition _armorTypeCondition;
|
||||
private final Condition _armorTypeCondition;
|
||||
|
||||
public StatBonusSpeed(StatsSet params)
|
||||
{
|
||||
|
@ -85,7 +85,7 @@ public final class TriggerSkillByAttack extends AbstractEffect
|
||||
}
|
||||
}
|
||||
|
||||
public void onAttackEvent(OnCreatureDamageDealt event)
|
||||
private void onAttackEvent(OnCreatureDamageDealt event)
|
||||
{
|
||||
if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0)) || (!_allowNormalAttack && !_allowSkillAttack))
|
||||
{
|
||||
|
@ -46,7 +46,6 @@ public final class TriggerSkillByAvoid extends AbstractEffect
|
||||
/**
|
||||
* @param params
|
||||
*/
|
||||
|
||||
public TriggerSkillByAvoid(StatsSet params)
|
||||
{
|
||||
_chance = params.getInt("chance", 100);
|
||||
@ -54,7 +53,7 @@ public final class TriggerSkillByAvoid extends AbstractEffect
|
||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||
}
|
||||
|
||||
public void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||
{
|
||||
if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0)))
|
||||
{
|
||||
|
@ -58,7 +58,7 @@ public final class TriggerSkillByDamage extends AbstractEffect
|
||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.L2Character);
|
||||
}
|
||||
|
||||
public void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||
{
|
||||
if (event.isDamageOverTime() || (_chance == 0) || (_skill.getSkillLevel() == 0))
|
||||
{
|
||||
|
@ -56,7 +56,7 @@ public final class TriggerSkillByDeathBlow extends AbstractEffect
|
||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.L2Character);
|
||||
}
|
||||
|
||||
public void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||
{
|
||||
if (event.getDamage() < event.getTarget().getCurrentHp())
|
||||
{
|
||||
|
@ -42,7 +42,7 @@ public final class TriggerSkillByKill extends AbstractEffect
|
||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||
}
|
||||
|
||||
public void onCreatureKilled(OnCreatureKilled event, L2Character target)
|
||||
private void onCreatureKilled(OnCreatureKilled event, L2Character target)
|
||||
{
|
||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0)))
|
||||
{
|
||||
|
@ -60,7 +60,7 @@ public final class TriggerSkillByMagicType extends AbstractEffect
|
||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||
}
|
||||
|
||||
public void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||
{
|
||||
if (!event.getTarget().isCharacter())
|
||||
{
|
||||
|
@ -36,11 +36,11 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
||||
private static final Condition _weaponTypeCondition = new ConditionUsingItemType(WeaponType.BLUNT.mask());
|
||||
private static final Condition _slotCondition = new ConditionUsingSlotType(L2Item.SLOT_LR_HAND);
|
||||
|
||||
protected final double _pAtkAmount;
|
||||
protected final StatModifierType _pAtkmode;
|
||||
private final double _pAtkAmount;
|
||||
private final StatModifierType _pAtkmode;
|
||||
|
||||
protected final double _accuracyAmount;
|
||||
protected final StatModifierType _accuracyMode;
|
||||
private final double _accuracyAmount;
|
||||
private final StatModifierType _accuracyMode;
|
||||
|
||||
public TwoHandedBluntBonus(StatsSet params)
|
||||
{
|
||||
|
@ -36,11 +36,11 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
||||
private static final Condition _weaponTypeCondition = new ConditionUsingItemType(WeaponType.SWORD.mask());
|
||||
private static final Condition _slotCondition = new ConditionUsingSlotType(L2Item.SLOT_LR_HAND);
|
||||
|
||||
protected final double _pAtkAmount;
|
||||
protected final StatModifierType _pAtkmode;
|
||||
private final double _pAtkAmount;
|
||||
private final StatModifierType _pAtkmode;
|
||||
|
||||
protected final double _accuracyAmount;
|
||||
protected final StatModifierType _accuracyMode;
|
||||
private final double _accuracyAmount;
|
||||
private final StatModifierType _accuracyMode;
|
||||
|
||||
public TwoHandedSwordBonus(StatsSet params)
|
||||
{
|
||||
|
@ -54,7 +54,7 @@ public class PetFood implements IItemHandler
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean useFood(L2Playable activeChar, int skillId, int skillLevel, L2ItemInstance item)
|
||||
private boolean useFood(L2Playable activeChar, int skillId, int skillLevel, L2ItemInstance item)
|
||||
{
|
||||
final Skill skill = SkillData.getInstance().getSkill(skillId, skillLevel);
|
||||
if (skill != null)
|
||||
|
@ -58,7 +58,7 @@ public final class SitStand implements IPlayerActionHandler
|
||||
* @param target the target to sit, throne, bench or chair
|
||||
* @return {@code true} if the player can sit, {@code false} otherwise
|
||||
*/
|
||||
protected boolean useSit(L2PcInstance activeChar, L2Object target)
|
||||
private boolean useSit(L2PcInstance activeChar, L2Object target)
|
||||
{
|
||||
if (activeChar.getMountType() != MountType.NONE)
|
||||
{
|
||||
|
@ -47,7 +47,7 @@ public class JailHandler implements IPunishmentHandler
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_LOGIN, (OnPlayerLogin event) -> onPlayerLogin(event), this));
|
||||
}
|
||||
|
||||
public void onPlayerLogin(OnPlayerLogin event)
|
||||
private void onPlayerLogin(OnPlayerLogin event)
|
||||
{
|
||||
final L2PcInstance activeChar = event.getActiveChar();
|
||||
if (activeChar.isJailed() && !activeChar.isInsideZone(ZoneId.JAIL))
|
||||
|
@ -27,7 +27,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
*/
|
||||
public class OpSkillAcquireSkillCondition implements ISkillCondition
|
||||
{
|
||||
final int _skillId;
|
||||
private final int _skillId;
|
||||
private final boolean _hasLearned;
|
||||
|
||||
public OpSkillAcquireSkillCondition(StatsSet params)
|
||||
|
@ -28,7 +28,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
*/
|
||||
public class TargetMyPartySkillCondition implements ISkillCondition
|
||||
{
|
||||
final boolean _includeMe;
|
||||
private final boolean _includeMe;
|
||||
|
||||
public TargetMyPartySkillCondition(StatsSet params)
|
||||
{
|
||||
|
@ -251,7 +251,7 @@ public class Debug implements ITelnetCommand
|
||||
throw new IllegalStateException("Deadlocked Thread not found");
|
||||
}
|
||||
|
||||
public static String getServerStatus()
|
||||
static String getServerStatus()
|
||||
{
|
||||
int playerCount = 0, objectCount = 0;
|
||||
final int max = LoginServerThread.getInstance().getMaxPlayer();
|
||||
|
@ -44,11 +44,6 @@ public class AutoPotion implements IVoicedCommandHandler
|
||||
"apoff"
|
||||
};
|
||||
|
||||
public static AutoPotion getInstance()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
|
||||
{
|
||||
|
@ -112,7 +112,7 @@ public final class TalkingIslandPast extends AbstractInstance
|
||||
return super.onExitZone(character, zone);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
private void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final L2Character creature = event.getSeen();
|
||||
final L2Npc npc = (L2Npc) event.getSeer();
|
||||
|
@ -30,12 +30,12 @@ import com.l2jmobius.gameserver.util.Util;
|
||||
*/
|
||||
public class Q00180_InfernalFlamesBurningInCrystalPrison extends Quest
|
||||
{
|
||||
// Npc
|
||||
public static final int FIOREN = 33044;
|
||||
// NPC
|
||||
private static final int FIOREN = 33044;
|
||||
// Monster
|
||||
public static final int BAYLOR = 29213;
|
||||
private static final int BAYLOR = 29213;
|
||||
// Misc
|
||||
public static final int MIN_LEVEL = 97;
|
||||
private static final int MIN_LEVEL = 97;
|
||||
// Quest Item
|
||||
private static final int BELETH_MARK = 17591;
|
||||
// Item
|
||||
|
@ -26,12 +26,12 @@ import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* @hlwrave
|
||||
* @author hlwrave
|
||||
* @URL https://l2wiki.com/Devils_Strike_Back,_Advent_of_Balok
|
||||
*/
|
||||
public class Q00181_DevilsStrikeBackAdventOfBalok extends Quest
|
||||
{
|
||||
// Npc
|
||||
// NPC
|
||||
private static final int FIOREN = 33044;
|
||||
// Monster
|
||||
private static final int BALOK = 29218;
|
||||
@ -41,7 +41,7 @@ public class Q00181_DevilsStrikeBackAdventOfBalok extends Quest
|
||||
private static final int EWR = 17526;
|
||||
private static final int POUCH = 34861;
|
||||
// Misc
|
||||
public static final int MIN_LEVEL = 97;
|
||||
private static final int MIN_LEVEL = 97;
|
||||
|
||||
public Q00181_DevilsStrikeBackAdventOfBalok()
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ public class Q00254_LegendaryTales extends Quest
|
||||
private static final int GILMORE = 30754;
|
||||
|
||||
// Monsters
|
||||
public enum Bosses
|
||||
private enum Bosses
|
||||
{
|
||||
EMERALD_HORN(25718),
|
||||
DUST_RIDER(25719),
|
||||
|
@ -31,10 +31,10 @@ import com.l2jmobius.gameserver.model.quest.State;
|
||||
*/
|
||||
public class Q00465_WeAreFriends extends Quest
|
||||
{
|
||||
// Npc
|
||||
public static final int FAIRY_CITIZEN = 32921;
|
||||
public static final int FAIRY_CITIZEN_SPAWN = 32923;
|
||||
// item
|
||||
// NPCs
|
||||
private static final int FAIRY_CITIZEN = 32921;
|
||||
private static final int FAIRY_CITIZEN_SPAWN = 32923;
|
||||
// Item
|
||||
private static final int MARK_OF_FRIENDSHIP = 17377;
|
||||
private static final int FAIRY_LEAF_FLUTE = 17378;
|
||||
private static final int CERTIFICATE_OF_PROMISE = 30384;
|
||||
|
@ -35,8 +35,8 @@ public class Q00466_PlacingMySmallPower extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int ASTERIOS = 30154;
|
||||
public static final int NOETI_MIMILEAD = 32895;
|
||||
public static final int[] COCON =
|
||||
private static final int NOETI_MIMILEAD = 32895;
|
||||
private static final int[] COCON =
|
||||
{
|
||||
19394 // Large Cocoon
|
||||
};
|
||||
@ -60,13 +60,13 @@ public class Q00466_PlacingMySmallPower extends Quest
|
||||
22878 // Fairy Rogue
|
||||
};
|
||||
// Items
|
||||
public static final int FAIRY_WING = 17597;
|
||||
public static final int COCOON_FRAGMENT = 17598;
|
||||
public static final int KIMERIANS_BREATH = 17599;
|
||||
public static final int TEMINIELS_TONIC = 17596;
|
||||
public static final int TONIC_RECIPE = 17603;
|
||||
private static final int FAIRY_WING = 17597;
|
||||
private static final int COCOON_FRAGMENT = 17598;
|
||||
private static final int KIMERIANS_BREATH = 17599;
|
||||
private static final int TEMINIELS_TONIC = 17596;
|
||||
private static final int TONIC_RECIPE = 17603;
|
||||
// Reward
|
||||
public static final int CERTIFICATE_OF_PROMISE = 30384;
|
||||
private static final int CERTIFICATE_OF_PROMISE = 30384;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 90;
|
||||
|
||||
|
@ -34,8 +34,8 @@ import com.l2jmobius.gameserver.util.Util;
|
||||
*/
|
||||
public class Q00469_SuspiciousGardener extends Quest
|
||||
{
|
||||
// Npc
|
||||
public static final int GOFINA = 33031;
|
||||
// NPC
|
||||
private static final int GOFINA = 33031;
|
||||
// Monsters
|
||||
private static final int APHERIUS_LOOKOUT_BEWILDERED = 22964;
|
||||
// Items
|
||||
|
@ -30,14 +30,14 @@ import com.l2jmobius.gameserver.util.Util;
|
||||
*/
|
||||
public class Q00471_BreakingThroughTheEmeraldSquare extends Quest
|
||||
{
|
||||
// Npc
|
||||
public static final int FIOREN = 33044;
|
||||
// NPC
|
||||
private static final int FIOREN = 33044;
|
||||
// Monster
|
||||
public static final int EMABIFI = 25881;
|
||||
private static final int EMABIFI = 25881;
|
||||
// Misc
|
||||
public static final int MIN_LEVEL = 97;
|
||||
private static final int MIN_LEVEL = 97;
|
||||
// Items
|
||||
public static final int CERTIFICATE = 30387;
|
||||
private static final int CERTIFICATE = 30387;
|
||||
|
||||
public Q00471_BreakingThroughTheEmeraldSquare()
|
||||
{
|
||||
|
@ -30,14 +30,14 @@ import com.l2jmobius.gameserver.util.Util;
|
||||
*/
|
||||
public class Q00472_ChallengeSteamCorridor extends Quest
|
||||
{
|
||||
// Npc
|
||||
public static final int FIOREN = 33044;
|
||||
// NPC
|
||||
private static final int FIOREN = 33044;
|
||||
// Monster
|
||||
public static final int KECHI = 25532;
|
||||
private static final int KECHI = 25532;
|
||||
// Mis
|
||||
public static final int MIN_LEVEL = 97;
|
||||
private static final int MIN_LEVEL = 97;
|
||||
// Item
|
||||
public static final int CERTIFICATE = 30387;
|
||||
private static final int CERTIFICATE = 30387;
|
||||
|
||||
public Q00472_ChallengeSteamCorridor()
|
||||
{
|
||||
|
@ -26,18 +26,18 @@ import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* @author hlwrave
|
||||
* @URL: https://l2wiki.com/In_the_Coral_Garden
|
||||
* @URL https://l2wiki.com/In_the_Coral_Garden
|
||||
*/
|
||||
public class Q00473_InTheCoralGarden extends Quest
|
||||
{
|
||||
// Npc
|
||||
public static final int FIOREN = 33044;
|
||||
// NPC
|
||||
private static final int FIOREN = 33044;
|
||||
// Monster
|
||||
public static final int MICHAEL = 25799;
|
||||
private static final int MICHAEL = 25799;
|
||||
// Misc
|
||||
public static final int MIN_LEVEL = 97;
|
||||
private static final int MIN_LEVEL = 97;
|
||||
// Item
|
||||
public static final int CERTIFICATE = 30387;
|
||||
private static final int CERTIFICATE = 30387;
|
||||
|
||||
public Q00473_InTheCoralGarden()
|
||||
{
|
||||
|
@ -31,9 +31,9 @@ import com.l2jmobius.gameserver.model.quest.State;
|
||||
*/
|
||||
public class Q00483_IntendedTactic extends Quest
|
||||
{
|
||||
// Npc
|
||||
public static final int ENDE = 33357;
|
||||
// Mobs
|
||||
// NPC
|
||||
private static final int ENDE = 33357;
|
||||
// Monsters
|
||||
private static final int[] MOBS =
|
||||
{
|
||||
23069, // Vladimir's Warrior
|
||||
@ -50,7 +50,7 @@ public class Q00483_IntendedTactic extends Quest
|
||||
25811, // Lazearth
|
||||
25815 // Ken
|
||||
};
|
||||
// items
|
||||
// Items
|
||||
private static final int LOYAL_SERVANS_BLOOD = 17736;
|
||||
private static final int TRUTTHFUL_ONES_BLOOD = 17737;
|
||||
private static final int TOKEN_OF_INSOLENCE_TOWER = 17624;
|
||||
|
@ -287,7 +287,7 @@ public class Q00663_SeductiveWhispers extends Quest
|
||||
return event;
|
||||
}
|
||||
|
||||
public String play(L2PcInstance player, boolean isPlayerTurn, boolean isPractice)
|
||||
private String play(L2PcInstance player, boolean isPlayerTurn, boolean isPractice)
|
||||
{
|
||||
boolean isPlayerWin = false;
|
||||
boolean isNpcWin = false;
|
||||
|
@ -43,7 +43,7 @@ public final class Q10292_SevenSignsGirlOfDoubt extends Quest
|
||||
private static final ItemHolder ELCADIAS_MARK = new ItemHolder(17226, 10);
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 81;
|
||||
boolean isBusy = false;
|
||||
private boolean isBusy = false;
|
||||
// Monster
|
||||
private static final int CREATURE_OF_THE_DUSK1 = 27422;
|
||||
private static final int CREATURE_OF_THE_DUSK2 = 27424;
|
||||
|
@ -444,7 +444,7 @@ public final class Q10294_SevenSignsToTheMonasteryOfSilence extends Quest
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
public boolean hasCheckedAllRightBooks(QuestState qs)
|
||||
private boolean hasCheckedAllRightBooks(QuestState qs)
|
||||
{
|
||||
return ((qs.getInt("good1") == 1) && (qs.getInt("good2") == 1) && (qs.getInt("good3") == 1) && (qs.getInt("good4") == 1));
|
||||
}
|
||||
|
@ -35,8 +35,8 @@ import com.l2jmobius.gameserver.model.quest.State;
|
||||
public final class Q10353_CertificationOfValue extends Quest
|
||||
{
|
||||
// NPCs
|
||||
public static final int RIEYI = 33155;
|
||||
public static final int KYUORI = 33358;
|
||||
private static final int RIEYI = 33155;
|
||||
private static final int KYUORI = 33358;
|
||||
private static final int DUMMY_MONSTER = 33349;
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
|
@ -658,7 +658,7 @@ public final class Q10369_NoblesseSoulTesting extends Quest
|
||||
return super.onFirstTalk(npc, player);
|
||||
}
|
||||
|
||||
public boolean canProgress(L2PcInstance player)
|
||||
private boolean canProgress(L2PcInstance player)
|
||||
{
|
||||
return ((player.getLevel() > MIN_LEVEL) && player.isSubClassActive());
|
||||
}
|
||||
|
@ -43,8 +43,12 @@ import ai.AbstractNpcAI;
|
||||
|
||||
public abstract class AirShipController extends AbstractNpcAI
|
||||
{
|
||||
protected final class DecayTask implements Runnable
|
||||
private final class DecayTask implements Runnable
|
||||
{
|
||||
public DecayTask()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
@ -55,8 +59,12 @@ public abstract class AirShipController extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
|
||||
protected final class DepartTask implements Runnable
|
||||
private final class DepartTask implements Runnable
|
||||
{
|
||||
public DepartTask()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
@ -74,14 +82,14 @@ public abstract class AirShipController extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
|
||||
public static final Logger LOGGER = Logger.getLogger(AirShipController.class.getName());
|
||||
private static final Logger LOGGER = Logger.getLogger(AirShipController.class.getName());
|
||||
protected int _dockZone = 0;
|
||||
protected int _shipSpawnX = 0;
|
||||
protected int _shipSpawnY = 0;
|
||||
|
||||
protected int _shipSpawnZ = 0;
|
||||
|
||||
protected int _shipHeading = 0;
|
||||
private final int _shipHeading = 0;
|
||||
protected Location _oustLoc = null;
|
||||
protected int _locationId = 0;
|
||||
|
||||
@ -94,8 +102,8 @@ public abstract class AirShipController extends AbstractNpcAI
|
||||
|
||||
protected Movie _movie = null;
|
||||
|
||||
protected boolean _isBusy = false;
|
||||
protected L2ControllableAirShipInstance _dockedShip = null;
|
||||
private boolean _isBusy = false;
|
||||
L2ControllableAirShipInstance _dockedShip = null;
|
||||
private final Runnable _decayTask = new DecayTask();
|
||||
|
||||
private final Runnable _departTask = new DepartTask();
|
||||
|
90
L2J_Mobius_1.0_Ertheia/dist/game/log/java0.log
vendored
Normal file
90
L2J_Mobius_1.0_Ertheia/dist/game/log/java0.log
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
2018.06.26 17:19:49,281 INFO 1 com.l2jmobius.commons.util.IXmlReader Network Config: ipconfig.xml doesn't exists using automatic configuration...
|
||||
2018.06.26 17:19:49,663 INFO 1 com.l2jmobius.commons.util.IXmlReader Network Config: Adding new subnet: 127.0.0.0/8 address: 127.0.0.1
|
||||
2018.06.26 17:19:49,673 INFO 1 com.l2jmobius.commons.util.IXmlReader Network Config: Adding new subnet: 192.168.1.0/24 address: 192.168.1.2
|
||||
2018.06.26 17:19:49,678 INFO 1 com.l2jmobius.commons.util.IXmlReader Network Config: Adding new subnet: 0.0.0.0/0 address: 176.92.112.165
|
||||
2018.06.26 17:19:49,763 INFO 1 com.l2jmobius.Config Loaded 6 Filter Words.
|
||||
2018.06.26 17:19:49,901 INFO 1 com.l2jmobius.gameserver.GameServer ------------------------------------------------=[ Database ]
|
||||
2018.06.26 17:19:50,441 INFO 1 com.l2jmobius.commons.database.DatabaseFactory Database: Initialized.
|
||||
2018.06.26 17:19:50,442 INFO 1 com.l2jmobius.gameserver.GameServer ----------------------------------------------=[ ThreadPool ]
|
||||
2018.06.26 17:19:50,498 INFO 1 com.l2jmobius.commons.concurrent.ThreadPool ThreadPool: Initialized
|
||||
2018.06.26 17:19:50,498 INFO 1 com.l2jmobius.commons.concurrent.ThreadPool ...8 scheduled pool executors with 320 total threads.
|
||||
2018.06.26 17:19:50,498 INFO 1 com.l2jmobius.commons.concurrent.ThreadPool ...8 instant pool executors with 160 total threads.
|
||||
2018.06.26 17:19:50,498 INFO 1 com.l2jmobius.gameserver.GameServer -----------------------------------------------=[ IdFactory ]
|
||||
2018.06.26 17:19:50,515 INFO 1 com.l2jmobius.gameserver.idfactory.BitSetIDFactory Updated characters online status.
|
||||
2018.06.26 17:19:50,628 INFO 1 com.l2jmobius.gameserver.idfactory.BitSetIDFactory Cleaned 0 elements from database in 0 s
|
||||
2018.06.26 17:19:50,632 INFO 1 com.l2jmobius.gameserver.idfactory.BitSetIDFactory Cleaned 0 expired timestamps from database.
|
||||
2018.06.26 17:19:50,636 INFO 1 com.l2jmobius.gameserver.idfactory.BitSetIDFactory BitSetIDFactory: 102912 id's available.
|
||||
2018.06.26 17:19:50,637 INFO 1 com.l2jmobius.gameserver.GameServer ---------------------------------------=[ Scripting Engines ]
|
||||
2018.06.26 17:19:50,651 INFO 1 com.l2jmobius.gameserver.scripting.ScriptEngineManager ScriptEngine: L2J Java Engine 1.0 (Java [0, 1, 2, 3, 4, 5, 6])
|
||||
2018.06.26 17:19:50,849 INFO 1 com.l2jmobius.gameserver.scripting.ScriptEngineManager Loaded 9 files to exclude.
|
||||
2018.06.26 17:19:50,849 INFO 1 com.l2jmobius.gameserver.GameServer --------------------------------------------------=[ Telnet ]
|
||||
2018.06.26 17:19:50,960 INFO 1 com.l2jmobius.gameserver.network.telnet.TelnetServer Telnet server is currently disabled.
|
||||
2018.06.26 17:19:50,961 INFO 1 com.l2jmobius.gameserver.GameServer ---------------------------------------------------=[ World ]
|
||||
2018.06.26 17:19:50,966 INFO 512 com.l2jmobius.gameserver.GameTimeController GameTimeController: Started.
|
||||
2018.06.26 17:19:51,465 INFO 1 com.l2jmobius.gameserver.model.L2World L2World: (288 by 272 by 32) World Region Grid set up.
|
||||
2018.06.26 17:19:51,669 INFO 1 com.l2jmobius.gameserver.instancemanager.MapRegionManager MapRegionManager: Loaded 59 map regions.
|
||||
2018.06.26 17:19:51,672 INFO 1 com.l2jmobius.gameserver.instancemanager.ZoneManager ZoneManager 19 by 18 Zone Region Grid set up.
|
||||
2018.06.26 17:19:52,364 INFO 1 com.l2jmobius.gameserver.instancemanager.ZoneManager ZoneManager: Loaded 27 zone classes and 2819 zones.
|
||||
2018.06.26 17:19:52,364 INFO 1 com.l2jmobius.gameserver.instancemanager.ZoneManager ZoneManager: Loaded 16 NPC spawn territoriers.
|
||||
2018.06.26 17:19:52,369 INFO 1 com.l2jmobius.gameserver.instancemanager.ZoneManager ZoneManager: Last static id: 210109
|
||||
2018.06.26 17:19:52,805 INFO 1 com.l2jmobius.gameserver.data.xml.impl.DoorData DoorData: Loaded 1512 Door Templates for 24 regions.
|
||||
2018.06.26 17:19:52,813 INFO 1 FenceData Loaded 1 Fences.
|
||||
2018.06.26 17:19:52,830 INFO 1 com.l2jmobius.gameserver.instancemanager.GlobalVariablesManager GlobalVariablesManager: Loaded 7 variables.
|
||||
2018.06.26 17:19:52,831 INFO 1 com.l2jmobius.gameserver.GameServer ----------------------------------------------------=[ Data ]
|
||||
2018.06.26 17:19:52,840 INFO 1 com.l2jmobius.gameserver.data.xml.impl.ActionData ActionData: Loaded 215 player actions.
|
||||
2018.06.26 17:19:52,907 INFO 1 com.l2jmobius.gameserver.data.xml.impl.CategoryData CategoryData: Loaded 215 Categories.
|
||||
2018.06.26 17:19:52,913 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SecondaryAuthData SecondaryAuthData: Loaded 328 forbidden passwords.
|
||||
2018.06.26 17:19:52,919 INFO 1 com.l2jmobius.gameserver.data.xml.impl.AbilityPointsData AbilityPointsData: Loaded 4 range fees.
|
||||
2018.06.26 17:19:55,131 INFO 1 com.l2jmobius.gameserver.datatables.ItemTable ItemTable: Highest item id used: 49798
|
||||
2018.06.26 17:19:55,138 INFO 1 com.l2jmobius.gameserver.datatables.ItemTable ItemTable: Loaded: 20834 Etc Items
|
||||
2018.06.26 17:19:55,138 INFO 1 com.l2jmobius.gameserver.datatables.ItemTable ItemTable: Loaded: 11140 Armor Items
|
||||
2018.06.26 17:19:55,138 INFO 1 com.l2jmobius.gameserver.datatables.ItemTable ItemTable: Loaded: 8628 Weapon Items
|
||||
2018.06.26 17:19:55,138 INFO 1 com.l2jmobius.gameserver.datatables.ItemTable ItemTable: Loaded: 40602 Items in total.
|
||||
2018.06.26 17:19:55,148 INFO 1 com.l2jmobius.gameserver.data.xml.impl.CombinationItemsData CombinationItemsData: Loaded 830 combinations.
|
||||
2018.06.26 17:19:55,161 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SayuneData SayuneData: Loaded: 40 maps.
|
||||
2018.06.26 17:19:55,176 INFO 1 com.l2jmobius.gameserver.data.xml.impl.ClanRewardData ClanRewardData: Loaded: 4 rewards for MEMBERS_ONLINE
|
||||
2018.06.26 17:19:55,176 INFO 1 com.l2jmobius.gameserver.data.xml.impl.ClanRewardData ClanRewardData: Loaded: 4 rewards for HUNTING_MONSTERS
|
||||
2018.06.26 17:19:55,805 INFO 1 handlers.DailyMissionMasterHandler DailyMissionMasterHandler: Loaded 7 handlers.
|
||||
2018.06.26 17:19:55,847 INFO 1 com.l2jmobius.gameserver.data.xml.impl.DailyMissionData DailyMissionData: Loaded 59 one day rewards.
|
||||
2018.06.26 17:19:55,847 INFO 1 com.l2jmobius.gameserver.GameServer --------------------------------------------------=[ Skills ]
|
||||
2018.06.26 17:19:58,208 INFO 1 handlers.EffectMasterHandler EffectMasterHandler: Loaded 331 effect handlers.
|
||||
2018.06.26 17:19:58,222 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnchantSkillGroupsData EnchantSkillGroupsData: Loaded 30 enchant routes, max enchant set to 30.
|
||||
2018.06.26 17:20:02,778 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillData SkillData: Loaded 150332 Skills.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 26839 Class Skills for 145 Class Skill Trees.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 24 Sub-Class Skills.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 38 Dual-Class Skills.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 104 Transfer Skills for 3 Transfer Skill Trees.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 17 Race skills for 7 Race Skill Trees.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 35 Fishing Skills, 8 Dwarven only Fishing Skills.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 3 Collect Skills.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 171 Pledge Skills, 141 for Pledge and 30 Residential.
|
||||
2018.06.26 17:20:03,512 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 18 Sub-Pledge Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 32 Transform Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 17 Noble Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 5 Hero Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 61 Game Master Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 61 Game Master Aura Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 101 Ability Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 112 Alchemy Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 34 Class Awaken Save Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 20 Revelation Skills.
|
||||
2018.06.26 17:20:03,513 INFO 1 com.l2jmobius.gameserver.data.xml.impl.SkillTreesData SkillTreesData: Loaded 32 Common Skills to all classes.
|
||||
2018.06.26 17:20:03,528 INFO 1 com.l2jmobius.gameserver.data.xml.impl.PetSkillData PetSkillData: Loaded 1046 skills.
|
||||
2018.06.26 17:20:03,528 INFO 1 com.l2jmobius.gameserver.GameServer ---------------------------------------------------=[ Items ]
|
||||
2018.06.26 17:20:03,771 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnchantItemGroupsData EnchantItemGroupsData: Loaded: 4 item group templates.
|
||||
2018.06.26 17:20:03,771 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnchantItemGroupsData EnchantItemGroupsData: Loaded: 1 scroll group templates.
|
||||
2018.06.26 17:20:03,785 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnchantItemData EnchantItemData: Loaded 244 Enchant Scrolls.
|
||||
2018.06.26 17:20:03,786 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnchantItemData EnchantItemData: Loaded 100 Support Items.
|
||||
2018.06.26 17:20:03,801 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnchantItemOptionsData EnchantItemOptionsData: Loaded: 51 Items and 1437 Options.
|
||||
2018.06.26 17:20:03,819 INFO 1 com.l2jmobius.gameserver.data.xml.impl.ItemCrystallizationData ItemCrystallizationData: Loaded 12 crystallization templates.
|
||||
2018.06.26 17:20:03,819 INFO 1 com.l2jmobius.gameserver.data.xml.impl.ItemCrystallizationData ItemCrystallizationData: Loaded 278 pre-defined crystallizable items.
|
||||
2018.06.26 17:20:03,832 INFO 1 com.l2jmobius.gameserver.data.xml.impl.ItemCrystallizationData ItemCrystallizationData: Generated 5767 crystallizable items from templates.
|
||||
2018.06.26 17:20:04,764 WARNING 20 com.l2jmobius.gameserver.Shutdown Server scheduled restart issued shutdown command. Restart in 1 seconds!
|
||||
2018.06.26 17:20:05,092 INFO 1 com.l2jmobius.gameserver.data.xml.impl.OptionData OptionData: Loaded: 32989 Options.
|
||||
2018.06.26 17:20:05,188 INFO 1 VariationData VariationData: Loaded 117 Variations.
|
||||
2018.06.26 17:20:05,188 INFO 1 VariationData VariationData: Loaded 4694 Fees.
|
||||
2018.06.26 17:20:05,206 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnsoulData EnsoulData: Loaded: 10 fees
|
||||
2018.06.26 17:20:05,206 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnsoulData EnsoulData: Loaded: 742 options
|
||||
2018.06.26 17:20:05,206 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnsoulData EnsoulData: Loaded: 104 stones
|
||||
2018.06.26 17:20:05,208 INFO 1 com.l2jmobius.gameserver.data.xml.impl.EnchantItemHPBonusData EnchantItemHPBonusData: Loaded 11 Enchant HP Bonuses.
|
||||
2018.06.26 17:20:05,766 WARNING 520 com.l2jmobius.gameserver.Shutdown GM shutdown countdown is over. shutting down NOW!
|
@ -71,7 +71,7 @@ import com.l2jmobius.gameserver.util.Util;
|
||||
*/
|
||||
public final class Config
|
||||
{
|
||||
protected static final Logger LOGGER = Logger.getLogger(Config.class.getName());
|
||||
private static final Logger LOGGER = Logger.getLogger(Config.class.getName());
|
||||
|
||||
// --------------------------------------------------
|
||||
// Constants
|
||||
@ -81,60 +81,59 @@ public final class Config
|
||||
// --------------------------------------------------
|
||||
// Config File Definitions
|
||||
// --------------------------------------------------
|
||||
public static final String CHARACTER_CONFIG_FILE = "./config/Character.ini";
|
||||
public static final String CH_SIEGE_CONFIG_FILE = "./config/ConquerableHallSiege.ini";
|
||||
public static final String FEATURE_CONFIG_FILE = "./config/Feature.ini";
|
||||
public static final String FLOOD_PROTECTOR_CONFIG_FILE = "./config/FloodProtector.ini";
|
||||
public static final String FORTSIEGE_CONFIG_FILE = "./config/FortSiege.ini";
|
||||
public static final String GENERAL_CONFIG_FILE = "./config/General.ini";
|
||||
public static final String GEOENGINE_CONFIG_FILE = "./config/GeoEngine.ini";
|
||||
public static final String GRACIASEEDS_CONFIG_FILE = "./config/GraciaSeeds.ini";
|
||||
public static final String GRANDBOSS_CONFIG_FILE = "./config/GrandBoss.ini";
|
||||
public static final String IDFACTORY_CONFIG_FILE = "./config/IdFactory.ini";
|
||||
public static final String LOGIN_CONFIG_FILE = "./config/LoginServer.ini";
|
||||
public static final String NPC_CONFIG_FILE = "./config/NPC.ini";
|
||||
public static final String OLYMPIAD_CONFIG_FILE = "./config/Olympiad.ini";
|
||||
public static final String PVP_CONFIG_FILE = "./config/PVP.ini";
|
||||
public static final String RATES_CONFIG_FILE = "./config/Rates.ini";
|
||||
public static final String SERVER_CONFIG_FILE = "./config/Server.ini";
|
||||
public static final String SIEGE_CONFIG_FILE = "./config/Siege.ini";
|
||||
public static final String TELNET_CONFIG_FILE = "./config/Telnet.ini";
|
||||
public static final String TRAINING_CAMP_CONFIG_FILE = "./config/TrainingCamp.ini";
|
||||
public static final String CHAT_FILTER_FILE = "./config/chatfilter.txt";
|
||||
public static final String HEXID_FILE = "./config/hexid.txt";
|
||||
public static final String IPCONFIG_FILE = "./config/ipconfig.xml";
|
||||
public static final String FORTSIEGE_CONFIG_FILE = "./config/FortSiege.ini";
|
||||
private static final String CHARACTER_CONFIG_FILE = "./config/Character.ini";
|
||||
private static final String FEATURE_CONFIG_FILE = "./config/Feature.ini";
|
||||
private static final String FLOOD_PROTECTOR_CONFIG_FILE = "./config/FloodProtector.ini";
|
||||
private static final String GENERAL_CONFIG_FILE = "./config/General.ini";
|
||||
private static final String GRACIASEEDS_CONFIG_FILE = "./config/GraciaSeeds.ini";
|
||||
private static final String GRANDBOSS_CONFIG_FILE = "./config/GrandBoss.ini";
|
||||
private static final String IDFACTORY_CONFIG_FILE = "./config/IdFactory.ini";
|
||||
private static final String LOGIN_CONFIG_FILE = "./config/LoginServer.ini";
|
||||
private static final String NPC_CONFIG_FILE = "./config/NPC.ini";
|
||||
private static final String PVP_CONFIG_FILE = "./config/PVP.ini";
|
||||
private static final String RATES_CONFIG_FILE = "./config/Rates.ini";
|
||||
private static final String SERVER_CONFIG_FILE = "./config/Server.ini";
|
||||
private static final String TELNET_CONFIG_FILE = "./config/Telnet.ini";
|
||||
private static final String TRAINING_CAMP_CONFIG_FILE = "./config/TrainingCamp.ini";
|
||||
private static final String CHAT_FILTER_FILE = "./config/chatfilter.txt";
|
||||
private static final String HEXID_FILE = "./config/hexid.txt";
|
||||
private static final String IPCONFIG_FILE = "./config/ipconfig.xml";
|
||||
|
||||
// --------------------------------------------------
|
||||
// Custom Config File Definitions
|
||||
// --------------------------------------------------
|
||||
public static final String CUSTOM_ALLOWED_PLAYER_RACES_CONFIG_FILE = "./config/Custom/AllowedPlayerRaces.ini";
|
||||
public static final String CUSTOM_AUTO_POTIONS_CONFIG_FILE = "./config/Custom/AutoPotions.ini";
|
||||
public static final String CUSTOM_BANKING_CONFIG_FILE = "./config/Custom/Banking.ini";
|
||||
public static final String CUSTOM_CHAMPION_MONSTERS_CONFIG_FILE = "./config/Custom/ChampionMonsters.ini";
|
||||
public static final String CUSTOM_CHAT_MODERATION_CONFIG_FILE = "./config/Custom/ChatModeration.ini";
|
||||
public static final String CUSTOM_COMMUNITY_BOARD_CONFIG_FILE = "./config/Custom/CommunityBoard.ini";
|
||||
public static final String CUSTOM_DUALBOX_CHECK_CONFIG_FILE = "./config/Custom/DualboxCheck.ini";
|
||||
public static final String CUSTOM_FACTION_SYSTEM_CONFIG_FILE = "./config/Custom/FactionSystem.ini";
|
||||
public static final String CUSTOM_FAKE_PLAYERS_CONFIG_FILE = "./config/Custom/FakePlayers.ini";
|
||||
public static final String CUSTOM_FIND_PVP_CONFIG_FILE = "./config/Custom/FindPvP.ini";
|
||||
public static final String CUSTOM_MULTILANGUAL_SUPPORT_CONFIG_FILE = "./config/Custom/MultilingualSupport.ini";
|
||||
public static final String CUSTOM_NPC_STAT_MULTIPIERS_CONFIG_FILE = "./config/Custom/NpcStatMultipliers.ini";
|
||||
public static final String CUSTOM_OFFLINE_TRADE_CONFIG_FILE = "./config/Custom/OfflineTrade.ini";
|
||||
public static final String CUSTOM_PASSWORD_CHANGE_CONFIG_FILE = "./config/Custom/PasswordChange.ini";
|
||||
public static final String CUSTOM_PC_CAFE_CONFIG_FILE = "./config/Custom/PcCafe.ini";
|
||||
public static final String CUSTOM_PREMIUM_SYSTEM_CONFIG_FILE = "./config/Custom/PremiumSystem.ini";
|
||||
public static final String CUSTOM_PRIVATE_STORE_RANGE_CONFIG_FILE = "./config/Custom/PrivateStoreRange.ini";
|
||||
public static final String CUSTOM_PVP_ANNOUNCE_CONFIG_FILE = "./config/Custom/PvpAnnounce.ini";
|
||||
public static final String CUSTOM_PVP_REWARD_ITEM_CONFIG_FILE = "./config/Custom/PvpRewardItem.ini";
|
||||
public static final String CUSTOM_PVP_TITLE_CONFIG_FILE = "./config/Custom/PvpTitleColor.ini";
|
||||
public static final String CUSTOM_RANDOM_SPAWNS_CONFIG_FILE = "./config/Custom/RandomSpawns.ini";
|
||||
public static final String CUSTOM_SAYUNE_FOR_ALL_CONFIG_FILE = "./config/Custom/SayuneForAll.ini";
|
||||
public static final String CUSTOM_SCREEN_WELCOME_MESSAGE_CONFIG_FILE = "./config/Custom/ScreenWelcomeMessage.ini";
|
||||
public static final String CUSTOM_SELL_BUFFS_CONFIG_FILE = "./config/Custom/SellBuffs.ini";
|
||||
public static final String CUSTOM_SERVER_TIME_CONFIG_FILE = "./config/Custom/ServerTime.ini";
|
||||
public static final String CUSTOM_STARTING_LOCATION_CONFIG_FILE = "./config/Custom/StartingLocation.ini";
|
||||
public static final String CUSTOM_VOTE_REWARD_CONFIG_FILE = "./config/Custom/VoteReward.ini";
|
||||
public static final String CUSTOM_WALKER_BOT_PROTECTION_CONFIG_FILE = "./config/Custom/WalkerBotProtection.ini";
|
||||
private static final String CUSTOM_ALLOWED_PLAYER_RACES_CONFIG_FILE = "./config/Custom/AllowedPlayerRaces.ini";
|
||||
private static final String CUSTOM_AUTO_POTIONS_CONFIG_FILE = "./config/Custom/AutoPotions.ini";
|
||||
private static final String CUSTOM_BANKING_CONFIG_FILE = "./config/Custom/Banking.ini";
|
||||
private static final String CUSTOM_CHAMPION_MONSTERS_CONFIG_FILE = "./config/Custom/ChampionMonsters.ini";
|
||||
private static final String CUSTOM_CHAT_MODERATION_CONFIG_FILE = "./config/Custom/ChatModeration.ini";
|
||||
private static final String CUSTOM_COMMUNITY_BOARD_CONFIG_FILE = "./config/Custom/CommunityBoard.ini";
|
||||
private static final String CUSTOM_DUALBOX_CHECK_CONFIG_FILE = "./config/Custom/DualboxCheck.ini";
|
||||
private static final String CUSTOM_FACTION_SYSTEM_CONFIG_FILE = "./config/Custom/FactionSystem.ini";
|
||||
private static final String CUSTOM_FAKE_PLAYERS_CONFIG_FILE = "./config/Custom/FakePlayers.ini";
|
||||
private static final String CUSTOM_FIND_PVP_CONFIG_FILE = "./config/Custom/FindPvP.ini";
|
||||
private static final String CUSTOM_MULTILANGUAL_SUPPORT_CONFIG_FILE = "./config/Custom/MultilingualSupport.ini";
|
||||
private static final String CUSTOM_NPC_STAT_MULTIPIERS_CONFIG_FILE = "./config/Custom/NpcStatMultipliers.ini";
|
||||
private static final String CUSTOM_OFFLINE_TRADE_CONFIG_FILE = "./config/Custom/OfflineTrade.ini";
|
||||
private static final String CUSTOM_PASSWORD_CHANGE_CONFIG_FILE = "./config/Custom/PasswordChange.ini";
|
||||
private static final String CUSTOM_PC_CAFE_CONFIG_FILE = "./config/Custom/PcCafe.ini";
|
||||
private static final String CUSTOM_PREMIUM_SYSTEM_CONFIG_FILE = "./config/Custom/PremiumSystem.ini";
|
||||
private static final String CUSTOM_PRIVATE_STORE_RANGE_CONFIG_FILE = "./config/Custom/PrivateStoreRange.ini";
|
||||
private static final String CUSTOM_PVP_ANNOUNCE_CONFIG_FILE = "./config/Custom/PvpAnnounce.ini";
|
||||
private static final String CUSTOM_PVP_REWARD_ITEM_CONFIG_FILE = "./config/Custom/PvpRewardItem.ini";
|
||||
private static final String CUSTOM_PVP_TITLE_CONFIG_FILE = "./config/Custom/PvpTitleColor.ini";
|
||||
private static final String CUSTOM_RANDOM_SPAWNS_CONFIG_FILE = "./config/Custom/RandomSpawns.ini";
|
||||
private static final String CUSTOM_SAYUNE_FOR_ALL_CONFIG_FILE = "./config/Custom/SayuneForAll.ini";
|
||||
private static final String CUSTOM_SCREEN_WELCOME_MESSAGE_CONFIG_FILE = "./config/Custom/ScreenWelcomeMessage.ini";
|
||||
private static final String CUSTOM_SELL_BUFFS_CONFIG_FILE = "./config/Custom/SellBuffs.ini";
|
||||
private static final String CUSTOM_SERVER_TIME_CONFIG_FILE = "./config/Custom/ServerTime.ini";
|
||||
private static final String CUSTOM_STARTING_LOCATION_CONFIG_FILE = "./config/Custom/StartingLocation.ini";
|
||||
private static final String CUSTOM_VOTE_REWARD_CONFIG_FILE = "./config/Custom/VoteReward.ini";
|
||||
private static final String CUSTOM_WALKER_BOT_PROTECTION_CONFIG_FILE = "./config/Custom/WalkerBotProtection.ini";
|
||||
|
||||
// --------------------------------------------------
|
||||
// Variable Definitions
|
||||
@ -172,7 +171,6 @@ public final class Config
|
||||
public static long EFFECT_TICK_RATIO;
|
||||
public static boolean ENABLE_ALTER_SKILLS;
|
||||
public static boolean LIFE_CRYSTAL_NEEDED;
|
||||
public static boolean ES_SP_BOOK_NEEDED;
|
||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||
public static boolean ALT_GAME_DUALCLASS_WITHOUT_QUEST;
|
||||
@ -404,7 +402,6 @@ public final class Config
|
||||
public static boolean GM_TRADE_RESTRICTED_ITEMS;
|
||||
public static boolean GM_RESTART_FIGHTING;
|
||||
public static boolean GM_ANNOUNCER_NAME;
|
||||
public static boolean GM_CRITANNOUNCER_NAME;
|
||||
public static boolean GM_GIVE_SPECIAL_SKILLS;
|
||||
public static boolean GM_GIVE_SPECIAL_AURA_SKILLS;
|
||||
public static boolean GM_DEBUG_HTML_PATHS;
|
||||
@ -420,9 +417,7 @@ public final class Config
|
||||
public static boolean SKILL_CHECK_REMOVE;
|
||||
public static boolean SKILL_CHECK_GM;
|
||||
public static boolean HTML_ACTION_CACHE_DEBUG;
|
||||
public static boolean PACKET_HANDLER_DEBUG;
|
||||
public static boolean DEVELOPER;
|
||||
public static boolean ALT_DEV_NO_HANDLERS;
|
||||
public static boolean ALT_DEV_NO_QUESTS;
|
||||
public static boolean ALT_DEV_NO_SPAWNS;
|
||||
public static boolean ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS;
|
||||
@ -484,7 +479,6 @@ public final class Config
|
||||
public static int EJECT_DEAD_PLAYER_TIME;
|
||||
public static boolean ALLOW_RACE;
|
||||
public static boolean ALLOW_WATER;
|
||||
public static boolean ALLOW_RENTPET;
|
||||
public static boolean ALLOW_FISHING;
|
||||
public static boolean ALLOW_BOAT;
|
||||
public static int BOAT_BROADCAST_RADIUS;
|
||||
@ -549,18 +543,6 @@ public final class Config
|
||||
public static boolean ALT_ITEM_AUCTION_ENABLED;
|
||||
public static int ALT_ITEM_AUCTION_EXPIRED_AFTER;
|
||||
public static long ALT_ITEM_AUCTION_TIME_EXTENDS_ON_BID;
|
||||
public static int RIFT_MIN_PARTY_SIZE;
|
||||
public static int RIFT_SPAWN_DELAY;
|
||||
public static int RIFT_MAX_JUMPS;
|
||||
public static int RIFT_AUTO_JUMPS_TIME_MIN;
|
||||
public static int RIFT_AUTO_JUMPS_TIME_MAX;
|
||||
public static float RIFT_BOSS_ROOM_TIME_MUTIPLY;
|
||||
public static int RIFT_ENTER_COST_RECRUIT;
|
||||
public static int RIFT_ENTER_COST_SOLDIER;
|
||||
public static int RIFT_ENTER_COST_OFFICER;
|
||||
public static int RIFT_ENTER_COST_CAPTAIN;
|
||||
public static int RIFT_ENTER_COST_COMMANDER;
|
||||
public static int RIFT_ENTER_COST_HERO;
|
||||
public static IllegalActionPunishmentType DEFAULT_PUNISH;
|
||||
public static int DEFAULT_PUNISH_PARAM;
|
||||
public static boolean ONLY_GM_ITEMS_FREE;
|
||||
@ -582,8 +564,6 @@ public final class Config
|
||||
public static int PLAYER_MOVEMENT_BLOCK_TIME;
|
||||
public static int ABILITY_MAX_POINTS;
|
||||
public static long ABILITY_POINTS_RESET_ADENA;
|
||||
public static int NORMAL_ENCHANT_COST_MULTIPLIER;
|
||||
public static int SAFE_ENCHANT_COST_MULTIPLIER;
|
||||
public static boolean BOTREPORT_ENABLE;
|
||||
public static String[] BOTREPORT_RESETPOINT_HOUR;
|
||||
public static long BOTREPORT_REPORT_DELAY;
|
||||
@ -626,12 +606,10 @@ public final class Config
|
||||
public static Map<Integer, Float> NPC_SKILL_DMG_PENALTY;
|
||||
public static int MIN_NPC_LVL_MAGIC_PENALTY;
|
||||
public static Map<Integer, Float> NPC_SKILL_CHANCE_PENALTY;
|
||||
public static int DECAY_TIME_TASK;
|
||||
public static int DEFAULT_CORPSE_TIME;
|
||||
public static int SPOILED_CORPSE_EXTEND_TIME;
|
||||
public static int CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY;
|
||||
public static boolean GUARD_ATTACK_AGGRO_MOB;
|
||||
public static boolean ALLOW_WYVERN_UPGRADER;
|
||||
public static double RAID_HP_REGEN_MULTIPLIER;
|
||||
public static double RAID_MP_REGEN_MULTIPLIER;
|
||||
public static double RAID_PDEFENCE_MULTIPLIER;
|
||||
@ -657,7 +635,6 @@ public final class Config
|
||||
// PvP Settings
|
||||
// --------------------------------------------------
|
||||
public static boolean KARMA_DROP_GM;
|
||||
public static boolean KARMA_AWARD_PK_KILL;
|
||||
public static int KARMA_PK_LIMIT;
|
||||
public static String KARMA_NONDROPPABLE_PET_ITEMS;
|
||||
public static String KARMA_NONDROPPABLE_ITEMS;
|
||||
@ -714,10 +691,6 @@ public final class Config
|
||||
public static float RATE_KARMA_LOST;
|
||||
public static float RATE_KARMA_EXP_LOST;
|
||||
public static float RATE_SIEGE_GUARDS_PRICE;
|
||||
public static float RATE_DROP_COMMON_HERBS;
|
||||
public static float RATE_DROP_HP_HERBS;
|
||||
public static float RATE_DROP_MP_HERBS;
|
||||
public static float RATE_DROP_SPECIAL_HERBS;
|
||||
public static int PLAYER_DROP_LIMIT;
|
||||
public static int PLAYER_RATE_DROP;
|
||||
public static int PLAYER_RATE_DROP_ITEM;
|
||||
@ -773,15 +746,6 @@ public final class Config
|
||||
public static int SERVER_RESTART_SCHEDULE_COUNTDOWN;
|
||||
public static String[] SERVER_RESTART_SCHEDULE;
|
||||
|
||||
// --------------------------------------------------
|
||||
// MMO Settings
|
||||
// --------------------------------------------------
|
||||
public static int MMO_SELECTOR_SLEEP_TIME;
|
||||
public static int MMO_MAX_SEND_PER_PASS;
|
||||
public static int MMO_MAX_READ_PER_PASS;
|
||||
public static int MMO_HELPER_BUFFER_COUNT;
|
||||
public static boolean MMO_TCP_NODELAY;
|
||||
|
||||
// --------------------------------------------------
|
||||
// Hardin (Agent of Chaos)
|
||||
// --------------------------------------------------
|
||||
@ -800,7 +764,6 @@ public final class Config
|
||||
public static boolean RAIDBOSS_USE_VITALITY;
|
||||
public static float RATE_VITALITY_EXP_MULTIPLIER;
|
||||
public static int VITALITY_MAX_ITEMS_ALLOWED;
|
||||
public static float RATE_DROP_VITALITY_HERBS;
|
||||
public static float RATE_VITALITY_LOST;
|
||||
public static float RATE_VITALITY_GAIN;
|
||||
|
||||
@ -833,22 +796,6 @@ public final class Config
|
||||
public static double ENCHANT_CHANCE_ELEMENT_ENERGY;
|
||||
public static int[] ENCHANT_BLACKLIST;
|
||||
public static boolean DISABLE_OVER_ENCHANTING;
|
||||
public static int AUGMENTATION_NG_SKILL_CHANCE;
|
||||
public static int AUGMENTATION_NG_GLOW_CHANCE;
|
||||
public static int AUGMENTATION_MID_SKILL_CHANCE;
|
||||
public static int AUGMENTATION_MID_GLOW_CHANCE;
|
||||
public static int AUGMENTATION_HIGH_SKILL_CHANCE;
|
||||
public static int AUGMENTATION_HIGH_GLOW_CHANCE;
|
||||
public static int AUGMENTATION_TOP_SKILL_CHANCE;
|
||||
public static int AUGMENTATION_TOP_GLOW_CHANCE;
|
||||
public static int AUGMENTATION_BASESTAT_CHANCE;
|
||||
public static int AUGMENTATION_ACC_SKILL_CHANCE;
|
||||
public static boolean RETAIL_LIKE_AUGMENTATION;
|
||||
public static int[] RETAIL_LIKE_AUGMENTATION_NG_CHANCE;
|
||||
public static int[] RETAIL_LIKE_AUGMENTATION_MID_CHANCE;
|
||||
public static int[] RETAIL_LIKE_AUGMENTATION_HIGH_CHANCE;
|
||||
public static int[] RETAIL_LIKE_AUGMENTATION_TOP_CHANCE;
|
||||
public static boolean RETAIL_LIKE_AUGMENTATION_ACCESSORY;
|
||||
public static int[] AUGMENTATION_BLACKLIST;
|
||||
public static boolean ALT_ALLOW_AUGMENT_PVP_ITEMS;
|
||||
public static double HP_REGEN_MULTIPLIER;
|
||||
@ -937,16 +884,12 @@ public final class Config
|
||||
// Anakim
|
||||
public static int ANAKIM_MIN_PLAYERS;
|
||||
public static int ANAKIM_MAX_PLAYERS;
|
||||
public static int ANAKIM_SPAWN_INTERVAL;
|
||||
public static int ANAKIM_SPAWN_RANDOM;
|
||||
public static int ANAKIM_MIN_PLAYER_LVL;
|
||||
public static int ANAKIM_MAX_PLAYER_LVL;
|
||||
|
||||
// Lilith
|
||||
public static int LILITH_MIN_PLAYERS;
|
||||
public static int LILITH_MAX_PLAYERS;
|
||||
public static int LILITH_SPAWN_INTERVAL;
|
||||
public static int LILITH_SPAWN_RANDOM;
|
||||
public static int LILITH_MIN_PLAYER_LVL;
|
||||
public static int LILITH_MAX_PLAYER_LVL;
|
||||
|
||||
@ -957,14 +900,6 @@ public final class Config
|
||||
// chatfilter
|
||||
public static List<String> FILTER_LIST;
|
||||
|
||||
// Conquerable Halls Settings
|
||||
public static int CHS_CLAN_MINLEVEL;
|
||||
public static int CHS_MAX_ATTACKERS;
|
||||
public static int CHS_MAX_FLAGS_PER_CLAN;
|
||||
public static boolean CHS_ENABLE_FAME;
|
||||
public static int CHS_FAME_AMOUNT;
|
||||
public static int CHS_FAME_FREQUENCY;
|
||||
|
||||
// --------------------------------------------------
|
||||
// GeoEngine
|
||||
// --------------------------------------------------
|
||||
@ -1142,7 +1077,6 @@ public final class Config
|
||||
public static int COMMUNITYBOARD_TELEPORT_PRICE;
|
||||
public static int COMMUNITYBOARD_BUFF_PRICE;
|
||||
public static int COMMUNITYBOARD_HEAL_PRICE;
|
||||
public static boolean COMMUNITYBOARD_COMBAT_DISABLED;
|
||||
public static boolean COMMUNITYBOARD_KARMA_DISABLED;
|
||||
public static boolean COMMUNITYBOARD_CAST_ANIMATIONS;
|
||||
public static boolean COMMUNITY_PREMIUM_SYSTEM_ENABLED;
|
||||
@ -1542,7 +1476,6 @@ public final class Config
|
||||
EFFECT_TICK_RATIO = Character.getLong("EffectTickRatio", 666);
|
||||
ENABLE_ALTER_SKILLS = Character.getBoolean("EnableAlterSkills", true);
|
||||
LIFE_CRYSTAL_NEEDED = Character.getBoolean("LifeCrystalNeeded", true);
|
||||
ES_SP_BOOK_NEEDED = Character.getBoolean("EnchantSkillSpBookNeeded", true);
|
||||
DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
|
||||
ALT_GAME_DUALCLASS_WITHOUT_QUEST = Character.getBoolean("AltDualClassWithoutQuest", false);
|
||||
@ -1608,45 +1541,7 @@ public final class Config
|
||||
}
|
||||
Arrays.sort(ENCHANT_BLACKLIST);
|
||||
DISABLE_OVER_ENCHANTING = Character.getBoolean("DisableOverEnchanting", true);
|
||||
AUGMENTATION_NG_SKILL_CHANCE = Character.getInt("AugmentationNGSkillChance", 15);
|
||||
AUGMENTATION_NG_GLOW_CHANCE = Character.getInt("AugmentationNGGlowChance", 0);
|
||||
AUGMENTATION_MID_SKILL_CHANCE = Character.getInt("AugmentationMidSkillChance", 30);
|
||||
AUGMENTATION_MID_GLOW_CHANCE = Character.getInt("AugmentationMidGlowChance", 40);
|
||||
AUGMENTATION_HIGH_SKILL_CHANCE = Character.getInt("AugmentationHighSkillChance", 45);
|
||||
AUGMENTATION_HIGH_GLOW_CHANCE = Character.getInt("AugmentationHighGlowChance", 70);
|
||||
AUGMENTATION_TOP_SKILL_CHANCE = Character.getInt("AugmentationTopSkillChance", 60);
|
||||
AUGMENTATION_TOP_GLOW_CHANCE = Character.getInt("AugmentationTopGlowChance", 100);
|
||||
AUGMENTATION_BASESTAT_CHANCE = Character.getInt("AugmentationBaseStatChance", 1);
|
||||
AUGMENTATION_ACC_SKILL_CHANCE = Character.getInt("AugmentationAccSkillChance", 0);
|
||||
|
||||
RETAIL_LIKE_AUGMENTATION = Character.getBoolean("RetailLikeAugmentation", true);
|
||||
String[] array = Character.getString("RetailLikeAugmentationNoGradeChance", "55,35,7,3").split(",");
|
||||
RETAIL_LIKE_AUGMENTATION_NG_CHANCE = new int[array.length];
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
RETAIL_LIKE_AUGMENTATION_NG_CHANCE[i] = Integer.parseInt(array[i]);
|
||||
}
|
||||
array = Character.getString("RetailLikeAugmentationMidGradeChance", "55,35,7,3").split(",");
|
||||
RETAIL_LIKE_AUGMENTATION_MID_CHANCE = new int[array.length];
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
RETAIL_LIKE_AUGMENTATION_MID_CHANCE[i] = Integer.parseInt(array[i]);
|
||||
}
|
||||
array = Character.getString("RetailLikeAugmentationHighGradeChance", "55,35,7,3").split(",");
|
||||
RETAIL_LIKE_AUGMENTATION_HIGH_CHANCE = new int[array.length];
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
RETAIL_LIKE_AUGMENTATION_HIGH_CHANCE[i] = Integer.parseInt(array[i]);
|
||||
}
|
||||
array = Character.getString("RetailLikeAugmentationTopGradeChance", "55,35,7,3").split(",");
|
||||
RETAIL_LIKE_AUGMENTATION_TOP_CHANCE = new int[array.length];
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
RETAIL_LIKE_AUGMENTATION_TOP_CHANCE[i] = Integer.parseInt(array[i]);
|
||||
}
|
||||
RETAIL_LIKE_AUGMENTATION_ACCESSORY = Character.getBoolean("RetailLikeAugmentationAccessory", true);
|
||||
|
||||
array = Character.getString("AugmentationBlackList", "6656,6657,6658,6659,6660,6661,6662,8191,10170,10314,13740,13741,13742,13743,13744,13745,13746,13747,13748,14592,14593,14594,14595,14596,14597,14598,14599,14600,14664,14665,14666,14667,14668,14669,14670,14671,14672,14801,14802,14803,14804,14805,14806,14807,14808,14809,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,16025,16026,21712,22173,22174,22175").split(",");
|
||||
String[] array = Character.getString("AugmentationBlackList", "6656,6657,6658,6659,6660,6661,6662,8191,10170,10314,13740,13741,13742,13743,13744,13745,13746,13747,13748,14592,14593,14594,14595,14596,14597,14598,14599,14600,14664,14665,14666,14667,14668,14669,14670,14671,14672,14801,14802,14803,14804,14805,14806,14807,14808,14809,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,16025,16026,21712,22173,22174,22175").split(",");
|
||||
AUGMENTATION_BLACKLIST = new int[array.length];
|
||||
|
||||
for (int i = 0; i < array.length; i++)
|
||||
@ -1767,7 +1662,7 @@ public final class Config
|
||||
SHOW_GOD_VIDEO_INTRO = Character.getBoolean("GoDVideoIntro", true);
|
||||
PLAYER_MOVEMENT_BLOCK_TIME = Character.getInt("NpcTalkBlockingTime", 0) * 1000;
|
||||
ABILITY_MAX_POINTS = Character.getInt("AbilityMaxPoints", 16);
|
||||
ABILITY_POINTS_RESET_ADENA = Character.getLong("AbilityPointsResetAdena", 10_000_000);
|
||||
ABILITY_POINTS_RESET_ADENA = Character.getLong("AbilityPointsResetAdena", 10000000);
|
||||
|
||||
// Load Telnet config file (if exists)
|
||||
final PropertiesParser telnetSettings = new PropertiesParser(TELNET_CONFIG_FILE);
|
||||
@ -1811,7 +1706,6 @@ public final class Config
|
||||
GM_TRADE_RESTRICTED_ITEMS = General.getBoolean("GMTradeRestrictedItems", false);
|
||||
GM_RESTART_FIGHTING = General.getBoolean("GMRestartFighting", true);
|
||||
GM_ANNOUNCER_NAME = General.getBoolean("GMShowAnnouncerName", false);
|
||||
GM_CRITANNOUNCER_NAME = General.getBoolean("GMShowCritAnnouncerName", false);
|
||||
GM_GIVE_SPECIAL_SKILLS = General.getBoolean("GMGiveSpecialSkills", false);
|
||||
GM_GIVE_SPECIAL_AURA_SKILLS = General.getBoolean("GMGiveSpecialAuraSkills", false);
|
||||
GM_DEBUG_HTML_PATHS = General.getBoolean("GMDebugHtmlPaths", true);
|
||||
@ -1827,9 +1721,7 @@ public final class Config
|
||||
SKILL_CHECK_REMOVE = General.getBoolean("SkillCheckRemove", false);
|
||||
SKILL_CHECK_GM = General.getBoolean("SkillCheckGM", true);
|
||||
HTML_ACTION_CACHE_DEBUG = General.getBoolean("HtmlActionCacheDebug", false);
|
||||
PACKET_HANDLER_DEBUG = General.getBoolean("PacketHandlerDebug", false);
|
||||
DEVELOPER = General.getBoolean("Developer", false);
|
||||
ALT_DEV_NO_HANDLERS = General.getBoolean("AltDevNoHandlers", false) || Boolean.getBoolean("nohandlers");
|
||||
ALT_DEV_NO_QUESTS = General.getBoolean("AltDevNoQuests", false) || Boolean.getBoolean("noquests");
|
||||
ALT_DEV_NO_SPAWNS = General.getBoolean("AltDevNoSpawns", false) || Boolean.getBoolean("nospawns");
|
||||
ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowQuestsLoadInLogs", false);
|
||||
@ -1887,7 +1779,6 @@ public final class Config
|
||||
EJECT_DEAD_PLAYER_TIME = General.getInt("EjectDeadPlayerTime", 1);
|
||||
ALLOW_RACE = General.getBoolean("AllowRace", true);
|
||||
ALLOW_WATER = General.getBoolean("AllowWater", true);
|
||||
ALLOW_RENTPET = General.getBoolean("AllowRentPet", false);
|
||||
ALLOW_FISHING = General.getBoolean("AllowFishing", true);
|
||||
ALLOW_MANOR = General.getBoolean("AllowManor", true);
|
||||
ALLOW_BOAT = General.getBoolean("AllowBoat", true);
|
||||
@ -1924,18 +1815,6 @@ public final class Config
|
||||
ALT_ITEM_AUCTION_ENABLED = General.getBoolean("AltItemAuctionEnabled", true);
|
||||
ALT_ITEM_AUCTION_EXPIRED_AFTER = General.getInt("AltItemAuctionExpiredAfter", 14);
|
||||
ALT_ITEM_AUCTION_TIME_EXTENDS_ON_BID = General.getInt("AltItemAuctionTimeExtendsOnBid", 0) * 1000;
|
||||
RIFT_MIN_PARTY_SIZE = General.getInt("RiftMinPartySize", 5);
|
||||
RIFT_MAX_JUMPS = General.getInt("MaxRiftJumps", 4);
|
||||
RIFT_SPAWN_DELAY = General.getInt("RiftSpawnDelay", 10000);
|
||||
RIFT_AUTO_JUMPS_TIME_MIN = General.getInt("AutoJumpsDelayMin", 480);
|
||||
RIFT_AUTO_JUMPS_TIME_MAX = General.getInt("AutoJumpsDelayMax", 600);
|
||||
RIFT_BOSS_ROOM_TIME_MUTIPLY = General.getFloat("BossRoomTimeMultiply", 1.5f);
|
||||
RIFT_ENTER_COST_RECRUIT = General.getInt("RecruitCost", 18);
|
||||
RIFT_ENTER_COST_SOLDIER = General.getInt("SoldierCost", 21);
|
||||
RIFT_ENTER_COST_OFFICER = General.getInt("OfficerCost", 24);
|
||||
RIFT_ENTER_COST_CAPTAIN = General.getInt("CaptainCost", 27);
|
||||
RIFT_ENTER_COST_COMMANDER = General.getInt("CommanderCost", 30);
|
||||
RIFT_ENTER_COST_HERO = General.getInt("HeroCost", 33);
|
||||
DEFAULT_PUNISH = IllegalActionPunishmentType.findByName(General.getString("DefaultPunish", "KICK"));
|
||||
DEFAULT_PUNISH_PARAM = General.getInt("DefaultPunishParam", 0);
|
||||
ONLY_GM_ITEMS_FREE = General.getBoolean("OnlyGMItemsFree", true);
|
||||
@ -1963,9 +1842,6 @@ public final class Config
|
||||
}
|
||||
HBCE_FAIR_PLAY = General.getBoolean("HBCEFairPlay", false);
|
||||
|
||||
NORMAL_ENCHANT_COST_MULTIPLIER = General.getInt("NormalEnchantCostMultipiler", 1);
|
||||
SAFE_ENCHANT_COST_MULTIPLIER = General.getInt("SafeEnchantCostMultipiler", 5);
|
||||
|
||||
BOTREPORT_ENABLE = General.getBoolean("EnableBotReportButton", false);
|
||||
BOTREPORT_RESETPOINT_HOUR = General.getString("BotReportPointsResetHour", "00:00").split(":");
|
||||
BOTREPORT_REPORT_DELAY = General.getInt("BotReportDelay", 30) * 60000;
|
||||
@ -1994,12 +1870,10 @@ public final class Config
|
||||
NPC_SKILL_DMG_PENALTY = parseConfigLine(NPC.getString("SkillDmgPenaltyForLvLDifferences", "0.8, 0.7, 0.65, 0.62"));
|
||||
MIN_NPC_LVL_MAGIC_PENALTY = NPC.getInt("MinNPCLevelForMagicPenalty", 78);
|
||||
NPC_SKILL_CHANCE_PENALTY = parseConfigLine(NPC.getString("SkillChancePenaltyForLvLDifferences", "2.5, 3.0, 3.25, 3.5"));
|
||||
DECAY_TIME_TASK = NPC.getInt("DecayTimeTask", 5000);
|
||||
DEFAULT_CORPSE_TIME = NPC.getInt("DefaultCorpseTime", 7);
|
||||
SPOILED_CORPSE_EXTEND_TIME = NPC.getInt("SpoiledCorpseExtendTime", 10);
|
||||
CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY = NPC.getInt("CorpseConsumeSkillAllowedTimeBeforeDecay", 2000);
|
||||
GUARD_ATTACK_AGGRO_MOB = NPC.getBoolean("GuardAttackAggroMob", false);
|
||||
ALLOW_WYVERN_UPGRADER = NPC.getBoolean("AllowWyvernUpgrader", false);
|
||||
RAID_HP_REGEN_MULTIPLIER = NPC.getDouble("RaidHpRegenMultiplier", 100) / 100;
|
||||
RAID_MP_REGEN_MULTIPLIER = NPC.getDouble("RaidMpRegenMultiplier", 100) / 100;
|
||||
RAID_PDEFENCE_MULTIPLIER = NPC.getDouble("RaidPDefenceMultiplier", 100) / 100;
|
||||
@ -2191,7 +2065,6 @@ public final class Config
|
||||
final PropertiesParser PVPSettings = new PropertiesParser(PVP_CONFIG_FILE);
|
||||
|
||||
KARMA_DROP_GM = PVPSettings.getBoolean("CanGMDropEquipment", false);
|
||||
KARMA_AWARD_PK_KILL = PVPSettings.getBoolean("AwardPKKillPVPPoint", false);
|
||||
KARMA_PK_LIMIT = PVPSettings.getInt("MinimumPKRequiredToDrop", 5);
|
||||
KARMA_NONDROPPABLE_PET_ITEMS = PVPSettings.getString("ListOfPetItems", "2375,3500,3501,3502,4422,4423,4424,4425,6648,6649,6650,9882");
|
||||
KARMA_NONDROPPABLE_ITEMS = PVPSettings.getString("ListOfNonDroppableItems", "57,1147,425,1146,461,10,2368,7,6,2370,2369,6842,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621,7694,8181,5575,7694,9388,9389,9390");
|
||||
@ -2341,22 +2214,20 @@ public final class Config
|
||||
|
||||
ANAKIM_MIN_PLAYERS = GrandBossSettings.getInt("AnakimMinPlayers", 98);
|
||||
ANAKIM_MAX_PLAYERS = GrandBossSettings.getInt("AnakimMaxPlayers", 120);
|
||||
ANAKIM_SPAWN_INTERVAL = GrandBossSettings.getInt("IntervalOfAnakimSpawn", 192);
|
||||
ANAKIM_SPAWN_RANDOM = GrandBossSettings.getInt("RandomOfAnakimSpawn", 148);
|
||||
ANAKIM_MIN_PLAYER_LVL = GrandBossSettings.getInt("AnakimMinPlayerLvl", 90);
|
||||
ANAKIM_MAX_PLAYER_LVL = GrandBossSettings.getInt("AnakimMaxPlayerLvl", 94);
|
||||
|
||||
LILITH_MIN_PLAYERS = GrandBossSettings.getInt("LilithMinPlayers", 98);
|
||||
LILITH_MAX_PLAYERS = GrandBossSettings.getInt("LilithMaxPlayers", 120);
|
||||
LILITH_SPAWN_INTERVAL = GrandBossSettings.getInt("IntervalOfLilithSpawn", 192);
|
||||
LILITH_SPAWN_RANDOM = GrandBossSettings.getInt("RandomOfLilithSpawn", 148);
|
||||
LILITH_MIN_PLAYER_LVL = GrandBossSettings.getInt("LilithMinPlayerLvl", 85);
|
||||
LILITH_MAX_PLAYER_LVL = GrandBossSettings.getInt("LilithMaxPlayerLvl", 89);
|
||||
|
||||
TRASKEN_SPAWN_INTERVAL = GrandBossSettings.getInt("IntervalOfTraskenSpawn", 264);
|
||||
TRASKEN_SPAWN_RANDOM = GrandBossSettings.getInt("RandomOfTraskenSpawn", 72);
|
||||
TRASKEN_MIN_PLAYERS = GrandBossSettings.getInt("TraskenMinPlayers", 49);
|
||||
TRASKEN_MAX_PLAYERS = GrandBossSettings.getInt("TraskenMaxPlayers", 112);
|
||||
TRASKEN_MIN_PLAYER_LVL = GrandBossSettings.getInt("TraskenMinPlayerLvl", 85);
|
||||
|
||||
LINDVIOR_SPAWN_INTERVAL = GrandBossSettings.getInt("IntervalOfLindviorSpawn", 264);
|
||||
LINDVIOR_SPAWN_RANDOM = GrandBossSettings.getInt("RandomOfLindviorSpawn", 72);
|
||||
LINDVIOR_MIN_PLAYERS = GrandBossSettings.getInt("LindviorMinPlayers", 49);
|
||||
@ -2385,15 +2256,6 @@ public final class Config
|
||||
LOGGER.log(Level.WARNING, "Error while loading chat filter words!", e);
|
||||
}
|
||||
|
||||
final PropertiesParser ClanHallSiege = new PropertiesParser(CH_SIEGE_CONFIG_FILE);
|
||||
|
||||
CHS_MAX_ATTACKERS = ClanHallSiege.getInt("MaxAttackers", 500);
|
||||
CHS_CLAN_MINLEVEL = ClanHallSiege.getInt("MinClanLevel", 4);
|
||||
CHS_MAX_FLAGS_PER_CLAN = ClanHallSiege.getInt("MaxFlagsPerClan", 1);
|
||||
CHS_ENABLE_FAME = ClanHallSiege.getBoolean("EnableFame", false);
|
||||
CHS_FAME_AMOUNT = ClanHallSiege.getInt("FameAmount", 0);
|
||||
CHS_FAME_FREQUENCY = ClanHallSiege.getInt("FameFrequency", 0);
|
||||
|
||||
final PropertiesParser geoData = new PropertiesParser(GEOENGINE_CONFIG_FILE);
|
||||
|
||||
GEODATA_PATH = geoData.getString("GeoDataPath", "./data/geodata/");
|
||||
@ -2536,7 +2398,6 @@ public final class Config
|
||||
COMMUNITYBOARD_TELEPORT_PRICE = CommunityBoard.getInt("CommunityTeleportPrice", 0);
|
||||
COMMUNITYBOARD_BUFF_PRICE = CommunityBoard.getInt("CommunityBuffPrice", 0);
|
||||
COMMUNITYBOARD_HEAL_PRICE = CommunityBoard.getInt("CommunityHealPrice", 0);
|
||||
COMMUNITYBOARD_COMBAT_DISABLED = CommunityBoard.getBoolean("CommunityCombatDisabled", true);
|
||||
COMMUNITYBOARD_KARMA_DISABLED = CommunityBoard.getBoolean("CommunityKarmaDisabled", true);
|
||||
COMMUNITYBOARD_CAST_ANIMATIONS = CommunityBoard.getBoolean("CommunityCastAnimations", false);
|
||||
COMMUNITY_PREMIUM_SYSTEM_ENABLED = CommunityBoard.getBoolean("CommunityPremiumSystem", false);
|
||||
@ -2993,7 +2854,7 @@ public final class Config
|
||||
* @param hexId the hexadecimal ID to store
|
||||
* @param fileName name of the config file
|
||||
*/
|
||||
public static void saveHexid(int serverId, String hexId, String fileName)
|
||||
private static void saveHexid(int serverId, String hexId, String fileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -37,10 +37,10 @@ import com.l2jmobius.Config;
|
||||
*/
|
||||
public final class ThreadPool
|
||||
{
|
||||
protected static final Logger LOGGER = Logger.getLogger(ThreadPool.class.getName());
|
||||
private static final Logger LOGGER = Logger.getLogger(ThreadPool.class.getName());
|
||||
|
||||
protected static ScheduledThreadPoolExecutor[] SCHEDULED_POOLS;
|
||||
protected static ThreadPoolExecutor[] INSTANT_POOLS;
|
||||
private static ScheduledThreadPoolExecutor[] SCHEDULED_POOLS;
|
||||
private static ThreadPoolExecutor[] INSTANT_POOLS;
|
||||
private static int THREAD_POOL_RANDOMIZER;
|
||||
|
||||
/**
|
||||
|
@ -21,9 +21,9 @@ import java.net.UnknownHostException;
|
||||
|
||||
public class IPSubnet
|
||||
{
|
||||
final byte[] _addr;
|
||||
final byte[] _mask;
|
||||
final boolean _isIPv4;
|
||||
private final byte[] _addr;
|
||||
private final byte[] _mask;
|
||||
private final boolean _isIPv4;
|
||||
|
||||
public IPSubnet(String input) throws UnknownHostException, NumberFormatException, ArrayIndexOutOfBoundsException
|
||||
{
|
||||
@ -47,23 +47,12 @@ public class IPSubnet
|
||||
}
|
||||
}
|
||||
|
||||
public IPSubnet(InetAddress addr, int mask) throws UnknownHostException
|
||||
{
|
||||
_addr = addr.getAddress();
|
||||
_isIPv4 = _addr.length == 4;
|
||||
_mask = getMask(mask, _addr.length);
|
||||
if (!applyMask(_addr))
|
||||
{
|
||||
throw new UnknownHostException(addr + "/" + mask);
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] getAddress()
|
||||
{
|
||||
return _addr;
|
||||
}
|
||||
|
||||
public boolean applyMask(byte[] addr)
|
||||
private boolean applyMask(byte[] addr)
|
||||
{
|
||||
// V4 vs V4 or V6 vs V6 checks
|
||||
if (_isIPv4 == (addr.length == 4))
|
||||
|
@ -24,7 +24,7 @@ import java.time.temporal.ChronoUnit;
|
||||
*/
|
||||
public class TimeUtil
|
||||
{
|
||||
public static int findIndexOfNonDigit(CharSequence text)
|
||||
private static int findIndexOfNonDigit(CharSequence text)
|
||||
{
|
||||
for (int i = 0; i < text.length(); i++)
|
||||
{
|
||||
|
@ -25,8 +25,8 @@ import java.util.logging.Logger;
|
||||
public class ScrambledKeyPair
|
||||
{
|
||||
private static Logger LOGGER = Logger.getLogger(ScrambledKeyPair.class.getName());
|
||||
public KeyPair _pair;
|
||||
public byte[] _scrambledModulus;
|
||||
private final KeyPair _pair;
|
||||
private final byte[] _scrambledModulus;
|
||||
|
||||
public ScrambledKeyPair(KeyPair pPair)
|
||||
{
|
||||
|
@ -30,7 +30,7 @@ import com.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
*/
|
||||
public class FortUpdater implements Runnable
|
||||
{
|
||||
protected static Logger LOGGER = Logger.getLogger(FortUpdater.class.getName());
|
||||
private static Logger LOGGER = Logger.getLogger(FortUpdater.class.getName());
|
||||
private final L2Clan _clan;
|
||||
private final Fort _fort;
|
||||
private int _runCount;
|
||||
|
@ -480,7 +480,7 @@ public class GameServer
|
||||
INSTANCE = new GameServer();
|
||||
}
|
||||
|
||||
public static void printSection(String s)
|
||||
private static void printSection(String s)
|
||||
{
|
||||
s = "=[ " + s + " ]";
|
||||
while (s.length() < 61)
|
||||
|
@ -39,9 +39,7 @@ public final class GameTimeController extends Thread
|
||||
public static final int IG_DAYS_PER_DAY = 6;
|
||||
public static final int MILLIS_PER_IG_DAY = (3600000 * 24) / IG_DAYS_PER_DAY;
|
||||
public static final int SECONDS_PER_IG_DAY = MILLIS_PER_IG_DAY / 1000;
|
||||
public static final int MINUTES_PER_IG_DAY = SECONDS_PER_IG_DAY / 60;
|
||||
public static final int TICKS_PER_IG_DAY = SECONDS_PER_IG_DAY * TICKS_PER_SECOND;
|
||||
public static final int TICKS_SUN_STATE_CHANGE = TICKS_PER_IG_DAY / 4;
|
||||
|
||||
private static GameTimeController _instance;
|
||||
|
||||
|
@ -46,7 +46,7 @@ public final class ItemsAutoDestroy
|
||||
_items.add(item);
|
||||
}
|
||||
|
||||
public synchronized void removeItems()
|
||||
private synchronized void removeItems()
|
||||
{
|
||||
if (_items.isEmpty())
|
||||
{
|
||||
|
@ -60,10 +60,10 @@ public class Shutdown extends Thread
|
||||
|
||||
private int _secondsShut;
|
||||
private int _shutdownMode;
|
||||
public static final int SIGTERM = 0;
|
||||
public static final int GM_SHUTDOWN = 1;
|
||||
public static final int GM_RESTART = 2;
|
||||
public static final int ABORT = 3;
|
||||
private static final int SIGTERM = 0;
|
||||
private static final int GM_SHUTDOWN = 1;
|
||||
private static final int GM_RESTART = 2;
|
||||
private static final int ABORT = 3;
|
||||
private static final String[] MODE_TEXT =
|
||||
{
|
||||
"SIGTERM",
|
||||
|
@ -81,7 +81,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
/** Flags about client's state, in order to know which messages to send */
|
||||
protected volatile boolean _clientMoving;
|
||||
/** Flags about client's state, in order to know which messages to send */
|
||||
protected volatile boolean _clientAutoAttacking;
|
||||
private volatile boolean _clientAutoAttacking;
|
||||
/** Flags about client's state, in order to know which messages to send */
|
||||
protected int _clientMovingToPawnOffset;
|
||||
|
||||
@ -97,7 +97,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
/** Different internal state flags */
|
||||
protected int _moveToPawnTimeout;
|
||||
|
||||
protected Future<?> _followTask = null;
|
||||
private Future<?> _followTask = null;
|
||||
private static final int FOLLOW_INTERVAL = 1000;
|
||||
private static final int ATTACK_FOLLOW_INTERVAL = 500;
|
||||
|
||||
@ -630,7 +630,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
* Stop the actor auto-attack client side by sending Server->Client packet AutoAttackStop <I>(broadcast)</I>.<br>
|
||||
* <FONT COLOR=#FF0000><B> <U>Caution</U> : Low level function, used by AI subclasses</B></FONT>
|
||||
*/
|
||||
public void clientStopAutoAttack()
|
||||
void clientStopAutoAttack()
|
||||
{
|
||||
if (_actor.isSummon())
|
||||
{
|
||||
|
@ -36,14 +36,14 @@ public class L2PlayerAI extends L2PlayableAI
|
||||
{
|
||||
private boolean _thinking; // to prevent recursive thinking
|
||||
|
||||
IntentionCommand _nextIntention = null;
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
public L2PlayerAI(L2PcInstance player)
|
||||
{
|
||||
super(player);
|
||||
}
|
||||
|
||||
void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
@ -28,8 +28,8 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
*/
|
||||
public class WarehouseCacheManager
|
||||
{
|
||||
protected final Map<L2PcInstance, Long> _cachedWh = new ConcurrentHashMap<>();
|
||||
protected final long _cacheTime = Config.WAREHOUSE_CACHE_TIME * 60000;
|
||||
final Map<L2PcInstance, Long> _cachedWh = new ConcurrentHashMap<>();
|
||||
final long _cacheTime = Config.WAREHOUSE_CACHE_TIME * 60000;
|
||||
|
||||
protected WarehouseCacheManager()
|
||||
{
|
||||
@ -46,8 +46,12 @@ public class WarehouseCacheManager
|
||||
_cachedWh.remove(pc);
|
||||
}
|
||||
|
||||
public class CacheScheduler implements Runnable
|
||||
private class CacheScheduler implements Runnable
|
||||
{
|
||||
public CacheScheduler()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
|
@ -70,7 +70,7 @@ public class Post
|
||||
insertindb(cp);
|
||||
}
|
||||
|
||||
public void insertindb(CPost cp)
|
||||
private void insertindb(CPost cp)
|
||||
{
|
||||
try (Connection con = DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement ps = con.prepareStatement("INSERT INTO posts (post_id,post_owner_name,post_ownerid,post_date,post_topic_id,post_forum_id,post_txt) values (?,?,?,?,?,?,?)"))
|
||||
|
@ -69,7 +69,7 @@ public class Topic
|
||||
}
|
||||
}
|
||||
|
||||
public void insertindb()
|
||||
private void insertindb()
|
||||
{
|
||||
try (Connection con = DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement ps = con.prepareStatement("INSERT INTO topic (topic_id,topic_forum_id,topic_name,topic_date,topic_ownername,topic_ownerid,topic_type,topic_reply) values (?,?,?,?,?,?,?,?)"))
|
||||
|
@ -104,7 +104,7 @@ public final class AnnouncementsTable
|
||||
* @param player
|
||||
* @param type
|
||||
*/
|
||||
public void sendAnnouncements(L2PcInstance player, AnnouncementType type)
|
||||
private void sendAnnouncements(L2PcInstance player, AnnouncementType type)
|
||||
{
|
||||
for (IAnnouncement announce : _announcements.values())
|
||||
{
|
||||
|
@ -60,8 +60,8 @@ public class SummonEffectsTable
|
||||
|
||||
public static class SummonEffect
|
||||
{
|
||||
Skill _skill;
|
||||
int _effectCurTime;
|
||||
private final Skill _skill;
|
||||
private final int _effectCurTime;
|
||||
|
||||
public SummonEffect(Skill skill, int effectCurTime)
|
||||
{
|
||||
|
@ -35,8 +35,7 @@ import com.l2jmobius.gameserver.model.holders.LuckyGameDataHolder;
|
||||
public class LuckyGameData implements IGameXmlReader
|
||||
{
|
||||
private final Map<Integer, LuckyGameDataHolder> _luckyGame = new HashMap<>();
|
||||
|
||||
final AtomicInteger _serverPlay = new AtomicInteger();
|
||||
private final AtomicInteger _serverPlay = new AtomicInteger();
|
||||
|
||||
protected LuckyGameData()
|
||||
{
|
||||
|
@ -1215,7 +1215,7 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
* @param lvl the transformation skill level
|
||||
* @return the transform skill from the Transform Skill Tree for a given {@code id} and {@code lvl}
|
||||
*/
|
||||
public L2SkillLearn getTransformSkill(int id, int lvl)
|
||||
private L2SkillLearn getTransformSkill(int id, int lvl)
|
||||
{
|
||||
return _transformSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||
}
|
||||
@ -1237,7 +1237,7 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
* @param lvl the alchemy skill level
|
||||
* @return the alchemy skill from the Alchemy Skill Tree for a given {@code id} and {@code lvl}
|
||||
*/
|
||||
public L2SkillLearn getAlchemySkill(int id, int lvl)
|
||||
private L2SkillLearn getAlchemySkill(int id, int lvl)
|
||||
{
|
||||
return _alchemySkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||
}
|
||||
@ -1260,7 +1260,7 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
* @param lvl the fishing skill level
|
||||
* @return Fishing skill from the Fishing Skill Tree for a given {@code id} and {@code lvl}
|
||||
*/
|
||||
public L2SkillLearn getFishingSkill(int id, int lvl)
|
||||
private L2SkillLearn getFishingSkill(int id, int lvl)
|
||||
{
|
||||
return _fishingSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||
}
|
||||
@ -1271,7 +1271,7 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
* @param lvl the pledge skill level
|
||||
* @return the pledge skill from the Pledge Skill Tree for a given {@code id} and {@code lvl}
|
||||
*/
|
||||
public L2SkillLearn getPledgeSkill(int id, int lvl)
|
||||
private L2SkillLearn getPledgeSkill(int id, int lvl)
|
||||
{
|
||||
return _pledgeSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||
}
|
||||
@ -1282,7 +1282,7 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
* @param lvl the sub-pledge skill level
|
||||
* @return the sub-pledge skill from the Sub-Pledge Skill Tree for a given {@code id} and {@code lvl}
|
||||
*/
|
||||
public L2SkillLearn getSubPledgeSkill(int id, int lvl)
|
||||
private L2SkillLearn getSubPledgeSkill(int id, int lvl)
|
||||
{
|
||||
return _subPledgeSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||
}
|
||||
@ -1294,7 +1294,7 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
* @param classId the transfer skill tree Id
|
||||
* @return the transfer skill from the Transfer Skill Trees for a given {@code classId}, {@code id} and {@code lvl}
|
||||
*/
|
||||
public L2SkillLearn getTransferSkill(int id, int lvl, ClassId classId)
|
||||
private L2SkillLearn getTransferSkill(int id, int lvl, ClassId classId)
|
||||
{
|
||||
if (_transferSkillTrees.get(classId) != null)
|
||||
{
|
||||
@ -1310,7 +1310,7 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
* @param race the race skill tree Id
|
||||
* @return the transfer skill from the Race Skill Trees for a given {@code race}, {@code id} and {@code lvl}
|
||||
*/
|
||||
public L2SkillLearn getRaceSkill(int id, int lvl, Race race)
|
||||
private L2SkillLearn getRaceSkill(int id, int lvl, Race race)
|
||||
{
|
||||
for (L2SkillLearn skill : getRaceSkillTree(race))
|
||||
{
|
||||
@ -1328,7 +1328,7 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
* @param lvl the sub-class skill level
|
||||
* @return the sub-class skill from the Sub-Class Skill Tree for a given {@code id} and {@code lvl}
|
||||
*/
|
||||
public L2SkillLearn getSubClassSkill(int id, int lvl)
|
||||
private L2SkillLearn getSubClassSkill(int id, int lvl)
|
||||
{
|
||||
return _subClassSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||
}
|
||||
|
@ -595,25 +595,28 @@ public final class BotReportTable
|
||||
}
|
||||
}
|
||||
|
||||
class PunishHolder
|
||||
private class PunishHolder
|
||||
{
|
||||
final Skill _punish;
|
||||
final int _systemMessageId;
|
||||
|
||||
PunishHolder(Skill sk, int sysMsg)
|
||||
public PunishHolder(Skill sk, int sysMsg)
|
||||
{
|
||||
_punish = sk;
|
||||
_systemMessageId = sysMsg;
|
||||
}
|
||||
}
|
||||
|
||||
class ResetPointTask implements Runnable
|
||||
private class ResetPointTask implements Runnable
|
||||
{
|
||||
public ResetPointTask()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
resetPointsAndSchedule();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,10 +21,10 @@ import com.l2jmobius.gameserver.model.items.L2Item;
|
||||
|
||||
public class Item
|
||||
{
|
||||
public int id;
|
||||
public String type;
|
||||
public String name;
|
||||
public StatsSet set;
|
||||
public int currentLevel;
|
||||
public L2Item item;
|
||||
int id;
|
||||
String type;
|
||||
String name;
|
||||
StatsSet set;
|
||||
int currentLevel;
|
||||
L2Item item;
|
||||
}
|
||||
|
@ -29,15 +29,12 @@ import com.l2jmobius.gameserver.data.xml.impl.DoorData;
|
||||
import com.l2jmobius.gameserver.data.xml.impl.FenceData;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.ABlock;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.BlockComplex;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.BlockComplexDynamic;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.BlockFlat;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.BlockMultilayer;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.BlockMultilayerDynamic;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.BlockNull;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.GeoFormat;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.GeoLocation;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.GeoStructure;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.IBlockDynamic;
|
||||
import com.l2jmobius.gameserver.geoengine.geodata.IGeoObject;
|
||||
import com.l2jmobius.gameserver.instancemanager.WarpedSpaceManager;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
@ -276,7 +273,7 @@ public class GeoEngine
|
||||
* @param geoY : Geodata Y
|
||||
* @return {@link ABlock} : Block of geodata.
|
||||
*/
|
||||
public final ABlock getBlock(int geoX, int geoY)
|
||||
private final ABlock getBlock(int geoX, int geoY)
|
||||
{
|
||||
final int x = geoX / GeoStructure.BLOCK_CELLS_X;
|
||||
final int y = geoY / GeoStructure.BLOCK_CELLS_Y;
|
||||
@ -328,7 +325,7 @@ public class GeoEngine
|
||||
* @param worldZ : Cell world Z coordinate.
|
||||
* @return short : Cell geodata Z coordinate, closest to given coordinates.
|
||||
*/
|
||||
public final short getHeightNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
private final short getHeightNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
final ABlock block = getBlock(geoX, geoY);
|
||||
return block != null ? block.getHeightNearestOriginal(geoX, geoY, worldZ) : (short) worldZ;
|
||||
@ -355,7 +352,7 @@ public class GeoEngine
|
||||
* @param worldZ : Cell world Z coordinate.
|
||||
* @return short : Cell NSWE flag byte coordinate, closest to given coordinates.
|
||||
*/
|
||||
public final byte getNsweNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
private final byte getNsweNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
final ABlock block = getBlock(geoX, geoY);
|
||||
return block != null ? block.getNsweNearestOriginal(geoX, geoY, worldZ) : (byte) 0xFF;
|
||||
@ -384,200 +381,6 @@ public class GeoEngine
|
||||
return getHeightNearest(getGeoX(worldX), getGeoY(worldY), worldZ);
|
||||
}
|
||||
|
||||
// GEODATA - DYNAMIC
|
||||
|
||||
/**
|
||||
* Returns calculated NSWE flag byte as a description of {@link IGeoObject}.<br>
|
||||
* The {@link IGeoObject} is defined by boolean 2D array, saying if the object is present on given cell or not.
|
||||
* @param inside : 2D description of {@link IGeoObject}
|
||||
* @return byte[][] : Returns NSWE flags of {@link IGeoObject}.
|
||||
*/
|
||||
public static byte[][] calculateGeoObject(boolean inside[][])
|
||||
{
|
||||
// get dimensions
|
||||
final int width = inside.length;
|
||||
final int height = inside[0].length;
|
||||
|
||||
// create object flags for geodata, according to the geo object 2D description
|
||||
final byte[][] result = new byte[width][height];
|
||||
|
||||
// loop over each cell of the geo object
|
||||
for (int ix = 0; ix < width; ix++)
|
||||
{
|
||||
for (int iy = 0; iy < height; iy++)
|
||||
{
|
||||
if (inside[ix][iy])
|
||||
{
|
||||
// cell is inside geo object, block whole movement (nswe = 0)
|
||||
result[ix][iy] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// cell is outside of geo object, block only movement leading inside geo object
|
||||
|
||||
// set initial value -> no geodata change
|
||||
byte nswe = (byte) 0xFF;
|
||||
|
||||
// perform axial and diagonal checks
|
||||
if (iy < (height - 1))
|
||||
{
|
||||
if (inside[ix][iy + 1])
|
||||
{
|
||||
nswe &= ~GeoStructure.CELL_FLAG_S;
|
||||
}
|
||||
}
|
||||
if (iy > 0)
|
||||
{
|
||||
if (inside[ix][iy - 1])
|
||||
{
|
||||
nswe &= ~GeoStructure.CELL_FLAG_N;
|
||||
}
|
||||
}
|
||||
if (ix < (width - 1))
|
||||
{
|
||||
if (inside[ix + 1][iy])
|
||||
{
|
||||
nswe &= ~GeoStructure.CELL_FLAG_E;
|
||||
}
|
||||
}
|
||||
if (ix > 0)
|
||||
{
|
||||
if (inside[ix - 1][iy])
|
||||
{
|
||||
nswe &= ~GeoStructure.CELL_FLAG_W;
|
||||
}
|
||||
}
|
||||
if ((ix < (width - 1)) && (iy < (height - 1)))
|
||||
{
|
||||
if (inside[ix + 1][iy + 1] || inside[ix][iy + 1] || inside[ix + 1][iy])
|
||||
{
|
||||
nswe &= ~GeoStructure.CELL_FLAG_SE;
|
||||
}
|
||||
}
|
||||
if ((ix < (width - 1)) && (iy > 0))
|
||||
{
|
||||
if (inside[ix + 1][iy - 1] || inside[ix][iy - 1] || inside[ix + 1][iy])
|
||||
{
|
||||
nswe &= ~GeoStructure.CELL_FLAG_NE;
|
||||
}
|
||||
}
|
||||
if ((ix > 0) && (iy < (height - 1)))
|
||||
{
|
||||
if (inside[ix - 1][iy + 1] || inside[ix][iy + 1] || inside[ix - 1][iy])
|
||||
{
|
||||
nswe &= ~GeoStructure.CELL_FLAG_SW;
|
||||
}
|
||||
}
|
||||
if ((ix > 0) && (iy > 0))
|
||||
{
|
||||
if (inside[ix - 1][iy - 1] || inside[ix][iy - 1] || inside[ix - 1][iy])
|
||||
{
|
||||
nswe &= ~GeoStructure.CELL_FLAG_NW;
|
||||
}
|
||||
}
|
||||
|
||||
result[ix][iy] = nswe;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add {@link IGeoObject} to the geodata.
|
||||
* @param object : An object using {@link IGeoObject} interface.
|
||||
*/
|
||||
public final void addGeoObject(IGeoObject object)
|
||||
{
|
||||
toggleGeoObject(object, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove {@link IGeoObject} from the geodata.
|
||||
* @param object : An object using {@link IGeoObject} interface.
|
||||
*/
|
||||
public final void removeGeoObject(IGeoObject object)
|
||||
{
|
||||
toggleGeoObject(object, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggles an {@link IGeoObject} in the geodata.
|
||||
* @param object : An object using {@link IGeoObject} interface.
|
||||
* @param add : Add/remove object.
|
||||
*/
|
||||
private final void toggleGeoObject(IGeoObject object, boolean add)
|
||||
{
|
||||
// get object geo coordinates and data
|
||||
final int minGX = object.getGeoX();
|
||||
final int minGY = object.getGeoY();
|
||||
final byte[][] geoData = object.getObjectGeoData();
|
||||
|
||||
// get min/max block coordinates
|
||||
int minBX = minGX / GeoStructure.BLOCK_CELLS_X;
|
||||
int maxBX = ((minGX + geoData.length) - 1) / GeoStructure.BLOCK_CELLS_X;
|
||||
int minBY = minGY / GeoStructure.BLOCK_CELLS_Y;
|
||||
int maxBY = ((minGY + geoData[0].length) - 1) / GeoStructure.BLOCK_CELLS_Y;
|
||||
|
||||
// loop over affected blocks in X direction
|
||||
for (int bx = minBX; bx <= maxBX; bx++)
|
||||
{
|
||||
// loop over affected blocks in Y direction
|
||||
for (int by = minBY; by <= maxBY; by++)
|
||||
{
|
||||
ABlock block;
|
||||
|
||||
// conversion to dynamic block must be synchronized to prevent 2 independent threads converting same block
|
||||
synchronized (_blocks)
|
||||
{
|
||||
// get related block
|
||||
block = _blocks[bx][by];
|
||||
|
||||
// check for dynamic block
|
||||
if (!(block instanceof IBlockDynamic))
|
||||
{
|
||||
// null block means no geodata (particular region file is not loaded), no geodata means no geobjects
|
||||
if (block instanceof BlockNull)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// not a dynamic block, convert it
|
||||
if (block instanceof BlockFlat)
|
||||
{
|
||||
// convert flat block to the dynamic complex block
|
||||
block = new BlockComplexDynamic(bx, by, (BlockFlat) block);
|
||||
_blocks[bx][by] = block;
|
||||
}
|
||||
else if (block instanceof BlockComplex)
|
||||
{
|
||||
// convert complex block to the dynamic complex block
|
||||
block = new BlockComplexDynamic(bx, by, (BlockComplex) block);
|
||||
_blocks[bx][by] = block;
|
||||
}
|
||||
else if (block instanceof BlockMultilayer)
|
||||
{
|
||||
// convert multilayer block to the dynamic multilayer block
|
||||
block = new BlockMultilayerDynamic(bx, by, (BlockMultilayer) block);
|
||||
_blocks[bx][by] = block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add/remove geo object to/from dynamic block
|
||||
if (add)
|
||||
{
|
||||
((IBlockDynamic) block).addGeoObject(object);
|
||||
}
|
||||
else
|
||||
{
|
||||
((IBlockDynamic) block).removeGeoObject(object);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PATHFINDING
|
||||
|
||||
/**
|
||||
@ -732,7 +535,7 @@ public class GeoEngine
|
||||
* @param instance
|
||||
* @return {@code boolean} : True, when target can be seen.
|
||||
*/
|
||||
protected final boolean checkSee(int gox, int goy, int goz, double oheight, int gtx, int gty, int gtz, double theight, Instance instance)
|
||||
private final boolean checkSee(int gox, int goy, int goz, double oheight, int gtx, int gty, int gtz, double theight, Instance instance)
|
||||
{
|
||||
// get line of sight Z coordinates
|
||||
double losoz = goz + ((oheight * Config.PART_OF_CHARACTER_HEIGHT) / 100);
|
||||
@ -915,7 +718,7 @@ public class GeoEngine
|
||||
* @param instance
|
||||
* @return {@code boolean} : True, when target can be seen.
|
||||
*/
|
||||
protected final boolean checkSeeOriginal(int gox, int goy, int goz, double oheight, int gtx, int gty, int gtz, double theight, Instance instance)
|
||||
private final boolean checkSeeOriginal(int gox, int goy, int goz, double oheight, int gtx, int gty, int gtz, double theight, Instance instance)
|
||||
{
|
||||
// get line of sight Z coordinates
|
||||
double losoz = goz + ((oheight * Config.PART_OF_CHARACTER_HEIGHT) / 100);
|
||||
|
@ -1,255 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jmobius.gameserver.geoengine.geodata;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Hasha
|
||||
*/
|
||||
public final class BlockComplexDynamic extends BlockComplex implements IBlockDynamic
|
||||
{
|
||||
private final int _bx;
|
||||
private final int _by;
|
||||
private final byte[] _original;
|
||||
private final List<IGeoObject> _objects;
|
||||
|
||||
/**
|
||||
* Creates {@link BlockComplexDynamic}.
|
||||
* @param bx : Block X coordinate.
|
||||
* @param by : Block Y coordinate.
|
||||
* @param block : The original FlatBlock to create a dynamic version from.
|
||||
*/
|
||||
public BlockComplexDynamic(int bx, int by, BlockFlat block)
|
||||
{
|
||||
// load data
|
||||
final byte nswe = block._nswe;
|
||||
final byte heightLow = (byte) (block._height & 0x00FF);
|
||||
final byte heightHigh = (byte) (block._height >> 8);
|
||||
|
||||
// initialize buffer
|
||||
_buffer = new byte[GeoStructure.BLOCK_CELLS * 3];
|
||||
|
||||
// save data
|
||||
for (int i = 0; i < GeoStructure.BLOCK_CELLS; i++)
|
||||
{
|
||||
// set nswe
|
||||
_buffer[i * 3] = nswe;
|
||||
|
||||
// set height
|
||||
_buffer[(i * 3) + 1] = heightLow;
|
||||
_buffer[(i * 3) + 2] = heightHigh;
|
||||
}
|
||||
|
||||
// get block coordinates
|
||||
_bx = bx;
|
||||
_by = by;
|
||||
|
||||
// create copy for dynamic implementation
|
||||
_original = new byte[GeoStructure.BLOCK_CELLS * 3];
|
||||
System.arraycopy(_buffer, 0, _original, 0, GeoStructure.BLOCK_CELLS * 3);
|
||||
|
||||
// create list for geo objects
|
||||
_objects = new LinkedList<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates {@link BlockComplexDynamic}.
|
||||
* @param bx : Block X coordinate.
|
||||
* @param by : Block Y coordinate.
|
||||
* @param block : The original ComplexBlock to create a dynamic version from.
|
||||
*/
|
||||
public BlockComplexDynamic(int bx, int by, BlockComplex block)
|
||||
{
|
||||
// move buffer from BlockComplex object to this object
|
||||
_buffer = block._buffer;
|
||||
block._buffer = null;
|
||||
|
||||
// get block coordinates
|
||||
_bx = bx;
|
||||
_by = by;
|
||||
|
||||
// create copy for dynamic implementation
|
||||
_original = new byte[GeoStructure.BLOCK_CELLS * 3];
|
||||
System.arraycopy(_buffer, 0, _original, 0, GeoStructure.BLOCK_CELLS * 3);
|
||||
|
||||
// create list for geo objects
|
||||
_objects = new LinkedList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final short getHeightNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// get cell index
|
||||
final int index = (((geoX % GeoStructure.BLOCK_CELLS_X) * GeoStructure.BLOCK_CELLS_Y) + (geoY % GeoStructure.BLOCK_CELLS_Y)) * 3;
|
||||
|
||||
// get height
|
||||
return (short) ((_original[index + 1] & 0x00FF) | (_original[index + 2] << 8));
|
||||
}
|
||||
|
||||
@Override
|
||||
public final byte getNsweNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// get cell index
|
||||
final int index = (((geoX % GeoStructure.BLOCK_CELLS_X) * GeoStructure.BLOCK_CELLS_Y) + (geoY % GeoStructure.BLOCK_CELLS_Y)) * 3;
|
||||
|
||||
// get nswe
|
||||
return _original[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int getIndexAboveOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// get cell index
|
||||
final int index = (((geoX % GeoStructure.BLOCK_CELLS_X) * GeoStructure.BLOCK_CELLS_Y) + (geoY % GeoStructure.BLOCK_CELLS_Y)) * 3;
|
||||
|
||||
// get height
|
||||
final int height = (_original[index + 1] & 0x00FF) | (_original[index + 2] << 8);
|
||||
|
||||
// check height and return nswe
|
||||
return height > worldZ ? index : -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int getIndexBelowOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// get cell index
|
||||
final int index = (((geoX % GeoStructure.BLOCK_CELLS_X) * GeoStructure.BLOCK_CELLS_Y) + (geoY % GeoStructure.BLOCK_CELLS_Y)) * 3;
|
||||
|
||||
// get height
|
||||
final int height = (_original[index + 1] & 0x00FF) | (_original[index + 2] << 8);
|
||||
|
||||
// check height and return nswe
|
||||
return height < worldZ ? index : -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final short getHeightOriginal(int index)
|
||||
{
|
||||
return (short) ((_original[index + 1] & 0x00FF) | (_original[index + 2] << 8));
|
||||
}
|
||||
|
||||
@Override
|
||||
public final byte getNsweOriginal(int index)
|
||||
{
|
||||
return _original[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public final synchronized void addGeoObject(IGeoObject object)
|
||||
{
|
||||
// add geo object, update block geodata when added
|
||||
if (_objects.add(object))
|
||||
{
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final synchronized void removeGeoObject(IGeoObject object)
|
||||
{
|
||||
// remove geo object, update block geodata when removed
|
||||
if (_objects.remove(object))
|
||||
{
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
private final void update()
|
||||
{
|
||||
// copy original geodata, than apply changes
|
||||
System.arraycopy(_original, 0, _buffer, 0, GeoStructure.BLOCK_CELLS * 3);
|
||||
|
||||
// get block geo coordinates
|
||||
final int minBX = _bx * GeoStructure.BLOCK_CELLS_X;
|
||||
final int minBY = _by * GeoStructure.BLOCK_CELLS_Y;
|
||||
final int maxBX = minBX + GeoStructure.BLOCK_CELLS_X;
|
||||
final int maxBY = minBY + GeoStructure.BLOCK_CELLS_Y;
|
||||
|
||||
// for all objects
|
||||
for (IGeoObject object : _objects)
|
||||
{
|
||||
// get object geo coordinates and other object variables
|
||||
final int minOX = object.getGeoX();
|
||||
final int minOY = object.getGeoY();
|
||||
final int minOZ = object.getGeoZ();
|
||||
final int maxOZ = minOZ + object.getHeight();
|
||||
final byte[][] geoData = object.getObjectGeoData();
|
||||
|
||||
// calculate min/max geo coordinates for iteration (intersection of block and object)
|
||||
final int minGX = Math.max(minBX, minOX);
|
||||
final int minGY = Math.max(minBY, minOY);
|
||||
final int maxGX = Math.min(maxBX, minOX + geoData.length);
|
||||
final int maxGY = Math.min(maxBY, minOY + geoData[0].length);
|
||||
|
||||
// iterate over intersection of block and object
|
||||
for (int gx = minGX; gx < maxGX; gx++)
|
||||
{
|
||||
for (int gy = minGY; gy < maxGY; gy++)
|
||||
{
|
||||
// get object nswe
|
||||
final byte objNswe = geoData[gx - minOX][gy - minOY];
|
||||
|
||||
// object contains no change of data in this cell, continue to next cell
|
||||
if (objNswe == 0xFF)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// get block index of this cell
|
||||
final int ib = (((gx - minBX) * GeoStructure.BLOCK_CELLS_Y) + (gy - minBY)) * 3;
|
||||
|
||||
// compare block data and original data, when height differs -> height was affected by other geo object
|
||||
// -> cell is inside an object -> no need to check/change it anymore (Z is lifted, nswe is 0)
|
||||
// compare is done in raw format (2 bytes) instead of conversion to short
|
||||
if ((_buffer[ib + 1] != _original[ib + 1]) || (_buffer[ib + 2] != _original[ib + 2]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// so far cell is not inside of any object
|
||||
if (objNswe == 0)
|
||||
{
|
||||
// cell is inside of this object -> set nswe to 0 and lift Z up
|
||||
|
||||
// set block nswe
|
||||
_buffer[ib] = 0;
|
||||
|
||||
// set block Z to object height
|
||||
_buffer[ib + 1] = (byte) (maxOZ & 0x00FF);
|
||||
_buffer[ib + 2] = (byte) (maxOZ >> 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
// cell is outside of this object -> update nswe
|
||||
|
||||
// height different is too high (trying to update another layer), skip
|
||||
short z = getHeight(ib);
|
||||
if (Math.abs(z - minOZ) > GeoStructure.CELL_IGNORE_HEIGHT)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// adjust block nswe according to the object nswe
|
||||
_buffer[ib] &= objNswe;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,312 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jmobius.gameserver.geoengine.geodata;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Hasha
|
||||
*/
|
||||
public final class BlockMultilayerDynamic extends BlockMultilayer implements IBlockDynamic
|
||||
{
|
||||
private final int _bx;
|
||||
private final int _by;
|
||||
private final byte[] _original;
|
||||
private final List<IGeoObject> _objects;
|
||||
|
||||
/**
|
||||
* Creates {@link BlockMultilayerDynamic}.
|
||||
* @param bx : Block X coordinate.
|
||||
* @param by : Block Y coordinate.
|
||||
* @param block : The original MultilayerBlock to create a dynamic version from.
|
||||
*/
|
||||
public BlockMultilayerDynamic(int bx, int by, BlockMultilayer block)
|
||||
{
|
||||
// move buffer from ComplexBlock object to this object
|
||||
_buffer = block._buffer;
|
||||
block._buffer = null;
|
||||
|
||||
// get block coordinates
|
||||
_bx = bx;
|
||||
_by = by;
|
||||
|
||||
// create copy for dynamic implementation
|
||||
_original = new byte[_buffer.length];
|
||||
System.arraycopy(_buffer, 0, _original, 0, _buffer.length);
|
||||
|
||||
// create list for geo objects
|
||||
_objects = new LinkedList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public short getHeightNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// get cell index
|
||||
final int index = getIndexNearestOriginal(geoX, geoY, worldZ);
|
||||
|
||||
// get height
|
||||
return (short) ((_original[index + 1] & 0x00FF) | (_original[index + 2] << 8));
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getNsweNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// get cell index
|
||||
final int index = getIndexNearestOriginal(geoX, geoY, worldZ);
|
||||
|
||||
// get nswe
|
||||
return _original[index];
|
||||
}
|
||||
|
||||
private final int getIndexNearestOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// move index to the cell given by coordinates
|
||||
int index = 0;
|
||||
for (int i = 0; i < (((geoX % GeoStructure.BLOCK_CELLS_X) * GeoStructure.BLOCK_CELLS_Y) + (geoY % GeoStructure.BLOCK_CELLS_Y)); i++)
|
||||
{
|
||||
// move index by amount of layers for this cell
|
||||
index += (_original[index] * 3) + 1;
|
||||
}
|
||||
|
||||
// get layers count and shift to first layer data (first from bottom)
|
||||
byte layers = _original[index++];
|
||||
|
||||
// loop though all cell layers, find closest layer
|
||||
int limit = Integer.MAX_VALUE;
|
||||
while (layers-- > 0)
|
||||
{
|
||||
// get layer height
|
||||
final int height = (_original[index + 1] & 0x00FF) | (_original[index + 2] << 8);
|
||||
|
||||
// get Z distance and compare with limit
|
||||
// note: When 2 layers have same distance to worldZ (worldZ is in the middle of them):
|
||||
// > returns bottom layer
|
||||
// >= returns upper layer
|
||||
final int distance = Math.abs(height - worldZ);
|
||||
if (distance > limit)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// update limit and move to next layer
|
||||
limit = distance;
|
||||
index += 3;
|
||||
}
|
||||
|
||||
// return layer index
|
||||
return index - 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int getIndexAboveOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// move index to the cell given by coordinates
|
||||
int index = 0;
|
||||
for (int i = 0; i < (((geoX % GeoStructure.BLOCK_CELLS_X) * GeoStructure.BLOCK_CELLS_Y) + (geoY % GeoStructure.BLOCK_CELLS_Y)); i++)
|
||||
{
|
||||
// move index by amount of layers for this cell
|
||||
index += (_original[index] * 3) + 1;
|
||||
}
|
||||
|
||||
// get layers count and shift to last layer data (first from bottom)
|
||||
byte layers = _original[index++];
|
||||
index += (layers - 1) * 3;
|
||||
|
||||
// loop though all layers, find first layer above worldZ
|
||||
while (layers-- > 0)
|
||||
{
|
||||
// get layer height
|
||||
final int height = (_original[index + 1] & 0x00FF) | (_original[index + 2] << 8);
|
||||
|
||||
// layer height is higher than worldZ, return layer index
|
||||
if (height > worldZ)
|
||||
{
|
||||
return index;
|
||||
}
|
||||
|
||||
// move index to next layer
|
||||
index -= 3;
|
||||
}
|
||||
|
||||
// none layer found
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int getIndexBelowOriginal(int geoX, int geoY, int worldZ)
|
||||
{
|
||||
// move index to the cell given by coordinates
|
||||
int index = 0;
|
||||
for (int i = 0; i < (((geoX % GeoStructure.BLOCK_CELLS_X) * GeoStructure.BLOCK_CELLS_Y) + (geoY % GeoStructure.BLOCK_CELLS_Y)); i++)
|
||||
{
|
||||
// move index by amount of layers for this cell
|
||||
index += (_original[index] * 3) + 1;
|
||||
}
|
||||
|
||||
// get layers count and shift to first layer data (first from top)
|
||||
byte layers = _original[index++];
|
||||
|
||||
// loop though all layers, find first layer below worldZ
|
||||
while (layers-- > 0)
|
||||
{
|
||||
// get layer height
|
||||
final int height = (_original[index + 1] & 0x00FF) | (_original[index + 2] << 8);
|
||||
|
||||
// layer height is lower than worldZ, return layer index
|
||||
if (height < worldZ)
|
||||
{
|
||||
return index;
|
||||
}
|
||||
|
||||
// move index to next layer
|
||||
index += 3;
|
||||
}
|
||||
|
||||
// none layer found
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public short getHeightOriginal(int index)
|
||||
{
|
||||
// get height
|
||||
return (short) ((_original[index + 1] & 0x00FF) | (_original[index + 2] << 8));
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getNsweOriginal(int index)
|
||||
{
|
||||
// get nswe
|
||||
return _original[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public final synchronized void addGeoObject(IGeoObject object)
|
||||
{
|
||||
// add geo object, update block geodata when added
|
||||
if (_objects.add(object))
|
||||
{
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final synchronized void removeGeoObject(IGeoObject object)
|
||||
{
|
||||
// remove geo object, update block geodata when removed
|
||||
if (_objects.remove(object))
|
||||
{
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
private final void update()
|
||||
{
|
||||
// copy original geodata, than apply changes
|
||||
System.arraycopy(_original, 0, _buffer, 0, _original.length);
|
||||
|
||||
// get block geo coordinates
|
||||
final int minBX = _bx * GeoStructure.BLOCK_CELLS_X;
|
||||
final int minBY = _by * GeoStructure.BLOCK_CELLS_Y;
|
||||
final int maxBX = minBX + GeoStructure.BLOCK_CELLS_X;
|
||||
final int maxBY = minBY + GeoStructure.BLOCK_CELLS_Y;
|
||||
|
||||
// for all objects
|
||||
for (IGeoObject object : _objects)
|
||||
{
|
||||
// get object geo coordinates and other object variables
|
||||
final int minOX = object.getGeoX();
|
||||
final int minOY = object.getGeoY();
|
||||
final int minOZ = object.getGeoZ();
|
||||
final int maxOZ = minOZ + object.getHeight();
|
||||
final byte[][] geoData = object.getObjectGeoData();
|
||||
|
||||
// calculate min/max geo coordinates for iteration (intersection of block and object)
|
||||
final int minGX = Math.max(minBX, minOX);
|
||||
final int minGY = Math.max(minBY, minOY);
|
||||
final int maxGX = Math.min(maxBX, minOX + geoData.length);
|
||||
final int maxGY = Math.min(maxBY, minOY + geoData[0].length);
|
||||
|
||||
// iterate over intersection of block and object
|
||||
for (int gx = minGX; gx < maxGX; gx++)
|
||||
{
|
||||
for (int gy = minGY; gy < maxGY; gy++)
|
||||
{
|
||||
// get object nswe
|
||||
final byte objNswe = geoData[gx - minOX][gy - minOY];
|
||||
|
||||
// object contains no change of data in this cell, continue to next cell
|
||||
if (objNswe == 0xFF)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// get block index of this cell
|
||||
int ib = getIndexNearest(gx, gy, minOZ);
|
||||
|
||||
// compare block data and original data, when height differs -> height was affected by other geo object
|
||||
// -> cell is inside an object -> no need to check/change it anymore (Z is lifted, nswe is 0)
|
||||
// compare is done in raw format (2 bytes) instead of conversion to short
|
||||
if ((_buffer[ib + 1] != _original[ib + 1]) || (_buffer[ib + 2] != _original[ib + 2]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// so far cell is not inside of any object
|
||||
if (objNswe == 0)
|
||||
{
|
||||
// cell is inside of this object -> set nswe to 0 and lift Z up
|
||||
|
||||
// set block nswe
|
||||
_buffer[ib] = 0;
|
||||
|
||||
// calculate object height, limit to next layer
|
||||
int z = maxOZ;
|
||||
int i = getIndexAbove(gx, gy, minOZ);
|
||||
if (i != -1)
|
||||
{
|
||||
int az = getHeight(i);
|
||||
if (az <= maxOZ)
|
||||
{
|
||||
z = az - GeoStructure.CELL_IGNORE_HEIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
// set block Z to object height
|
||||
_buffer[ib + 1] = (byte) (z & 0x00FF);
|
||||
_buffer[ib + 2] = (byte) (z >> 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
// cell is outside of this object -> update nswe
|
||||
|
||||
// height different is too high (trying to update another layer), skip
|
||||
short z = getHeight(ib);
|
||||
if (Math.abs(z - minOZ) > GeoStructure.CELL_IGNORE_HEIGHT)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// adjust block nswe according to the object nswe
|
||||
_buffer[ib] &= objNswe;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user