Various unnecessary code changes.
This commit is contained in:
@@ -144,10 +144,6 @@ EnableAlterSkills = True
|
|||||||
# Default: True
|
# Default: True
|
||||||
LifeCrystalNeeded = True
|
LifeCrystalNeeded = True
|
||||||
|
|
||||||
# Require book needed to enchant skills.
|
|
||||||
# Default: True
|
|
||||||
EnchantSkillSpBookNeeded = True
|
|
||||||
|
|
||||||
# Require spell book needed to learn Divine Inspiration.
|
# Require spell book needed to learn Divine Inspiration.
|
||||||
# Default: True
|
# Default: True
|
||||||
DivineInspirationSpBookNeeded = True
|
DivineInspirationSpBookNeeded = True
|
||||||
@@ -404,46 +400,6 @@ DisableOverEnchanting = True
|
|||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Augmenting
|
# 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
|
# 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.
|
# Shadow, common, time-limited, hero, pvp, wear items are hardcoded, as well as all etcitems.
|
||||||
# Rods can't be augmented too.
|
# 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)
|
# Default: 0 (free)
|
||||||
CommunityHealPrice = 0
|
CommunityHealPrice = 0
|
||||||
|
|
||||||
# Disable Community Board while in combat.
|
|
||||||
# Default: True
|
|
||||||
CommunityCombatDisabled = True
|
|
||||||
|
|
||||||
# Disable Community Board while player has Karma.
|
# Disable Community Board while player has Karma.
|
||||||
# Default: True
|
# Default: True
|
||||||
CommunityKarmaDisabled = True
|
CommunityKarmaDisabled = True
|
||||||
|
@@ -69,10 +69,6 @@ GMRestartFighting = True
|
|||||||
# example: "Announce: hi (HanWik)"
|
# example: "Announce: hi (HanWik)"
|
||||||
GMShowAnnouncerName = False
|
GMShowAnnouncerName = False
|
||||||
|
|
||||||
# Show the GM's name before an announcement made by him
|
|
||||||
# example: "Nyaran: hi"
|
|
||||||
GMShowCritAnnouncerName = False
|
|
||||||
|
|
||||||
# Give special skills for every GM
|
# Give special skills for every GM
|
||||||
# 7029,7041-7064,7088-7096,23238-23249 (Master's Blessing)
|
# 7029,7041-7064,7088-7096,23238-23249 (Master's Blessing)
|
||||||
# Default: False
|
# Default: False
|
||||||
@@ -382,10 +378,6 @@ AllowRace = False
|
|||||||
# Default: True
|
# Default: True
|
||||||
AllowWater = True
|
AllowWater = True
|
||||||
|
|
||||||
# Enable pets for rent (wyvern & strider) from pet managers.
|
|
||||||
# Default: False
|
|
||||||
AllowRentPet = False
|
|
||||||
|
|
||||||
# Default: True
|
# Default: True
|
||||||
AllowFishing = True
|
AllowFishing = True
|
||||||
|
|
||||||
@@ -522,55 +514,7 @@ AltItemAuctionExpiredAfter = 14
|
|||||||
AltItemAuctionTimeExtendsOnBid = 0
|
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
|
# Punishment
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -603,10 +547,6 @@ JailDisableChat = True
|
|||||||
# Default: False
|
# Default: False
|
||||||
JailDisableTransaction = False
|
JailDisableTransaction = False
|
||||||
|
|
||||||
# Enchant Skill Details Settings
|
|
||||||
# Default: 1,5
|
|
||||||
NormalEnchantCostMultipiler = 1
|
|
||||||
SafeEnchantCostMultipiler = 5
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Custom Components
|
# Custom Components
|
||||||
@@ -697,17 +637,9 @@ AllowReportsFromSameClanMembers = False
|
|||||||
# Default: False
|
# Default: False
|
||||||
HtmlActionCacheDebug = False
|
HtmlActionCacheDebug = False
|
||||||
|
|
||||||
# Packet handler debug output
|
|
||||||
# Default: False
|
|
||||||
PacketHandlerDebug = False
|
|
||||||
|
|
||||||
# Default: False
|
# Default: False
|
||||||
Developer = False
|
Developer = False
|
||||||
|
|
||||||
# Don't load Handlers
|
|
||||||
# Default: False
|
|
||||||
AltDevNoHandlers = False
|
|
||||||
|
|
||||||
# Don't load quests.
|
# Don't load quests.
|
||||||
# Default: False
|
# Default: False
|
||||||
AltDevNoQuests = False
|
AltDevNoQuests = False
|
||||||
|
@@ -106,12 +106,6 @@ KelbimMaxPlayers = 35
|
|||||||
# Anakim
|
# 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
|
# Minimal count of players for enter to Anakim. Retail: 98
|
||||||
AnakimMinPlayers = 98
|
AnakimMinPlayers = 98
|
||||||
|
|
||||||
@@ -128,12 +122,6 @@ AnakimMaxPlayerLvl = 94
|
|||||||
# Lilith
|
# 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
|
# Minimal count of players for enter to Lilith. Retail: 98
|
||||||
LilithMinPlayers = 98
|
LilithMinPlayers = 98
|
||||||
|
|
||||||
|
@@ -75,10 +75,6 @@ SkillChancePenaltyForLvLDifferences = 2.5, 3.0, 3.25, 3.5
|
|||||||
# Monsters
|
# Monsters
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
# Decay Time Task (don't set it too low!) (in milliseconds):
|
|
||||||
# Default: 5000
|
|
||||||
DecayTimeTask = 5000
|
|
||||||
|
|
||||||
# This is the default corpse time (in seconds).
|
# This is the default corpse time (in seconds).
|
||||||
# Default: 7
|
# Default: 7
|
||||||
DefaultCorpseTime = 7
|
DefaultCorpseTime = 7
|
||||||
@@ -105,11 +101,6 @@ GuardAttackAggroMob = False
|
|||||||
# Pets
|
# 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).
|
# This will control the inventory space limit for pets (NOT WEIGHT LIMIT).
|
||||||
# Default: 12
|
# Default: 12
|
||||||
MaximumSlotsForPet = 12
|
MaximumSlotsForPet = 12
|
||||||
|
@@ -54,10 +54,6 @@ AntiFeedInterval = 120
|
|||||||
# Misc.
|
# 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)
|
# How much time one stays in PvP mode after hitting an innocent (in ms)
|
||||||
# Default: 120000
|
# Default: 120000
|
||||||
PvPVsNormalTime = 120000
|
PvPVsNormalTime = 120000
|
||||||
|
@@ -20,14 +20,11 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
import com.l2jmobius.gameserver.model.L2World;
|
import com.l2jmobius.gameserver.model.L2World;
|
||||||
import com.l2jmobius.gameserver.model.Location;
|
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.L2Npc;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.holders.MinionHolder;
|
import com.l2jmobius.gameserver.model.holders.MinionHolder;
|
||||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
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;
|
import com.l2jmobius.gameserver.util.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -76,27 +73,6 @@ public abstract class AbstractNpcAI extends Quest
|
|||||||
addFactionCallId(mobs);
|
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)
|
public void spawnMinions(L2Npc npc, String spawnName)
|
||||||
{
|
{
|
||||||
for (MinionHolder is : npc.getParameters().getMinionList(spawnName))
|
for (MinionHolder is : npc.getParameters().getMinionList(spawnName))
|
||||||
|
@@ -167,8 +167,12 @@ public final class Parade extends AbstractNpcAI
|
|||||||
return (dd * 1000) / 6;
|
return (dd * 1000) / 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Start implements Runnable
|
private class Start implements Runnable
|
||||||
{
|
{
|
||||||
|
public Start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
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
|
@Override
|
||||||
public void run()
|
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
|
@Override
|
||||||
public void run()
|
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
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
@@ -73,12 +73,16 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI
|
|||||||
return super.onAdvEvent(event, npc, player);
|
return super.onAdvEvent(event, npc, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class zoneInfo
|
private static final class zoneInfo
|
||||||
{
|
{
|
||||||
private int currentPoints = 0;
|
private int currentPoints = 0;
|
||||||
private int currentMonitorizedDamage = 0;
|
private int currentMonitorizedDamage = 0;
|
||||||
private int zoneStage = 0;
|
private int zoneStage = 0;
|
||||||
|
|
||||||
|
public zoneInfo()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void setZoneStage(int a)
|
void setZoneStage(int a)
|
||||||
{
|
{
|
||||||
zoneStage = a;
|
zoneStage = a;
|
||||||
|
@@ -122,7 +122,7 @@ public final class Alexandria extends AbstractNpcAI
|
|||||||
return htmltext;
|
return htmltext;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class AdditionalQuestItemHolder extends QuestItemHolder
|
private static class AdditionalQuestItemHolder extends QuestItemHolder
|
||||||
{
|
{
|
||||||
private final int _additionalId;
|
private final int _additionalId;
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package ai.bosses.Baylor;
|
package ai.bosses.Baylor;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.model.L2World;
|
||||||
import com.l2jmobius.gameserver.model.Location;
|
import com.l2jmobius.gameserver.model.Location;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Attackable;
|
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.holders.SkillHolder;
|
||||||
import com.l2jmobius.gameserver.model.instancezone.Instance;
|
import com.l2jmobius.gameserver.model.instancezone.Instance;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
import com.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||||
|
|
||||||
import instances.AbstractInstance;
|
import instances.AbstractInstance;
|
||||||
|
|
||||||
@@ -326,6 +328,20 @@ public final class BaylorWarzone extends AbstractInstance
|
|||||||
return super.onSpawn(npc);
|
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)
|
public static void main(String[] args)
|
||||||
{
|
{
|
||||||
new BaylorWarzone();
|
new BaylorWarzone();
|
||||||
|
@@ -70,17 +70,21 @@ public final class Stage1 extends AbstractInstance implements IGameXmlReader
|
|||||||
{
|
{
|
||||||
Logger LOGGER = Logger.getLogger(Stage1.class.getName());
|
Logger LOGGER = Logger.getLogger(Stage1.class.getName());
|
||||||
|
|
||||||
protected static class SODSpawn
|
private static class SODSpawn
|
||||||
{
|
{
|
||||||
public boolean isZone = false;
|
public SODSpawn()
|
||||||
public boolean isNeededNextFlag = false;
|
{
|
||||||
public int npcId;
|
}
|
||||||
public int x = 0;
|
|
||||||
public int y = 0;
|
boolean isZone = false;
|
||||||
public int z = 0;
|
boolean isNeededNextFlag = false;
|
||||||
public int h = 0;
|
int npcId;
|
||||||
public int zone = 0;
|
int x = 0;
|
||||||
public int count = 0;
|
int y = 0;
|
||||||
|
int z = 0;
|
||||||
|
int h = 0;
|
||||||
|
int zone = 0;
|
||||||
|
int count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spawn data
|
// Spawn data
|
||||||
|
@@ -28,7 +28,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
/**
|
/**
|
||||||
* @author UnAfraid
|
* @author UnAfraid
|
||||||
*/
|
*/
|
||||||
public class NpcBufferAI implements Runnable
|
class NpcBufferAI implements Runnable
|
||||||
{
|
{
|
||||||
private static final Logger LOGGER = Logger.getLogger(NpcBufferAI.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(NpcBufferAI.class.getName());
|
||||||
private final L2Npc _npc;
|
private final L2Npc _npc;
|
||||||
|
@@ -22,12 +22,12 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* @author UnAfraid
|
* @author UnAfraid
|
||||||
*/
|
*/
|
||||||
public class NpcBufferData
|
class NpcBufferData
|
||||||
{
|
{
|
||||||
private final int _id;
|
private final int _id;
|
||||||
private final List<NpcBufferSkillData> _skills = new ArrayList<>();
|
private final List<NpcBufferSkillData> _skills = new ArrayList<>();
|
||||||
|
|
||||||
public NpcBufferData(int id)
|
NpcBufferData(int id)
|
||||||
{
|
{
|
||||||
_id = id;
|
_id = id;
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ public class NpcBufferData
|
|||||||
return _id;
|
return _id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSkill(NpcBufferSkillData skill)
|
void addSkill(NpcBufferSkillData skill)
|
||||||
{
|
{
|
||||||
_skills.add(skill);
|
_skills.add(skill);
|
||||||
}
|
}
|
||||||
|
@@ -23,13 +23,13 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
/**
|
/**
|
||||||
* @author UnAfraid
|
* @author UnAfraid
|
||||||
*/
|
*/
|
||||||
public class NpcBufferSkillData
|
class NpcBufferSkillData
|
||||||
{
|
{
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final int _scaleToLevel;
|
private final int _scaleToLevel;
|
||||||
private final int _initialDelay;
|
private final int _initialDelay;
|
||||||
|
|
||||||
public NpcBufferSkillData(StatsSet set)
|
NpcBufferSkillData(StatsSet set)
|
||||||
{
|
{
|
||||||
_skill = new SkillHolder(set.getInt("id"), set.getInt("level"));
|
_skill = new SkillHolder(set.getInt("id"), set.getInt("level"));
|
||||||
_scaleToLevel = set.getInt("scaleToLevel", -1);
|
_scaleToLevel = set.getInt("scaleToLevel", -1);
|
||||||
|
@@ -33,7 +33,7 @@ import com.l2jmobius.gameserver.model.StatsSet;
|
|||||||
/**
|
/**
|
||||||
* @author UnAfraid
|
* @author UnAfraid
|
||||||
*/
|
*/
|
||||||
public class NpcBuffersData implements IGameXmlReader
|
class NpcBuffersData implements IGameXmlReader
|
||||||
{
|
{
|
||||||
private static final Logger LOGGER = Logger.getLogger(NpcBuffersData.class.getName());
|
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);
|
return _npcBuffers.get(npcId);
|
||||||
}
|
}
|
||||||
|
@@ -276,7 +276,7 @@ public class AdminBuffs implements IAdminCommandHandler
|
|||||||
* @param gmchar the player to switch the Game Master skills.
|
* @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}.
|
* @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();
|
final Collection<Skill> skills = toAuraSkills ? SkillTreesData.getInstance().getGMSkillTree() : SkillTreesData.getInstance().getGMAuraSkillTree();
|
||||||
for (Skill skill : skills)
|
for (Skill skill : skills)
|
||||||
@@ -292,7 +292,7 @@ public class AdminBuffs implements IAdminCommandHandler
|
|||||||
return ADMIN_COMMANDS;
|
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<>();
|
final List<BuffInfo> effects = new ArrayList<>();
|
||||||
if (!passive)
|
if (!passive)
|
||||||
|
@@ -464,7 +464,7 @@ public class AdminEventEngine implements IAdminCommandHandler
|
|||||||
return note + result;
|
return note + result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showMainPage(L2PcInstance activeChar)
|
private void showMainPage(L2PcInstance activeChar)
|
||||||
{
|
{
|
||||||
final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
||||||
|
|
||||||
@@ -473,7 +473,7 @@ public class AdminEventEngine implements IAdminCommandHandler
|
|||||||
activeChar.sendPacket(adminReply);
|
activeChar.sendPacket(adminReply);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showNewEventPage(L2PcInstance activeChar)
|
private void showNewEventPage(L2PcInstance activeChar)
|
||||||
{
|
{
|
||||||
final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
||||||
|
|
||||||
@@ -515,7 +515,7 @@ public class AdminEventEngine implements IAdminCommandHandler
|
|||||||
activeChar.sendPacket(adminReply);
|
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 NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
@@ -77,7 +77,7 @@ public class AdminHtml implements IAdminCommandHandler
|
|||||||
* @param activeChar activeChar where html is shown
|
* @param activeChar activeChar where html is shown
|
||||||
* @param path relative path from directory data/html/admin/ to html
|
* @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);
|
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 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.
|
* @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;
|
String content = null;
|
||||||
if (!reload)
|
if (!reload)
|
||||||
|
@@ -37,7 +37,7 @@ public class AdminMonsterRace implements IAdminCommandHandler
|
|||||||
"admin_mons"
|
"admin_mons"
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static int state = -1;
|
static int state = -1;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean useAdminCommand(String command, L2PcInstance activeChar)
|
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;
|
private final int[][] codes;
|
||||||
|
@@ -42,7 +42,7 @@ import com.l2jmobius.gameserver.util.Util;
|
|||||||
|
|
||||||
public class AdminQuest implements IAdminCommandHandler
|
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 =
|
private static final String[] ADMIN_COMMANDS =
|
||||||
{
|
{
|
||||||
|
@@ -26,7 +26,7 @@ import com.l2jmobius.gameserver.util.BuilderUtil;
|
|||||||
*/
|
*/
|
||||||
public class AdminSummon implements IAdminCommandHandler
|
public class AdminSummon implements IAdminCommandHandler
|
||||||
{
|
{
|
||||||
public static final String[] ADMIN_COMMANDS =
|
private static final String[] ADMIN_COMMANDS =
|
||||||
{
|
{
|
||||||
"admin_summon"
|
"admin_summon"
|
||||||
};
|
};
|
||||||
|
@@ -29,7 +29,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
*/
|
*/
|
||||||
public final class AdminSuperHaste implements IAdminCommandHandler
|
public final class AdminSuperHaste implements IAdminCommandHandler
|
||||||
{
|
{
|
||||||
public static final String[] ADMIN_COMMANDS =
|
static final String[] ADMIN_COMMANDS =
|
||||||
{
|
{
|
||||||
"admin_superhaste",
|
"admin_superhaste",
|
||||||
"admin_superhaste_menu",
|
"admin_superhaste_menu",
|
||||||
|
@@ -18,6 +18,7 @@ package handlers.bypasshandlers;
|
|||||||
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.gameserver.handler.IBypassHandler;
|
import com.l2jmobius.gameserver.handler.IBypassHandler;
|
||||||
import com.l2jmobius.gameserver.model.ClanPrivilege;
|
import com.l2jmobius.gameserver.model.ClanPrivilege;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
@@ -41,6 +42,11 @@ public class ClanWarehouse implements IBypassHandler
|
|||||||
@Override
|
@Override
|
||||||
public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
|
public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
|
||||||
{
|
{
|
||||||
|
if (!Config.ALLOW_WAREHOUSE)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!target.isNpc())
|
if (!target.isNpc())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@@ -271,7 +271,7 @@ public class NpcViewMod implements IBypassHandler
|
|||||||
activeChar.sendPacket(html);
|
activeChar.sendPacket(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendNpcSkillView(L2PcInstance activeChar, L2Npc npc)
|
private static void sendNpcSkillView(L2PcInstance activeChar, L2Npc npc)
|
||||||
{
|
{
|
||||||
final NpcHtmlMessage html = new NpcHtmlMessage();
|
final NpcHtmlMessage html = new NpcHtmlMessage();
|
||||||
html.setFile(activeChar, "data/html/mods/NpcView/Skills.htm");
|
html.setFile(activeChar, "data/html/mods/NpcView/Skills.htm");
|
||||||
@@ -303,7 +303,7 @@ public class NpcViewMod implements IBypassHandler
|
|||||||
activeChar.sendPacket(html);
|
activeChar.sendPacket(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendAggroListView(L2PcInstance activeChar, L2Npc npc)
|
private static void sendAggroListView(L2PcInstance activeChar, L2Npc npc)
|
||||||
{
|
{
|
||||||
final NpcHtmlMessage html = new NpcHtmlMessage();
|
final NpcHtmlMessage html = new NpcHtmlMessage();
|
||||||
html.setFile(activeChar, "data/html/mods/NpcView/AggroList.htm");
|
html.setFile(activeChar, "data/html/mods/NpcView/AggroList.htm");
|
||||||
|
@@ -18,6 +18,7 @@ package handlers.bypasshandlers;
|
|||||||
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.gameserver.handler.IBypassHandler;
|
import com.l2jmobius.gameserver.handler.IBypassHandler;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
@@ -37,6 +38,11 @@ public class PrivateWarehouse implements IBypassHandler
|
|||||||
@Override
|
@Override
|
||||||
public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
|
public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
|
||||||
{
|
{
|
||||||
|
if (!Config.ALLOW_WAREHOUSE)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!target.isNpc())
|
if (!target.isNpc())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@@ -81,7 +81,7 @@ public class QuestLink implements IBypassHandler
|
|||||||
* @param npc The table containing quests of the L2NpcInstance
|
* @param npc The table containing quests of the L2NpcInstance
|
||||||
* @param quests
|
* @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 sbStarted = new StringBuilder(128);
|
||||||
final StringBuilder sbCanStart = 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 npc the L2NpcInstance that chats with the {@code player}
|
||||||
* @param questId the Id of the quest to display the message
|
* @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;
|
String content = null;
|
||||||
|
|
||||||
|
@@ -55,16 +55,16 @@ public class DropSearchBoard implements IParseBoardHandler
|
|||||||
"_bbs_npc_trace"
|
"_bbs_npc_trace"
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBDropHolder
|
private class CBDropHolder
|
||||||
{
|
{
|
||||||
int itemId;
|
final int itemId;
|
||||||
int npcId;
|
final int npcId;
|
||||||
byte npcLevel;
|
final byte npcLevel;
|
||||||
long min;
|
final long min;
|
||||||
long max;
|
final long max;
|
||||||
double chance;
|
final double chance;
|
||||||
boolean isSpoil;
|
final boolean isSpoil;
|
||||||
boolean isRaid;
|
final boolean isRaid;
|
||||||
|
|
||||||
public CBDropHolder(L2NpcTemplate npcTemplate, DropHolder dropHolder)
|
public CBDropHolder(L2NpcTemplate npcTemplate, DropHolder dropHolder)
|
||||||
{
|
{
|
||||||
|
@@ -77,7 +77,7 @@ public final class HomeBoard implements IParseBoardHandler
|
|||||||
Config.COMMUNITYBOARD_ENABLE_HEAL ? "_bbsheal" : null
|
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;
|
boolean commandCheck = false;
|
||||||
for (String c : CUSTOM_COMMANDS)
|
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));
|
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
|
@Override
|
||||||
public String[] getCommunityBoardCommands()
|
public String[] getCommunityBoardCommands()
|
||||||
|
@@ -24,7 +24,7 @@ import com.l2jmobius.gameserver.model.stats.Stats;
|
|||||||
/**
|
/**
|
||||||
* @author UnAfraid
|
* @author UnAfraid
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractConditionalHpEffect extends AbstractStatEffect
|
abstract class AbstractConditionalHpEffect extends AbstractStatEffect
|
||||||
{
|
{
|
||||||
private final int _hpPercent;
|
private final int _hpPercent;
|
||||||
|
|
||||||
|
@@ -95,20 +95,6 @@ public final class AirBind extends AbstractEffect
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void continuousInstant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
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))
|
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", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
}
|
}
|
||||||
|
|
||||||
public TerminateReturn onSkillUseEvent(OnCreatureSkillUse event)
|
private TerminateReturn onSkillUseEvent(OnCreatureSkillUse event)
|
||||||
{
|
{
|
||||||
if (CommonUtil.contains(_magicTypes, event.getSkill().getMagicType()))
|
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);
|
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
|
public class CriticalDamagePosition extends AbstractEffect
|
||||||
{
|
{
|
||||||
protected final double _amount;
|
private final double _amount;
|
||||||
protected final Position _position;
|
private final Position _position;
|
||||||
|
|
||||||
public CriticalDamagePosition(StatsSet params)
|
public CriticalDamagePosition(StatsSet params)
|
||||||
{
|
{
|
||||||
|
@@ -29,8 +29,8 @@ import com.l2jmobius.gameserver.util.MathUtil;
|
|||||||
*/
|
*/
|
||||||
public class CriticalRatePositionBonus extends AbstractEffect
|
public class CriticalRatePositionBonus extends AbstractEffect
|
||||||
{
|
{
|
||||||
protected final double _amount;
|
private final double _amount;
|
||||||
protected final Position _position;
|
private final Position _position;
|
||||||
|
|
||||||
public CriticalRatePositionBonus(StatsSet params)
|
public CriticalRatePositionBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
|
@@ -36,7 +36,7 @@ import com.l2jmobius.gameserver.util.Util;
|
|||||||
*/
|
*/
|
||||||
public final class Fear extends AbstractEffect
|
public final class Fear extends AbstractEffect
|
||||||
{
|
{
|
||||||
public static final int FEAR_RANGE = 500;
|
private static final int FEAR_RANGE = 500;
|
||||||
|
|
||||||
public Fear(StatsSet params)
|
public Fear(StatsSet params)
|
||||||
{
|
{
|
||||||
|
@@ -31,7 +31,7 @@ import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
|||||||
*/
|
*/
|
||||||
public class GetMomentum extends AbstractEffect
|
public class GetMomentum extends AbstractEffect
|
||||||
{
|
{
|
||||||
public static int _ticks;
|
private static int _ticks;
|
||||||
|
|
||||||
public GetMomentum(StatsSet params)
|
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 double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
|
||||||
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
|
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
|
public final class ModifyVital extends AbstractEffect
|
||||||
{
|
{
|
||||||
// Modify types
|
// Modify types
|
||||||
enum ModifyType
|
private enum ModifyType
|
||||||
{
|
{
|
||||||
DIFF,
|
DIFF,
|
||||||
SET,
|
SET,
|
||||||
|
@@ -45,7 +45,7 @@ import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
|||||||
*/
|
*/
|
||||||
public final class RestorationRandom extends AbstractEffect
|
public final class RestorationRandom extends AbstractEffect
|
||||||
{
|
{
|
||||||
final List<L2ExtractableProductItem> _products = new ArrayList<>();
|
private final List<L2ExtractableProductItem> _products = new ArrayList<>();
|
||||||
|
|
||||||
public RestorationRandom(StatsSet params)
|
public RestorationRandom(StatsSet params)
|
||||||
{
|
{
|
||||||
|
@@ -69,7 +69,7 @@ public final class SoulEating extends AbstractEffect
|
|||||||
effected.getStat().mergeAdd(Stats.MAX_SOULS, _maxSouls);
|
effected.getStat().mergeAdd(Stats.MAX_SOULS, _maxSouls);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onExperienceReceived(L2Playable playable, long exp)
|
private void onExperienceReceived(L2Playable playable, long exp)
|
||||||
{
|
{
|
||||||
// TODO: Verify logic.
|
// TODO: Verify logic.
|
||||||
if (playable.isPlayer() && (exp >= _expNeeded))
|
if (playable.isPlayer() && (exp >= _expNeeded))
|
||||||
|
@@ -34,7 +34,7 @@ import com.l2jmobius.gameserver.model.stats.Stats;
|
|||||||
public class StatBonusSkillCritical extends AbstractEffect
|
public class StatBonusSkillCritical extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final BaseStats _stat;
|
private final BaseStats _stat;
|
||||||
protected final Condition _armorTypeCondition;
|
private final Condition _armorTypeCondition;
|
||||||
|
|
||||||
public StatBonusSkillCritical(StatsSet params)
|
public StatBonusSkillCritical(StatsSet params)
|
||||||
{
|
{
|
||||||
|
@@ -34,7 +34,7 @@ import com.l2jmobius.gameserver.model.stats.Stats;
|
|||||||
public class StatBonusSpeed extends AbstractEffect
|
public class StatBonusSpeed extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final BaseStats _stat;
|
private final BaseStats _stat;
|
||||||
protected final Condition _armorTypeCondition;
|
private final Condition _armorTypeCondition;
|
||||||
|
|
||||||
public StatBonusSpeed(StatsSet params)
|
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))
|
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
|
* @param params
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public TriggerSkillByAvoid(StatsSet params)
|
public TriggerSkillByAvoid(StatsSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
@@ -54,7 +53,7 @@ public final class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_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)))
|
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);
|
_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))
|
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);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.L2Character);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
{
|
{
|
||||||
if (event.getDamage() < event.getTarget().getCurrentHp())
|
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));
|
_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)))
|
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);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if (!event.getTarget().isCharacter())
|
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 _weaponTypeCondition = new ConditionUsingItemType(WeaponType.BLUNT.mask());
|
||||||
private static final Condition _slotCondition = new ConditionUsingSlotType(L2Item.SLOT_LR_HAND);
|
private static final Condition _slotCondition = new ConditionUsingSlotType(L2Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
protected final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
protected final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkmode;
|
||||||
|
|
||||||
protected final double _accuracyAmount;
|
private final double _accuracyAmount;
|
||||||
protected final StatModifierType _accuracyMode;
|
private final StatModifierType _accuracyMode;
|
||||||
|
|
||||||
public TwoHandedBluntBonus(StatsSet params)
|
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 _weaponTypeCondition = new ConditionUsingItemType(WeaponType.SWORD.mask());
|
||||||
private static final Condition _slotCondition = new ConditionUsingSlotType(L2Item.SLOT_LR_HAND);
|
private static final Condition _slotCondition = new ConditionUsingSlotType(L2Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
protected final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
protected final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkmode;
|
||||||
|
|
||||||
protected final double _accuracyAmount;
|
private final double _accuracyAmount;
|
||||||
protected final StatModifierType _accuracyMode;
|
private final StatModifierType _accuracyMode;
|
||||||
|
|
||||||
public TwoHandedSwordBonus(StatsSet params)
|
public TwoHandedSwordBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
|
@@ -54,7 +54,7 @@ public class PetFood implements IItemHandler
|
|||||||
return true;
|
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);
|
final Skill skill = SkillData.getInstance().getSkill(skillId, skillLevel);
|
||||||
if (skill != null)
|
if (skill != null)
|
||||||
|
@@ -58,7 +58,7 @@ public final class SitStand implements IPlayerActionHandler
|
|||||||
* @param target the target to sit, throne, bench or chair
|
* @param target the target to sit, throne, bench or chair
|
||||||
* @return {@code true} if the player can sit, {@code false} otherwise
|
* @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)
|
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));
|
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();
|
final L2PcInstance activeChar = event.getActiveChar();
|
||||||
if (activeChar.isJailed() && !activeChar.isInsideZone(ZoneId.JAIL))
|
if (activeChar.isJailed() && !activeChar.isInsideZone(ZoneId.JAIL))
|
||||||
|
@@ -27,7 +27,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
*/
|
*/
|
||||||
public class OpSkillAcquireSkillCondition implements ISkillCondition
|
public class OpSkillAcquireSkillCondition implements ISkillCondition
|
||||||
{
|
{
|
||||||
final int _skillId;
|
private final int _skillId;
|
||||||
private final boolean _hasLearned;
|
private final boolean _hasLearned;
|
||||||
|
|
||||||
public OpSkillAcquireSkillCondition(StatsSet params)
|
public OpSkillAcquireSkillCondition(StatsSet params)
|
||||||
|
@@ -28,7 +28,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
*/
|
*/
|
||||||
public class TargetMyPartySkillCondition implements ISkillCondition
|
public class TargetMyPartySkillCondition implements ISkillCondition
|
||||||
{
|
{
|
||||||
final boolean _includeMe;
|
private final boolean _includeMe;
|
||||||
|
|
||||||
public TargetMyPartySkillCondition(StatsSet params)
|
public TargetMyPartySkillCondition(StatsSet params)
|
||||||
{
|
{
|
||||||
|
@@ -251,7 +251,7 @@ public class Debug implements ITelnetCommand
|
|||||||
throw new IllegalStateException("Deadlocked Thread not found");
|
throw new IllegalStateException("Deadlocked Thread not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getServerStatus()
|
static String getServerStatus()
|
||||||
{
|
{
|
||||||
int playerCount = 0, objectCount = 0;
|
int playerCount = 0, objectCount = 0;
|
||||||
final int max = LoginServerThread.getInstance().getMaxPlayer();
|
final int max = LoginServerThread.getInstance().getMaxPlayer();
|
||||||
|
@@ -44,11 +44,6 @@ public class AutoPotion implements IVoicedCommandHandler
|
|||||||
"apoff"
|
"apoff"
|
||||||
};
|
};
|
||||||
|
|
||||||
public static AutoPotion getInstance()
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
|
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
|
||||||
{
|
{
|
||||||
|
@@ -112,7 +112,7 @@ public final class TalkingIslandPast extends AbstractInstance
|
|||||||
return super.onExitZone(character, zone);
|
return super.onExitZone(character, zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onCreatureSee(OnCreatureSee event)
|
private void onCreatureSee(OnCreatureSee event)
|
||||||
{
|
{
|
||||||
final L2Character creature = event.getSeen();
|
final L2Character creature = event.getSeen();
|
||||||
final L2Npc npc = (L2Npc) event.getSeer();
|
final L2Npc npc = (L2Npc) event.getSeer();
|
||||||
|
@@ -30,12 +30,12 @@ import com.l2jmobius.gameserver.util.Util;
|
|||||||
*/
|
*/
|
||||||
public class Q00180_InfernalFlamesBurningInCrystalPrison extends Quest
|
public class Q00180_InfernalFlamesBurningInCrystalPrison extends Quest
|
||||||
{
|
{
|
||||||
// Npc
|
// NPC
|
||||||
public static final int FIOREN = 33044;
|
private static final int FIOREN = 33044;
|
||||||
// Monster
|
// Monster
|
||||||
public static final int BAYLOR = 29213;
|
private static final int BAYLOR = 29213;
|
||||||
// Misc
|
// Misc
|
||||||
public static final int MIN_LEVEL = 97;
|
private static final int MIN_LEVEL = 97;
|
||||||
// Quest Item
|
// Quest Item
|
||||||
private static final int BELETH_MARK = 17591;
|
private static final int BELETH_MARK = 17591;
|
||||||
// Item
|
// Item
|
||||||
|
@@ -26,12 +26,12 @@ import com.l2jmobius.gameserver.model.quest.QuestState;
|
|||||||
import com.l2jmobius.gameserver.util.Util;
|
import com.l2jmobius.gameserver.util.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hlwrave
|
* @author hlwrave
|
||||||
* @URL https://l2wiki.com/Devils_Strike_Back,_Advent_of_Balok
|
* @URL https://l2wiki.com/Devils_Strike_Back,_Advent_of_Balok
|
||||||
*/
|
*/
|
||||||
public class Q00181_DevilsStrikeBackAdventOfBalok extends Quest
|
public class Q00181_DevilsStrikeBackAdventOfBalok extends Quest
|
||||||
{
|
{
|
||||||
// Npc
|
// NPC
|
||||||
private static final int FIOREN = 33044;
|
private static final int FIOREN = 33044;
|
||||||
// Monster
|
// Monster
|
||||||
private static final int BALOK = 29218;
|
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 EWR = 17526;
|
||||||
private static final int POUCH = 34861;
|
private static final int POUCH = 34861;
|
||||||
// Misc
|
// Misc
|
||||||
public static final int MIN_LEVEL = 97;
|
private static final int MIN_LEVEL = 97;
|
||||||
|
|
||||||
public Q00181_DevilsStrikeBackAdventOfBalok()
|
public Q00181_DevilsStrikeBackAdventOfBalok()
|
||||||
{
|
{
|
||||||
|
@@ -33,7 +33,7 @@ public class Q00254_LegendaryTales extends Quest
|
|||||||
private static final int GILMORE = 30754;
|
private static final int GILMORE = 30754;
|
||||||
|
|
||||||
// Monsters
|
// Monsters
|
||||||
public enum Bosses
|
private enum Bosses
|
||||||
{
|
{
|
||||||
EMERALD_HORN(25718),
|
EMERALD_HORN(25718),
|
||||||
DUST_RIDER(25719),
|
DUST_RIDER(25719),
|
||||||
|
@@ -31,10 +31,10 @@ import com.l2jmobius.gameserver.model.quest.State;
|
|||||||
*/
|
*/
|
||||||
public class Q00465_WeAreFriends extends Quest
|
public class Q00465_WeAreFriends extends Quest
|
||||||
{
|
{
|
||||||
// Npc
|
// NPCs
|
||||||
public static final int FAIRY_CITIZEN = 32921;
|
private static final int FAIRY_CITIZEN = 32921;
|
||||||
public static final int FAIRY_CITIZEN_SPAWN = 32923;
|
private static final int FAIRY_CITIZEN_SPAWN = 32923;
|
||||||
// item
|
// Item
|
||||||
private static final int MARK_OF_FRIENDSHIP = 17377;
|
private static final int MARK_OF_FRIENDSHIP = 17377;
|
||||||
private static final int FAIRY_LEAF_FLUTE = 17378;
|
private static final int FAIRY_LEAF_FLUTE = 17378;
|
||||||
private static final int CERTIFICATE_OF_PROMISE = 30384;
|
private static final int CERTIFICATE_OF_PROMISE = 30384;
|
||||||
|
@@ -35,8 +35,8 @@ public class Q00466_PlacingMySmallPower extends Quest
|
|||||||
{
|
{
|
||||||
// NPCs
|
// NPCs
|
||||||
private static final int ASTERIOS = 30154;
|
private static final int ASTERIOS = 30154;
|
||||||
public static final int NOETI_MIMILEAD = 32895;
|
private static final int NOETI_MIMILEAD = 32895;
|
||||||
public static final int[] COCON =
|
private static final int[] COCON =
|
||||||
{
|
{
|
||||||
19394 // Large Cocoon
|
19394 // Large Cocoon
|
||||||
};
|
};
|
||||||
@@ -60,13 +60,13 @@ public class Q00466_PlacingMySmallPower extends Quest
|
|||||||
22878 // Fairy Rogue
|
22878 // Fairy Rogue
|
||||||
};
|
};
|
||||||
// Items
|
// Items
|
||||||
public static final int FAIRY_WING = 17597;
|
private static final int FAIRY_WING = 17597;
|
||||||
public static final int COCOON_FRAGMENT = 17598;
|
private static final int COCOON_FRAGMENT = 17598;
|
||||||
public static final int KIMERIANS_BREATH = 17599;
|
private static final int KIMERIANS_BREATH = 17599;
|
||||||
public static final int TEMINIELS_TONIC = 17596;
|
private static final int TEMINIELS_TONIC = 17596;
|
||||||
public static final int TONIC_RECIPE = 17603;
|
private static final int TONIC_RECIPE = 17603;
|
||||||
// Reward
|
// Reward
|
||||||
public static final int CERTIFICATE_OF_PROMISE = 30384;
|
private static final int CERTIFICATE_OF_PROMISE = 30384;
|
||||||
// Misc
|
// Misc
|
||||||
private static final int MIN_LEVEL = 90;
|
private static final int MIN_LEVEL = 90;
|
||||||
|
|
||||||
|
@@ -34,8 +34,8 @@ import com.l2jmobius.gameserver.util.Util;
|
|||||||
*/
|
*/
|
||||||
public class Q00469_SuspiciousGardener extends Quest
|
public class Q00469_SuspiciousGardener extends Quest
|
||||||
{
|
{
|
||||||
// Npc
|
// NPC
|
||||||
public static final int GOFINA = 33031;
|
private static final int GOFINA = 33031;
|
||||||
// Monsters
|
// Monsters
|
||||||
private static final int APHERIUS_LOOKOUT_BEWILDERED = 22964;
|
private static final int APHERIUS_LOOKOUT_BEWILDERED = 22964;
|
||||||
// Items
|
// Items
|
||||||
|
@@ -30,14 +30,14 @@ import com.l2jmobius.gameserver.util.Util;
|
|||||||
*/
|
*/
|
||||||
public class Q00471_BreakingThroughTheEmeraldSquare extends Quest
|
public class Q00471_BreakingThroughTheEmeraldSquare extends Quest
|
||||||
{
|
{
|
||||||
// Npc
|
// NPC
|
||||||
public static final int FIOREN = 33044;
|
private static final int FIOREN = 33044;
|
||||||
// Monster
|
// Monster
|
||||||
public static final int EMABIFI = 25881;
|
private static final int EMABIFI = 25881;
|
||||||
// Misc
|
// Misc
|
||||||
public static final int MIN_LEVEL = 97;
|
private static final int MIN_LEVEL = 97;
|
||||||
// Items
|
// Items
|
||||||
public static final int CERTIFICATE = 30387;
|
private static final int CERTIFICATE = 30387;
|
||||||
|
|
||||||
public Q00471_BreakingThroughTheEmeraldSquare()
|
public Q00471_BreakingThroughTheEmeraldSquare()
|
||||||
{
|
{
|
||||||
|
@@ -30,14 +30,14 @@ import com.l2jmobius.gameserver.util.Util;
|
|||||||
*/
|
*/
|
||||||
public class Q00472_ChallengeSteamCorridor extends Quest
|
public class Q00472_ChallengeSteamCorridor extends Quest
|
||||||
{
|
{
|
||||||
// Npc
|
// NPC
|
||||||
public static final int FIOREN = 33044;
|
private static final int FIOREN = 33044;
|
||||||
// Monster
|
// Monster
|
||||||
public static final int KECHI = 25532;
|
private static final int KECHI = 25532;
|
||||||
// Mis
|
// Mis
|
||||||
public static final int MIN_LEVEL = 97;
|
private static final int MIN_LEVEL = 97;
|
||||||
// Item
|
// Item
|
||||||
public static final int CERTIFICATE = 30387;
|
private static final int CERTIFICATE = 30387;
|
||||||
|
|
||||||
public Q00472_ChallengeSteamCorridor()
|
public Q00472_ChallengeSteamCorridor()
|
||||||
{
|
{
|
||||||
|
@@ -26,18 +26,18 @@ import com.l2jmobius.gameserver.util.Util;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author hlwrave
|
* @author hlwrave
|
||||||
* @URL: https://l2wiki.com/In_the_Coral_Garden
|
* @URL https://l2wiki.com/In_the_Coral_Garden
|
||||||
*/
|
*/
|
||||||
public class Q00473_InTheCoralGarden extends Quest
|
public class Q00473_InTheCoralGarden extends Quest
|
||||||
{
|
{
|
||||||
// Npc
|
// NPC
|
||||||
public static final int FIOREN = 33044;
|
private static final int FIOREN = 33044;
|
||||||
// Monster
|
// Monster
|
||||||
public static final int MICHAEL = 25799;
|
private static final int MICHAEL = 25799;
|
||||||
// Misc
|
// Misc
|
||||||
public static final int MIN_LEVEL = 97;
|
private static final int MIN_LEVEL = 97;
|
||||||
// Item
|
// Item
|
||||||
public static final int CERTIFICATE = 30387;
|
private static final int CERTIFICATE = 30387;
|
||||||
|
|
||||||
public Q00473_InTheCoralGarden()
|
public Q00473_InTheCoralGarden()
|
||||||
{
|
{
|
||||||
|
@@ -31,9 +31,9 @@ import com.l2jmobius.gameserver.model.quest.State;
|
|||||||
*/
|
*/
|
||||||
public class Q00483_IntendedTactic extends Quest
|
public class Q00483_IntendedTactic extends Quest
|
||||||
{
|
{
|
||||||
// Npc
|
// NPC
|
||||||
public static final int ENDE = 33357;
|
private static final int ENDE = 33357;
|
||||||
// Mobs
|
// Monsters
|
||||||
private static final int[] MOBS =
|
private static final int[] MOBS =
|
||||||
{
|
{
|
||||||
23069, // Vladimir's Warrior
|
23069, // Vladimir's Warrior
|
||||||
@@ -50,7 +50,7 @@ public class Q00483_IntendedTactic extends Quest
|
|||||||
25811, // Lazearth
|
25811, // Lazearth
|
||||||
25815 // Ken
|
25815 // Ken
|
||||||
};
|
};
|
||||||
// items
|
// Items
|
||||||
private static final int LOYAL_SERVANS_BLOOD = 17736;
|
private static final int LOYAL_SERVANS_BLOOD = 17736;
|
||||||
private static final int TRUTTHFUL_ONES_BLOOD = 17737;
|
private static final int TRUTTHFUL_ONES_BLOOD = 17737;
|
||||||
private static final int TOKEN_OF_INSOLENCE_TOWER = 17624;
|
private static final int TOKEN_OF_INSOLENCE_TOWER = 17624;
|
||||||
|
@@ -287,7 +287,7 @@ public class Q00663_SeductiveWhispers extends Quest
|
|||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String play(L2PcInstance player, boolean isPlayerTurn, boolean isPractice)
|
private String play(L2PcInstance player, boolean isPlayerTurn, boolean isPractice)
|
||||||
{
|
{
|
||||||
boolean isPlayerWin = false;
|
boolean isPlayerWin = false;
|
||||||
boolean isNpcWin = 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);
|
private static final ItemHolder ELCADIAS_MARK = new ItemHolder(17226, 10);
|
||||||
// Misc
|
// Misc
|
||||||
private static final int MIN_LEVEL = 81;
|
private static final int MIN_LEVEL = 81;
|
||||||
boolean isBusy = false;
|
private boolean isBusy = false;
|
||||||
// Monster
|
// Monster
|
||||||
private static final int CREATURE_OF_THE_DUSK1 = 27422;
|
private static final int CREATURE_OF_THE_DUSK1 = 27422;
|
||||||
private static final int CREATURE_OF_THE_DUSK2 = 27424;
|
private static final int CREATURE_OF_THE_DUSK2 = 27424;
|
||||||
|
@@ -444,7 +444,7 @@ public final class Q10294_SevenSignsToTheMonasteryOfSilence extends Quest
|
|||||||
return htmltext;
|
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));
|
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
|
public final class Q10353_CertificationOfValue extends Quest
|
||||||
{
|
{
|
||||||
// NPCs
|
// NPCs
|
||||||
public static final int RIEYI = 33155;
|
private static final int RIEYI = 33155;
|
||||||
public static final int KYUORI = 33358;
|
private static final int KYUORI = 33358;
|
||||||
private static final int DUMMY_MONSTER = 33349;
|
private static final int DUMMY_MONSTER = 33349;
|
||||||
private static final int[] MONSTERS =
|
private static final int[] MONSTERS =
|
||||||
{
|
{
|
||||||
|
@@ -658,7 +658,7 @@ public final class Q10369_NoblesseSoulTesting extends Quest
|
|||||||
return super.onFirstTalk(npc, player);
|
return super.onFirstTalk(npc, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canProgress(L2PcInstance player)
|
private boolean canProgress(L2PcInstance player)
|
||||||
{
|
{
|
||||||
return ((player.getLevel() > MIN_LEVEL) && player.isSubClassActive());
|
return ((player.getLevel() > MIN_LEVEL) && player.isSubClassActive());
|
||||||
}
|
}
|
||||||
|
@@ -43,8 +43,12 @@ import ai.AbstractNpcAI;
|
|||||||
|
|
||||||
public abstract class AirShipController extends AbstractNpcAI
|
public abstract class AirShipController extends AbstractNpcAI
|
||||||
{
|
{
|
||||||
protected final class DecayTask implements Runnable
|
private final class DecayTask implements Runnable
|
||||||
{
|
{
|
||||||
|
public DecayTask()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
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
|
@Override
|
||||||
public void run()
|
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 _dockZone = 0;
|
||||||
protected int _shipSpawnX = 0;
|
protected int _shipSpawnX = 0;
|
||||||
protected int _shipSpawnY = 0;
|
protected int _shipSpawnY = 0;
|
||||||
|
|
||||||
protected int _shipSpawnZ = 0;
|
protected int _shipSpawnZ = 0;
|
||||||
|
|
||||||
protected int _shipHeading = 0;
|
private final int _shipHeading = 0;
|
||||||
protected Location _oustLoc = null;
|
protected Location _oustLoc = null;
|
||||||
protected int _locationId = 0;
|
protected int _locationId = 0;
|
||||||
|
|
||||||
@@ -94,8 +102,8 @@ public abstract class AirShipController extends AbstractNpcAI
|
|||||||
|
|
||||||
protected Movie _movie = null;
|
protected Movie _movie = null;
|
||||||
|
|
||||||
protected boolean _isBusy = false;
|
private boolean _isBusy = false;
|
||||||
protected L2ControllableAirShipInstance _dockedShip = null;
|
L2ControllableAirShipInstance _dockedShip = null;
|
||||||
private final Runnable _decayTask = new DecayTask();
|
private final Runnable _decayTask = new DecayTask();
|
||||||
|
|
||||||
private final Runnable _departTask = new DepartTask();
|
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
|
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
|
// Constants
|
||||||
@@ -81,60 +81,59 @@ public final class Config
|
|||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// Config File Definitions
|
// 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 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 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 SIEGE_CONFIG_FILE = "./config/Siege.ini";
|
||||||
public static final String TELNET_CONFIG_FILE = "./config/Telnet.ini";
|
public static final String FORTSIEGE_CONFIG_FILE = "./config/FortSiege.ini";
|
||||||
public static final String TRAINING_CAMP_CONFIG_FILE = "./config/TrainingCamp.ini";
|
private static final String CHARACTER_CONFIG_FILE = "./config/Character.ini";
|
||||||
public static final String CHAT_FILTER_FILE = "./config/chatfilter.txt";
|
private static final String FEATURE_CONFIG_FILE = "./config/Feature.ini";
|
||||||
public static final String HEXID_FILE = "./config/hexid.txt";
|
private static final String FLOOD_PROTECTOR_CONFIG_FILE = "./config/FloodProtector.ini";
|
||||||
public static final String IPCONFIG_FILE = "./config/ipconfig.xml";
|
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
|
// Custom Config File Definitions
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
public static final String CUSTOM_ALLOWED_PLAYER_RACES_CONFIG_FILE = "./config/Custom/AllowedPlayerRaces.ini";
|
private 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";
|
private static final String CUSTOM_AUTO_POTIONS_CONFIG_FILE = "./config/Custom/AutoPotions.ini";
|
||||||
public static final String CUSTOM_BANKING_CONFIG_FILE = "./config/Custom/Banking.ini";
|
private static final String CUSTOM_BANKING_CONFIG_FILE = "./config/Custom/Banking.ini";
|
||||||
public static final String CUSTOM_CHAMPION_MONSTERS_CONFIG_FILE = "./config/Custom/ChampionMonsters.ini";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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";
|
private 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_WALKER_BOT_PROTECTION_CONFIG_FILE = "./config/Custom/WalkerBotProtection.ini";
|
||||||
|
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// Variable Definitions
|
// Variable Definitions
|
||||||
@@ -172,7 +171,6 @@ public final class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean LIFE_CRYSTAL_NEEDED;
|
public static boolean LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean ES_SP_BOOK_NEEDED;
|
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
public static boolean ALT_GAME_DUALCLASS_WITHOUT_QUEST;
|
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_TRADE_RESTRICTED_ITEMS;
|
||||||
public static boolean GM_RESTART_FIGHTING;
|
public static boolean GM_RESTART_FIGHTING;
|
||||||
public static boolean GM_ANNOUNCER_NAME;
|
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_SKILLS;
|
||||||
public static boolean GM_GIVE_SPECIAL_AURA_SKILLS;
|
public static boolean GM_GIVE_SPECIAL_AURA_SKILLS;
|
||||||
public static boolean GM_DEBUG_HTML_PATHS;
|
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_REMOVE;
|
||||||
public static boolean SKILL_CHECK_GM;
|
public static boolean SKILL_CHECK_GM;
|
||||||
public static boolean HTML_ACTION_CACHE_DEBUG;
|
public static boolean HTML_ACTION_CACHE_DEBUG;
|
||||||
public static boolean PACKET_HANDLER_DEBUG;
|
|
||||||
public static boolean DEVELOPER;
|
public static boolean DEVELOPER;
|
||||||
public static boolean ALT_DEV_NO_HANDLERS;
|
|
||||||
public static boolean ALT_DEV_NO_QUESTS;
|
public static boolean ALT_DEV_NO_QUESTS;
|
||||||
public static boolean ALT_DEV_NO_SPAWNS;
|
public static boolean ALT_DEV_NO_SPAWNS;
|
||||||
public static boolean ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS;
|
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 int EJECT_DEAD_PLAYER_TIME;
|
||||||
public static boolean ALLOW_RACE;
|
public static boolean ALLOW_RACE;
|
||||||
public static boolean ALLOW_WATER;
|
public static boolean ALLOW_WATER;
|
||||||
public static boolean ALLOW_RENTPET;
|
|
||||||
public static boolean ALLOW_FISHING;
|
public static boolean ALLOW_FISHING;
|
||||||
public static boolean ALLOW_BOAT;
|
public static boolean ALLOW_BOAT;
|
||||||
public static int BOAT_BROADCAST_RADIUS;
|
public static int BOAT_BROADCAST_RADIUS;
|
||||||
@@ -549,18 +543,6 @@ public final class Config
|
|||||||
public static boolean ALT_ITEM_AUCTION_ENABLED;
|
public static boolean ALT_ITEM_AUCTION_ENABLED;
|
||||||
public static int ALT_ITEM_AUCTION_EXPIRED_AFTER;
|
public static int ALT_ITEM_AUCTION_EXPIRED_AFTER;
|
||||||
public static long ALT_ITEM_AUCTION_TIME_EXTENDS_ON_BID;
|
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 IllegalActionPunishmentType DEFAULT_PUNISH;
|
||||||
public static int DEFAULT_PUNISH_PARAM;
|
public static int DEFAULT_PUNISH_PARAM;
|
||||||
public static boolean ONLY_GM_ITEMS_FREE;
|
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 PLAYER_MOVEMENT_BLOCK_TIME;
|
||||||
public static int ABILITY_MAX_POINTS;
|
public static int ABILITY_MAX_POINTS;
|
||||||
public static long ABILITY_POINTS_RESET_ADENA;
|
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 boolean BOTREPORT_ENABLE;
|
||||||
public static String[] BOTREPORT_RESETPOINT_HOUR;
|
public static String[] BOTREPORT_RESETPOINT_HOUR;
|
||||||
public static long BOTREPORT_REPORT_DELAY;
|
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 Map<Integer, Float> NPC_SKILL_DMG_PENALTY;
|
||||||
public static int MIN_NPC_LVL_MAGIC_PENALTY;
|
public static int MIN_NPC_LVL_MAGIC_PENALTY;
|
||||||
public static Map<Integer, Float> NPC_SKILL_CHANCE_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 DEFAULT_CORPSE_TIME;
|
||||||
public static int SPOILED_CORPSE_EXTEND_TIME;
|
public static int SPOILED_CORPSE_EXTEND_TIME;
|
||||||
public static int CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY;
|
public static int CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY;
|
||||||
public static boolean GUARD_ATTACK_AGGRO_MOB;
|
public static boolean GUARD_ATTACK_AGGRO_MOB;
|
||||||
public static boolean ALLOW_WYVERN_UPGRADER;
|
|
||||||
public static double RAID_HP_REGEN_MULTIPLIER;
|
public static double RAID_HP_REGEN_MULTIPLIER;
|
||||||
public static double RAID_MP_REGEN_MULTIPLIER;
|
public static double RAID_MP_REGEN_MULTIPLIER;
|
||||||
public static double RAID_PDEFENCE_MULTIPLIER;
|
public static double RAID_PDEFENCE_MULTIPLIER;
|
||||||
@@ -657,7 +635,6 @@ public final class Config
|
|||||||
// PvP Settings
|
// PvP Settings
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
public static boolean KARMA_DROP_GM;
|
public static boolean KARMA_DROP_GM;
|
||||||
public static boolean KARMA_AWARD_PK_KILL;
|
|
||||||
public static int KARMA_PK_LIMIT;
|
public static int KARMA_PK_LIMIT;
|
||||||
public static String KARMA_NONDROPPABLE_PET_ITEMS;
|
public static String KARMA_NONDROPPABLE_PET_ITEMS;
|
||||||
public static String KARMA_NONDROPPABLE_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_LOST;
|
||||||
public static float RATE_KARMA_EXP_LOST;
|
public static float RATE_KARMA_EXP_LOST;
|
||||||
public static float RATE_SIEGE_GUARDS_PRICE;
|
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_DROP_LIMIT;
|
||||||
public static int PLAYER_RATE_DROP;
|
public static int PLAYER_RATE_DROP;
|
||||||
public static int PLAYER_RATE_DROP_ITEM;
|
public static int PLAYER_RATE_DROP_ITEM;
|
||||||
@@ -773,15 +746,6 @@ public final class Config
|
|||||||
public static int SERVER_RESTART_SCHEDULE_COUNTDOWN;
|
public static int SERVER_RESTART_SCHEDULE_COUNTDOWN;
|
||||||
public static String[] SERVER_RESTART_SCHEDULE;
|
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)
|
// Hardin (Agent of Chaos)
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
@@ -800,7 +764,6 @@ public final class Config
|
|||||||
public static boolean RAIDBOSS_USE_VITALITY;
|
public static boolean RAIDBOSS_USE_VITALITY;
|
||||||
public static float RATE_VITALITY_EXP_MULTIPLIER;
|
public static float RATE_VITALITY_EXP_MULTIPLIER;
|
||||||
public static int VITALITY_MAX_ITEMS_ALLOWED;
|
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_LOST;
|
||||||
public static float RATE_VITALITY_GAIN;
|
public static float RATE_VITALITY_GAIN;
|
||||||
|
|
||||||
@@ -833,22 +796,6 @@ public final class Config
|
|||||||
public static double ENCHANT_CHANCE_ELEMENT_ENERGY;
|
public static double ENCHANT_CHANCE_ELEMENT_ENERGY;
|
||||||
public static int[] ENCHANT_BLACKLIST;
|
public static int[] ENCHANT_BLACKLIST;
|
||||||
public static boolean DISABLE_OVER_ENCHANTING;
|
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 int[] AUGMENTATION_BLACKLIST;
|
||||||
public static boolean ALT_ALLOW_AUGMENT_PVP_ITEMS;
|
public static boolean ALT_ALLOW_AUGMENT_PVP_ITEMS;
|
||||||
public static double HP_REGEN_MULTIPLIER;
|
public static double HP_REGEN_MULTIPLIER;
|
||||||
@@ -937,16 +884,12 @@ public final class Config
|
|||||||
// Anakim
|
// Anakim
|
||||||
public static int ANAKIM_MIN_PLAYERS;
|
public static int ANAKIM_MIN_PLAYERS;
|
||||||
public static int ANAKIM_MAX_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_MIN_PLAYER_LVL;
|
||||||
public static int ANAKIM_MAX_PLAYER_LVL;
|
public static int ANAKIM_MAX_PLAYER_LVL;
|
||||||
|
|
||||||
// Lilith
|
// Lilith
|
||||||
public static int LILITH_MIN_PLAYERS;
|
public static int LILITH_MIN_PLAYERS;
|
||||||
public static int LILITH_MAX_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_MIN_PLAYER_LVL;
|
||||||
public static int LILITH_MAX_PLAYER_LVL;
|
public static int LILITH_MAX_PLAYER_LVL;
|
||||||
|
|
||||||
@@ -957,14 +900,6 @@ public final class Config
|
|||||||
// chatfilter
|
// chatfilter
|
||||||
public static List<String> FILTER_LIST;
|
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
|
// GeoEngine
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
@@ -1142,7 +1077,6 @@ public final class Config
|
|||||||
public static int COMMUNITYBOARD_TELEPORT_PRICE;
|
public static int COMMUNITYBOARD_TELEPORT_PRICE;
|
||||||
public static int COMMUNITYBOARD_BUFF_PRICE;
|
public static int COMMUNITYBOARD_BUFF_PRICE;
|
||||||
public static int COMMUNITYBOARD_HEAL_PRICE;
|
public static int COMMUNITYBOARD_HEAL_PRICE;
|
||||||
public static boolean COMMUNITYBOARD_COMBAT_DISABLED;
|
|
||||||
public static boolean COMMUNITYBOARD_KARMA_DISABLED;
|
public static boolean COMMUNITYBOARD_KARMA_DISABLED;
|
||||||
public static boolean COMMUNITYBOARD_CAST_ANIMATIONS;
|
public static boolean COMMUNITYBOARD_CAST_ANIMATIONS;
|
||||||
public static boolean COMMUNITY_PREMIUM_SYSTEM_ENABLED;
|
public static boolean COMMUNITY_PREMIUM_SYSTEM_ENABLED;
|
||||||
@@ -1542,7 +1476,6 @@ public final class Config
|
|||||||
EFFECT_TICK_RATIO = Character.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = Character.getLong("EffectTickRatio", 666);
|
||||||
ENABLE_ALTER_SKILLS = Character.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = Character.getBoolean("EnableAlterSkills", true);
|
||||||
LIFE_CRYSTAL_NEEDED = Character.getBoolean("LifeCrystalNeeded", true);
|
LIFE_CRYSTAL_NEEDED = Character.getBoolean("LifeCrystalNeeded", true);
|
||||||
ES_SP_BOOK_NEEDED = Character.getBoolean("EnchantSkillSpBookNeeded", true);
|
|
||||||
DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
ALT_GAME_DUALCLASS_WITHOUT_QUEST = Character.getBoolean("AltDualClassWithoutQuest", false);
|
ALT_GAME_DUALCLASS_WITHOUT_QUEST = Character.getBoolean("AltDualClassWithoutQuest", false);
|
||||||
@@ -1608,45 +1541,7 @@ public final class Config
|
|||||||
}
|
}
|
||||||
Arrays.sort(ENCHANT_BLACKLIST);
|
Arrays.sort(ENCHANT_BLACKLIST);
|
||||||
DISABLE_OVER_ENCHANTING = Character.getBoolean("DisableOverEnchanting", true);
|
DISABLE_OVER_ENCHANTING = Character.getBoolean("DisableOverEnchanting", true);
|
||||||
AUGMENTATION_NG_SKILL_CHANCE = Character.getInt("AugmentationNGSkillChance", 15);
|
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_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(",");
|
|
||||||
AUGMENTATION_BLACKLIST = new int[array.length];
|
AUGMENTATION_BLACKLIST = new int[array.length];
|
||||||
|
|
||||||
for (int i = 0; i < array.length; i++)
|
for (int i = 0; i < array.length; i++)
|
||||||
@@ -1767,7 +1662,7 @@ public final class Config
|
|||||||
SHOW_GOD_VIDEO_INTRO = Character.getBoolean("GoDVideoIntro", true);
|
SHOW_GOD_VIDEO_INTRO = Character.getBoolean("GoDVideoIntro", true);
|
||||||
PLAYER_MOVEMENT_BLOCK_TIME = Character.getInt("NpcTalkBlockingTime", 0) * 1000;
|
PLAYER_MOVEMENT_BLOCK_TIME = Character.getInt("NpcTalkBlockingTime", 0) * 1000;
|
||||||
ABILITY_MAX_POINTS = Character.getInt("AbilityMaxPoints", 16);
|
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)
|
// Load Telnet config file (if exists)
|
||||||
final PropertiesParser telnetSettings = new PropertiesParser(TELNET_CONFIG_FILE);
|
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_TRADE_RESTRICTED_ITEMS = General.getBoolean("GMTradeRestrictedItems", false);
|
||||||
GM_RESTART_FIGHTING = General.getBoolean("GMRestartFighting", true);
|
GM_RESTART_FIGHTING = General.getBoolean("GMRestartFighting", true);
|
||||||
GM_ANNOUNCER_NAME = General.getBoolean("GMShowAnnouncerName", false);
|
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_SKILLS = General.getBoolean("GMGiveSpecialSkills", false);
|
||||||
GM_GIVE_SPECIAL_AURA_SKILLS = General.getBoolean("GMGiveSpecialAuraSkills", false);
|
GM_GIVE_SPECIAL_AURA_SKILLS = General.getBoolean("GMGiveSpecialAuraSkills", false);
|
||||||
GM_DEBUG_HTML_PATHS = General.getBoolean("GMDebugHtmlPaths", true);
|
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_REMOVE = General.getBoolean("SkillCheckRemove", false);
|
||||||
SKILL_CHECK_GM = General.getBoolean("SkillCheckGM", true);
|
SKILL_CHECK_GM = General.getBoolean("SkillCheckGM", true);
|
||||||
HTML_ACTION_CACHE_DEBUG = General.getBoolean("HtmlActionCacheDebug", false);
|
HTML_ACTION_CACHE_DEBUG = General.getBoolean("HtmlActionCacheDebug", false);
|
||||||
PACKET_HANDLER_DEBUG = General.getBoolean("PacketHandlerDebug", false);
|
|
||||||
DEVELOPER = General.getBoolean("Developer", 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_QUESTS = General.getBoolean("AltDevNoQuests", false) || Boolean.getBoolean("noquests");
|
||||||
ALT_DEV_NO_SPAWNS = General.getBoolean("AltDevNoSpawns", false) || Boolean.getBoolean("nospawns");
|
ALT_DEV_NO_SPAWNS = General.getBoolean("AltDevNoSpawns", false) || Boolean.getBoolean("nospawns");
|
||||||
ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowQuestsLoadInLogs", false);
|
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);
|
EJECT_DEAD_PLAYER_TIME = General.getInt("EjectDeadPlayerTime", 1);
|
||||||
ALLOW_RACE = General.getBoolean("AllowRace", true);
|
ALLOW_RACE = General.getBoolean("AllowRace", true);
|
||||||
ALLOW_WATER = General.getBoolean("AllowWater", true);
|
ALLOW_WATER = General.getBoolean("AllowWater", true);
|
||||||
ALLOW_RENTPET = General.getBoolean("AllowRentPet", false);
|
|
||||||
ALLOW_FISHING = General.getBoolean("AllowFishing", true);
|
ALLOW_FISHING = General.getBoolean("AllowFishing", true);
|
||||||
ALLOW_MANOR = General.getBoolean("AllowManor", true);
|
ALLOW_MANOR = General.getBoolean("AllowManor", true);
|
||||||
ALLOW_BOAT = General.getBoolean("AllowBoat", 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_ENABLED = General.getBoolean("AltItemAuctionEnabled", true);
|
||||||
ALT_ITEM_AUCTION_EXPIRED_AFTER = General.getInt("AltItemAuctionExpiredAfter", 14);
|
ALT_ITEM_AUCTION_EXPIRED_AFTER = General.getInt("AltItemAuctionExpiredAfter", 14);
|
||||||
ALT_ITEM_AUCTION_TIME_EXTENDS_ON_BID = General.getInt("AltItemAuctionTimeExtendsOnBid", 0) * 1000;
|
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 = IllegalActionPunishmentType.findByName(General.getString("DefaultPunish", "KICK"));
|
||||||
DEFAULT_PUNISH_PARAM = General.getInt("DefaultPunishParam", 0);
|
DEFAULT_PUNISH_PARAM = General.getInt("DefaultPunishParam", 0);
|
||||||
ONLY_GM_ITEMS_FREE = General.getBoolean("OnlyGMItemsFree", true);
|
ONLY_GM_ITEMS_FREE = General.getBoolean("OnlyGMItemsFree", true);
|
||||||
@@ -1963,9 +1842,6 @@ public final class Config
|
|||||||
}
|
}
|
||||||
HBCE_FAIR_PLAY = General.getBoolean("HBCEFairPlay", false);
|
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_ENABLE = General.getBoolean("EnableBotReportButton", false);
|
||||||
BOTREPORT_RESETPOINT_HOUR = General.getString("BotReportPointsResetHour", "00:00").split(":");
|
BOTREPORT_RESETPOINT_HOUR = General.getString("BotReportPointsResetHour", "00:00").split(":");
|
||||||
BOTREPORT_REPORT_DELAY = General.getInt("BotReportDelay", 30) * 60000;
|
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"));
|
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);
|
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"));
|
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);
|
DEFAULT_CORPSE_TIME = NPC.getInt("DefaultCorpseTime", 7);
|
||||||
SPOILED_CORPSE_EXTEND_TIME = NPC.getInt("SpoiledCorpseExtendTime", 10);
|
SPOILED_CORPSE_EXTEND_TIME = NPC.getInt("SpoiledCorpseExtendTime", 10);
|
||||||
CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY = NPC.getInt("CorpseConsumeSkillAllowedTimeBeforeDecay", 2000);
|
CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY = NPC.getInt("CorpseConsumeSkillAllowedTimeBeforeDecay", 2000);
|
||||||
GUARD_ATTACK_AGGRO_MOB = NPC.getBoolean("GuardAttackAggroMob", false);
|
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_HP_REGEN_MULTIPLIER = NPC.getDouble("RaidHpRegenMultiplier", 100) / 100;
|
||||||
RAID_MP_REGEN_MULTIPLIER = NPC.getDouble("RaidMpRegenMultiplier", 100) / 100;
|
RAID_MP_REGEN_MULTIPLIER = NPC.getDouble("RaidMpRegenMultiplier", 100) / 100;
|
||||||
RAID_PDEFENCE_MULTIPLIER = NPC.getDouble("RaidPDefenceMultiplier", 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);
|
final PropertiesParser PVPSettings = new PropertiesParser(PVP_CONFIG_FILE);
|
||||||
|
|
||||||
KARMA_DROP_GM = PVPSettings.getBoolean("CanGMDropEquipment", false);
|
KARMA_DROP_GM = PVPSettings.getBoolean("CanGMDropEquipment", false);
|
||||||
KARMA_AWARD_PK_KILL = PVPSettings.getBoolean("AwardPKKillPVPPoint", false);
|
|
||||||
KARMA_PK_LIMIT = PVPSettings.getInt("MinimumPKRequiredToDrop", 5);
|
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_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");
|
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_MIN_PLAYERS = GrandBossSettings.getInt("AnakimMinPlayers", 98);
|
||||||
ANAKIM_MAX_PLAYERS = GrandBossSettings.getInt("AnakimMaxPlayers", 120);
|
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_MIN_PLAYER_LVL = GrandBossSettings.getInt("AnakimMinPlayerLvl", 90);
|
||||||
ANAKIM_MAX_PLAYER_LVL = GrandBossSettings.getInt("AnakimMaxPlayerLvl", 94);
|
ANAKIM_MAX_PLAYER_LVL = GrandBossSettings.getInt("AnakimMaxPlayerLvl", 94);
|
||||||
|
|
||||||
LILITH_MIN_PLAYERS = GrandBossSettings.getInt("LilithMinPlayers", 98);
|
LILITH_MIN_PLAYERS = GrandBossSettings.getInt("LilithMinPlayers", 98);
|
||||||
LILITH_MAX_PLAYERS = GrandBossSettings.getInt("LilithMaxPlayers", 120);
|
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_MIN_PLAYER_LVL = GrandBossSettings.getInt("LilithMinPlayerLvl", 85);
|
||||||
LILITH_MAX_PLAYER_LVL = GrandBossSettings.getInt("LilithMaxPlayerLvl", 89);
|
LILITH_MAX_PLAYER_LVL = GrandBossSettings.getInt("LilithMaxPlayerLvl", 89);
|
||||||
|
|
||||||
TRASKEN_SPAWN_INTERVAL = GrandBossSettings.getInt("IntervalOfTraskenSpawn", 264);
|
TRASKEN_SPAWN_INTERVAL = GrandBossSettings.getInt("IntervalOfTraskenSpawn", 264);
|
||||||
TRASKEN_SPAWN_RANDOM = GrandBossSettings.getInt("RandomOfTraskenSpawn", 72);
|
TRASKEN_SPAWN_RANDOM = GrandBossSettings.getInt("RandomOfTraskenSpawn", 72);
|
||||||
TRASKEN_MIN_PLAYERS = GrandBossSettings.getInt("TraskenMinPlayers", 49);
|
TRASKEN_MIN_PLAYERS = GrandBossSettings.getInt("TraskenMinPlayers", 49);
|
||||||
TRASKEN_MAX_PLAYERS = GrandBossSettings.getInt("TraskenMaxPlayers", 112);
|
TRASKEN_MAX_PLAYERS = GrandBossSettings.getInt("TraskenMaxPlayers", 112);
|
||||||
TRASKEN_MIN_PLAYER_LVL = GrandBossSettings.getInt("TraskenMinPlayerLvl", 85);
|
TRASKEN_MIN_PLAYER_LVL = GrandBossSettings.getInt("TraskenMinPlayerLvl", 85);
|
||||||
|
|
||||||
LINDVIOR_SPAWN_INTERVAL = GrandBossSettings.getInt("IntervalOfLindviorSpawn", 264);
|
LINDVIOR_SPAWN_INTERVAL = GrandBossSettings.getInt("IntervalOfLindviorSpawn", 264);
|
||||||
LINDVIOR_SPAWN_RANDOM = GrandBossSettings.getInt("RandomOfLindviorSpawn", 72);
|
LINDVIOR_SPAWN_RANDOM = GrandBossSettings.getInt("RandomOfLindviorSpawn", 72);
|
||||||
LINDVIOR_MIN_PLAYERS = GrandBossSettings.getInt("LindviorMinPlayers", 49);
|
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);
|
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);
|
final PropertiesParser geoData = new PropertiesParser(GEOENGINE_CONFIG_FILE);
|
||||||
|
|
||||||
GEODATA_PATH = geoData.getString("GeoDataPath", "./data/geodata/");
|
GEODATA_PATH = geoData.getString("GeoDataPath", "./data/geodata/");
|
||||||
@@ -2536,7 +2398,6 @@ public final class Config
|
|||||||
COMMUNITYBOARD_TELEPORT_PRICE = CommunityBoard.getInt("CommunityTeleportPrice", 0);
|
COMMUNITYBOARD_TELEPORT_PRICE = CommunityBoard.getInt("CommunityTeleportPrice", 0);
|
||||||
COMMUNITYBOARD_BUFF_PRICE = CommunityBoard.getInt("CommunityBuffPrice", 0);
|
COMMUNITYBOARD_BUFF_PRICE = CommunityBoard.getInt("CommunityBuffPrice", 0);
|
||||||
COMMUNITYBOARD_HEAL_PRICE = CommunityBoard.getInt("CommunityHealPrice", 0);
|
COMMUNITYBOARD_HEAL_PRICE = CommunityBoard.getInt("CommunityHealPrice", 0);
|
||||||
COMMUNITYBOARD_COMBAT_DISABLED = CommunityBoard.getBoolean("CommunityCombatDisabled", true);
|
|
||||||
COMMUNITYBOARD_KARMA_DISABLED = CommunityBoard.getBoolean("CommunityKarmaDisabled", true);
|
COMMUNITYBOARD_KARMA_DISABLED = CommunityBoard.getBoolean("CommunityKarmaDisabled", true);
|
||||||
COMMUNITYBOARD_CAST_ANIMATIONS = CommunityBoard.getBoolean("CommunityCastAnimations", false);
|
COMMUNITYBOARD_CAST_ANIMATIONS = CommunityBoard.getBoolean("CommunityCastAnimations", false);
|
||||||
COMMUNITY_PREMIUM_SYSTEM_ENABLED = CommunityBoard.getBoolean("CommunityPremiumSystem", 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 hexId the hexadecimal ID to store
|
||||||
* @param fileName name of the config file
|
* @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
|
try
|
||||||
{
|
{
|
||||||
|
@@ -37,10 +37,10 @@ import com.l2jmobius.Config;
|
|||||||
*/
|
*/
|
||||||
public final class ThreadPool
|
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;
|
private static ScheduledThreadPoolExecutor[] SCHEDULED_POOLS;
|
||||||
protected static ThreadPoolExecutor[] INSTANT_POOLS;
|
private static ThreadPoolExecutor[] INSTANT_POOLS;
|
||||||
private static int THREAD_POOL_RANDOMIZER;
|
private static int THREAD_POOL_RANDOMIZER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -21,9 +21,9 @@ import java.net.UnknownHostException;
|
|||||||
|
|
||||||
public class IPSubnet
|
public class IPSubnet
|
||||||
{
|
{
|
||||||
final byte[] _addr;
|
private final byte[] _addr;
|
||||||
final byte[] _mask;
|
private final byte[] _mask;
|
||||||
final boolean _isIPv4;
|
private final boolean _isIPv4;
|
||||||
|
|
||||||
public IPSubnet(String input) throws UnknownHostException, NumberFormatException, ArrayIndexOutOfBoundsException
|
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()
|
public byte[] getAddress()
|
||||||
{
|
{
|
||||||
return _addr;
|
return _addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean applyMask(byte[] addr)
|
private boolean applyMask(byte[] addr)
|
||||||
{
|
{
|
||||||
// V4 vs V4 or V6 vs V6 checks
|
// V4 vs V4 or V6 vs V6 checks
|
||||||
if (_isIPv4 == (addr.length == 4))
|
if (_isIPv4 == (addr.length == 4))
|
||||||
|
@@ -24,7 +24,7 @@ import java.time.temporal.ChronoUnit;
|
|||||||
*/
|
*/
|
||||||
public class TimeUtil
|
public class TimeUtil
|
||||||
{
|
{
|
||||||
public static int findIndexOfNonDigit(CharSequence text)
|
private static int findIndexOfNonDigit(CharSequence text)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < text.length(); i++)
|
for (int i = 0; i < text.length(); i++)
|
||||||
{
|
{
|
||||||
|
@@ -25,8 +25,8 @@ import java.util.logging.Logger;
|
|||||||
public class ScrambledKeyPair
|
public class ScrambledKeyPair
|
||||||
{
|
{
|
||||||
private static Logger LOGGER = Logger.getLogger(ScrambledKeyPair.class.getName());
|
private static Logger LOGGER = Logger.getLogger(ScrambledKeyPair.class.getName());
|
||||||
public KeyPair _pair;
|
private final KeyPair _pair;
|
||||||
public byte[] _scrambledModulus;
|
private final byte[] _scrambledModulus;
|
||||||
|
|
||||||
public ScrambledKeyPair(KeyPair pPair)
|
public ScrambledKeyPair(KeyPair pPair)
|
||||||
{
|
{
|
||||||
|
@@ -30,7 +30,7 @@ import com.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
|||||||
*/
|
*/
|
||||||
public class FortUpdater implements Runnable
|
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 L2Clan _clan;
|
||||||
private final Fort _fort;
|
private final Fort _fort;
|
||||||
private int _runCount;
|
private int _runCount;
|
||||||
|
@@ -480,7 +480,7 @@ public class GameServer
|
|||||||
INSTANCE = new GameServer();
|
INSTANCE = new GameServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void printSection(String s)
|
private static void printSection(String s)
|
||||||
{
|
{
|
||||||
s = "=[ " + s + " ]";
|
s = "=[ " + s + " ]";
|
||||||
while (s.length() < 61)
|
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 IG_DAYS_PER_DAY = 6;
|
||||||
public static final int MILLIS_PER_IG_DAY = (3600000 * 24) / IG_DAYS_PER_DAY;
|
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 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_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;
|
private static GameTimeController _instance;
|
||||||
|
|
||||||
|
@@ -46,7 +46,7 @@ public final class ItemsAutoDestroy
|
|||||||
_items.add(item);
|
_items.add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void removeItems()
|
private synchronized void removeItems()
|
||||||
{
|
{
|
||||||
if (_items.isEmpty())
|
if (_items.isEmpty())
|
||||||
{
|
{
|
||||||
|
@@ -60,10 +60,10 @@ public class Shutdown extends Thread
|
|||||||
|
|
||||||
private int _secondsShut;
|
private int _secondsShut;
|
||||||
private int _shutdownMode;
|
private int _shutdownMode;
|
||||||
public static final int SIGTERM = 0;
|
private static final int SIGTERM = 0;
|
||||||
public static final int GM_SHUTDOWN = 1;
|
private static final int GM_SHUTDOWN = 1;
|
||||||
public static final int GM_RESTART = 2;
|
private static final int GM_RESTART = 2;
|
||||||
public static final int ABORT = 3;
|
private static final int ABORT = 3;
|
||||||
private static final String[] MODE_TEXT =
|
private static final String[] MODE_TEXT =
|
||||||
{
|
{
|
||||||
"SIGTERM",
|
"SIGTERM",
|
||||||
|
@@ -81,7 +81,7 @@ public abstract class AbstractAI implements Ctrl
|
|||||||
/** Flags about client's state, in order to know which messages to send */
|
/** Flags about client's state, in order to know which messages to send */
|
||||||
protected volatile boolean _clientMoving;
|
protected volatile boolean _clientMoving;
|
||||||
/** Flags about client's state, in order to know which messages to send */
|
/** 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 */
|
/** Flags about client's state, in order to know which messages to send */
|
||||||
protected int _clientMovingToPawnOffset;
|
protected int _clientMovingToPawnOffset;
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ public abstract class AbstractAI implements Ctrl
|
|||||||
/** Different internal state flags */
|
/** Different internal state flags */
|
||||||
protected int _moveToPawnTimeout;
|
protected int _moveToPawnTimeout;
|
||||||
|
|
||||||
protected Future<?> _followTask = null;
|
private Future<?> _followTask = null;
|
||||||
private static final int FOLLOW_INTERVAL = 1000;
|
private static final int FOLLOW_INTERVAL = 1000;
|
||||||
private static final int ATTACK_FOLLOW_INTERVAL = 500;
|
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>
|
* 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>
|
* <FONT COLOR=#FF0000><B> <U>Caution</U> : Low level function, used by AI subclasses</B></FONT>
|
||||||
*/
|
*/
|
||||||
public void clientStopAutoAttack()
|
void clientStopAutoAttack()
|
||||||
{
|
{
|
||||||
if (_actor.isSummon())
|
if (_actor.isSummon())
|
||||||
{
|
{
|
||||||
|
@@ -36,14 +36,14 @@ public class L2PlayerAI extends L2PlayableAI
|
|||||||
{
|
{
|
||||||
private boolean _thinking; // to prevent recursive thinking
|
private boolean _thinking; // to prevent recursive thinking
|
||||||
|
|
||||||
IntentionCommand _nextIntention = null;
|
private IntentionCommand _nextIntention = null;
|
||||||
|
|
||||||
public L2PlayerAI(L2PcInstance player)
|
public L2PlayerAI(L2PcInstance player)
|
||||||
{
|
{
|
||||||
super(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);
|
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||||
}
|
}
|
||||||
|
@@ -28,8 +28,8 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
|||||||
*/
|
*/
|
||||||
public class WarehouseCacheManager
|
public class WarehouseCacheManager
|
||||||
{
|
{
|
||||||
protected final Map<L2PcInstance, Long> _cachedWh = new ConcurrentHashMap<>();
|
final Map<L2PcInstance, Long> _cachedWh = new ConcurrentHashMap<>();
|
||||||
protected final long _cacheTime = Config.WAREHOUSE_CACHE_TIME * 60000;
|
final long _cacheTime = Config.WAREHOUSE_CACHE_TIME * 60000;
|
||||||
|
|
||||||
protected WarehouseCacheManager()
|
protected WarehouseCacheManager()
|
||||||
{
|
{
|
||||||
@@ -46,8 +46,12 @@ public class WarehouseCacheManager
|
|||||||
_cachedWh.remove(pc);
|
_cachedWh.remove(pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CacheScheduler implements Runnable
|
private class CacheScheduler implements Runnable
|
||||||
{
|
{
|
||||||
|
public CacheScheduler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
@@ -70,7 +70,7 @@ public class Post
|
|||||||
insertindb(cp);
|
insertindb(cp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void insertindb(CPost cp)
|
private void insertindb(CPost cp)
|
||||||
{
|
{
|
||||||
try (Connection con = DatabaseFactory.getInstance().getConnection();
|
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 (?,?,?,?,?,?,?)"))
|
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();
|
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 (?,?,?,?,?,?,?,?)"))
|
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 player
|
||||||
* @param type
|
* @param type
|
||||||
*/
|
*/
|
||||||
public void sendAnnouncements(L2PcInstance player, AnnouncementType type)
|
private void sendAnnouncements(L2PcInstance player, AnnouncementType type)
|
||||||
{
|
{
|
||||||
for (IAnnouncement announce : _announcements.values())
|
for (IAnnouncement announce : _announcements.values())
|
||||||
{
|
{
|
||||||
|
@@ -60,8 +60,8 @@ public class SummonEffectsTable
|
|||||||
|
|
||||||
public static class SummonEffect
|
public static class SummonEffect
|
||||||
{
|
{
|
||||||
Skill _skill;
|
private final Skill _skill;
|
||||||
int _effectCurTime;
|
private final int _effectCurTime;
|
||||||
|
|
||||||
public SummonEffect(Skill skill, int effectCurTime)
|
public SummonEffect(Skill skill, int effectCurTime)
|
||||||
{
|
{
|
||||||
|
@@ -35,8 +35,7 @@ import com.l2jmobius.gameserver.model.holders.LuckyGameDataHolder;
|
|||||||
public class LuckyGameData implements IGameXmlReader
|
public class LuckyGameData implements IGameXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, LuckyGameDataHolder> _luckyGame = new HashMap<>();
|
private final Map<Integer, LuckyGameDataHolder> _luckyGame = new HashMap<>();
|
||||||
|
private final AtomicInteger _serverPlay = new AtomicInteger();
|
||||||
final AtomicInteger _serverPlay = new AtomicInteger();
|
|
||||||
|
|
||||||
protected LuckyGameData()
|
protected LuckyGameData()
|
||||||
{
|
{
|
||||||
|
@@ -1215,7 +1215,7 @@ public final class SkillTreesData implements IGameXmlReader
|
|||||||
* @param lvl the transformation skill level
|
* @param lvl the transformation skill level
|
||||||
* @return the transform skill from the Transform Skill Tree for a given {@code id} and {@code lvl}
|
* @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));
|
return _transformSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||||
}
|
}
|
||||||
@@ -1237,7 +1237,7 @@ public final class SkillTreesData implements IGameXmlReader
|
|||||||
* @param lvl the alchemy skill level
|
* @param lvl the alchemy skill level
|
||||||
* @return the alchemy skill from the Alchemy Skill Tree for a given {@code id} and {@code lvl}
|
* @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));
|
return _alchemySkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||||
}
|
}
|
||||||
@@ -1260,7 +1260,7 @@ public final class SkillTreesData implements IGameXmlReader
|
|||||||
* @param lvl the fishing skill level
|
* @param lvl the fishing skill level
|
||||||
* @return Fishing skill from the Fishing Skill Tree for a given {@code id} and {@code lvl}
|
* @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));
|
return _fishingSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||||
}
|
}
|
||||||
@@ -1271,7 +1271,7 @@ public final class SkillTreesData implements IGameXmlReader
|
|||||||
* @param lvl the pledge skill level
|
* @param lvl the pledge skill level
|
||||||
* @return the pledge skill from the Pledge Skill Tree for a given {@code id} and {@code lvl}
|
* @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));
|
return _pledgeSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||||
}
|
}
|
||||||
@@ -1282,7 +1282,7 @@ public final class SkillTreesData implements IGameXmlReader
|
|||||||
* @param lvl the sub-pledge skill level
|
* @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}
|
* @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));
|
return _subPledgeSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||||
}
|
}
|
||||||
@@ -1294,7 +1294,7 @@ public final class SkillTreesData implements IGameXmlReader
|
|||||||
* @param classId the transfer skill tree Id
|
* @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}
|
* @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)
|
if (_transferSkillTrees.get(classId) != null)
|
||||||
{
|
{
|
||||||
@@ -1310,7 +1310,7 @@ public final class SkillTreesData implements IGameXmlReader
|
|||||||
* @param race the race skill tree Id
|
* @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}
|
* @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))
|
for (L2SkillLearn skill : getRaceSkillTree(race))
|
||||||
{
|
{
|
||||||
@@ -1328,7 +1328,7 @@ public final class SkillTreesData implements IGameXmlReader
|
|||||||
* @param lvl the sub-class skill level
|
* @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}
|
* @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));
|
return _subClassSkillTree.get(SkillData.getSkillHashCode(id, lvl));
|
||||||
}
|
}
|
||||||
|
@@ -595,25 +595,28 @@ public final class BotReportTable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class PunishHolder
|
private class PunishHolder
|
||||||
{
|
{
|
||||||
final Skill _punish;
|
final Skill _punish;
|
||||||
final int _systemMessageId;
|
final int _systemMessageId;
|
||||||
|
|
||||||
PunishHolder(Skill sk, int sysMsg)
|
public PunishHolder(Skill sk, int sysMsg)
|
||||||
{
|
{
|
||||||
_punish = sk;
|
_punish = sk;
|
||||||
_systemMessageId = sysMsg;
|
_systemMessageId = sysMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ResetPointTask implements Runnable
|
private class ResetPointTask implements Runnable
|
||||||
{
|
{
|
||||||
|
public ResetPointTask()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
resetPointsAndSchedule();
|
resetPointsAndSchedule();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -21,10 +21,10 @@ import com.l2jmobius.gameserver.model.items.L2Item;
|
|||||||
|
|
||||||
public class Item
|
public class Item
|
||||||
{
|
{
|
||||||
public int id;
|
int id;
|
||||||
public String type;
|
String type;
|
||||||
public String name;
|
String name;
|
||||||
public StatsSet set;
|
StatsSet set;
|
||||||
public int currentLevel;
|
int currentLevel;
|
||||||
public L2Item item;
|
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.data.xml.impl.FenceData;
|
||||||
import com.l2jmobius.gameserver.geoengine.geodata.ABlock;
|
import com.l2jmobius.gameserver.geoengine.geodata.ABlock;
|
||||||
import com.l2jmobius.gameserver.geoengine.geodata.BlockComplex;
|
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.BlockFlat;
|
||||||
import com.l2jmobius.gameserver.geoengine.geodata.BlockMultilayer;
|
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.BlockNull;
|
||||||
import com.l2jmobius.gameserver.geoengine.geodata.GeoFormat;
|
import com.l2jmobius.gameserver.geoengine.geodata.GeoFormat;
|
||||||
import com.l2jmobius.gameserver.geoengine.geodata.GeoLocation;
|
import com.l2jmobius.gameserver.geoengine.geodata.GeoLocation;
|
||||||
import com.l2jmobius.gameserver.geoengine.geodata.GeoStructure;
|
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.geoengine.geodata.IGeoObject;
|
||||||
import com.l2jmobius.gameserver.instancemanager.WarpedSpaceManager;
|
import com.l2jmobius.gameserver.instancemanager.WarpedSpaceManager;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
@@ -276,7 +273,7 @@ public class GeoEngine
|
|||||||
* @param geoY : Geodata Y
|
* @param geoY : Geodata Y
|
||||||
* @return {@link ABlock} : Block of geodata.
|
* @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 x = geoX / GeoStructure.BLOCK_CELLS_X;
|
||||||
final int y = geoY / GeoStructure.BLOCK_CELLS_Y;
|
final int y = geoY / GeoStructure.BLOCK_CELLS_Y;
|
||||||
@@ -328,7 +325,7 @@ public class GeoEngine
|
|||||||
* @param worldZ : Cell world Z coordinate.
|
* @param worldZ : Cell world Z coordinate.
|
||||||
* @return short : Cell geodata Z coordinate, closest to given coordinates.
|
* @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);
|
final ABlock block = getBlock(geoX, geoY);
|
||||||
return block != null ? block.getHeightNearestOriginal(geoX, geoY, worldZ) : (short) worldZ;
|
return block != null ? block.getHeightNearestOriginal(geoX, geoY, worldZ) : (short) worldZ;
|
||||||
@@ -355,7 +352,7 @@ public class GeoEngine
|
|||||||
* @param worldZ : Cell world Z coordinate.
|
* @param worldZ : Cell world Z coordinate.
|
||||||
* @return short : Cell NSWE flag byte coordinate, closest to given coordinates.
|
* @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);
|
final ABlock block = getBlock(geoX, geoY);
|
||||||
return block != null ? block.getNsweNearestOriginal(geoX, geoY, worldZ) : (byte) 0xFF;
|
return block != null ? block.getNsweNearestOriginal(geoX, geoY, worldZ) : (byte) 0xFF;
|
||||||
@@ -384,200 +381,6 @@ public class GeoEngine
|
|||||||
return getHeightNearest(getGeoX(worldX), getGeoY(worldY), worldZ);
|
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
|
// PATHFINDING
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -732,7 +535,7 @@ public class GeoEngine
|
|||||||
* @param instance
|
* @param instance
|
||||||
* @return {@code boolean} : True, when target can be seen.
|
* @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
|
// get line of sight Z coordinates
|
||||||
double losoz = goz + ((oheight * Config.PART_OF_CHARACTER_HEIGHT) / 100);
|
double losoz = goz + ((oheight * Config.PART_OF_CHARACTER_HEIGHT) / 100);
|
||||||
@@ -915,7 +718,7 @@ public class GeoEngine
|
|||||||
* @param instance
|
* @param instance
|
||||||
* @return {@code boolean} : True, when target can be seen.
|
* @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
|
// get line of sight Z coordinates
|
||||||
double losoz = goz + ((oheight * Config.PART_OF_CHARACTER_HEIGHT) / 100);
|
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
Reference in New Issue
Block a user