-Dropped Javolution.

-Removal of Q00344_1000YearsTheEndOfLamentation.
-Fixed starting conditions for Q00144_PailakaInjuredDragon.
-Fixed starting conditions for last Seven Sign quests.
-Added missing MonasteryOfSilence.xml instance spawns and doors.
-Removed many catacomb spawns.
This commit is contained in:
mobius 2015-02-08 21:01:32 +00:00
parent 141cdc5efa
commit 012eb3ed65
201 changed files with 817 additions and 1458 deletions

View File

@ -2,7 +2,6 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="lib" path="dist/libs/c3p0-0.9.5.jar"/>
<classpathentry kind="lib" path="dist/libs/javolution-5.5.1.jar" sourcepath="dist/libs/javolution-5.5.1-src.zip"/>
<classpathentry kind="lib" path="dist/libs/mysql-connector-java-5.1.34-bin.jar"/>
<classpathentry kind="lib" path="dist/libs/ecj-4.4.jar"/>
<classpathentry kind="lib" path="dist/libs/mchange-commons-java-0.2.9.jar"/>

View File

@ -90,7 +90,7 @@
<attribute name="Built-By" value="${user.name}" />
<attribute name="Built-Date" value="${time.stamp}" />
<attribute name="Implementation-URL" value="http://www.l2jserver.com/" />
<attribute name="Class-Path" value="../libs/c3p0-0.9.5.jar ../libs/javolution-5.5.1.jar ../libs/mysql-connector-java-5.1.34-bin.jar" />
<attribute name="Class-Path" value="../libs/c3p0-0.9.5.jar ../libs/mysql-connector-java-5.1.34-bin.jar" />
<attribute name="Main-Class" value="com.l2jserver.loginserver.L2LoginServer" />
</manifest>
</jar>

View File

@ -5,6 +5,29 @@
<emptyDestroyTime val="1" />
<spawnPoint spawnX="115983" spawnY="-87351" spawnZ="-3397" />
<removeBuffs type="ALL" />
<doorlist>
<door doorId="21100001" /><!-- opened="true"-->
<door doorId="21100002" /><!-- opened="true"-->
<door doorId="21100003" /><!-- opened="true"-->
<door doorId="21100004" /><!-- opened="true"-->
<door doorId="21100005" /><!-- opened="true"-->
<door doorId="21100006" /><!-- opened="true"-->
<door doorId="21100007" /><!-- opened="true"-->
<door doorId="21100008" /><!-- opened="true"-->
<door doorId="21100009" /><!-- opened="true"-->
<door doorId="21100010" /><!-- opened="true"-->
<door doorId="21100011" /><!-- opened="true"-->
<door doorId="21100012" /><!-- opened="true"-->
<door doorId="21100013" /><!-- opened="true"-->
<door doorId="21100014" /><!-- opened="true"-->
<door doorId="21100015" /><!-- opened="true"-->
<door doorId="21100016" /><!-- opened="true"-->
<door doorId="21100018" /><!-- opened="false"-->
<door doorId="21100101" /><!-- opened="false"-->
<door doorId="21100102" /><!-- opened="false"-->
<door doorId="21100103" /><!-- opened="false"-->
<door doorId="21100104" /><!-- opened="false"-->
</doorlist>
<spawnlist>
<group name="general">
<!-- Eris's Evil Thoughts -->
@ -38,6 +61,91 @@
<spawn npcId="32834" x="86888" y="-246734" z="-8320" heading="0" respawn="0" />
<spawn npcId="32835" x="85793" y="-245640" z="-8320" heading="0" respawn="0" />
<spawn npcId="32836" x="84705" y="-246730" z="-8320" heading="0" respawn="0" />
<!-- Spawn: Seven Signs, Solina's Tomb -->
<spawn npcId="18949" x="76625" y="-240824" z="-10832" heading="0" respawn="0"/>
<spawn npcId="18956" x="55498" y="-252781" z="-6760" heading="0" respawn="0"/>
<spawn npcId="18957" x="55520" y="-252160" z="-6760" heading="0" respawn="0"/>
<spawn npcId="18958" x="56635" y="-252776" z="-6760" heading="0" respawn="0"/>
<spawn npcId="18959" x="56672" y="-252156" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27407" x="44269" y="-251082" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27407" x="43811" y="-248086" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27407" x="44314" y="-250726" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27407" x="44246" y="-248658" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27407" x="44197" y="-251121" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27407" x="44371" y="-248136" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27407" x="44314" y="-250726" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27407" x="44210" y="-248554" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27409" x="46844" y="-248629" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27409" x="46933" y="-248040" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27410" x="46412" y="-248590" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27410" x="46376" y="-248447" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27410" x="46952" y="-248499" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27410" x="47053" y="-248080" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27410" x="46933" y="-248180" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27410" x="46613" y="-248050" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="43590" y="-249404" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="45280" y="-251316" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="45285" y="-247479" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="43584" y="-249935" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="45469" y="-247502" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="45584" y="-251289" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="47438" y="-249349" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="43356" y="-249461" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="45218" y="-251733" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="47142" y="-249793" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="45183" y="-247956" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="43254" y="-249948" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="45548" y="-251690" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="47582" y="-249770" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27412" x="45533" y="-247983" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="47224" y="-249486" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="43710" y="-249384" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="45220" y="-251386" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="45255" y="-247569" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="45554" y="-251309" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="47458" y="-249439" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="45519" y="-247442" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="43326" y="-249451" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="45258" y="-251763" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="47222" y="-249823" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="45203" y="-247896" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="45568" y="-251690" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="47522" y="-249920" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="45563" y="-247923" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="43724" y="-249935" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27413" x="43214" y="-249908" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27414" x="44125" y="-251134" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27414" x="43945" y="-251134" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27414" x="44331" y="-248096" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27414" x="44211" y="-248106" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27414" x="43994" y="-250706" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27414" x="44154" y="-250736" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27414" x="44210" y="-250736" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27417" x="47005" y="-250679" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27417" x="46365" y="-250819" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27417" x="46872" y="-251280" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27417" x="46368" y="-251176" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27418" x="46405" y="-250739" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27418" x="46725" y="-250809" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27418" x="46728" y="-251267" z="-6760" heading="0" respawn="0"/>
<spawn npcId="27418" x="46512" y="-251072" z="-6760" heading="0" respawn="0"/>
<spawn npcId="32793" x="56097" y="-250576" z="-6757" heading="0" respawn="0"/>
<spawn npcId="32794" x="56430" y="-239226" z="-7224" heading="0" respawn="0"/>
<spawn npcId="32795" x="56379" y="-239233" z="-7224" heading="0" respawn="0"/>
<spawn npcId="32796" x="56495" y="-239445" z="-7224" heading="0" respawn="0"/>
<spawn npcId="32797" x="56347" y="-239448" z="-7224" heading="0" respawn="0"/>
<spawn npcId="32820" x="85792" y="-248739" z="-8296" heading="0" respawn="0"/>
<spawn npcId="32837" x="45398" y="-249639" z="-6728" heading="0" respawn="0"/>
<spawn npcId="32838" x="45413" y="-251556" z="-6744" heading="0" respawn="0"/>
<spawn npcId="32839" x="47333" y="-249648" z="-6744" heading="0" respawn="0"/>
<spawn npcId="32840" x="45392" y="-247720" z="-6744" heading="0" respawn="0"/>
<spawn npcId="32841" x="43472" y="-249632" z="-6744" heading="0" respawn="0"/>
<spawn npcId="32842" x="56080" y="-251648" z="-6760" heading="0" respawn="0"/>
<spawn npcId="32843" x="56116" y="-252480" z="-6736" heading="0" respawn="0"/>
<spawn npcId="32857" x="44123" y="-248367" z="-6720" heading="0" respawn="0"/>
<spawn npcId="32858" x="46672" y="-248368" z="-6720" heading="0" respawn="0"/>
<spawn npcId="32859" x="44114" y="-250912" z="-6720" heading="0" respawn="0"/>
<spawn npcId="32860" x="46672" y="-250915" z="-6720" heading="0" respawn="0"/>
</group>
</spawnlist>
</instance>

View File

@ -19,9 +19,9 @@
package ai.fantasy_isle;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.Config;
@ -166,8 +166,8 @@ public class MC_Show extends AbstractNpcAI
}
}
private static Map<String, ShoutInfo> talks = new FastMap<>();
private static Map<String, WalkInfo> walks = new FastMap<>();
private static Map<String, ShoutInfo> talks = new HashMap<>();
private static Map<String, WalkInfo> walks = new HashMap<>();
private MC_Show()
{

View File

@ -19,10 +19,9 @@
package ai.fantasy_isle;
import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture;
import javolution.util.FastList;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.GameTimeController;
@ -118,16 +117,15 @@ public class Parade extends AbstractNpcAI
private final int[][] START5 = {{-57233, -53554, -2015, 57344},{-57290, -53610, -2015, 57344},{-57346, -53667, -2015, 57344}};
private final int[][] GOAL5 = {{-55338, -55435, -2015, 57344},{-55395, -55491, -2015, 57344},{-55451, -55547, -2015, 57344}};
protected final int[][][] START = {START1, START2, START3, START4, START5};
protected final int[][][] GOAL = {GOAL1, GOAL2, GOAL3, GOAL4, GOAL5};
final int[][][] START = {START1, START2, START3, START4, START5};
final int[][][] GOAL = {GOAL1, GOAL2, GOAL3, GOAL4, GOAL5};
// @formatter:on
protected ScheduledFuture<?> spawnTask;
protected ScheduledFuture<?> deleteTask;
protected ScheduledFuture<?> cleanTask;
protected int npcIndex;
protected FastList<L2Npc> spawns;
int npcIndex;
CopyOnWriteArrayList<L2Npc> spawns;
ScheduledFuture<?> spawnTask;
ScheduledFuture<?> deleteTask;
ScheduledFuture<?> cleanTask;
public Parade()
{
@ -148,7 +146,7 @@ public class Parade extends AbstractNpcAI
protected void load()
{
npcIndex = 0;
spawns = new FastList<L2Npc>().shared();
spawns = new CopyOnWriteArrayList<>();
}
protected void clean()
@ -220,15 +218,14 @@ public class Parade extends AbstractNpcAI
{
if (spawns.size() > 0)
{
for (Iterator<L2Npc> it = spawns.iterator(); it.hasNext();)
for (L2Npc actor : spawns)
{
L2Npc actor = it.next();
if (actor != null)
{
if (actor.calculateDistance(actor.getXdestination(), actor.getYdestination(), 0, false, true) < (100 * 100))
{
actor.deleteMe();
it.remove();
spawns.remove(actor);
}
else if (!actor.isMoving())
{

View File

@ -19,10 +19,10 @@
package ai.group_template;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javolution.util.FastMap;
import quests.Q00020_BringUpWithLove.Q00020_BringUpWithLove;
import ai.npc.AbstractNpcAI;
@ -104,8 +104,8 @@ public final class BeastFarm extends AbstractNpcAI
18900
};
private static Map<Integer, Integer> _FeedInfo = new FastMap<>();
private static Map<Integer, GrowthCapableMob> _GrowthCapableMobs = new FastMap<>();
private static Map<Integer, Integer> _FeedInfo = new HashMap<>();
private static Map<Integer, GrowthCapableMob> _GrowthCapableMobs = new HashMap<>();
private static List<TamedBeast> TAMED_BEAST_DATA = new ArrayList<>();
private BeastFarm()
@ -395,7 +395,7 @@ public final class BeastFarm extends AbstractNpcAI
private final int _chance;
private final int _growthLevel;
private final int _tameNpcId;
private final Map<Integer, Integer> _skillSuccessNpcIdList = new FastMap<>();
private final Map<Integer, Integer> _skillSuccessNpcIdList = new HashMap<>();
public GrowthCapableMob(int chance, int growthLevel, int tameNpcId)
{

View File

@ -18,9 +18,9 @@
*/
package ai.group_template;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import quests.Q00020_BringUpWithLove.Q00020_BringUpWithLove;
import quests.Q00655_AGrandPlanForTamingWildBeasts.Q00655_AGrandPlanForTamingWildBeasts;
import ai.npc.AbstractNpcAI;
@ -76,7 +76,7 @@ public final class FeedableBeasts extends AbstractNpcAI
};
// @formatter:on
private static final Map<Integer, Integer> MAD_COW_POLYMORPH = new FastMap<>();
private static final Map<Integer, Integer> MAD_COW_POLYMORPH = new HashMap<>();
static
{
MAD_COW_POLYMORPH.put(21824, 21468);
@ -129,8 +129,8 @@ public final class FeedableBeasts extends AbstractNpcAI
NpcStringId.ANIMALS_NEED_LOVE_TOO
};
private static Map<Integer, Integer> _FeedInfo = new FastMap<>();
private static Map<Integer, GrowthCapableMob> _GrowthCapableMobs = new FastMap<>();
private static Map<Integer, Integer> _FeedInfo = new HashMap<>();
private static Map<Integer, GrowthCapableMob> _GrowthCapableMobs = new HashMap<>();
// all mobs that grow by eating
private static class GrowthCapableMob
@ -138,7 +138,7 @@ public final class FeedableBeasts extends AbstractNpcAI
private final int _growthLevel;
private final int _chance;
private final Map<Integer, int[][]> _spiceToMob = new FastMap<>();
private final Map<Integer, int[][]> _spiceToMob = new HashMap<>();
public GrowthCapableMob(int growthLevel, int chance)
{

View File

@ -18,9 +18,9 @@
*/
package ai.group_template;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.model.actor.L2Attackable;
@ -32,7 +32,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
*/
public final class PolymorphingAngel extends AbstractNpcAI
{
private static final Map<Integer, Integer> ANGELSPAWNS = new FastMap<>();
private static final Map<Integer, Integer> ANGELSPAWNS = new HashMap<>();
static
{
ANGELSPAWNS.put(20830, 20859);

View File

@ -18,9 +18,9 @@
*/
package ai.group_template;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.ThreadPoolManager;
@ -33,7 +33,7 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
*/
public final class RandomSpawn extends AbstractNpcAI
{
private static Map<Integer, Location[]> SPAWN_POINTS = new FastMap<>();
private static Map<Integer, Location[]> SPAWN_POINTS = new HashMap<>();
static
{
// Keltas

View File

@ -18,9 +18,9 @@
*/
package ai.individual;
import java.util.ArrayList;
import java.util.List;
import javolution.util.FastList;
import ai.npc.AbstractNpcAI;
import com.l2jserver.Config;
@ -56,7 +56,7 @@ public final class Core extends AbstractNpcAI
private static boolean _FirstAttacked;
private final List<L2Attackable> Minions = new FastList<>();
private final List<L2Attackable> Minions = new ArrayList<>();
private Core()
{

View File

@ -18,11 +18,11 @@
*/
package ai.individual;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import javolution.util.FastSet;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.ai.CtrlIntention;
@ -43,8 +43,8 @@ public final class DarkWaterDragon extends AbstractNpcAI
private static final int FAFURION = 18482;
private static final int DETRACTOR1 = 22270;
private static final int DETRACTOR2 = 22271;
private static Set<Integer> SECOND_SPAWN = new FastSet<>(); // Used to track if second Shades were already spawned
private static Set<Integer> MY_TRACKING_SET = new FastSet<>(); // Used to track instances of npcs
private static Set<Integer> SECOND_SPAWN = new HashSet<>(); // Used to track if second Shades were already spawned
private static Set<Integer> MY_TRACKING_SET = new HashSet<>(); // Used to track instances of npcs
private static Map<Integer, L2PcInstance> ID_MAP = new ConcurrentHashMap<>(); // Used to track instances of npcs
private DarkWaterDragon()

View File

@ -18,9 +18,9 @@
*/
package ai.individual;
import java.util.ArrayList;
import java.util.List;
import javolution.util.FastList;
import ai.npc.AbstractNpcAI;
import com.l2jserver.Config;
@ -72,7 +72,7 @@ public final class Orfen extends AbstractNpcAI
private static final int RIBA_IREN = 29018;
private static boolean _IsTeleported;
private static List<L2Attackable> _Minions = new FastList<>();
private static List<L2Attackable> _Minions = new ArrayList<>();
private static L2BossZone ZONE;
private static final byte ALIVE = 0;

View File

@ -18,10 +18,10 @@
*/
package ai.individual;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import javolution.util.FastList;
import ai.npc.AbstractNpcAI;
import com.l2jserver.Config;
@ -83,7 +83,7 @@ public final class QueenAnt extends AbstractNpcAI
L2MonsterInstance _queen = null;
private L2MonsterInstance _larva = null;
private final List<L2MonsterInstance> _nurses = new FastList<>(5);
private final List<L2MonsterInstance> _nurses = new ArrayList<>(5);
ScheduledFuture<?> _task = null;
private QueenAnt()

View File

@ -22,9 +22,9 @@ import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK;
import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_FOLLOW;
import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
import java.util.ArrayList;
import java.util.Collection;
import javolution.util.FastList;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.GeoData;
@ -217,7 +217,7 @@ public class ScarletVanHalisha extends AbstractNpcAI
private L2Character getRandomTarget(L2Npc npc)
{
Collection<L2Object> objs = npc.getKnownList().getKnownObjects().values();
FastList<L2Character> result = new FastList<>();
ArrayList<L2Character> result = new ArrayList<>();
{
for (L2Object obj : objs)
{

View File

@ -18,9 +18,9 @@
*/
package ai.individual;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.enums.ChatType;
@ -54,7 +54,7 @@ public final class SinWardens extends AbstractNpcAI
22438
};
private final Map<Integer, Integer> killedMinionsCount = new FastMap<>();
private final Map<Integer, Integer> killedMinionsCount = new HashMap<>();
private SinWardens()
{

View File

@ -20,10 +20,9 @@ package ai.npc.ForgeOfTheGods;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture;
import javolution.util.FastList;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@ -192,7 +191,7 @@ public class TarBeetleSpawn implements IXmlReader
private final class SpawnZone
{
private final List<Zone> _zones = new ArrayList<>();
private final List<L2Npc> _spawn = new FastList<>();
private final List<L2Npc> _spawn = new CopyOnWriteArrayList<>();
private final int _maxNpcCount;
private final int _index;

View File

@ -18,9 +18,9 @@
*/
package ai.npc.Teleports.NewbieTravelToken;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.model.Location;
@ -39,7 +39,7 @@ public final class NewbieTravelToken extends AbstractNpcAI
// Item
private static final int NEWBIE_TRAVEL_TOKEN = 8542;
// NPC Id - Teleport Location
private static final Map<Integer, Location> DATA = new FastMap<>();
private static final Map<Integer, Location> DATA = new HashMap<>();
private NewbieTravelToken()
{

View File

@ -18,9 +18,10 @@
*/
package gracia.AI;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.ThreadPoolManager;
@ -53,8 +54,8 @@ public class EnergySeeds extends AbstractNpcAI
private static final int RATE = 1;
private static final int RESPAWN = 480000;
private static final int RANDOM_RESPAWN_OFFSET = 180000;
private static Map<Integer, ESSpawn> _spawns = new FastMap<>();
protected static Map<L2Npc, Integer> _spawnedNpcs = new FastMap<L2Npc, Integer>().shared();
private static Map<Integer, ESSpawn> _spawns = new HashMap<>();
protected static Map<L2Npc, Integer> _spawnedNpcs = new ConcurrentHashMap<>();
private static final int TEMPORARY_TELEPORTER = 32602;
// @formatter:off
@ -711,8 +712,7 @@ public class EnergySeeds extends AbstractNpcAI
public void scheduleRespawn(long waitTime)
{
ThreadPoolManager.getInstance().scheduleGeneral(() ->
{
ThreadPoolManager.getInstance().scheduleGeneral(() -> {
// if the AI is inactive, do not spawn the NPC
if (isSeedActive(_seedId))
{

View File

@ -19,9 +19,9 @@
package gracia.AI.SeedOfAnnihilation;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.datatables.SkillData;
@ -41,7 +41,7 @@ import com.l2jserver.gameserver.util.Util;
*/
public class SeedOfAnnihilation extends AbstractNpcAI
{
private static final Map<Integer, Location> _teleportZones = new FastMap<>();
private static final Map<Integer, Location> _teleportZones = new HashMap<>();
private static final int ANNIHILATION_FURNACE = 18928;
// Strength, Agility, Wisdom

View File

@ -21,8 +21,6 @@ package handlers.admincommandhandlers;
import java.util.StringTokenizer;
import java.util.logging.Logger;
import javolution.text.TextBuilder;
import com.l2jserver.Config;
import com.l2jserver.gameserver.data.xml.impl.AdminData;
import com.l2jserver.gameserver.enums.ChatType;
@ -429,7 +427,7 @@ public class AdminAdmin implements IAdminCommandHandler
public void showConfigPage(L2PcInstance activeChar)
{
final NpcHtmlMessage adminReply = new NpcHtmlMessage();
TextBuilder replyMSG = new TextBuilder("<html><title>L2J :: Config</title><body>");
StringBuilder replyMSG = new StringBuilder("<html><title>L2J :: Config</title><body>");
replyMSG.append("<center><table width=270><tr><td width=60><button value=\"Main\" action=\"bypass -h admin_admin\" width=60 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td width=150>Config Server Panel</td><td width=60><button value=\"Back\" action=\"bypass -h admin_admin4\" width=60 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table></center><br>");
replyMSG.append("<center><table width=260><tr><td width=140></td><td width=40></td><td width=40></td></tr>");
replyMSG.append("<tr><td><font color=\"00AA00\">Drop:</font></td><td></td><td></td></tr>");

View File

@ -26,8 +26,6 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import javolution.text.TextBuilder;
import com.l2jserver.Config;
import com.l2jserver.gameserver.GameServer;
import com.l2jserver.gameserver.GameTimeController;
@ -103,7 +101,7 @@ public class AdminServerInfo implements IAdminCommandHandler
private String buildTheardInfo(String category)
{
final TextBuilder tb = new TextBuilder();
final StringBuilder tb = new StringBuilder();
tb.append("<table width=\"270\" border=\"0\" bgcolor=\"444444\">");
for (Entry<String, Object> info : ThreadPoolManager.getInstance().getStats(category).getSet().entrySet())

View File

@ -23,8 +23,6 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Logger;
import javolution.text.TextBuilder;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
import com.l2jserver.gameserver.instancemanager.QuestManager;
@ -158,7 +156,7 @@ public class AdminShowQuests implements IAdminCommandHandler
private static void showFirstQuestMenu(L2PcInstance target, L2PcInstance actor)
{
TextBuilder replyMSG = new TextBuilder("<html><body><table width=270><tr><td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td width=180><center>Player: " + target.getName() + "</center></td><td width=45><button value=\"Back\" action=\"bypass -h admin_admin6\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>");
StringBuilder replyMSG = new StringBuilder("<html><body><table width=270><tr><td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td width=180><center>Player: " + target.getName() + "</center></td><td width=45><button value=\"Back\" action=\"bypass -h admin_admin6\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>");
final NpcHtmlMessage adminReply = new NpcHtmlMessage();
int ID = target.getObjectId();
@ -182,7 +180,7 @@ public class AdminShowQuests implements IAdminCommandHandler
PreparedStatement req;
int ID = target.getObjectId();
TextBuilder replyMSG = new TextBuilder("<html><body>");
StringBuilder replyMSG = new StringBuilder("<html><body>");
final NpcHtmlMessage adminReply = new NpcHtmlMessage();
switch (val[0])

View File

@ -22,19 +22,11 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Map;
import java.util.Map.Entry;
import java.util.StringTokenizer;
import javolution.util.FastComparator;
import javolution.util.FastTable;
import com.l2jserver.gameserver.GameTimeController;
import com.l2jserver.gameserver.LoginServerThread;
import com.l2jserver.gameserver.ThreadPoolManager;
@ -202,76 +194,6 @@ public class DebugHandler implements ITelnetHandler
sb.append('\n');
}
sb.append('\n');
sb.append("## Threads Information ##\n");
Map<Thread, StackTraceElement[]> allThread = Thread.getAllStackTraces();
FastTable<Entry<Thread, StackTraceElement[]>> entries = new FastTable<>();
entries.setValueComparator(new FastComparator<Entry<Thread, StackTraceElement[]>>()
{
private static final long serialVersionUID = 1L;
@Override
public boolean areEqual(Entry<Thread, StackTraceElement[]> e1, Entry<Thread, StackTraceElement[]> e2)
{
return e1.getKey().getName().equals(e2.getKey().getName());
}
@Override
public int compare(Entry<Thread, StackTraceElement[]> e1, Entry<Thread, StackTraceElement[]> e2)
{
return e1.getKey().getName().compareTo(e2.getKey().getName());
}
@Override
public int hashCodeOf(Entry<Thread, StackTraceElement[]> e)
{
return e.hashCode();
}
});
entries.addAll(allThread.entrySet());
entries.sort();
for (Entry<Thread, StackTraceElement[]> entry : entries)
{
StackTraceElement[] stes = entry.getValue();
Thread t = entry.getKey();
sb.append("--------------\n");
sb.append(t.toString() + " (" + t.getId() + ")\n");
sb.append("State: " + t.getState() + '\n');
sb.append("isAlive: " + t.isAlive() + " | isDaemon: " + t.isDaemon() + " | isInterrupted: " + t.isInterrupted() + '\n');
sb.append('\n');
for (StackTraceElement ste : stes)
{
sb.append(ste.toString());
sb.append('\n');
}
sb.append('\n');
}
sb.append('\n');
ThreadMXBean mbean = ManagementFactory.getThreadMXBean();
long[] ids = findDeadlockedThreads(mbean);
if ((ids != null) && (ids.length > 0))
{
Thread[] threads = new Thread[ids.length];
for (int i = 0; i < threads.length; i++)
{
threads[i] = findMatchingThread(mbean.getThreadInfo(ids[i]));
}
sb.append("Deadlocked Threads:\n");
sb.append("-------------------\n");
for (Thread thread : threads)
{
System.err.println(thread);
for (StackTraceElement ste : thread.getStackTrace())
{
sb.append("\t" + ste);
sb.append('\n');
}
}
}
sb.append("\n\n## Thread Pool Manager Statistics ##\n");
for (String line : ThreadPoolManager.getInstance().getStats())
{
@ -330,29 +252,6 @@ public class DebugHandler implements ITelnetHandler
return false;
}
private long[] findDeadlockedThreads(ThreadMXBean mbean)
{
// JDK 1.5 only supports the findMonitorDeadlockedThreads()
// method, so you need to comment out the following three lines
if (mbean.isSynchronizerUsageSupported())
{
return mbean.findDeadlockedThreads();
}
return mbean.findMonitorDeadlockedThreads();
}
private Thread findMatchingThread(ThreadInfo inf)
{
for (Thread thread : Thread.getAllStackTraces().keySet())
{
if (thread.getId() == inf.getThreadId())
{
return thread;
}
}
throw new IllegalStateException("Deadlocked Thread not found");
}
public String getServerStatus()
{
int playerCount = 0, objectCount = 0;

View File

@ -18,9 +18,9 @@
*/
package hellbound.AI;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.model.actor.L2Npc;
@ -46,7 +46,7 @@ public final class DemonPrince extends AbstractNpcAI
new SkillHolder(5376, 6),
};
private static final Map<Integer, Boolean> ATTACK_STATE = new FastMap<>();
private static final Map<Integer, Boolean> ATTACK_STATE = new HashMap<>();
public DemonPrince()
{

View File

@ -19,8 +19,8 @@
package hellbound.AI;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import javolution.util.FastSet;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.enums.ChatType;
@ -42,7 +42,7 @@ public final class Ranku extends AbstractNpcAI
private static final int MINION = 32305;
private static final int MINION_2 = 25543;
// Misc
private static final Set<Integer> MY_TRACKING_SET = new FastSet<Integer>().shared();
private static final Set<Integer> MY_TRACKING_SET = new CopyOnWriteArraySet<>();
public Ranku()
{

View File

@ -20,9 +20,9 @@ package hellbound.AI.Zones.AnomicFoundry;
import hellbound.HellboundEngine;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.ai.CtrlIntention;
@ -49,7 +49,7 @@ public final class AnomicFoundry extends AbstractNpcAI
private static int LESSER_EVIL = 22398;
private static int GREATER_EVIL = 22399;
// Misc
private final Map<Integer, Integer> _atkIndex = new FastMap<>();
private final Map<Integer, Integer> _atkIndex = new HashMap<>();
// npcId, x, y, z, heading, max count
//@formatter:off
private static int[][] SPAWNS =

View File

@ -18,9 +18,9 @@
*/
package hellbound.AI.Zones.BaseTower;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.data.xml.impl.DoorData;
@ -42,7 +42,7 @@ public final class BaseTower extends AbstractNpcAI
// Skills
private static final SkillHolder DEATH_WORD = new SkillHolder(5256, 1);
// Misc
private static final Map<Integer, L2PcInstance> BODY_DESTROYER_TARGET_LIST = new FastMap<>();
private static final Map<Integer, L2PcInstance> BODY_DESTROYER_TARGET_LIST = new HashMap<>();
public BaseTower()
{

View File

@ -18,14 +18,14 @@
*/
package hellbound.AI.Zones.TowerOfNaia;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import javolution.util.FastList;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.ThreadPoolManager;
@ -157,9 +157,9 @@ public final class TowerOfNaia extends AbstractNpcAI
private int _challengeState;
private int _winIndex;
private final Map<Integer, Boolean> _activeRooms = new FastMap<>();
private final Map<Integer, List<L2Npc>> _spawns = new FastMap<>();
private final FastList<L2Npc> _sporeSpawn = new FastList<L2Npc>().shared();
private final Map<Integer, Boolean> _activeRooms = new HashMap<>();
private final Map<Integer, List<L2Npc>> _spawns = new HashMap<>();
private final CopyOnWriteArrayList<L2Npc> _sporeSpawn = new CopyOnWriteArrayList<>();
static
{
// Format: entrance_door, exit_door
@ -902,7 +902,7 @@ public final class TowerOfNaia extends AbstractNpcAI
if (SPAWNS.containsKey(managerId))
{
int[][] spawnList = SPAWNS.get(managerId);
List<L2Npc> spawned = new FastList<>();
List<L2Npc> spawned = new ArrayList<>();
for (int[] spawn : spawnList)
{
L2Npc spawnedNpc = addSpawn(spawn[0], spawn[1], spawn[2], spawn[3], spawn[4], false, 0, false);

View File

@ -18,15 +18,15 @@
*/
package hellbound.AI.Zones.TullyWorkshop;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ScheduledFuture;
import javolution.util.FastList;
import javolution.util.FastMap;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.ThreadPoolManager;
@ -111,8 +111,8 @@ public final class TullyWorkshop extends AbstractNpcAI
22383
};
private static final Map<Integer, int[]> TULLY_DOORLIST = new FastMap<>();
private static final Map<Integer, Location[]> TELE_COORDS = new FastMap<>();
private static final Map<Integer, int[]> TULLY_DOORLIST = new HashMap<>();
private static final Map<Integer, Location[]> TELE_COORDS = new HashMap<>();
protected int countdownTime;
private int nextServantIdx = 0;
@ -125,14 +125,14 @@ public final class TullyWorkshop extends AbstractNpcAI
protected ScheduledFuture<?> _countdown = null;
// NPC's, spawned after Tully's death are stored here
protected static List<L2Npc> postMortemSpawn = new FastList<>();
protected static List<L2Npc> postMortemSpawn = new ArrayList<>();
// TODO: Zoey76: Not thread-safe, probably will lead to problems.
protected static Set<Integer> brokenContraptions = new HashSet<>();
protected static Set<Integer> rewardedContraptions = new HashSet<>();
protected static Set<Integer> talkedContraptions = new HashSet<>();
private final List<L2MonsterInstance> spawnedFollowers = new FastList<>();
private final List<L2MonsterInstance> spawnedFollowerMinions = new FastList<>();
private final List<L2MonsterInstance> spawnedFollowers = new ArrayList<>();
private final List<L2MonsterInstance> spawnedFollowerMinions = new ArrayList<>();
private L2Npc spawnedAgent = null;
private L2Spawn pillarSpawn = null;

View File

@ -20,12 +20,11 @@ package instances.CrystalCaverns;
import instances.AbstractInstance;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javolution.util.FastList;
import javolution.util.FastMap;
import com.l2jserver.Config;
import com.l2jserver.gameserver.GeoData;
import com.l2jserver.gameserver.ai.CtrlIntention;
@ -84,15 +83,15 @@ public final class CrystalCaverns extends AbstractInstance
private class CCWorld extends InstanceWorld
{
public Map<L2Npc, Boolean> npcList1 = new FastMap<>();
public Map<L2Npc, Boolean> npcList1 = new HashMap<>();
public L2Npc tears;
public boolean isUsedInvulSkill = false;
public long dragonScaleStart = 0;
public int dragonScaleNeed = 0;
public int cleanedRooms = 0;
public long endTime = 0;
public List<L2Npc> copys = new FastList<>();
public Map<L2Npc, CrystalGolem> crystalGolems = new FastMap<>();
public List<L2Npc> copys = new ArrayList<>();
public Map<L2Npc, CrystalGolem> crystalGolems = new HashMap<>();
public int correctGolems = 0;
public boolean[] OracleTriggered =
{
@ -108,18 +107,18 @@ public final class CrystalCaverns extends AbstractInstance
0,
0
}; // 0: not spawned, 1: spawned, 2: cleared
public Map<L2DoorInstance, L2PcInstance> openedDoors = new FastMap<>();
public Map<Integer, Map<L2Npc, Boolean>> npcList2 = new FastMap<>();
public Map<L2Npc, L2Npc> oracles = new FastMap<>();
public List<L2Npc> keyKeepers = new FastList<>();
public List<L2Npc> guards = new FastList<>();
public List<L2Npc> oracle = new FastList<>();
public Map<L2DoorInstance, L2PcInstance> openedDoors = new HashMap<>();
public Map<Integer, Map<L2Npc, Boolean>> npcList2 = new HashMap<>();
public Map<L2Npc, L2Npc> oracles = new HashMap<>();
public List<L2Npc> keyKeepers = new ArrayList<>();
public List<L2Npc> guards = new ArrayList<>();
public List<L2Npc> oracle = new ArrayList<>();
// baylor variables
protected final List<L2PcInstance> _raiders = new FastList<>();
protected final List<L2PcInstance> _raiders = new ArrayList<>();
protected int _raidStatus = 0;
protected long _dragonClawStart = 0;
protected int _dragonClawNeed = 0;
protected final List<L2Npc> _animationMobs = new FastList<>();
protected final List<L2Npc> _animationMobs = new ArrayList<>();
protected L2Npc _camera = null;
protected L2Npc _baylor = null;
protected L2Npc _alarm = null;
@ -800,7 +799,7 @@ public final class CrystalCaverns extends AbstractInstance
{
world.setStatus(3);
Map<L2Npc, Boolean> spawnList = new FastMap<>();
Map<L2Npc, Boolean> spawnList = new HashMap<>();
for (int[] spawn : EMERALD_SPAWNS)
{
L2Npc mob = addSpawn(spawn[0], spawn[1], spawn[2], spawn[3], spawn[4], false, 0, false, world.getInstanceId());
@ -811,7 +810,7 @@ public final class CrystalCaverns extends AbstractInstance
protected void runEmeraldRooms(CCWorld world, int[][] spawnList, int room)
{
Map<L2Npc, Boolean> spawned = new FastMap<>();
Map<L2Npc, Boolean> spawned = new HashMap<>();
for (int[] spawn : spawnList)
{
L2Npc mob = addSpawn(spawn[0], spawn[1], spawn[2], spawn[3], spawn[4], false, 0, false, world.getInstanceId());
@ -839,7 +838,7 @@ public final class CrystalCaverns extends AbstractInstance
{
world.setStatus(status);
Map<L2Npc, Boolean> spawned = new FastMap<>();
Map<L2Npc, Boolean> spawned = new HashMap<>();
for (int[] spawn : spawnList)
{
L2Npc mob = addSpawn(spawn[0], spawn[1], spawn[2], spawn[3], spawn[4], false, 0, false, world.getInstanceId());
@ -1380,7 +1379,7 @@ public final class CrystalCaverns extends AbstractInstance
return "";
}
CrystalGolem cryGolem = world.crystalGolems.get(npc);
List<L2Object> crystals = new FastList<>();
List<L2Object> crystals = new ArrayList<>();
for (L2Object object : L2World.getInstance().getVisibleObjects(npc, 300))
{
if ((object instanceof L2ItemInstance) && (object.getId() == CRYSTALFOOD))

View File

@ -19,8 +19,9 @@
package instances.DarkCloudMansion;
import instances.AbstractInstance;
import javolution.util.FastList;
import javolution.util.FastMap;
import java.util.ArrayList;
import java.util.HashMap;
import com.l2jserver.gameserver.enums.ChatType;
import com.l2jserver.gameserver.instancemanager.InstanceManager;
@ -45,7 +46,7 @@ public final class DarkCloudMansion extends AbstractInstance
{
protected class DMCWorld extends InstanceWorld
{
protected FastMap<String, DMCRoom> rooms = new FastMap<>();
protected HashMap<String, DMCRoom> rooms = new HashMap<>();
}
// NPCs
@ -229,7 +230,7 @@ public final class DarkCloudMansion extends AbstractInstance
protected static class DMCRoom
{
public FastList<DMCNpc> npcList = new FastList<>();
public ArrayList<DMCNpc> npcList = new ArrayList<>();
public int counter = 0;
public int reset = 0;
public int founded = 0;

View File

@ -20,10 +20,10 @@ package instances.DisciplesNecropolisPast;
import instances.AbstractInstance;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastList;
import quests.Q00196_SevenSignsSealOfTheEmperor.Q00196_SevenSignsSealOfTheEmperor;
import com.l2jserver.gameserver.enums.ChatType;
@ -47,8 +47,8 @@ public final class DisciplesNecropolisPast extends AbstractInstance
{
protected class DNPWorld extends InstanceWorld
{
protected final FastList<L2Npc> anakimGroup = new FastList<>();
protected final FastList<L2Npc> lilithGroup = new FastList<>();
protected final ArrayList<L2Npc> anakimGroup = new ArrayList<>();
protected final ArrayList<L2Npc> lilithGroup = new ArrayList<>();
protected int countKill = 0;
}
@ -180,7 +180,7 @@ public final class DisciplesNecropolisPast extends AbstractInstance
teleportPlayer(player, ENTER, world.getInstanceId());
}
private void makeCast(L2Npc npc, FastList<L2Npc> targets)
private void makeCast(L2Npc npc, ArrayList<L2Npc> targets)
{
npc.setTarget(targets.get(getRandom(targets.size())));
if (SKILLS.containsKey(npc.getId()))

View File

@ -21,9 +21,11 @@ package instances.FinalEmperialTomb;
import instances.AbstractInstance;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@ -31,9 +33,6 @@ import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilderFactory;
import javolution.util.FastList;
import javolution.util.FastMap;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@ -86,7 +85,7 @@ public final class FinalEmperialTomb extends AbstractInstance
private class FETWorld extends InstanceWorld
{
protected Lock lock = new ReentrantLock();
protected FastList<L2Npc> npcList = new FastList<>();
protected CopyOnWriteArrayList<L2Npc> npcList = new CopyOnWriteArrayList<>();
protected int darkChoirPlayerCount = 0;
protected FrintezzaSong OnSong = null;
protected ScheduledFuture<?> songTask = null;
@ -99,8 +98,8 @@ public final class FinalEmperialTomb extends AbstractInstance
protected L2Npc scarletDummy = null;
protected L2GrandBossInstance frintezza = null;
protected L2GrandBossInstance activeScarlet = null;
protected List<L2MonsterInstance> demons = new FastList<>();
protected Map<L2MonsterInstance, Integer> portraits = new FastMap<>();
protected List<L2MonsterInstance> demons = new ArrayList<>();
protected Map<L2MonsterInstance, Integer> portraits = new HashMap<>();
protected int scarlet_x = 0;
protected int scarlet_y = 0;
protected int scarlet_z = 0;
@ -109,7 +108,6 @@ public final class FinalEmperialTomb extends AbstractInstance
protected FETWorld()
{
npcList.shared();
}
}
@ -196,7 +194,7 @@ public final class FinalEmperialTomb extends AbstractInstance
private static final boolean debug = false;
private final Map<Integer, L2Territory> _spawnZoneList = new HashMap<>();
private final Map<Integer, List<FETSpawn>> _spawnList = new HashMap<>();
private final List<Integer> _mustKillMobsId = new FastList<>();
private final List<Integer> _mustKillMobsId = new ArrayList<>();
protected static final int[] FIRST_ROOM_DOORS =
{
17130051,
@ -303,7 +301,7 @@ public final class FinalEmperialTomb extends AbstractInstance
int flag = Integer.parseInt(attrs.getNamedItem("flag").getNodeValue());
if (!_spawnList.containsKey(flag))
{
_spawnList.put(flag, new FastList<FETSpawn>());
_spawnList.put(flag, new ArrayList<FETSpawn>());
}
for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
@ -850,7 +848,7 @@ public final class FinalEmperialTomb extends AbstractInstance
if ((_world.frintezza != null) && !_world.frintezza.isDead() && (_world.activeScarlet != null) && !_world.activeScarlet.isDead())
{
List<L2Character> targetList = new FastList<>();
List<L2Character> targetList = new ArrayList<>();
if (skill.hasEffectType(L2EffectType.STUN) || skill.isDebuff())
{
for (int objId : _world.getAllowed())
@ -867,8 +865,7 @@ public final class FinalEmperialTomb extends AbstractInstance
{
targetList.add(pet);
}
player.getServitors().values().forEach(s ->
{
player.getServitors().values().forEach(s -> {
if (!s.isDead())
{
targetList.add(s);

View File

@ -18,10 +18,10 @@
*/
package instances.MonasteryOfSilence2;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javolution.util.FastList;
import javolution.util.FastMap;
import quests.Q10294_SevenSignsToTheMonasteryOfSilence.Q10294_SevenSignsToTheMonasteryOfSilence;
import quests.Q10295_SevenSignsSolinasTomb.Q10295_SevenSignsSolinasTomb;
import quests.Q10296_SevenSignsPowerOfTheSeal.Q10296_SevenSignsPowerOfTheSeal;
@ -196,11 +196,11 @@ public class MonasteryOfSilence2 extends AbstractNpcAI
6717
};
private final FastMap<Integer, InstanceHolder> instanceWorlds = new FastMap<>();
private final HashMap<Integer, InstanceHolder> instanceWorlds = new HashMap<>();
public static class InstanceHolder
{
List<L2Npc> mobs = new FastList<>();
List<L2Npc> mobs = new ArrayList<>();
}
private class MoSWorld2 extends InstanceWorld

View File

@ -18,13 +18,12 @@
*/
package quests.Q00144_PailakaInjuredDragon;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastList;
import javolution.util.FastMap;
import com.l2jserver.gameserver.ai.CtrlEvent;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.datatables.SkillData;
@ -66,7 +65,7 @@ public class Q00144_PailakaInjuredDragon extends Quest
// @formatter:off
// NO EXIT ZONES
private static final Map<Integer, int[]> NOEXIT_ZONES = new FastMap<>();
private static final Map<Integer, int[]> NOEXIT_ZONES = new HashMap<>();
static
{
NOEXIT_ZONES.put(200001, new int[]{123167, -45743, -3023});
@ -204,7 +203,7 @@ public class Q00144_PailakaInjuredDragon extends Quest
{4347,6} // Blessed Body Lv6
};
private static final FastList<PailakaDrop> DROPLIST = new FastList<>();
private static final ArrayList<PailakaDrop> DROPLIST = new ArrayList<>();
static
{
DROPLIST.add(new PailakaDrop(HEAL_POTION, 80));
@ -257,10 +256,10 @@ public class Q00144_PailakaInjuredDragon extends Quest
@Override
public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = player.getQuestState(getName());
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
return null;
}
final int cond = qs.getCond();
@ -420,10 +419,11 @@ public class Q00144_PailakaInjuredDragon extends Quest
@Override
public final String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = player.getQuestState(getName());
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return getNoQuestMsg(player);
return htmltext;
}
final int cond = qs.getCond();

View File

@ -1,6 +0,0 @@
<html><body>Duelist Kaien:<br>
This is the first I've heard of that! I'm so sorry, obviously you've gone to a great deal of trouble for nothing... Wait a moment~<br>
Could I take a closer look at that? This design is remarkably similar to the one engraved on a scabbard that I received from my father... I am beginning to believe you now.<br>
I come from a long line of dualists! It has been a tradition in my family for over a thousand years! Charming, no?<br>
Thank you, I will accept this... I wish I had more to offer you in return! Please accept these worthless trinkets as a token of my appreciation!
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Duelist Kaien:<br>
Your hilt has been taken to a Dwarven craftsman who will fashion a suitable blade for it... Aren't you excited?!
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>High Prefect Gavarentz:<br>
This necklace and statue prove that what you say is true. Last night I dreamed of an Orc. His large body was covered with scars and he was drenched in what must have been his enemy's blood. He gave me this necklace...<br>
Thank you, young traveler. Now I shall give the necklace to you. Use it carefully.
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>High Prefect Gavarentz:<br>
I have entrusted the amulet necklace to my daughter, who I have sent north to the Orc Fortress. She will wear the necklace in battle. I pray the mighty spirit of her ancestor will watch over her.
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
I've not left Dragon Valley since I led my men here so many years ago to battle Antharas...<br>
I have accepted the inevitability of my eternal responsibility to watch over the beast. But my heart goes out to the loyal soldiers who lost their lives due to my stubborn ignorance. I have no other wish than to see their remains returned to their hometowns, but I fear that you are not up to the task...<br>
(This quest can only be undertaken by a character of level 48 or above.)
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
I've not left Dragon Valley since I led my men here so many years ago to battle Antharas...<br>
I have accepted the inevitability of my eternal responsibility to watch over the beast. But my heart goes out to the loyal soldiers who lost their lives due to my stubborn ignorance. I have no other wish than to see their remains returned to their hometowns so they can rest in peace.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00344_1000YearsTheEndOfLamentation 30754-03.htm">"I will help you."</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Watcher of Antharas Gilmore:<br>
I buried my former subordinates in a corner of this Valley in a region called the <font color="LEVEL">Watcher's Tomb</font>. However, they strangely came back from the dead after Antharas and Desparion used their magic. My mind is still strong, but they turned into monsters after blood and death... These friends... creatures... are now called... 'Cave Servants'...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00344_1000YearsTheEndOfLamentation 30754-04.htm">"Carry on."</Button>
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Watcher of Antharas Gilmore:<br>
You probably know as well, but there were many, many people that tried to kill Antharas. None were able, but their death was not the end for all. While some were undoubtedly held by Shilen's grasp, others become Cave Servants. Right now, I don't even know how many Cave Servants exist in the <font color="LEVEL">Watcher's Tomb</font>. What I can ask of you is to destroy as many Cave Servants as possible. <font color="LEVEL">Cave Servant, Archer, Warrior, Chief... Anything that has Cave in the name</font>. Kill them and collect their relics, then bring them to me. I will reward you appropriately.
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
Is there something keeping you here? Why aren't you out killing cave servants? Bring me back any relics they leave behind.
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
Believe it or not we gave our lives willingly to save Giran! But we never counted on being here for eternity, let alone looking like this! It's been a thousand years and still I long for my mortal life...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00344_1000YearsTheEndOfLamentation 30754-08.html">Give him the relics.</Button>
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
What's that? Oh, for some reason, I was sure that you had brought back relics. You should be out killing cave servants. You must do whatever you can to release my men from their endless torment.
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
Thank you! Please take this as a token of my appreciation. Thanks to you the noble soldiers can finally rest in peace... I am afraid that there are many more, however, who still wander this valley. Would you be willing to continue doing this for a while?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00344_1000YearsTheEndOfLamentation 30754-16.html">"I will continue the work."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00344_1000YearsTheEndOfLamentation 30754-17.html">"I quit."</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
Could it be? If my eyes aren't deceiving me this used to belong to a friend of mine...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00344_1000YearsTheEndOfLamentation relic_info">"Tell me more, Gilmore."</Button>
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
My personal aide wore this key around his neck. He stood by my side during the battle with Antharas 1,000 years ago. He was the first-born son in his family... This key was very important to him.<br>
I believe one of his descendants is living in <font color="LEVEL">the Town of Giran</font>. He has the family name of <font color="LEVEL">Rodemai</font>.<br>
I am bound to this valley so cannot go myself. Would you please take the key to Rodemai in the Town of Giran? I will pay you for your trouble.
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
This sword belonged to one of my aides who fought alongside me against Antharas 1,000 years ago. In the intervening years the blade must have rusted away and only this hilt is left. He was a swordsman without parallel...<br>
It is said that one of his descendants is living in <font color="LEVEL">the Town of Oren</font>. It is likely that he is following the family tradition of being a <font color="LEVEL">Duelist</font>.<br>
I am unable to leave this valley or I would take this relic to him. Would you please do this for me? I will pay you for your trouble.
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
This necklace belonged to a soldier that served under my command in the battle against Antharas. He was the finest Orc I've ever known, a true intellectual. Seriously! I'm fairly certain he was of aristocratic birth.<br>
Come to think of it, I've seen that necklace elsewhere. It was worn by an Orc who was a <font color="LEVEL">High Prefect</font> from <font color="LEVEL">Hunters Village</font>.<br>
I would take the necklace to him if I was able to leave this valley, but alas, I cannot. Would you please take it to him? I will compensate you well for your trouble.
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
This crucifix belonged to one of the brave young soldiers who accompanied me here 1,000 years ago to battle the beast Antharas. At that time it shone like the sun. Now it looks so old and weathered...<br>
He worshipped in a temple that stood where Aden Castle stands now. Please go to <font color="LEVEL">the Town of Aden</font> and take this crucifix to the temple of Einhasad. Show it to a <font color="LEVEL">High Priest</font> at the temple, he will know what to do with it.<br>
Even if I could leave the valley to travel there, an undead such as myself could never enter the temple. If you will do this for me I will pay you well.
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
Please go ahead and deliver the relic I gave you. You can come back and resume dispatching the cave servants afterwards.
</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Watcher of Antharas Gilmore:<br>
Oh, you're back? Perhaps I should reward for your good work, hmm?<br>
Now, while you're here, I'd like to ask you to help with the same task in your future endeavours, as there are other friends of mine who still cannot rest in the watcher's tomb. Would you do this for me again in a while?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00344_1000YearsTheEndOfLamentation 30754-16.html">"Yes."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00344_1000YearsTheEndOfLamentation 30754-17.html">"Sorry, I can't."</Button>
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
Oh, thank you! I knew I could depend on you. This could go on for a while. There seems to be no end of cave servants in this cursed valley.
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Antharas Watchman Gilmore:<br>
Oh, well, you have done much good. I knew you wouldn't stay here forever, as I and my soldiers must do. Thank you for helping me and my men. Goodbye...
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
Really! So the ancestors of the Rodemai family participated in the expedition to fight Antharas during the Elmoreden Empire?<br>
Yes, that does sound familiar. My family has always been a self-sacrificing lot... This key proves it. So, how about that?<br>
I appreciate your bringing me something so precious! Here, take this as a token of my appreciation for your hard work.
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
The recovery of this key has restored the honor of the Rodemai family. It actually traces our ancestry back to the time of the ancient empire! I hope that you will continue working for us...
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>High Priest Orven:<br>
This looks like a badge from our temple...? Don't tell me... Could it be a relic from the battle against Antharas 1,000 years ago? How could it be?<br>
I have always feared that our efforts to slay Antharas have been in vain. This old badge tells me that our responsibilities cannot be avoided, no matter the cost.<br>
Thank you, young traveler. Please take this small token of appreciation from our temple.
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>High Priest Orven:<br>
The badge is safe with other sacred relics deep within the temple. Many fail to grasp the significance of this old piece of metal, but I hear it calling me to my duty...
</body></html>

View File

@ -1,380 +0,0 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack 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.
*
* L2J DataPack 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 quests.Q00344_1000YearsTheEndOfLamentation;
import java.util.HashMap;
import java.util.Map;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
/**
* 1000 years, the End of Lamentation (344)
* @author Pandragon
*/
public final class Q00344_1000YearsTheEndOfLamentation extends Quest
{
// NPCs
private static final int KAIEN = 30623;
private static final int GARVARENTZ = 30704;
private static final int GILMORE = 30754;
private static final int RODEMAI = 30756;
private static final int ORVEN = 30857;
// Items
private static final int ARTICLES = 4269;
private static final ItemHolder OLD_KEY = new ItemHolder(4270, 1);
private static final ItemHolder OLD_HILT = new ItemHolder(4271, 1);
private static final ItemHolder TOTEM_NECKLACE = new ItemHolder(4272, 1);
private static final ItemHolder CRUCIFIX = new ItemHolder(4273, 1);
// Monsters
private static final Map<Integer, Double> MONSTER_CHANCES = new HashMap<>();
{
MONSTER_CHANCES.put(20236, 0.58); // Cave Servant
MONSTER_CHANCES.put(20238, 0.75); // Cave Servant Warrior
MONSTER_CHANCES.put(20237, 0.78); // Cave Servant Archer
MONSTER_CHANCES.put(20239, 0.79); // Cave Servant Captain
MONSTER_CHANCES.put(20240, 0.85); // Royal Cave Servant
MONSTER_CHANCES.put(20272, 0.58); // Cave Servant
MONSTER_CHANCES.put(20273, 0.78); // Cave Servant Archer
MONSTER_CHANCES.put(20274, 0.75); // Cave Servant Warrior
MONSTER_CHANCES.put(20275, 0.79); // Cave Servant Captain
MONSTER_CHANCES.put(20276, 0.85); // Royal Cave Servant
}
// Rewards
private static final ItemHolder ORIHARUKON_ORE = new ItemHolder(1874, 25);
private static final ItemHolder VARNISH_OF_PURITY = new ItemHolder(1887, 10);
private static final ItemHolder SCROLL_EWC = new ItemHolder(951, 1);
private static final ItemHolder RAID_SWORD = new ItemHolder(133, 1);
private static final ItemHolder COKES = new ItemHolder(1879, 55);
private static final ItemHolder RING_OF_AGES = new ItemHolder(885, 1);
private static final ItemHolder LEATHER = new ItemHolder(1882, 70);
private static final ItemHolder COARSE_BONE_POWDER = new ItemHolder(1881, 50);
private static final ItemHolder HEAVY_DOOM_HAMMER = new ItemHolder(191, 1);
private static final ItemHolder STONE_OF_PURITY = new ItemHolder(1875, 19);
private static final ItemHolder SCROLL_EAC = new ItemHolder(952, 5);
private static final ItemHolder DRAKE_LEATHER_BOOTS = new ItemHolder(2437, 1);
// Misc
private static final int MIN_LVL = 48;
public Q00344_1000YearsTheEndOfLamentation()
{
super(344, Q00344_1000YearsTheEndOfLamentation.class.getSimpleName(), "1000 years, the End of Lamentation");
addStartNpc(GILMORE);
addTalkId(KAIEN, GARVARENTZ, GILMORE, RODEMAI, ORVEN);
addKillId(MONSTER_CHANCES.keySet());
registerQuestItems(ARTICLES, OLD_KEY.getId(), OLD_HILT.getId(), TOTEM_NECKLACE.getId(), CRUCIFIX.getId());
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
String htmltext = null;
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "30754-03.htm":
case "30754-16.html":
{
htmltext = event;
break;
}
case "30754-04.htm":
{
if (qs.isCreated())
{
qs.startQuest();
htmltext = event;
}
break;
}
case "30754-08.html":
{
if (qs.isCond(1))
{
final long count = getQuestItemsCount(player, ARTICLES);
if (count < 1)
{
htmltext = "30754-07.html";
}
else
{
takeItems(player, ARTICLES, -1);
if (getRandom(1000) >= count)
{
giveAdena(player, count * 60, true);
htmltext = event;
}
else
{
qs.setCond(2, true);
switch (getRandom(4))
{
case 0:
{
qs.setMemoState(1);
giveItems(player, OLD_HILT);
break;
}
case 1:
{
qs.setMemoState(2);
giveItems(player, OLD_KEY);
break;
}
case 2:
{
qs.setMemoState(3);
giveItems(player, TOTEM_NECKLACE);
break;
}
case 3:
{
qs.setMemoState(4);
giveItems(player, CRUCIFIX);
break;
}
}
htmltext = "30754-09.html";
}
}
}
break;
}
case "30754-17.html":
{
if (qs.isCond(1))
{
htmltext = event;
qs.exitQuest(true, true);
}
break;
}
case "relic_info":
{
switch (qs.getMemoState())
{
case 1:
{
htmltext = "30754-10.html";
break;
}
case 2:
{
htmltext = "30754-11.html";
break;
}
case 3:
{
htmltext = "30754-12.html";
break;
}
case 4:
{
htmltext = "30754-13.html";
break;
}
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
final QuestState qs = getQuestState(talker, true);
String htmltext = getNoQuestMsg(talker);
switch (npc.getId())
{
case GILMORE:
{
if (qs.isCreated())
{
htmltext = (talker.getLevel() >= MIN_LVL) ? "30754-02.htm" : "30754-01.htm";
}
else if (qs.isStarted())
{
if (qs.isCond(1))
{
htmltext = (hasQuestItems(talker, ARTICLES)) ? "30754-06.html" : "30754-05.html";
}
else if (hasItem(talker, OLD_KEY) || hasItem(talker, OLD_HILT) || hasItem(talker, TOTEM_NECKLACE) || hasItem(talker, CRUCIFIX))
{
htmltext = "30754-14.html";
}
else
{
qs.setCond(1);
htmltext = "30754-15.html";
}
}
else
{
htmltext = getAlreadyCompletedMsg(talker);
}
break;
}
case KAIEN:
{
if (qs.getMemoState() == 1)
{
if (hasItem(talker, OLD_HILT))
{
takeItems(talker, OLD_HILT.getId(), -1);
final int rand = getRandom(100);
if (rand <= 52)
{
rewardItems(talker, ORIHARUKON_ORE);
}
else if (rand <= 76)
{
rewardItems(talker, VARNISH_OF_PURITY);
}
else if (rand <= 98)
{
rewardItems(talker, SCROLL_EWC);
}
else
{
rewardItems(talker, RAID_SWORD);
}
qs.setCond(1);
htmltext = "30623-01.html";
}
else
{
htmltext = "30623-02.html";
}
}
break;
}
case RODEMAI:
{
if (qs.getMemoState() == 2)
{
if (hasItem(talker, OLD_KEY))
{
takeItems(talker, OLD_KEY.getId(), -1);
final int rand = getRandom(100);
if (rand <= 39)
{
rewardItems(talker, COKES);
}
else if (rand <= 89)
{
rewardItems(talker, SCROLL_EWC);
}
else
{
rewardItems(talker, RING_OF_AGES);
}
qs.setCond(1);
htmltext = "30756-01.html";
}
else
{
htmltext = "30756-02.html";
}
}
break;
}
case GARVARENTZ:
{
if (qs.getMemoState() == 3)
{
if (hasItem(talker, TOTEM_NECKLACE))
{
takeItems(talker, TOTEM_NECKLACE.getId(), -1);
final int rand = getRandom(100);
if (rand <= 47)
{
rewardItems(talker, LEATHER);
}
else if (rand <= 97)
{
rewardItems(talker, COARSE_BONE_POWDER);
}
else
{
rewardItems(talker, HEAVY_DOOM_HAMMER);
}
qs.setCond(1);
htmltext = "30704-01.html";
}
else
{
htmltext = "30704-02.html";
}
}
break;
}
case ORVEN:
{
if (qs.getMemoState() == 4)
{
if (hasItem(talker, CRUCIFIX))
{
takeItems(talker, CRUCIFIX.getId(), -1);
final int rand = getRandom(100);
if (rand <= 49)
{
rewardItems(talker, STONE_OF_PURITY);
}
else if (rand <= 69)
{
rewardItems(talker, SCROLL_EAC);
}
else
{
rewardItems(talker, DRAKE_LEATHER_BOOTS);
}
qs.setCond(1);
htmltext = "30857-01.html";
}
else
{
htmltext = "30857-02.html";
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, 1, 3, npc);
if (qs != null)
{
giveItemRandomly(qs.getPlayer(), npc, ARTICLES, 1, 0, MONSTER_CHANCES.get(npc.getId()), true);
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -1,4 +1,4 @@
<html><body>Elmore-Aden's Saintess Solina:<br>
<EFBFBD><br><br>
<br><br>
This phantom looks like Solina, Elmore-Aden's Saintess. The phantom appears to be trying to say something. It looks like she doesn't intend to harm us...
</body></html>

View File

@ -327,7 +327,12 @@ public final class Q10295_SevenSignsSolinasTomb extends Quest
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
QuestState st = player.getQuestState(getName());
final QuestState st = getQuestState(player, true);
if (st == null)
{
return htmltext;
}
int cond = st.getInt("cond");
int npcId = npc.getId();
switch (st.getState())

View File

@ -51,12 +51,13 @@ public final class Q10296_SevenSignsPowerOfTheSeal extends Quest
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
QuestState st = player.getQuestState(getName());
final QuestState st = getQuestState(player, false);
if (st == null)
{
return getNoQuestMsg(player);
return null;
}
String htmltext = event;
switch (event)
{
case "32792-04.html":
@ -96,11 +97,12 @@ public final class Q10296_SevenSignsPowerOfTheSeal extends Quest
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
QuestState st = player.getQuestState(getName());
final QuestState st = getQuestState(player, true);
if (st == null)
{
return htmltext;
}
switch (npc.getId())
{
case ErissEvilThoughts:

View File

@ -99,7 +99,6 @@ import quests.Q00300_HuntingLetoLizardman.Q00300_HuntingLetoLizardman;
import quests.Q00307_ControlDeviceOfTheGiants.Q00307_ControlDeviceOfTheGiants;
import quests.Q00310_OnlyWhatRemains.Q00310_OnlyWhatRemains;
import quests.Q00326_VanquishRemnants.Q00326_VanquishRemnants;
import quests.Q00344_1000YearsTheEndOfLamentation.Q00344_1000YearsTheEndOfLamentation;
import quests.Q00350_EnhanceYourWeapon.Q00350_EnhanceYourWeapon;
import quests.Q00357_WarehouseKeepersAmbition.Q00357_WarehouseKeepersAmbition;
import quests.Q00359_ForASleeplessDeadman.Q00359_ForASleeplessDeadman;
@ -296,7 +295,6 @@ public class QuestMasterHandler
Q00307_ControlDeviceOfTheGiants.class,
Q00310_OnlyWhatRemains.class,
Q00326_VanquishRemnants.class,
Q00344_1000YearsTheEndOfLamentation.class,
Q00350_EnhanceYourWeapon.class,
Q00357_WarehouseKeepersAmbition.class,
Q00359_ForASleeplessDeadman.class,

Binary file not shown.

Binary file not shown.

View File

@ -42273,6 +42273,30 @@ DELETE FROM `spawnlist` WHERE (npc_templateid='20151' AND locx='-106766' AND loc
-- Remove old Altar Npcs
DELETE FROM spawnlist WHERE npc_templateid in(4324, 4325, 4327, 4328);
-- Remove Catacomb Ziggurats
DELETE FROM spawnlist WHERE npc_templateid in(
31095, 31096, 31097, 31098, 31099, 31100, 31101,
31102, 31103, 31104, 31105, 31106, 31107, 31108,
31109, 31110, 31114, 31115, 31116, 31117, 31118,
31119, 31120, 31121, 31122, 31123, 31124, 31125);
-- Remove Catacomb Monsters
DELETE FROM spawnlist WHERE npc_templateid in(
21144, 21156, 21208, 21209, 21210, 21211, 21213,
21214, 21215, 21217, 21218, 21219, 21221, 21222,
21223, 21224, 21225, 21226, 21227, 21228, 21229,
21230, 21231, 21236, 21237, 21238, 21239, 21240,
21241, 21242, 21243, 21244, 21245, 21246, 21247,
21248, 21249, 21250, 21251, 21252, 21253, 21254,
21255, 21161, 21204, 21183, 21162, 21205, 21184,
21181, 21158, 21202, 21200, 21179, 21201, 21180,
21198, 21166, 21154, 21155, 21174, 21195, 21148,
21187, 21188, 21167, 21185, 21206, 21163, 21165,
21207, 21186, 21164, 21157, 21182, 21203, 21159,
21176, 21197, 21177, 21153, 21178, 21199, 21152,
21194, 21173, 21151, 21150, 21169, 21190, 21192,
21143, 21171, 21145, 21172, 21146, 21193, 21170, 21191);
-- TI NPC Walkers
INSERT INTO `spawnlist` VALUES ('OldManAndBoy', '1', '33578', '-113894', '257318', '-1131', '0', '0', '58997', '0', '0', '0', '0');
INSERT INTO `spawnlist` VALUES ('Hera', '1', '33208', '-114263', '257326', '-1131', '0', '0', '58070', '0', '0', '0', '0');

View File

@ -19,8 +19,7 @@
package com.l2jserver.gameserver;
import java.util.List;
import javolution.util.FastList;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jserver.Config;
import com.l2jserver.gameserver.enums.ItemLocation;
@ -30,7 +29,7 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
public final class ItemsAutoDestroy
{
private final List<L2ItemInstance> _items = new FastList<>();
private final List<L2ItemInstance> _items = new CopyOnWriteArrayList<>();
protected ItemsAutoDestroy()
{

View File

@ -37,13 +37,11 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import javolution.util.FastList;
import javolution.util.FastMap;
import com.l2jserver.Config;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.model.L2World;
@ -106,7 +104,7 @@ public class LoginServerThread extends Thread
private final boolean _reserveHost;
private int _maxPlayer;
private final List<WaitingClient> _waitingClients;
private final FastMap<String, L2GameClient> _accountsInGameServer = new FastMap<>();
private final ConcurrentHashMap<String, L2GameClient> _accountsInGameServer = new ConcurrentHashMap<>();
private int _status;
private String _serverName;
private final List<String> _subnets;
@ -135,8 +133,7 @@ public class LoginServerThread extends Thread
_reserveHost = Config.RESERVE_HOST_ON_LOGIN;
_subnets = Config.GAME_SERVER_SUBNETS;
_hosts = Config.GAME_SERVER_HOSTS;
_waitingClients = new FastList<>();
_accountsInGameServer.shared();
_waitingClients = new ArrayList<>();
_maxPlayer = Config.MAXIMUM_ONLINE_USERS;
}

View File

@ -21,10 +21,9 @@ package com.l2jserver.gameserver;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger;
import javolution.util.FastMap;
import com.l2jserver.Config;
import com.l2jserver.gameserver.data.xml.impl.RecipeData;
import com.l2jserver.gameserver.datatables.ItemTable;
@ -57,11 +56,10 @@ import com.l2jserver.util.Rnd;
public class RecipeController
{
protected static final FastMap<Integer, RecipeItemMaker> _activeMakers = new FastMap<>();
protected static final ConcurrentHashMap<Integer, RecipeItemMaker> _activeMakers = new ConcurrentHashMap<>();
protected RecipeController()
{
_activeMakers.shared();
}
public void requestBookOpen(L2PcInstance player, boolean isDwarvenCraft)

View File

@ -30,10 +30,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import javolution.util.FastMap;
import javolution.util.FastSet;
import com.l2jserver.Config;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.util.StringUtil;
@ -616,11 +612,6 @@ public class ThreadPoolManager
" |- PoolSize: " + _eventThreadPool.getPoolSize(),
" |- CompletedTasks: " + _eventThreadPool.getCompletedTaskCount(),
" |- QueuedTasks: " + _eventThreadPool.getQueue().size(),
" | -------",
" + Javolution stats:",
" |- FastList: " + FastList.report(),
" |- FastMap: " + FastMap.report(),
" |- FastSet: " + FastSet.report(),
" | -------"
};
}

View File

@ -28,10 +28,9 @@ import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_MOVE_TO;
import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_PICK_UP;
import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_REST;
import java.util.ArrayList;
import java.util.List;
import javolution.util.FastList;
import com.l2jserver.gameserver.GameTimeController;
import com.l2jserver.gameserver.GeoData;
import com.l2jserver.gameserver.ThreadPoolManager;
@ -1205,19 +1204,19 @@ public class L2CharacterAI extends AbstractAI
public boolean isHealer = false;
public boolean isFighter = false;
public boolean cannotMoveOnLand = false;
public List<Skill> generalSkills = new FastList<>();
public List<Skill> buffSkills = new FastList<>();
public List<Skill> generalSkills = new ArrayList<>();
public List<Skill> buffSkills = new ArrayList<>();
public int lastBuffTick = 0;
public List<Skill> debuffSkills = new FastList<>();
public List<Skill> debuffSkills = new ArrayList<>();
public int lastDebuffTick = 0;
public List<Skill> cancelSkills = new FastList<>();
public List<Skill> healSkills = new FastList<>();
// public List<L2Skill> trickSkills = new FastList<>();
public List<Skill> generalDisablers = new FastList<>();
public List<Skill> sleepSkills = new FastList<>();
public List<Skill> rootSkills = new FastList<>();
public List<Skill> muteSkills = new FastList<>();
public List<Skill> resurrectSkills = new FastList<>();
public List<Skill> cancelSkills = new ArrayList<>();
public List<Skill> healSkills = new ArrayList<>();
// public List<L2Skill> trickSkills = new ArrayList<>();
public List<Skill> generalDisablers = new ArrayList<>();
public List<Skill> sleepSkills = new ArrayList<>();
public List<Skill> rootSkills = new ArrayList<>();
public List<Skill> muteSkills = new ArrayList<>();
public List<Skill> resurrectSkills = new ArrayList<>();
public boolean hasHealOrResurrect = false;
public boolean hasLongRangeSkills = false;
public boolean hasLongRangeDamageSkills = false;

View File

@ -21,11 +21,10 @@ package com.l2jserver.gameserver.ai;
import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE;
import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javolution.util.FastList;
import com.l2jserver.gameserver.model.L2Object;
import com.l2jserver.gameserver.model.MobGroup;
import com.l2jserver.gameserver.model.MobGroupTable;
@ -447,7 +446,7 @@ public final class L2ControllableMobAI extends L2AttackableAI
double dy, dx;
double dblAggroRange = aggroRange * aggroRange;
List<L2Character> potentialTarget = new FastList<>();
List<L2Character> potentialTarget = new ArrayList<>();
Collection<L2Object> objs = npc.getKnownList().getKnownObjects().values();
for (L2Object obj : objs)

View File

@ -21,14 +21,13 @@ package com.l2jserver.gameserver.communitybbs.BB;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import javolution.util.FastMap;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.communitybbs.Manager.ForumsBBSManager;
import com.l2jserver.gameserver.communitybbs.Manager.TopicBBSManager;
@ -69,8 +68,8 @@ public class Forum
{
_forumId = Forumid;
_fParent = FParent;
_children = new FastList<>();
_topic = new FastMap<>();
_children = new ArrayList<>();
_topic = new HashMap<>();
}
/**
@ -89,8 +88,8 @@ public class Forum
_forumPerm = perm;
_fParent = parent;
_ownerID = OwnerID;
_children = new FastList<>();
_topic = new FastMap<>();
_children = new ArrayList<>();
_topic = new HashMap<>();
parent._children.add(this);
ForumsBBSManager.getInstance().addForum(this);
_loaded = true;

View File

@ -21,12 +21,11 @@ package com.l2jserver.gameserver.communitybbs.BB;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.communitybbs.Manager.PostBBSManager;
@ -60,7 +59,7 @@ public class Post
*/
public Post(String _PostOwner, int _PostOwnerID, long date, int tid, int _PostForumID, String txt)
{
_post = new FastList<>();
_post = new ArrayList<>();
CPost cp = new CPost();
cp.postId = 0;
cp.postOwner = _PostOwner;
@ -96,7 +95,7 @@ public class Post
public Post(Topic t)
{
_post = new FastList<>();
_post = new ArrayList<>();
load(t);
}

View File

@ -18,10 +18,9 @@
*/
package com.l2jserver.gameserver.communitybbs.Manager;
import java.util.ArrayList;
import java.util.List;
import javolution.util.FastList;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.ShowBoard;
@ -59,7 +58,7 @@ public abstract class BaseBBSManager
*/
protected void send1002(L2PcInstance activeChar, String string, String string2, String string3)
{
List<String> _arg = new FastList<>();
List<String> _arg = new ArrayList<>();
_arg.add("0");
_arg.add("0");
_arg.add("0");

View File

@ -21,12 +21,11 @@ package com.l2jserver.gameserver.communitybbs.Manager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.communitybbs.BB.Forum;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@ -42,7 +41,7 @@ public class ForumsBBSManager extends BaseBBSManager
*/
protected ForumsBBSManager()
{
_table = new FastList<>();
_table = new ArrayList<>();
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
Statement s = con.createStatement();
ResultSet rs = s.executeQuery("SELECT forum_id FROM forums WHERE forum_type = 0"))

View File

@ -20,12 +20,11 @@ package com.l2jserver.gameserver.communitybbs.Manager;
import java.text.DateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.StringTokenizer;
import javolution.util.FastMap;
import com.l2jserver.gameserver.communitybbs.BB.Forum;
import com.l2jserver.gameserver.communitybbs.BB.Post;
import com.l2jserver.gameserver.communitybbs.BB.Post.CPost;
@ -36,7 +35,7 @@ import com.l2jserver.util.StringUtil;
public class PostBBSManager extends BaseBBSManager
{
private final Map<Topic, Post> _postByTopic = new FastMap<>();
private final Map<Topic, Post> _postByTopic = new HashMap<>();
public Post getGPosttByTopic(Topic t)
{

View File

@ -19,14 +19,13 @@
package com.l2jserver.gameserver.communitybbs.Manager;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import javolution.util.FastList;
import javolution.util.FastMap;
import java.util.concurrent.ConcurrentHashMap;
import com.l2jserver.gameserver.communitybbs.BB.Forum;
import com.l2jserver.gameserver.communitybbs.BB.Post;
@ -43,8 +42,8 @@ public class TopicBBSManager extends BaseBBSManager
protected TopicBBSManager()
{
_table = new FastList<>();
_maxId = new FastMap<Forum, Integer>().shared();
_table = new ArrayList<>();
_maxId = new ConcurrentHashMap<>();
}
public void addTopic(Topic tt)

View File

@ -23,10 +23,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import javolution.util.FastMap;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@ -48,7 +47,7 @@ public final class AdminData implements IXmlReader
{
private final Map<Integer, L2AccessLevel> _accessLevels = new HashMap<>();
private final Map<String, L2AdminCommandAccessRight> _adminCommandAccessRights = new HashMap<>();
private final Map<L2PcInstance, Boolean> _gmList = new FastMap<L2PcInstance, Boolean>().shared();
private final Map<L2PcInstance, Boolean> _gmList = new ConcurrentHashMap<>();
private int _highestLevel = 0;
protected AdminData()

View File

@ -78,7 +78,7 @@ import com.l2jserver.gameserver.model.skills.Skill;
*/
public final class SkillTreesData implements IXmlReader
{
// ClassId, FastMap of Skill Hash Code, L2SkillLearn
// ClassId, HashMap of Skill Hash Code, L2SkillLearn
private static final Map<ClassId, Map<Integer, L2SkillLearn>> _classSkillTrees = new HashMap<>();
private static final Map<ClassId, Map<Integer, L2SkillLearn>> _transferSkillTrees = new HashMap<>();
private static final Map<Race, Map<Integer, L2SkillLearn>> _raceSkillTree = new HashMap<>();

View File

@ -18,11 +18,10 @@
*/
package com.l2jserver.gameserver.datatables;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javolution.util.FastList;
import com.l2jserver.gameserver.script.DateRange;
import com.l2jserver.gameserver.script.EventDrop;
@ -37,7 +36,7 @@ public class EventDroplist
/**
* The table containing all DataDrop object
*/
private static final List<DateDrop> _allNpcDateDrops = new FastList<>();
private static final List<DateDrop> _allNpcDateDrops = new ArrayList<>();
public static class DateDrop
{
@ -106,7 +105,7 @@ public class EventDroplist
*/
public List<DateDrop> getAllDrops()
{
final List<DateDrop> list = new FastList<>();
final List<DateDrop> list = new ArrayList<>();
final Date currentDate = new Date();
for (DateDrop drop : _allNpcDateDrops)
{

View File

@ -23,6 +23,7 @@ import static com.l2jserver.gameserver.model.itemcontainer.Inventory.ADENA_ID;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ScheduledFuture;
@ -30,8 +31,6 @@ import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import javolution.util.FastMap;
import com.l2jserver.Config;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.ThreadPoolManager;
@ -61,7 +60,7 @@ public class ItemTable
private static Logger LOGGER = Logger.getLogger(ItemTable.class.getName());
private static Logger LOGGER_ITEMS = Logger.getLogger("item");
public static final Map<String, Integer> _slots = new FastMap<>();
public static final Map<String, Integer> _slots = new HashMap<>();
private L2Item[] _allTemplates;
private final Map<Integer, L2EtcItem> _etcItems;
@ -120,9 +119,9 @@ public class ItemTable
protected ItemTable()
{
_etcItems = new FastMap<>();
_armors = new FastMap<>();
_weapons = new FastMap<>();
_etcItems = new HashMap<>();
_armors = new HashMap<>();
_weapons = new HashMap<>();
load();
}

View File

@ -20,6 +20,7 @@ package com.l2jserver.gameserver.datatables;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -27,8 +28,6 @@ import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javolution.util.FastMap;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
@ -54,7 +53,7 @@ public class MerchantPriceConfigTable implements InstanceListManager
private static final String MPCS_FILE = "MerchantPriceConfig.xml";
private final Map<Integer, MerchantPriceConfig> _mpcs = new FastMap<>();
private final Map<Integer, MerchantPriceConfig> _mpcs = new HashMap<>();
private MerchantPriceConfig _defaultMpc;
public MerchantPriceConfig getMerchantPriceConfig(L2MerchantInstance npc)

View File

@ -26,13 +26,12 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastMap;
import javolution.util.FastSet;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@ -58,7 +57,7 @@ public final class SpawnTable implements IXmlReader
private static final String SELECT_SPAWNS = "SELECT count, npc_templateid, locx, locy, locz, heading, respawn_delay, respawn_random, loc_id, periodOfDay FROM spawnlist";
private static final String SELECT_CUSTOM_SPAWNS = "SELECT count, npc_templateid, locx, locy, locz, heading, respawn_delay, respawn_random, loc_id, periodOfDay FROM custom_spawnlist";
private static final Map<Integer, Set<L2Spawn>> _spawnTable = new FastMap<Integer, Set<L2Spawn>>().shared();
private static final Map<Integer, Set<L2Spawn>> _spawnTable = new ConcurrentHashMap<>();
private int _xmlSpawnCount = 0;
@ -463,7 +462,7 @@ public final class SpawnTable implements IXmlReader
{
if (!_spawnTable.containsKey(spawn.getId()))
{
_spawnTable.put(spawn.getId(), new FastSet<L2Spawn>().shared());
_spawnTable.put(spawn.getId(), new CopyOnWriteArraySet<L2Spawn>());
}
_spawnTable.get(spawn.getId()).add(spawn);
}

View File

@ -20,6 +20,7 @@ package com.l2jserver.gameserver.engines;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@ -30,8 +31,6 @@ import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilderFactory;
import javolution.util.FastMap;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@ -154,7 +153,7 @@ public abstract class DocumentBase
protected DocumentBase(File pFile)
{
_file = pFile;
_tables = new FastMap<>();
_tables = new HashMap<>();
}
public Document parse()
@ -185,7 +184,7 @@ public abstract class DocumentBase
protected void resetTable()
{
_tables = new FastMap<>();
_tables = new HashMap<>();
}
protected void setTable(String name, String[] table)

View File

@ -19,12 +19,11 @@
package com.l2jserver.gameserver.engines;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import javolution.util.FastList;
import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.SkillData;
import com.l2jserver.gameserver.engines.items.DocumentItem;
@ -40,8 +39,8 @@ public class DocumentEngine
{
private static final Logger _log = Logger.getLogger(DocumentEngine.class.getName());
private final List<File> _itemFiles = new FastList<>();
private final List<File> _skillFiles = new FastList<>();
private final List<File> _itemFiles = new ArrayList<>();
private final List<File> _skillFiles = new ArrayList<>();
public static DocumentEngine getInstance()
{
@ -114,7 +113,7 @@ public class DocumentEngine
*/
public List<L2Item> loadItems()
{
List<L2Item> list = new FastList<>();
List<L2Item> list = new ArrayList<>();
for (File f : _itemFiles)
{
DocumentItem document = new DocumentItem(f);

View File

@ -21,11 +21,10 @@ package com.l2jserver.gameserver.engines.items;
import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import javolution.util.FastList;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@ -40,7 +39,7 @@ import com.l2jserver.gameserver.model.items.L2Item;
public final class DocumentItem extends DocumentBase
{
private Item _currentItem = null;
private final List<L2Item> _itemsInFile = new FastList<>();
private final List<L2Item> _itemsInFile = new ArrayList<>();
/**
* @param file

View File

@ -19,11 +19,10 @@
package com.l2jserver.gameserver.engines.skills;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import javolution.util.FastList;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@ -54,12 +53,12 @@ public class DocumentSkill extends DocumentBase
public StatsSet[] enchsets7;
public StatsSet[] enchsets8;
public int currentLevel;
public List<Skill> skills = new FastList<>();
public List<Skill> currentSkills = new FastList<>();
public List<Skill> skills = new ArrayList<>();
public List<Skill> currentSkills = new ArrayList<>();
}
private SkillInfo _currentSkill;
private final List<Skill> _skillsInFile = new FastList<>();
private final List<Skill> _skillsInFile = new ArrayList<>();
public DocumentSkill(File file)
{
@ -1491,7 +1490,7 @@ public class DocumentSkill extends DocumentBase
private void makeSkills()
{
int count = 0;
_currentSkill.currentSkills = new FastList<>(_currentSkill.sets.length + _currentSkill.enchsets1.length + _currentSkill.enchsets2.length + _currentSkill.enchsets3.length + _currentSkill.enchsets4.length + _currentSkill.enchsets5.length + _currentSkill.enchsets6.length + _currentSkill.enchsets7.length + _currentSkill.enchsets8.length);
_currentSkill.currentSkills = new ArrayList<>(_currentSkill.sets.length + _currentSkill.enchsets1.length + _currentSkill.enchsets2.length + _currentSkill.enchsets3.length + _currentSkill.enchsets4.length + _currentSkill.enchsets5.length + _currentSkill.enchsets6.length + _currentSkill.enchsets7.length + _currentSkill.enchsets8.length);
StatsSet set;
for (int i = 0; i < _currentSkill.sets.length; i++)
{

View File

@ -18,10 +18,9 @@
*/
package com.l2jserver.gameserver.instancemanager;
import java.util.HashMap;
import java.util.Map;
import javolution.util.FastMap;
import com.l2jserver.Config;
import com.l2jserver.gameserver.idfactory.IdFactory;
import com.l2jserver.gameserver.model.L2World;
@ -34,7 +33,7 @@ import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
public class BoatManager
{
private final Map<Integer, L2BoatInstance> _boats = new FastMap<>();
private final Map<Integer, L2BoatInstance> _boats = new HashMap<>();
private final boolean[] _docksBusy = new boolean[3];
public static final int TALKING_ISLAND = 1;

View File

@ -21,11 +21,10 @@ package com.l2jserver.gameserver.instancemanager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import javolution.util.FastMap;
import com.l2jserver.Config;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.model.L2Clan;
@ -46,7 +45,7 @@ public final class CHSiegeManager
private static final Logger _log = Logger.getLogger(CHSiegeManager.class.getName());
private static final String SQL_LOAD_HALLS = "SELECT * FROM siegable_clanhall";
private final FastMap<Integer, SiegableHall> _siegableHalls = new FastMap<>();
private final HashMap<Integer, SiegableHall> _siegableHalls = new HashMap<>();
protected CHSiegeManager()
{
@ -87,7 +86,7 @@ public final class CHSiegeManager
}
}
public FastMap<Integer, SiegableHall> getConquerableHalls()
public HashMap<Integer, SiegableHall> getConquerableHalls()
{
return _siegableHalls;
}

View File

@ -22,14 +22,13 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.InstanceListManager;
import com.l2jserver.gameserver.model.L2Clan;
@ -181,7 +180,7 @@ public final class CastleManager implements InstanceListManager
{
if (_castles == null)
{
_castles = new FastList<>();
_castles = new ArrayList<>();
}
return _castles;
}

View File

@ -21,12 +21,11 @@ package com.l2jserver.gameserver.instancemanager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastMap;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
import com.l2jserver.gameserver.model.L2Clan;
@ -48,7 +47,7 @@ public final class ClanHallManager
private final Map<Integer, AuctionableHall> _clanHall;
private final Map<Integer, AuctionableHall> _freeClanHall;
private final Map<Integer, AuctionableHall> _allAuctionableClanHalls;
private static Map<Integer, ClanHall> _allClanHalls = new FastMap<>();
private static Map<Integer, ClanHall> _allClanHalls = new HashMap<>();
private boolean _loaded = false;
public boolean loaded()
@ -58,9 +57,9 @@ public final class ClanHallManager
protected ClanHallManager()
{
_clanHall = new FastMap<>();
_freeClanHall = new FastMap<>();
_allAuctionableClanHalls = new FastMap<>();
_clanHall = new HashMap<>();
_freeClanHall = new HashMap<>();
_allAuctionableClanHalls = new HashMap<>();
load();
}

View File

@ -21,11 +21,10 @@ package com.l2jserver.gameserver.instancemanager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@ -38,7 +37,7 @@ public final class CoupleManager
{
private static final Logger _log = Logger.getLogger(CoupleManager.class.getName());
private FastList<Couple> _couples;
private ArrayList<Couple> _couples;
protected CoupleManager()
{
@ -139,11 +138,11 @@ public final class CoupleManager
return -1;
}
public final FastList<Couple> getCouples()
public final ArrayList<Couple> getCouples()
{
if (_couples == null)
{
_couples = new FastList<>();
_couples = new ArrayList<>();
}
return _couples;
}

View File

@ -19,13 +19,12 @@
package com.l2jserver.gameserver.instancemanager;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastMap;
import com.l2jserver.gameserver.GameTimeController;
import com.l2jserver.gameserver.model.L2Spawn;
import com.l2jserver.gameserver.model.actor.L2Npc;
@ -54,7 +53,7 @@ public final class DayNightSpawnManager
{
_dayCreatures = new ArrayList<>();
_nightCreatures = new ArrayList<>();
_bosses = new FastMap<>();
_bosses = new HashMap<>();
}
public void addDayCreature(L2Spawn spawnDat)

View File

@ -18,10 +18,9 @@
*/
package com.l2jserver.gameserver.instancemanager;
import java.util.ArrayList;
import java.util.List;
import javolution.util.FastList;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.Duel;
import com.l2jserver.gameserver.model.skills.Skill;
@ -34,7 +33,7 @@ public final class DuelManager
protected DuelManager()
{
_duels = new FastList<>();
_duels = new ArrayList<>();
}
private int getNextDuelId()

View File

@ -21,12 +21,11 @@ package com.l2jserver.gameserver.instancemanager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.InstanceListManager;
import com.l2jserver.gameserver.model.L2Clan;
@ -159,7 +158,7 @@ public final class FortManager implements InstanceListManager
{
if (_forts == null)
{
_forts = new FastList<>();
_forts = new ArrayList<>();
}
return _forts;
}

View File

@ -21,12 +21,11 @@ package com.l2jserver.gameserver.instancemanager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import javolution.util.FastMap;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.data.xml.impl.NpcData;
import com.l2jserver.gameserver.model.L2Spawn;
@ -38,7 +37,7 @@ public final class FortSiegeGuardManager
private static final Logger _log = Logger.getLogger(FortSiegeGuardManager.class.getName());
private final Fort _fort;
private final FastMap<Integer, FastList<L2Spawn>> _siegeGuards = new FastMap<>();
private final HashMap<Integer, ArrayList<L2Spawn>> _siegeGuards = new HashMap<>();
public FortSiegeGuardManager(Fort fort)
{
@ -52,7 +51,7 @@ public final class FortSiegeGuardManager
{
try
{
final FastList<L2Spawn> monsterList = getSiegeGuardSpawn().get(getFort().getResidenceId());
final ArrayList<L2Spawn> monsterList = getSiegeGuardSpawn().get(getFort().getResidenceId());
if (monsterList != null)
{
for (L2Spawn spawnDat : monsterList)
@ -82,7 +81,7 @@ public final class FortSiegeGuardManager
{
try
{
final FastList<L2Spawn> monsterList = getSiegeGuardSpawn().get(getFort().getResidenceId());
final ArrayList<L2Spawn> monsterList = getSiegeGuardSpawn().get(getFort().getResidenceId());
if (monsterList != null)
{
@ -115,7 +114,7 @@ public final class FortSiegeGuardManager
ps.setInt(1, fortId);
try (ResultSet rs = ps.executeQuery())
{
FastList<L2Spawn> siegeGuardSpawns = new FastList<>();
ArrayList<L2Spawn> siegeGuardSpawns = new ArrayList<>();
while (rs.next())
{
L2NpcTemplate template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
@ -151,7 +150,7 @@ public final class FortSiegeGuardManager
return _fort;
}
public final FastMap<Integer, FastList<L2Spawn>> getSiegeGuardSpawn()
public final HashMap<Integer, ArrayList<L2Spawn>> getSiegeGuardSpawn()
{
return _siegeGuards;
}

View File

@ -24,15 +24,14 @@ import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import javolution.util.FastMap;
import com.l2jserver.Config;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.model.CombatFlag;
@ -54,8 +53,8 @@ public final class FortSiegeManager
private int _attackerMaxClans = 500; // Max number of clans
// Fort Siege settings
private FastMap<Integer, FastList<FortSiegeSpawn>> _commanderSpawnList;
private FastMap<Integer, FastList<CombatFlag>> _flagList;
private HashMap<Integer, ArrayList<FortSiegeSpawn>> _commanderSpawnList;
private HashMap<Integer, ArrayList<CombatFlag>> _flagList;
private boolean _justToTerritory = true; // Changeable in fortsiege.properties
private int _flagMaxCount = 1; // Changeable in fortsiege.properties
private int _siegeClanMinLevel = 4; // Changeable in fortsiege.properties
@ -138,13 +137,13 @@ public final class FortSiegeManager
_suspiciousMerchantRespawnDelay = Integer.decode(siegeSettings.getProperty("SuspiciousMerchantRespawnDelay", "180"));
// Siege spawns settings
_commanderSpawnList = new FastMap<>();
_flagList = new FastMap<>();
_commanderSpawnList = new HashMap<>();
_flagList = new HashMap<>();
for (Fort fort : FortManager.getInstance().getForts())
{
FastList<FortSiegeSpawn> _commanderSpawns = new FastList<>();
FastList<CombatFlag> _flagSpawns = new FastList<>();
ArrayList<FortSiegeSpawn> _commanderSpawns = new ArrayList<>();
ArrayList<CombatFlag> _flagSpawns = new ArrayList<>();
for (int i = 1; i < 5; i++)
{
final String _spawnParams = siegeSettings.getProperty(fort.getName().replace(" ", "") + "Commander" + i, "");
@ -199,7 +198,7 @@ public final class FortSiegeManager
}
}
public final FastList<FortSiegeSpawn> getCommanderSpawnList(int _fortId)
public final ArrayList<FortSiegeSpawn> getCommanderSpawnList(int _fortId)
{
if (_commanderSpawnList.containsKey(_fortId))
{
@ -208,7 +207,7 @@ public final class FortSiegeManager
return null;
}
public final FastList<CombatFlag> getFlagList(int _fortId)
public final ArrayList<CombatFlag> getFlagList(int _fortId)
{
if (_flagList.containsKey(_fortId))
{
@ -273,7 +272,7 @@ public final class FortSiegeManager
{
if (_sieges == null)
{
_sieges = new FastList<>();
_sieges = new ArrayList<>();
}
return _sieges;
}
@ -282,7 +281,7 @@ public final class FortSiegeManager
{
if (_sieges == null)
{
_sieges = new FastList<>();
_sieges = new ArrayList<>();
}
_sieges.add(fortSiege);
}
@ -301,7 +300,7 @@ public final class FortSiegeManager
final Fort fort = FortManager.getInstance().getFort(player);
final FastList<CombatFlag> fcf = _flagList.get(fort.getResidenceId());
final ArrayList<CombatFlag> fcf = _flagList.get(fort.getResidenceId());
for (CombatFlag cf : fcf)
{
if (cf.getCombatFlagInstance() == item)
@ -349,7 +348,7 @@ public final class FortSiegeManager
{
final Fort fort = FortManager.getInstance().getFortById(fortId);
final FastList<CombatFlag> fcf = _flagList.get(fort.getResidenceId());
final ArrayList<CombatFlag> fcf = _flagList.get(fort.getResidenceId());
for (CombatFlag cf : fcf)
{

Some files were not shown because too many files have changed in this diff Show More