Sync with L2jServer HighFive Feb 15th 2015.
This commit is contained in:
parent
f2d6aedabe
commit
06c765ea63
@ -28,7 +28,6 @@ import com.l2jserver.gameserver.ThreadPoolManager;
|
|||||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||||
import com.l2jserver.gameserver.cache.HtmCache;
|
import com.l2jserver.gameserver.cache.HtmCache;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.enums.ChatType;
|
import com.l2jserver.gameserver.enums.ChatType;
|
||||||
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
|
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
|
||||||
import com.l2jserver.gameserver.instancemanager.ZoneManager;
|
import com.l2jserver.gameserver.instancemanager.ZoneManager;
|
||||||
@ -41,7 +40,6 @@ import com.l2jserver.gameserver.model.actor.L2Character;
|
|||||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
||||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||||
import com.l2jserver.gameserver.model.skills.Skill;
|
import com.l2jserver.gameserver.model.skills.Skill;
|
||||||
@ -117,15 +115,11 @@ public final class Beleth extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
L2NpcTemplate template = NpcData.getInstance().getTemplate(npcId);
|
final L2Spawn spawn = new L2Spawn(npcId);
|
||||||
if (template != null)
|
spawn.setInstanceId(loc.getInstanceId());
|
||||||
{
|
spawn.setLocation(loc);
|
||||||
L2Spawn spawn = new L2Spawn(template);
|
spawn.setAmount(spawn.getAmount() + 1);
|
||||||
spawn.setInstanceId(loc.getInstanceId());
|
return spawn.doSpawn();
|
||||||
spawn.setLocation(loc);
|
|
||||||
spawn.setAmount(spawn.getAmount() + 1);
|
|
||||||
return spawn.doSpawn();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ignored)
|
catch (Exception ignored)
|
||||||
{
|
{
|
||||||
|
@ -18,8 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
package ai.npc;
|
package ai.npc;
|
||||||
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
import com.l2jserver.gameserver.enums.ChatType;
|
import com.l2jserver.gameserver.enums.ChatType;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
@ -38,8 +36,6 @@ import com.l2jserver.gameserver.util.Broadcast;
|
|||||||
*/
|
*/
|
||||||
public abstract class AbstractNpcAI extends Quest
|
public abstract class AbstractNpcAI extends Quest
|
||||||
{
|
{
|
||||||
public final Logger _log = Logger.getLogger(getClass().getSimpleName());
|
|
||||||
|
|
||||||
public AbstractNpcAI(String name, String descr)
|
public AbstractNpcAI(String name, String descr)
|
||||||
{
|
{
|
||||||
super(-1, name, descr);
|
super(-1, name, descr);
|
||||||
|
@ -30,7 +30,6 @@ import org.w3c.dom.Node;
|
|||||||
import com.l2jserver.gameserver.GeoData;
|
import com.l2jserver.gameserver.GeoData;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.xml.IXmlReader;
|
import com.l2jserver.gameserver.data.xml.IXmlReader;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.model.L2Spawn;
|
import com.l2jserver.gameserver.model.L2Spawn;
|
||||||
import com.l2jserver.gameserver.model.L2Territory;
|
import com.l2jserver.gameserver.model.L2Territory;
|
||||||
import com.l2jserver.gameserver.model.Location;
|
import com.l2jserver.gameserver.model.Location;
|
||||||
@ -227,7 +226,7 @@ public class TarBeetleSpawn implements IXmlReader
|
|||||||
final Location location = _zones.get(Rnd.get(_zones.size())).getRandomPoint();
|
final Location location = _zones.get(Rnd.get(_zones.size())).getRandomPoint();
|
||||||
if (location != null)
|
if (location != null)
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(NpcData.getInstance().getTemplate(18804));
|
final L2Spawn spawn = new L2Spawn(18804);
|
||||||
spawn.setHeading(Rnd.get(65535));
|
spawn.setHeading(Rnd.get(65535));
|
||||||
spawn.setX(location.getX());
|
spawn.setX(location.getX());
|
||||||
spawn.setY(location.getY());
|
spawn.setY(location.getY());
|
||||||
|
@ -24,7 +24,6 @@ import java.util.Map.Entry;
|
|||||||
|
|
||||||
import com.l2jserver.gameserver.cache.HtmCache;
|
import com.l2jserver.gameserver.cache.HtmCache;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.model.L2Clan;
|
import com.l2jserver.gameserver.model.L2Clan;
|
||||||
import com.l2jserver.gameserver.model.L2Spawn;
|
import com.l2jserver.gameserver.model.L2Spawn;
|
||||||
import com.l2jserver.gameserver.model.Location;
|
import com.l2jserver.gameserver.model.Location;
|
||||||
@ -65,7 +64,7 @@ public final class FortressOfResistance extends ClanHallSiegeEngine
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_nurka = new L2Spawn(NpcData.getInstance().getTemplate(BLOODY_LORD_NURKA));
|
_nurka = new L2Spawn(BLOODY_LORD_NURKA);
|
||||||
_nurka.setAmount(1);
|
_nurka.setAmount(1);
|
||||||
_nurka.setRespawnDelay(10800);
|
_nurka.setRespawnDelay(10800);
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
|
@ -35,7 +35,6 @@ import com.l2jserver.L2DatabaseFactory;
|
|||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.cache.HtmCache;
|
import com.l2jserver.gameserver.cache.HtmCache;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
import com.l2jserver.gameserver.enums.ChatType;
|
import com.l2jserver.gameserver.enums.ChatType;
|
||||||
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
|
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
|
||||||
@ -715,7 +714,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_gourds[i] = new L2Spawn(NpcData.getInstance().getTemplate(GOURDS[i]));
|
_gourds[i] = new L2Spawn(GOURDS[i]);
|
||||||
_gourds[i].setX(ARENAS[i].getX() + 150);
|
_gourds[i].setX(ARENAS[i].getX() + 150);
|
||||||
_gourds[i].setY(ARENAS[i].getY() + 150);
|
_gourds[i].setY(ARENAS[i].getY() + 150);
|
||||||
_gourds[i].setZ(ARENAS[i].getZ());
|
_gourds[i].setZ(ARENAS[i].getZ());
|
||||||
|
@ -32,7 +32,6 @@ import com.l2jserver.gameserver.ThreadPoolManager;
|
|||||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||||
import com.l2jserver.gameserver.ai.L2SpecialSiegeGuardAI;
|
import com.l2jserver.gameserver.ai.L2SpecialSiegeGuardAI;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.enums.SiegeClanType;
|
import com.l2jserver.gameserver.enums.SiegeClanType;
|
||||||
import com.l2jserver.gameserver.model.L2Clan;
|
import com.l2jserver.gameserver.model.L2Clan;
|
||||||
import com.l2jserver.gameserver.model.L2ClanMember;
|
import com.l2jserver.gameserver.model.L2ClanMember;
|
||||||
@ -43,7 +42,6 @@ import com.l2jserver.gameserver.model.Location;
|
|||||||
import com.l2jserver.gameserver.model.TeleportWhereType;
|
import com.l2jserver.gameserver.model.TeleportWhereType;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.entity.Siegable;
|
import com.l2jserver.gameserver.model.entity.Siegable;
|
||||||
import com.l2jserver.gameserver.model.entity.clanhall.ClanHallSiegeEngine;
|
import com.l2jserver.gameserver.model.entity.clanhall.ClanHallSiegeEngine;
|
||||||
import com.l2jserver.gameserver.model.entity.clanhall.SiegeStatus;
|
import com.l2jserver.gameserver.model.entity.clanhall.SiegeStatus;
|
||||||
@ -629,20 +627,6 @@ public abstract class FlagWar extends ClanHallSiegeEngine
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
L2NpcTemplate mahumTemplate = NpcData.getInstance().getTemplate(data.npc);
|
|
||||||
L2NpcTemplate flagTemplate = NpcData.getInstance().getTemplate(data.flag);
|
|
||||||
|
|
||||||
if (flagTemplate == null)
|
|
||||||
{
|
|
||||||
_log.warning(getName() + ": Flag L2NpcTemplate[" + data.flag + "] does not exist!");
|
|
||||||
throw new NullPointerException();
|
|
||||||
}
|
|
||||||
else if (mahumTemplate == null)
|
|
||||||
{
|
|
||||||
_log.warning(getName() + ": Ally L2NpcTemplate[" + data.npc + "] does not exist!");
|
|
||||||
throw new NullPointerException();
|
|
||||||
}
|
|
||||||
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
if (_firstPhase)
|
if (_firstPhase)
|
||||||
{
|
{
|
||||||
@ -654,13 +638,13 @@ public abstract class FlagWar extends ClanHallSiegeEngine
|
|||||||
}
|
}
|
||||||
Location loc = FLAG_COORDS[index];
|
Location loc = FLAG_COORDS[index];
|
||||||
|
|
||||||
data.flagInstance = new L2Spawn(flagTemplate);
|
data.flagInstance = new L2Spawn(data.flag);
|
||||||
data.flagInstance.setLocation(loc);
|
data.flagInstance.setLocation(loc);
|
||||||
data.flagInstance.setRespawnDelay(10000);
|
data.flagInstance.setRespawnDelay(10000);
|
||||||
data.flagInstance.setAmount(1);
|
data.flagInstance.setAmount(1);
|
||||||
data.flagInstance.init();
|
data.flagInstance.init();
|
||||||
|
|
||||||
data.warrior = new L2Spawn(mahumTemplate);
|
data.warrior = new L2Spawn(data.npc);
|
||||||
data.warrior.setLocation(loc);
|
data.warrior.setLocation(loc);
|
||||||
data.warrior.setRespawnDelay(10000);
|
data.warrior.setRespawnDelay(10000);
|
||||||
data.warrior.setAmount(1);
|
data.warrior.setAmount(1);
|
||||||
|
@ -396,23 +396,21 @@ public class AdminSpawn implements IAdminCommandHandler
|
|||||||
target = activeChar;
|
target = activeChar;
|
||||||
}
|
}
|
||||||
|
|
||||||
L2NpcTemplate template1;
|
L2NpcTemplate template;
|
||||||
if (monsterId.matches("[0-9]*"))
|
if (monsterId.matches("[0-9]*"))
|
||||||
{
|
{
|
||||||
// First parameter was an ID number
|
// First parameter was an ID number
|
||||||
int monsterTemplate = Integer.parseInt(monsterId);
|
template = NpcData.getInstance().getTemplate(Integer.parseInt(monsterId));
|
||||||
template1 = NpcData.getInstance().getTemplate(monsterTemplate);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// First parameter wasn't just numbers so go by name not ID
|
// First parameter wasn't just numbers so go by name not ID
|
||||||
monsterId = monsterId.replace('_', ' ');
|
template = NpcData.getInstance().getTemplateByName(monsterId.replace('_', ' '));
|
||||||
template1 = NpcData.getInstance().getTemplateByName(monsterId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
L2Spawn spawn = new L2Spawn(template1);
|
final L2Spawn spawn = new L2Spawn(template);
|
||||||
if (Config.SAVE_GMSPAWN_ON_CUSTOM)
|
if (Config.SAVE_GMSPAWN_ON_CUSTOM)
|
||||||
{
|
{
|
||||||
spawn.setCustom(true);
|
spawn.setCustom(true);
|
||||||
@ -435,15 +433,15 @@ public class AdminSpawn implements IAdminCommandHandler
|
|||||||
// TODO add checks for GrandBossSpawnManager
|
// TODO add checks for GrandBossSpawnManager
|
||||||
if (RaidBossSpawnManager.getInstance().isDefined(spawn.getId()))
|
if (RaidBossSpawnManager.getInstance().isDefined(spawn.getId()))
|
||||||
{
|
{
|
||||||
activeChar.sendMessage("You cannot spawn another instance of " + template1.getName() + ".");
|
activeChar.sendMessage("You cannot spawn another instance of " + template.getName() + ".");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (RaidBossSpawnManager.getInstance().getValidTemplate(spawn.getId()) != null)
|
if (template.isType("L2RaidBoss"))
|
||||||
{
|
{
|
||||||
spawn.setRespawnMinDelay(43200);
|
spawn.setRespawnMinDelay(43200);
|
||||||
spawn.setRespawnMaxDelay(129600);
|
spawn.setRespawnMaxDelay(129600);
|
||||||
RaidBossSpawnManager.getInstance().addNewSpawn(spawn, 0, template1.getBaseHpMax(), template1.getBaseMpMax(), permanent);
|
RaidBossSpawnManager.getInstance().addNewSpawn(spawn, 0, template.getBaseHpMax(), template.getBaseMpMax(), permanent);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -454,7 +452,7 @@ public class AdminSpawn implements IAdminCommandHandler
|
|||||||
{
|
{
|
||||||
spawn.stopRespawn();
|
spawn.stopRespawn();
|
||||||
}
|
}
|
||||||
activeChar.sendMessage("Created " + template1.getName() + " on " + target.getObjectId());
|
activeChar.sendMessage("Created " + template.getName() + " on " + target.getObjectId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -28,7 +28,6 @@ import java.util.logging.Logger;
|
|||||||
import com.l2jserver.Config;
|
import com.l2jserver.Config;
|
||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
|
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
|
||||||
import com.l2jserver.gameserver.instancemanager.MapRegionManager;
|
import com.l2jserver.gameserver.instancemanager.MapRegionManager;
|
||||||
@ -41,7 +40,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
|
|||||||
import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2RaidBossInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2RaidBossInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
|
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
|
||||||
import com.l2jserver.util.StringUtil;
|
import com.l2jserver.util.StringUtil;
|
||||||
@ -544,15 +542,6 @@ public class AdminTeleport implements IAdminCommandHandler
|
|||||||
{
|
{
|
||||||
L2Npc target = (L2Npc) obj;
|
L2Npc target = (L2Npc) obj;
|
||||||
|
|
||||||
int monsterTemplate = target.getTemplate().getId();
|
|
||||||
L2NpcTemplate template1 = NpcData.getInstance().getTemplate(monsterTemplate);
|
|
||||||
if (template1 == null)
|
|
||||||
{
|
|
||||||
activeChar.sendMessage("Incorrect monster template.");
|
|
||||||
_log.warning("ERROR: NPC " + target.getObjectId() + " has a 'null' template.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
L2Spawn spawn = target.getSpawn();
|
L2Spawn spawn = target.getSpawn();
|
||||||
if (spawn == null)
|
if (spawn == null)
|
||||||
{
|
{
|
||||||
@ -568,9 +557,7 @@ public class AdminTeleport implements IAdminCommandHandler
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// L2MonsterInstance mob = new L2MonsterInstance(monsterTemplate, template1);
|
spawn = new L2Spawn(target.getTemplate().getId());
|
||||||
|
|
||||||
spawn = new L2Spawn(template1);
|
|
||||||
if (Config.SAVE_GMSPAWN_ON_CUSTOM)
|
if (Config.SAVE_GMSPAWN_ON_CUSTOM)
|
||||||
{
|
{
|
||||||
spawn.setCustom(true);
|
spawn.setCustom(true);
|
||||||
@ -592,7 +579,7 @@ public class AdminTeleport implements IAdminCommandHandler
|
|||||||
SpawnTable.getInstance().addNewSpawn(spawn, true);
|
SpawnTable.getInstance().addNewSpawn(spawn, true);
|
||||||
spawn.init();
|
spawn.init();
|
||||||
|
|
||||||
activeChar.sendMessage("Created " + template1.getName() + " on " + target.getObjectId() + ".");
|
activeChar.sendMessage("Created " + target.getTemplate().getName() + " on " + target.getObjectId() + ".");
|
||||||
|
|
||||||
if (Config.DEBUG)
|
if (Config.DEBUG)
|
||||||
{
|
{
|
||||||
@ -621,8 +608,7 @@ public class AdminTeleport implements IAdminCommandHandler
|
|||||||
RaidBossSpawnManager.getInstance().deleteSpawn(spawn, true);
|
RaidBossSpawnManager.getInstance().deleteSpawn(spawn, true);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
L2NpcTemplate template = NpcData.getInstance().getTemplate(target.getId());
|
final L2Spawn spawnDat = new L2Spawn(target.getId());
|
||||||
L2Spawn spawnDat = new L2Spawn(template);
|
|
||||||
if (Config.SAVE_GMSPAWN_ON_CUSTOM)
|
if (Config.SAVE_GMSPAWN_ON_CUSTOM)
|
||||||
{
|
{
|
||||||
spawn.setCustom(true);
|
spawn.setCustom(true);
|
||||||
|
@ -98,7 +98,7 @@ public class QuestLink implements IBypassHandler
|
|||||||
|
|
||||||
for (Quest quest : quests)
|
for (Quest quest : quests)
|
||||||
{
|
{
|
||||||
final QuestState qs = player.getQuestState(quest.getScriptName());
|
final QuestState qs = player.getQuestState(quest.getName());
|
||||||
if ((qs == null) || qs.isCreated())
|
if ((qs == null) || qs.isCreated())
|
||||||
{
|
{
|
||||||
state = quest.isCustomQuest() ? "" : "01";
|
state = quest.isCustomQuest() ? "" : "01";
|
||||||
|
@ -145,7 +145,7 @@ public final class SummonNpc extends AbstractEffect
|
|||||||
L2Spawn spawn;
|
L2Spawn spawn;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
spawn = new L2Spawn(npcTemplate);
|
spawn = new L2Spawn(_npcId);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -28,11 +28,9 @@ import org.w3c.dom.NamedNodeMap;
|
|||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
import com.l2jserver.gameserver.data.xml.IXmlReader;
|
import com.l2jserver.gameserver.data.xml.IXmlReader;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
import com.l2jserver.gameserver.model.L2Spawn;
|
import com.l2jserver.gameserver.model.L2Spawn;
|
||||||
import com.l2jserver.gameserver.model.Location;
|
import com.l2jserver.gameserver.model.Location;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hellbound Spawns parser.
|
* Hellbound Spawns parser.
|
||||||
@ -88,13 +86,6 @@ public final class HellboundSpawns implements IXmlReader
|
|||||||
}
|
}
|
||||||
|
|
||||||
final int npcId = Integer.parseInt(id.getNodeValue());
|
final int npcId = Integer.parseInt(id.getNodeValue());
|
||||||
final L2NpcTemplate template = NpcData.getInstance().getTemplate(npcId);
|
|
||||||
if (template == null)
|
|
||||||
{
|
|
||||||
LOGGER.warning(getClass().getSimpleName() + ": Missing NPC template for ID: " + npcId + "!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Location loc = null;
|
Location loc = null;
|
||||||
int delay = 0;
|
int delay = 0;
|
||||||
int randomInterval = 0;
|
int randomInterval = 0;
|
||||||
@ -129,7 +120,7 @@ public final class HellboundSpawns implements IXmlReader
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(template);
|
final L2Spawn spawn = new L2Spawn(npcId);
|
||||||
spawn.setAmount(1);
|
spawn.setAmount(1);
|
||||||
if (loc == null)
|
if (loc == null)
|
||||||
{
|
{
|
||||||
|
@ -19,10 +19,8 @@
|
|||||||
package instances;
|
package instances;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
import ai.npc.AbstractNpcAI;
|
import ai.npc.AbstractNpcAI;
|
||||||
|
|
||||||
@ -46,8 +44,6 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
|||||||
*/
|
*/
|
||||||
public abstract class AbstractInstance extends AbstractNpcAI
|
public abstract class AbstractInstance extends AbstractNpcAI
|
||||||
{
|
{
|
||||||
public final Logger _log = Logger.getLogger(getClass().getSimpleName());
|
|
||||||
|
|
||||||
public AbstractInstance(String name, String desc)
|
public AbstractInstance(String name, String desc)
|
||||||
{
|
{
|
||||||
super(name, desc);
|
super(name, desc);
|
||||||
@ -181,7 +177,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
|
|
||||||
protected void handleRemoveBuffs(InstanceWorld world)
|
protected void handleRemoveBuffs(InstanceWorld world)
|
||||||
{
|
{
|
||||||
for (Integer objId : world.getAllowed())
|
for (int objId : world.getAllowed())
|
||||||
{
|
{
|
||||||
final L2PcInstance player = L2World.getInstance().getPlayer(objId);
|
final L2PcInstance player = L2World.getInstance().getPlayer(objId);
|
||||||
|
|
||||||
@ -201,8 +197,8 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Spawns group of instance NPC's
|
* Spawns group of instance NPC's
|
||||||
* @param groupName - name of group from XML definition to spawn
|
* @param groupName the name of group from XML definition to spawn
|
||||||
* @param instanceId - ID of instance
|
* @param instanceId the instance ID
|
||||||
* @return list of spawned NPC's
|
* @return list of spawned NPC's
|
||||||
*/
|
*/
|
||||||
protected List<L2Npc> spawnGroup(String groupName, int instanceId)
|
protected List<L2Npc> spawnGroup(String groupName, int instanceId)
|
||||||
@ -211,9 +207,9 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save Reenter time for every player in InstanceWorld.
|
* Sets reenter time for every player in the instance.
|
||||||
* @param world - the InstanceWorld
|
* @param world the instance
|
||||||
* @param time - Time in miliseconds
|
* @param time the time in milliseconds
|
||||||
*/
|
*/
|
||||||
protected void setReenterTime(InstanceWorld world, long time)
|
protected void setReenterTime(InstanceWorld world, long time)
|
||||||
{
|
{
|
||||||
@ -236,8 +232,6 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
private void handleRemoveBuffs(L2PcInstance player, InstanceWorld world)
|
private void handleRemoveBuffs(L2PcInstance player, InstanceWorld world)
|
||||||
{
|
{
|
||||||
final Instance inst = InstanceManager.getInstance().getInstance(world.getInstanceId());
|
final Instance inst = InstanceManager.getInstance().getInstance(world.getInstanceId());
|
||||||
final List<BuffInfo> buffToRemove = new ArrayList<>();
|
|
||||||
|
|
||||||
switch (inst.getRemoveBuffType())
|
switch (inst.getRemoveBuffType())
|
||||||
{
|
{
|
||||||
case ALL:
|
case ALL:
|
||||||
@ -259,7 +253,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
if (!inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
if (!inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
||||||
{
|
{
|
||||||
buffToRemove.add(info);
|
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,7 +263,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
if (!inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
if (!inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
||||||
{
|
{
|
||||||
buffToRemove.add(info);
|
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,7 +275,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
if (!inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
if (!inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
||||||
{
|
{
|
||||||
buffToRemove.add(info);
|
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -293,7 +287,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
if (inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
if (inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
||||||
{
|
{
|
||||||
buffToRemove.add(info);
|
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,7 +297,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
if (inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
if (inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
||||||
{
|
{
|
||||||
buffToRemove.add(info);
|
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -315,17 +309,12 @@ public abstract class AbstractInstance extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
if (inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
if (inst.getBuffExceptionList().contains(info.getSkill().getId()))
|
||||||
{
|
{
|
||||||
buffToRemove.add(info);
|
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (BuffInfo info : buffToRemove)
|
|
||||||
{
|
|
||||||
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -190,7 +190,7 @@ public final class Q00501_ProofOfClanAlliance extends Quest
|
|||||||
{
|
{
|
||||||
if (npc.getSummonedNpcCount() < 4)
|
if (npc.getSummonedNpcCount() < 4)
|
||||||
{
|
{
|
||||||
takeItems(player, ADENA_TO_RESTART_GAME, Inventory.ADENA_ID);
|
takeItems(player, Inventory.ADENA_ID, ADENA_TO_RESTART_GAME);
|
||||||
}
|
}
|
||||||
htmltext = event;
|
htmltext = event;
|
||||||
}
|
}
|
||||||
|
@ -352,7 +352,6 @@
|
|||||||
<set name="price" val="200" />
|
<set name="price" val="200" />
|
||||||
<set name="handler" val="SoulShots" />
|
<set name="handler" val="SoulShots" />
|
||||||
<set name="item_skill" val="9193-1" />
|
<set name="item_skill" val="9193-1" />
|
||||||
<set name="commissionItemType" val="SOULSHOT" />
|
|
||||||
</item>
|
</item>
|
||||||
<item id="17755" name="Human Male Wig - A" additionalName="" type="Armor">
|
<item id="17755" name="Human Male Wig - A" additionalName="" type="Armor">
|
||||||
<set name="icon" val="BranchSys.icon.br_plastic_hair_f_i00" />
|
<set name="icon" val="BranchSys.icon.br_plastic_hair_f_i00" />
|
||||||
|
@ -300,7 +300,6 @@
|
|||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
<set name="handler" val="SpiritShot" />
|
<set name="handler" val="SpiritShot" />
|
||||||
<set name="item_skill" val="9194-1" />
|
<set name="item_skill" val="9194-1" />
|
||||||
<set name="commissionItemType" val="SPIRITSHOT" />
|
|
||||||
</item>
|
</item>
|
||||||
<item id="19442" name="Blessed Spiritshot (R-grade)" additionalName="" type="EtcItem">
|
<item id="19442" name="Blessed Spiritshot (R-grade)" additionalName="" type="EtcItem">
|
||||||
<!-- The power of a higher-level spirit is bestowed upon a weapon, temporarily increasing its M. Atk. significantly. Can be used with an R-grade weapon. -->
|
<!-- The power of a higher-level spirit is bestowed upon a weapon, temporarily increasing its M. Atk. significantly. Can be used with an R-grade weapon. -->
|
||||||
@ -314,7 +313,6 @@
|
|||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
<set name="handler" val="BlessedSpiritShot" />
|
<set name="handler" val="BlessedSpiritShot" />
|
||||||
<set name="item_skill" val="9195-1" />
|
<set name="item_skill" val="9195-1" />
|
||||||
<set name="commissionItemType" val="SPIRITSHOT" />
|
|
||||||
</item>
|
</item>
|
||||||
<item id="19443" name="Orichalcum Bolt" additionalName="" type="EtcItem">
|
<item id="19443" name="Orichalcum Bolt" additionalName="" type="EtcItem">
|
||||||
<!-- Bolt made of Orichalcum. Used as bolts for R-grade Crossbows. -->
|
<!-- Bolt made of Orichalcum. Used as bolts for R-grade Crossbows. -->
|
||||||
|
@ -100,7 +100,6 @@
|
|||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
<set name="handler" val="BlessedSpiritShot" />
|
<set name="handler" val="BlessedSpiritShot" />
|
||||||
<set name="item_skill" val="9195-1" />
|
<set name="item_skill" val="9195-1" />
|
||||||
<set name="commissionItemType" val="SPIRITSHOT" />
|
|
||||||
</item>
|
</item>
|
||||||
<item id="34617" name="Player Commendation - Agathion's Gift" additionalName="PC-exclusive" type="EtcItem">
|
<item id="34617" name="Player Commendation - Agathion's Gift" additionalName="PC-exclusive" type="EtcItem">
|
||||||
<!-- When used, you can receive an Agathion's gift. -->
|
<!-- When used, you can receive an Agathion's gift. -->
|
||||||
|
@ -1410,21 +1410,24 @@
|
|||||||
<set name="hitTime" val="20000" />
|
<set name="hitTime" val="20000" />
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="9193" levels="1" name="Soulshot (R-grade)">
|
<skill id="9193" levels="1" name="Soulshot (R-grade)">
|
||||||
<!-- AUTO GENERATED SKILL -->
|
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||||
<set name="icon" val="icon.skill0000" />
|
<set name="magicLvl" val="1" />
|
||||||
<set name="operateType" val="ACTIVE_INSTANT" />
|
<set name="operateType" val="ACTIVE_INSTANT" />
|
||||||
|
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
|
||||||
<set name="targetType" val="SELF" />
|
<set name="targetType" val="SELF" />
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="9194" levels="1" name="Spiritshot (R-grade)">
|
<skill id="9194" levels="1" name="Spiritshot (R-grade)">
|
||||||
<!-- AUTO GENERATED SKILL -->
|
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||||
<set name="icon" val="icon.skill0000" />
|
<set name="magicLvl" val="1" />
|
||||||
<set name="operateType" val="ACTIVE_INSTANT" />
|
<set name="operateType" val="ACTIVE_INSTANT" />
|
||||||
|
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
|
||||||
<set name="targetType" val="SELF" />
|
<set name="targetType" val="SELF" />
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="9195" levels="1" name="Blessed Spiritshot (R-grade)">
|
<skill id="9195" levels="1" name="Blessed Spiritshot (R-grade)">
|
||||||
<!-- AUTO GENERATED SKILL -->
|
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||||
<set name="icon" val="icon.skill0000" />
|
<set name="magicLvl" val="1" />
|
||||||
<set name="operateType" val="ACTIVE_INSTANT" />
|
<set name="operateType" val="ACTIVE_INSTANT" />
|
||||||
|
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
|
||||||
<set name="targetType" val="SELF" />
|
<set name="targetType" val="SELF" />
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="9196" levels="1" name="Blessed Scroll: Enchant Armor (R-grade)">
|
<skill id="9196" levels="1" name="Blessed Scroll: Enchant Armor (R-grade)">
|
||||||
|
@ -83,6 +83,11 @@ public final class SpawnTable implements IXmlReader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifies if the template exists and it's spawnable.
|
||||||
|
* @param npcId the NPC ID
|
||||||
|
* @return {@code true} if the NPC ID belongs to an spawnable tempalte, {@code false} otherwise
|
||||||
|
*/
|
||||||
private boolean checkTemplate(int npcId)
|
private boolean checkTemplate(int npcId)
|
||||||
{
|
{
|
||||||
L2NpcTemplate npcTemplate = NpcData.getInstance().getTemplate(npcId);
|
L2NpcTemplate npcTemplate = NpcData.getInstance().getTemplate(npcId);
|
||||||
@ -297,7 +302,7 @@ public final class SpawnTable implements IXmlReader
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
spawnDat = new L2Spawn(NpcData.getInstance().getTemplate(spawnInfo.getInt("npcTemplateid")));
|
spawnDat = new L2Spawn(spawnInfo.getInt("npcTemplateid"));
|
||||||
spawnDat.setAmount(spawnInfo.getInt("count", 1));
|
spawnDat.setAmount(spawnInfo.getInt("count", 1));
|
||||||
spawnDat.setX(spawnInfo.getInt("x", 0));
|
spawnDat.setX(spawnInfo.getInt("x", 0));
|
||||||
spawnDat.setY(spawnInfo.getInt("y", 0));
|
spawnDat.setY(spawnInfo.getInt("y", 0));
|
||||||
|
@ -27,9 +27,7 @@ import java.util.logging.Level;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.model.L2Spawn;
|
import com.l2jserver.gameserver.model.L2Spawn;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.entity.Fort;
|
import com.l2jserver.gameserver.model.entity.Fort;
|
||||||
|
|
||||||
public final class FortSiegeGuardManager
|
public final class FortSiegeGuardManager
|
||||||
@ -117,24 +115,16 @@ public final class FortSiegeGuardManager
|
|||||||
ArrayList<L2Spawn> siegeGuardSpawns = new ArrayList<>();
|
ArrayList<L2Spawn> siegeGuardSpawns = new ArrayList<>();
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
L2NpcTemplate template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
|
final L2Spawn spawn = new L2Spawn(rs.getInt("npcId"));
|
||||||
if (template != null)
|
spawn.setAmount(1);
|
||||||
{
|
spawn.setX(rs.getInt("x"));
|
||||||
L2Spawn spawn = new L2Spawn(template);
|
spawn.setY(rs.getInt("y"));
|
||||||
spawn.setAmount(1);
|
spawn.setZ(rs.getInt("z"));
|
||||||
spawn.setX(rs.getInt("x"));
|
spawn.setHeading(rs.getInt("heading"));
|
||||||
spawn.setY(rs.getInt("y"));
|
spawn.setRespawnDelay(rs.getInt("respawnDelay"));
|
||||||
spawn.setZ(rs.getInt("z"));
|
spawn.setLocationId(0);
|
||||||
spawn.setHeading(rs.getInt("heading"));
|
|
||||||
spawn.setRespawnDelay(rs.getInt("respawnDelay"));
|
siegeGuardSpawns.add(spawn);
|
||||||
spawn.setLocationId(0);
|
|
||||||
|
|
||||||
siegeGuardSpawns.add(spawn);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("Missing npc data in npc table for ID: " + rs.getInt("npcId"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
_siegeGuards.put(fortId, siegeGuardSpawns);
|
_siegeGuards.put(fortId, siegeGuardSpawns);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,6 @@ import com.l2jserver.Config;
|
|||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
import com.l2jserver.gameserver.instancemanager.tasks.FourSepulchersChangeAttackTimeTask;
|
import com.l2jserver.gameserver.instancemanager.tasks.FourSepulchersChangeAttackTimeTask;
|
||||||
import com.l2jserver.gameserver.instancemanager.tasks.FourSepulchersChangeCoolDownTimeTask;
|
import com.l2jserver.gameserver.instancemanager.tasks.FourSepulchersChangeCoolDownTimeTask;
|
||||||
@ -48,7 +47,6 @@ import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
|||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2SepulcherMonsterInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2SepulcherMonsterInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2SepulcherNpcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2SepulcherNpcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jserver.gameserver.model.quest.Quest;
|
import com.l2jserver.gameserver.model.quest.Quest;
|
||||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||||
@ -276,25 +274,14 @@ public final class FourSepulchersManager
|
|||||||
{
|
{
|
||||||
_managers = new ArrayList<>();
|
_managers = new ArrayList<>();
|
||||||
|
|
||||||
int i = 31921;
|
for (int npcId = 31921; npcId <= 31924; npcId++)
|
||||||
for (L2Spawn spawnDat; i <= 31924; i++)
|
|
||||||
{
|
{
|
||||||
if ((i < 31921) || (i > 31924))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
L2NpcTemplate template1 = NpcData.getInstance().getTemplate(i);
|
|
||||||
if (template1 == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
spawnDat = new L2Spawn(template1);
|
final L2Spawn spawnDat = new L2Spawn(npcId);
|
||||||
|
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setAmount(1);
|
||||||
spawnDat.setRespawnDelay(60);
|
spawnDat.setRespawnDelay(60);
|
||||||
switch (i)
|
switch (npcId)
|
||||||
{
|
{
|
||||||
case 31921: // conquerors
|
case 31921: // conquerors
|
||||||
spawnDat.setX(181061);
|
spawnDat.setX(181061);
|
||||||
@ -427,29 +414,18 @@ public final class FourSepulchersManager
|
|||||||
ps.setInt(1, 0);
|
ps.setInt(1, 0);
|
||||||
try (ResultSet rs = ps.executeQuery())
|
try (ResultSet rs = ps.executeQuery())
|
||||||
{
|
{
|
||||||
|
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template1;
|
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
template1 = NpcData.getInstance().getTemplate(rs.getInt("npc_templateid"));
|
final L2Spawn spawnDat = new L2Spawn(rs.getInt("npc_templateid"));
|
||||||
if (template1 != null)
|
spawnDat.setAmount(rs.getInt("count"));
|
||||||
{
|
spawnDat.setX(rs.getInt("locx"));
|
||||||
spawnDat = new L2Spawn(template1);
|
spawnDat.setY(rs.getInt("locy"));
|
||||||
spawnDat.setAmount(rs.getInt("count"));
|
spawnDat.setZ(rs.getInt("locz"));
|
||||||
spawnDat.setX(rs.getInt("locx"));
|
spawnDat.setHeading(rs.getInt("heading"));
|
||||||
spawnDat.setY(rs.getInt("locy"));
|
spawnDat.setRespawnDelay(rs.getInt("respawn_delay"));
|
||||||
spawnDat.setZ(rs.getInt("locz"));
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(rs.getInt("heading"));
|
int keyNpcId = rs.getInt("key_npc_id");
|
||||||
spawnDat.setRespawnDelay(rs.getInt("respawn_delay"));
|
_mysteriousBoxSpawns.put(keyNpcId, spawnDat);
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
int keyNpcId = rs.getInt("key_npc_id");
|
|
||||||
_mysteriousBoxSpawns.put(keyNpcId, spawnDat);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FourSepulchersManager.LoadMysteriousBox: Data missing in NPC table for ID: " + rs.getInt("npc_templateid") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_log.info(getClass().getSimpleName() + ": loaded " + _mysteriousBoxSpawns.size() + " Mysterious-Box spawns.");
|
_log.info(getClass().getSimpleName() + ": loaded " + _mysteriousBoxSpawns.size() + " Mysterious-Box spawns.");
|
||||||
@ -463,29 +439,19 @@ public final class FourSepulchersManager
|
|||||||
|
|
||||||
private void initKeyBoxSpawns()
|
private void initKeyBoxSpawns()
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template;
|
|
||||||
for (Entry<Integer, Integer> keyNpc : _keyBoxNpc.entrySet())
|
for (Entry<Integer, Integer> keyNpc : _keyBoxNpc.entrySet())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
template = NpcData.getInstance().getTemplate(keyNpc.getValue());
|
final L2Spawn spawnDat = new L2Spawn(keyNpc.getValue());
|
||||||
if (template != null)
|
spawnDat.setAmount(1);
|
||||||
{
|
spawnDat.setX(0);
|
||||||
spawnDat = new L2Spawn(template);
|
spawnDat.setY(0);
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setZ(0);
|
||||||
spawnDat.setX(0);
|
spawnDat.setHeading(0);
|
||||||
spawnDat.setY(0);
|
spawnDat.setRespawnDelay(3600);
|
||||||
spawnDat.setZ(0);
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(0);
|
_keyBoxSpawns.put(keyNpc.getKey(), spawnDat);
|
||||||
spawnDat.setRespawnDelay(3600);
|
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
_keyBoxSpawns.put(keyNpc.getKey(), spawnDat);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FourSepulchersManager.InitKeyBoxSpawns: Data missing in NPC table for ID: " + keyNpc.getValue() + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@ -506,8 +472,6 @@ public final class FourSepulchersManager
|
|||||||
try (ResultSet rs1 = ps1.executeQuery();
|
try (ResultSet rs1 = ps1.executeQuery();
|
||||||
PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist Where key_npc_id = ? and spawntype = ? ORDER BY id"))
|
PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist Where key_npc_id = ? and spawntype = ? ORDER BY id"))
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template1;
|
|
||||||
while (rs1.next())
|
while (rs1.next())
|
||||||
{
|
{
|
||||||
int keyNpcId = rs1.getInt("key_npc_id");
|
int keyNpcId = rs1.getInt("key_npc_id");
|
||||||
@ -519,24 +483,16 @@ public final class FourSepulchersManager
|
|||||||
_physicalSpawns = new ArrayList<>();
|
_physicalSpawns = new ArrayList<>();
|
||||||
while (rs2.next())
|
while (rs2.next())
|
||||||
{
|
{
|
||||||
template1 = NpcData.getInstance().getTemplate(rs2.getInt("npc_templateid"));
|
final L2Spawn spawnDat = new L2Spawn(rs2.getInt("npc_templateid"));
|
||||||
if (template1 != null)
|
spawnDat.setAmount(rs2.getInt("count"));
|
||||||
{
|
spawnDat.setX(rs2.getInt("locx"));
|
||||||
spawnDat = new L2Spawn(template1);
|
spawnDat.setY(rs2.getInt("locy"));
|
||||||
spawnDat.setAmount(rs2.getInt("count"));
|
spawnDat.setZ(rs2.getInt("locz"));
|
||||||
spawnDat.setX(rs2.getInt("locx"));
|
spawnDat.setHeading(rs2.getInt("heading"));
|
||||||
spawnDat.setY(rs2.getInt("locy"));
|
spawnDat.setRespawnDelay(rs2.getInt("respawn_delay"));
|
||||||
spawnDat.setZ(rs2.getInt("locz"));
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(rs2.getInt("heading"));
|
_physicalSpawns.add(spawnDat);
|
||||||
spawnDat.setRespawnDelay(rs2.getInt("respawn_delay"));
|
loaded++;
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
_physicalSpawns.add(spawnDat);
|
|
||||||
loaded++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FourSepulchersManager.LoadPhysicalMonsters: Data missing in NPC table for ID: " + rs2.getInt("npc_templateid") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ps2.clearParameters();
|
ps2.clearParameters();
|
||||||
@ -563,8 +519,6 @@ public final class FourSepulchersManager
|
|||||||
try (ResultSet rs1 = ps1.executeQuery();
|
try (ResultSet rs1 = ps1.executeQuery();
|
||||||
PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? AND spawntype = ? ORDER BY id"))
|
PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? AND spawntype = ? ORDER BY id"))
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template1;
|
|
||||||
while (rs1.next())
|
while (rs1.next())
|
||||||
{
|
{
|
||||||
int keyNpcId = rs1.getInt("key_npc_id");
|
int keyNpcId = rs1.getInt("key_npc_id");
|
||||||
@ -577,24 +531,16 @@ public final class FourSepulchersManager
|
|||||||
|
|
||||||
while (rset2.next())
|
while (rset2.next())
|
||||||
{
|
{
|
||||||
template1 = NpcData.getInstance().getTemplate(rset2.getInt("npc_templateid"));
|
final L2Spawn spawnDat = new L2Spawn(rset2.getInt("npc_templateid"));
|
||||||
if (template1 != null)
|
spawnDat.setAmount(rset2.getInt("count"));
|
||||||
{
|
spawnDat.setX(rset2.getInt("locx"));
|
||||||
spawnDat = new L2Spawn(template1);
|
spawnDat.setY(rset2.getInt("locy"));
|
||||||
spawnDat.setAmount(rset2.getInt("count"));
|
spawnDat.setZ(rset2.getInt("locz"));
|
||||||
spawnDat.setX(rset2.getInt("locx"));
|
spawnDat.setHeading(rset2.getInt("heading"));
|
||||||
spawnDat.setY(rset2.getInt("locy"));
|
spawnDat.setRespawnDelay(rset2.getInt("respawn_delay"));
|
||||||
spawnDat.setZ(rset2.getInt("locz"));
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(rset2.getInt("heading"));
|
_magicalSpawns.add(spawnDat);
|
||||||
spawnDat.setRespawnDelay(rset2.getInt("respawn_delay"));
|
loaded++;
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
_magicalSpawns.add(spawnDat);
|
|
||||||
loaded++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FourSepulchersManager.LoadMagicalMonsters: Data missing in NPC table for ID: " + rset2.getInt("npc_templateid") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ps2.clearParameters();
|
ps2.clearParameters();
|
||||||
@ -622,8 +568,6 @@ public final class FourSepulchersManager
|
|||||||
try (ResultSet rs1 = ps1.executeQuery();
|
try (ResultSet rs1 = ps1.executeQuery();
|
||||||
PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? AND spawntype = ? ORDER BY id"))
|
PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? AND spawntype = ? ORDER BY id"))
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template1;
|
|
||||||
while (rs1.next())
|
while (rs1.next())
|
||||||
{
|
{
|
||||||
int keyNpcId = rs1.getInt("key_npc_id");
|
int keyNpcId = rs1.getInt("key_npc_id");
|
||||||
@ -638,24 +582,16 @@ public final class FourSepulchersManager
|
|||||||
|
|
||||||
while (rset2.next())
|
while (rset2.next())
|
||||||
{
|
{
|
||||||
template1 = NpcData.getInstance().getTemplate(rset2.getInt("npc_templateid"));
|
final L2Spawn spawnDat = new L2Spawn(rset2.getInt("npc_templateid"));
|
||||||
if (template1 != null)
|
spawnDat.setAmount(rset2.getInt("count"));
|
||||||
{
|
spawnDat.setX(rset2.getInt("locx"));
|
||||||
spawnDat = new L2Spawn(template1);
|
spawnDat.setY(rset2.getInt("locy"));
|
||||||
spawnDat.setAmount(rset2.getInt("count"));
|
spawnDat.setZ(rset2.getInt("locz"));
|
||||||
spawnDat.setX(rset2.getInt("locx"));
|
spawnDat.setHeading(rset2.getInt("heading"));
|
||||||
spawnDat.setY(rset2.getInt("locy"));
|
spawnDat.setRespawnDelay(rset2.getInt("respawn_delay"));
|
||||||
spawnDat.setZ(rset2.getInt("locz"));
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(rset2.getInt("heading"));
|
_dukeFinalSpawns.add(spawnDat);
|
||||||
spawnDat.setRespawnDelay(rset2.getInt("respawn_delay"));
|
loaded++;
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
_dukeFinalSpawns.add(spawnDat);
|
|
||||||
loaded++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FourSepulchersManager.LoadDukeMonsters: Data missing in NPC table for ID: " + rset2.getInt("npc_templateid") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ps2.clearParameters();
|
ps2.clearParameters();
|
||||||
@ -683,8 +619,6 @@ public final class FourSepulchersManager
|
|||||||
try (ResultSet rs1 = ps1.executeQuery();
|
try (ResultSet rs1 = ps1.executeQuery();
|
||||||
PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? and spawntype = ? ORDER BY id"))
|
PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? and spawntype = ? ORDER BY id"))
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template1;
|
|
||||||
while (rs1.next())
|
while (rs1.next())
|
||||||
{
|
{
|
||||||
int keyNpcId = rs1.getInt("key_npc_id");
|
int keyNpcId = rs1.getInt("key_npc_id");
|
||||||
@ -697,24 +631,16 @@ public final class FourSepulchersManager
|
|||||||
|
|
||||||
while (rs2.next())
|
while (rs2.next())
|
||||||
{
|
{
|
||||||
template1 = NpcData.getInstance().getTemplate(rs2.getInt("npc_templateid"));
|
final L2Spawn spawnDat = new L2Spawn(rs2.getInt("npc_templateid"));
|
||||||
if (template1 != null)
|
spawnDat.setAmount(rs2.getInt("count"));
|
||||||
{
|
spawnDat.setX(rs2.getInt("locx"));
|
||||||
spawnDat = new L2Spawn(template1);
|
spawnDat.setY(rs2.getInt("locy"));
|
||||||
spawnDat.setAmount(rs2.getInt("count"));
|
spawnDat.setZ(rs2.getInt("locz"));
|
||||||
spawnDat.setX(rs2.getInt("locx"));
|
spawnDat.setHeading(rs2.getInt("heading"));
|
||||||
spawnDat.setY(rs2.getInt("locy"));
|
spawnDat.setRespawnDelay(rs2.getInt("respawn_delay"));
|
||||||
spawnDat.setZ(rs2.getInt("locz"));
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(rs2.getInt("heading"));
|
_emperorsGraveSpawns.add(spawnDat);
|
||||||
spawnDat.setRespawnDelay(rs2.getInt("respawn_delay"));
|
loaded++;
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
_emperorsGraveSpawns.add(spawnDat);
|
|
||||||
loaded++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FourSepulchersManager.LoadEmperorsGraveMonsters: Data missing in NPC table for ID: " + rs2.getInt("npc_templateid") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ps2.clearParameters();
|
ps2.clearParameters();
|
||||||
@ -740,66 +666,43 @@ public final class FourSepulchersManager
|
|||||||
31944
|
31944
|
||||||
};
|
};
|
||||||
|
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template;
|
|
||||||
|
|
||||||
_shadowSpawns.clear();
|
_shadowSpawns.clear();
|
||||||
|
|
||||||
for (int i = 0; i <= 3; i++)
|
for (int i = 0; i <= 3; i++)
|
||||||
{
|
{
|
||||||
template = NpcData.getInstance().getTemplate(_shadowSpawnLoc[locNo][i][0]);
|
try
|
||||||
if (template != null)
|
|
||||||
{
|
{
|
||||||
try
|
final L2Spawn spawnDat = new L2Spawn(_shadowSpawnLoc[locNo][i][0]);
|
||||||
{
|
spawnDat.setAmount(1);
|
||||||
spawnDat = new L2Spawn(template);
|
spawnDat.setX(_shadowSpawnLoc[locNo][i][1]);
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setY(_shadowSpawnLoc[locNo][i][2]);
|
||||||
spawnDat.setX(_shadowSpawnLoc[locNo][i][1]);
|
spawnDat.setZ(_shadowSpawnLoc[locNo][i][3]);
|
||||||
spawnDat.setY(_shadowSpawnLoc[locNo][i][2]);
|
spawnDat.setHeading(_shadowSpawnLoc[locNo][i][4]);
|
||||||
spawnDat.setZ(_shadowSpawnLoc[locNo][i][3]);
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(_shadowSpawnLoc[locNo][i][4]);
|
_shadowSpawns.put(gateKeeper[i], spawnDat);
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
int keyNpcId = gateKeeper[i];
|
|
||||||
_shadowSpawns.put(keyNpcId, spawnDat);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_log.log(Level.SEVERE, "Error on InitLocationShadowSpawns", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning("FourSepulchersManager.InitLocationShadowSpawns: Data missing in NPC table for ID: " + _shadowSpawnLoc[locNo][i][0] + ".");
|
_log.log(Level.SEVERE, "Error on InitLocationShadowSpawns", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void initExecutionerSpawns()
|
protected void initExecutionerSpawns()
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template;
|
|
||||||
|
|
||||||
for (int keyNpcId : _victim.keySet())
|
for (int keyNpcId : _victim.keySet())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
template = NpcData.getInstance().getTemplate(_victim.get(keyNpcId));
|
final L2Spawn spawnDat = new L2Spawn(_victim.get(keyNpcId));
|
||||||
if (template != null)
|
spawnDat.setAmount(1);
|
||||||
{
|
spawnDat.setX(0);
|
||||||
spawnDat = new L2Spawn(template);
|
spawnDat.setY(0);
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setZ(0);
|
||||||
spawnDat.setX(0);
|
spawnDat.setHeading(0);
|
||||||
spawnDat.setY(0);
|
spawnDat.setRespawnDelay(3600);
|
||||||
spawnDat.setZ(0);
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(0);
|
_executionerSpawns.put(keyNpcId, spawnDat);
|
||||||
spawnDat.setRespawnDelay(3600);
|
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
_executionerSpawns.put(keyNpcId, spawnDat);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FourSepulchersManager.InitExecutionerSpawns: Data missing in NPC table for ID: " + _victim.get(keyNpcId) + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@ -1183,7 +1086,6 @@ public final class FourSepulchersManager
|
|||||||
|
|
||||||
List<L2Spawn> monsterList;
|
List<L2Spawn> monsterList;
|
||||||
List<L2SepulcherMonsterInstance> mobs = new ArrayList<>();
|
List<L2SepulcherMonsterInstance> mobs = new ArrayList<>();
|
||||||
L2Spawn keyBoxMobSpawn;
|
|
||||||
|
|
||||||
if (Rnd.get(2) == 0)
|
if (Rnd.get(2) == 0)
|
||||||
{
|
{
|
||||||
@ -1229,21 +1131,13 @@ public final class FourSepulchersManager
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
L2NpcTemplate template = NpcData.getInstance().getTemplate(18149);
|
final L2Spawn keyBoxMobSpawn = new L2Spawn(18149);
|
||||||
if (template != null)
|
keyBoxMobSpawn.setAmount(1);
|
||||||
{
|
keyBoxMobSpawn.setLocation(spawnDat.getLocation());
|
||||||
keyBoxMobSpawn = new L2Spawn(template);
|
keyBoxMobSpawn.setRespawnDelay(3600);
|
||||||
keyBoxMobSpawn.setAmount(1);
|
SpawnTable.getInstance().addNewSpawn(keyBoxMobSpawn, false);
|
||||||
keyBoxMobSpawn.setLocation(spawnDat.getLocation());
|
mob = (L2SepulcherMonsterInstance) keyBoxMobSpawn.doSpawn();
|
||||||
keyBoxMobSpawn.setRespawnDelay(3600);
|
keyBoxMobSpawn.stopRespawn();
|
||||||
SpawnTable.getInstance().addNewSpawn(keyBoxMobSpawn, false);
|
|
||||||
mob = (L2SepulcherMonsterInstance) keyBoxMobSpawn.doSpawn();
|
|
||||||
keyBoxMobSpawn.stopRespawn();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FourSepulchersManager.SpawnMonster: Data missing in NPC table for ID: 18149");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -32,12 +32,10 @@ import java.util.logging.Logger;
|
|||||||
import com.l2jserver.Config;
|
import com.l2jserver.Config;
|
||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
import com.l2jserver.gameserver.model.L2Spawn;
|
import com.l2jserver.gameserver.model.L2Spawn;
|
||||||
import com.l2jserver.gameserver.model.StatsSet;
|
import com.l2jserver.gameserver.model.StatsSet;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2RaidBossInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2RaidBossInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.util.Rnd;
|
import com.l2jserver.util.Rnd;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,29 +80,17 @@ public class RaidBossSpawnManager
|
|||||||
PreparedStatement statement = con.prepareStatement("SELECT * FROM raidboss_spawnlist ORDER BY boss_id");
|
PreparedStatement statement = con.prepareStatement("SELECT * FROM raidboss_spawnlist ORDER BY boss_id");
|
||||||
ResultSet rset = statement.executeQuery())
|
ResultSet rset = statement.executeQuery())
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template;
|
|
||||||
long respawnTime;
|
|
||||||
while (rset.next())
|
while (rset.next())
|
||||||
{
|
{
|
||||||
template = getValidTemplate(rset.getInt("boss_id"));
|
final L2Spawn spawnDat = new L2Spawn(rset.getInt("boss_id"));
|
||||||
if (template != null)
|
spawnDat.setX(rset.getInt("loc_x"));
|
||||||
{
|
spawnDat.setY(rset.getInt("loc_y"));
|
||||||
spawnDat = new L2Spawn(template);
|
spawnDat.setZ(rset.getInt("loc_z"));
|
||||||
spawnDat.setX(rset.getInt("loc_x"));
|
spawnDat.setAmount(rset.getInt("amount"));
|
||||||
spawnDat.setY(rset.getInt("loc_y"));
|
spawnDat.setHeading(rset.getInt("heading"));
|
||||||
spawnDat.setZ(rset.getInt("loc_z"));
|
spawnDat.setRespawnDelay(rset.getInt("respawn_delay"), rset.getInt("respawn_random"));
|
||||||
spawnDat.setAmount(rset.getInt("amount"));
|
|
||||||
spawnDat.setHeading(rset.getInt("heading"));
|
addNewSpawn(spawnDat, rset.getLong("respawn_time"), rset.getDouble("currentHP"), rset.getDouble("currentMP"), false);
|
||||||
spawnDat.setRespawnDelay(rset.getInt("respawn_delay"), rset.getInt("respawn_random"));
|
|
||||||
respawnTime = rset.getLong("respawn_time");
|
|
||||||
|
|
||||||
addNewSpawn(spawnDat, respawnTime, rset.getDouble("currentHP"), rset.getDouble("currentMP"), false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning(getClass().getSimpleName() + ": Could not load raidboss #" + rset.getInt("boss_id") + " from DB");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_log.info(getClass().getSimpleName() + ": Loaded " + _bosses.size() + " Instances");
|
_log.info(getClass().getSimpleName() + ": Loaded " + _bosses.size() + " Instances");
|
||||||
@ -481,25 +467,6 @@ public class RaidBossSpawnManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the valid template.
|
|
||||||
* @param bossId the boss id
|
|
||||||
* @return the valid template
|
|
||||||
*/
|
|
||||||
public L2NpcTemplate getValidTemplate(int bossId)
|
|
||||||
{
|
|
||||||
final L2NpcTemplate template = NpcData.getInstance().getTemplate(bossId);
|
|
||||||
if (template == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (!template.isType("L2RaidBoss"))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return template;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notify spawn night boss.
|
* Notify spawn night boss.
|
||||||
* @param raidboss the raidboss
|
* @param raidboss the raidboss
|
||||||
|
@ -27,10 +27,8 @@ import java.util.logging.Level;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.model.L2Spawn;
|
import com.l2jserver.gameserver.model.L2Spawn;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.entity.Castle;
|
import com.l2jserver.gameserver.model.entity.Castle;
|
||||||
|
|
||||||
public final class SiegeGuardManager
|
public final class SiegeGuardManager
|
||||||
@ -208,28 +206,18 @@ public final class SiegeGuardManager
|
|||||||
}
|
}
|
||||||
try (ResultSet rs = ps.executeQuery())
|
try (ResultSet rs = ps.executeQuery())
|
||||||
{
|
{
|
||||||
L2Spawn spawn1;
|
|
||||||
L2NpcTemplate template1;
|
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
template1 = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
|
final L2Spawn spawn = new L2Spawn(rs.getInt("npcId"));
|
||||||
if (template1 != null)
|
spawn.setAmount(1);
|
||||||
{
|
spawn.setX(rs.getInt("x"));
|
||||||
spawn1 = new L2Spawn(template1);
|
spawn.setY(rs.getInt("y"));
|
||||||
spawn1.setAmount(1);
|
spawn.setZ(rs.getInt("z"));
|
||||||
spawn1.setX(rs.getInt("x"));
|
spawn.setHeading(rs.getInt("heading"));
|
||||||
spawn1.setY(rs.getInt("y"));
|
spawn.setRespawnDelay(rs.getInt("respawnDelay"));
|
||||||
spawn1.setZ(rs.getInt("z"));
|
spawn.setLocationId(0);
|
||||||
spawn1.setHeading(rs.getInt("heading"));
|
|
||||||
spawn1.setRespawnDelay(rs.getInt("respawnDelay"));
|
_siegeGuardSpawn.add(spawn);
|
||||||
spawn1.setLocationId(0);
|
|
||||||
|
|
||||||
_siegeGuardSpawn.add(spawn1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning(getClass().getSimpleName() + ": Missing npc data in npc table for id: " + rs.getInt("npcId"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,12 +33,10 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
import com.l2jserver.gameserver.idfactory.IdFactory;
|
import com.l2jserver.gameserver.idfactory.IdFactory;
|
||||||
import com.l2jserver.gameserver.instancemanager.MapRegionManager;
|
import com.l2jserver.gameserver.instancemanager.MapRegionManager;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.interfaces.IIdentifiable;
|
import com.l2jserver.gameserver.model.interfaces.IIdentifiable;
|
||||||
import com.l2jserver.gameserver.util.Broadcast;
|
import com.l2jserver.gameserver.util.Broadcast;
|
||||||
import com.l2jserver.util.Rnd;
|
import com.l2jserver.util.Rnd;
|
||||||
@ -465,15 +463,7 @@ public class AutoSpawnHandler
|
|||||||
final int z = locationList[locationIndex].getZ();
|
final int z = locationList[locationIndex].getZ();
|
||||||
final int heading = locationList[locationIndex].getHeading();
|
final int heading = locationList[locationIndex].getHeading();
|
||||||
|
|
||||||
// Fetch the template for this NPC ID and create a new spawn.
|
final L2Spawn newSpawn = new L2Spawn(spawnInst.getId());
|
||||||
L2NpcTemplate npcTemp = NpcData.getInstance().getTemplate(spawnInst.getId());
|
|
||||||
if (npcTemp == null)
|
|
||||||
{
|
|
||||||
_log.warning("Couldnt find NPC id" + spawnInst.getId() + " Try to update your DP");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
L2Spawn newSpawn = new L2Spawn(npcTemp);
|
|
||||||
newSpawn.setX(x);
|
newSpawn.setX(x);
|
||||||
newSpawn.setY(y);
|
newSpawn.setY(y);
|
||||||
newSpawn.setZ(z);
|
newSpawn.setZ(z);
|
||||||
|
@ -30,6 +30,7 @@ import com.l2jserver.Config;
|
|||||||
import com.l2jserver.gameserver.GeoData;
|
import com.l2jserver.gameserver.GeoData;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.TerritoryTable;
|
import com.l2jserver.gameserver.data.sql.impl.TerritoryTable;
|
||||||
|
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
||||||
import com.l2jserver.gameserver.datatables.NpcPersonalAIData;
|
import com.l2jserver.gameserver.datatables.NpcPersonalAIData;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Attackable;
|
import com.l2jserver.gameserver.model.actor.L2Attackable;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
@ -147,6 +148,19 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
|||||||
_constructor = Class.forName(className).asSubclass(L2Npc.class).getConstructor(L2NpcTemplate.class);
|
_constructor = Class.forName(className).asSubclass(L2Npc.class).getConstructor(L2NpcTemplate.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a spawn.
|
||||||
|
* @param npcId the NPC ID
|
||||||
|
* @throws ClassCastException
|
||||||
|
* @throws NoSuchMethodException
|
||||||
|
* @throws ClassNotFoundException
|
||||||
|
* @throws SecurityException
|
||||||
|
*/
|
||||||
|
public L2Spawn(int npcId) throws SecurityException, ClassNotFoundException, NoSuchMethodException, ClassCastException
|
||||||
|
{
|
||||||
|
this(NpcData.getInstance().getTemplate(npcId));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the maximum number of L2NpcInstance that this L2Spawn can manage.
|
* @return the maximum number of L2NpcInstance that this L2Spawn can manage.
|
||||||
*/
|
*/
|
||||||
|
@ -32,6 +32,7 @@ import com.l2jserver.Config;
|
|||||||
import com.l2jserver.gameserver.ItemsAutoDestroy;
|
import com.l2jserver.gameserver.ItemsAutoDestroy;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.cache.HtmCache;
|
import com.l2jserver.gameserver.cache.HtmCache;
|
||||||
|
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
||||||
import com.l2jserver.gameserver.datatables.ItemTable;
|
import com.l2jserver.gameserver.datatables.ItemTable;
|
||||||
import com.l2jserver.gameserver.datatables.NpcPersonalAIData;
|
import com.l2jserver.gameserver.datatables.NpcPersonalAIData;
|
||||||
import com.l2jserver.gameserver.enums.AISkillScope;
|
import com.l2jserver.gameserver.enums.AISkillScope;
|
||||||
@ -173,6 +174,15 @@ public class L2Npc extends L2Character
|
|||||||
setIsFlying(template.isFlying());
|
setIsFlying(template.isFlying());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a NPC.
|
||||||
|
* @param npcId the NPC ID
|
||||||
|
*/
|
||||||
|
public L2Npc(int npcId)
|
||||||
|
{
|
||||||
|
this(NpcData.getInstance().getTemplate(npcId));
|
||||||
|
}
|
||||||
|
|
||||||
public int getSoulShotChance()
|
public int getSoulShotChance()
|
||||||
{
|
{
|
||||||
return getTemplate().getSoulShotChance();
|
return getTemplate().getSoulShotChance();
|
||||||
|
@ -717,6 +717,7 @@ public final class L2PcInstance extends L2Playable
|
|||||||
private boolean _exchangeRefusal = false; // Exchange refusal
|
private boolean _exchangeRefusal = false; // Exchange refusal
|
||||||
|
|
||||||
private L2Party _party;
|
private L2Party _party;
|
||||||
|
PartyDistributionType _partyDistributionType;
|
||||||
|
|
||||||
// this is needed to find the inviting player for Party response
|
// this is needed to find the inviting player for Party response
|
||||||
// there can only be one active party request at once
|
// there can only be one active party request at once
|
||||||
@ -6771,6 +6772,16 @@ public final class L2PcInstance extends L2Playable
|
|||||||
return _party;
|
return _party;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPartyDistributionType(PartyDistributionType pdt)
|
||||||
|
{
|
||||||
|
_partyDistributionType = pdt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PartyDistributionType getPartyDistributionType()
|
||||||
|
{
|
||||||
|
return _partyDistributionType;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return True if the L2PcInstance is a GM.
|
* Return True if the L2PcInstance is a GM.
|
||||||
*/
|
*/
|
||||||
@ -10898,6 +10909,7 @@ public final class L2PcInstance extends L2Playable
|
|||||||
super.doRevive();
|
super.doRevive();
|
||||||
updateEffectIcons();
|
updateEffectIcons();
|
||||||
sendPacket(new EtcStatusUpdate(this));
|
sendPacket(new EtcStatusUpdate(this));
|
||||||
|
_revivePet = false;
|
||||||
_reviveRequested = 0;
|
_reviveRequested = 0;
|
||||||
_revivePower = 0;
|
_revivePower = 0;
|
||||||
|
|
||||||
@ -13496,6 +13508,11 @@ public final class L2PcInstance extends L2Playable
|
|||||||
activeChar.sendPacket(new RecipeShopMsg(this));
|
activeChar.sendPacket(new RecipeShopMsg(this));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (isMounted())
|
||||||
|
{
|
||||||
|
// Required double send for fix Mounted H5+
|
||||||
|
sendPacket(new CharInfo(activeChar));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showQuestMovie(int id)
|
public void showQuestMovie(int id)
|
||||||
|
@ -27,7 +27,6 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
import com.l2jserver.Config;
|
import com.l2jserver.Config;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.datatables.SkillData;
|
import com.l2jserver.gameserver.datatables.SkillData;
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
import com.l2jserver.gameserver.enums.Team;
|
import com.l2jserver.gameserver.enums.Team;
|
||||||
@ -38,7 +37,6 @@ import com.l2jserver.gameserver.model.L2World;
|
|||||||
import com.l2jserver.gameserver.model.actor.L2Summon;
|
import com.l2jserver.gameserver.model.actor.L2Summon;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2BlockInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2BlockInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
|
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
|
||||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jserver.gameserver.model.skills.Skill;
|
import com.l2jserver.gameserver.model.skills.Skill;
|
||||||
@ -478,15 +476,13 @@ public final class BlockCheckerEngine
|
|||||||
// random % 2, if == 0 will spawn a red block
|
// random % 2, if == 0 will spawn a red block
|
||||||
// if != 0, will spawn a blue block
|
// if != 0, will spawn a blue block
|
||||||
byte random = 2;
|
byte random = 2;
|
||||||
// common template
|
|
||||||
final L2NpcTemplate template = NpcData.getInstance().getTemplate(18672);
|
|
||||||
// Spawn blocks
|
// Spawn blocks
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Creates 50 new blocks
|
// Creates 50 new blocks
|
||||||
for (int i = 0; i < _numOfBoxes; i++)
|
for (int i = 0; i < _numOfBoxes; i++)
|
||||||
{
|
{
|
||||||
L2Spawn spawn = new L2Spawn(template);
|
final L2Spawn spawn = new L2Spawn(18672);
|
||||||
spawn.setX(_arenaCoordinates[_arena][4] + Rnd.get(-400, 400));
|
spawn.setX(_arenaCoordinates[_arena][4] + Rnd.get(-400, 400));
|
||||||
spawn.setY(_arenaCoordinates[_arena][5] + Rnd.get(-400, 400));
|
spawn.setY(_arenaCoordinates[_arena][5] + Rnd.get(-400, 400));
|
||||||
spawn.setZ(_zCoord);
|
spawn.setZ(_zCoord);
|
||||||
@ -519,10 +515,9 @@ public final class BlockCheckerEngine
|
|||||||
// Spawn the block carrying girl
|
// Spawn the block carrying girl
|
||||||
if ((_round == 1) || (_round == 2))
|
if ((_round == 1) || (_round == 2))
|
||||||
{
|
{
|
||||||
L2NpcTemplate girl = NpcData.getInstance().getTemplate(18676);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final L2Spawn girlSpawn = new L2Spawn(girl);
|
final L2Spawn girlSpawn = new L2Spawn(18676);
|
||||||
girlSpawn.setX(_arenaCoordinates[_arena][4] + Rnd.get(-400, 400));
|
girlSpawn.setX(_arenaCoordinates[_arena][4] + Rnd.get(-400, 400));
|
||||||
girlSpawn.setY(_arenaCoordinates[_arena][5] + Rnd.get(-400, 400));
|
girlSpawn.setY(_arenaCoordinates[_arena][5] + Rnd.get(-400, 400));
|
||||||
girlSpawn.setZ(_zCoord);
|
girlSpawn.setZ(_zCoord);
|
||||||
@ -575,7 +570,7 @@ public final class BlockCheckerEngine
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* private class CountDown implements Runnable {
|
* private class CountDown implements Runnable {
|
||||||
* @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 5000); } }
|
* @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_ENDS_5)); ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 5000); } }
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,7 +40,6 @@ import com.l2jserver.gameserver.FortUpdater.UpdaterType;
|
|||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.data.xml.impl.StaticObjectData;
|
import com.l2jserver.gameserver.data.xml.impl.StaticObjectData;
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
import com.l2jserver.gameserver.enums.MountType;
|
import com.l2jserver.gameserver.enums.MountType;
|
||||||
@ -54,7 +53,6 @@ import com.l2jserver.gameserver.model.L2World;
|
|||||||
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2StaticObjectInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2StaticObjectInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
||||||
import com.l2jserver.gameserver.model.zone.type.L2FortZone;
|
import com.l2jserver.gameserver.model.zone.type.L2FortZone;
|
||||||
import com.l2jserver.gameserver.model.zone.type.L2SiegeZone;
|
import com.l2jserver.gameserver.model.zone.type.L2SiegeZone;
|
||||||
@ -1168,28 +1166,18 @@ public final class Fort extends AbstractResidence
|
|||||||
ps.setInt(2, 0);
|
ps.setInt(2, 0);
|
||||||
try (ResultSet rs = ps.executeQuery())
|
try (ResultSet rs = ps.executeQuery())
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template;
|
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
|
L2Spawn spawnDat = new L2Spawn(rs.getInt("npcId"));
|
||||||
if (template != null)
|
spawnDat.setAmount(1);
|
||||||
{
|
spawnDat.setX(rs.getInt("x"));
|
||||||
spawnDat = new L2Spawn(template);
|
spawnDat.setY(rs.getInt("y"));
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setZ(rs.getInt("z"));
|
||||||
spawnDat.setX(rs.getInt("x"));
|
spawnDat.setHeading(rs.getInt("heading"));
|
||||||
spawnDat.setY(rs.getInt("y"));
|
spawnDat.setRespawnDelay(60);
|
||||||
spawnDat.setZ(rs.getInt("z"));
|
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
||||||
spawnDat.setHeading(rs.getInt("heading"));
|
spawnDat.doSpawn();
|
||||||
spawnDat.setRespawnDelay(60);
|
spawnDat.startRespawn();
|
||||||
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
|
|
||||||
spawnDat.doSpawn();
|
|
||||||
spawnDat.startRespawn();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("Fort " + getResidenceId() + " initNpcs: Data missing in NPC table for ID: " + rs.getInt("npcId") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1209,26 +1197,16 @@ public final class Fort extends AbstractResidence
|
|||||||
ps.setInt(2, 2);
|
ps.setInt(2, 2);
|
||||||
try (ResultSet rs = ps.executeQuery())
|
try (ResultSet rs = ps.executeQuery())
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template;
|
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
|
final L2Spawn spawnDat = new L2Spawn(rs.getInt("npcId"));
|
||||||
if (template != null)
|
spawnDat.setAmount(1);
|
||||||
{
|
spawnDat.setX(rs.getInt("x"));
|
||||||
spawnDat = new L2Spawn(template);
|
spawnDat.setY(rs.getInt("y"));
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setZ(rs.getInt("z"));
|
||||||
spawnDat.setX(rs.getInt("x"));
|
spawnDat.setHeading(rs.getInt("heading"));
|
||||||
spawnDat.setY(rs.getInt("y"));
|
spawnDat.setRespawnDelay(60);
|
||||||
spawnDat.setZ(rs.getInt("z"));
|
_siegeNpcs.add(spawnDat);
|
||||||
spawnDat.setHeading(rs.getInt("heading"));
|
|
||||||
spawnDat.setRespawnDelay(60);
|
|
||||||
_siegeNpcs.add(spawnDat);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("Fort " + getResidenceId() + " initSiegeNpcs: Data missing in NPC table for ID: " + rs.getInt("npcId") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1248,26 +1226,16 @@ public final class Fort extends AbstractResidence
|
|||||||
ps.setInt(2, 1);
|
ps.setInt(2, 1);
|
||||||
try (ResultSet rs = ps.executeQuery())
|
try (ResultSet rs = ps.executeQuery())
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template;
|
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
|
final L2Spawn spawnDat = new L2Spawn(rs.getInt("npcId"));
|
||||||
if (template != null)
|
spawnDat.setAmount(1);
|
||||||
{
|
spawnDat.setX(rs.getInt("x"));
|
||||||
spawnDat = new L2Spawn(template);
|
spawnDat.setY(rs.getInt("y"));
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setZ(rs.getInt("z"));
|
||||||
spawnDat.setX(rs.getInt("x"));
|
spawnDat.setHeading(rs.getInt("heading"));
|
||||||
spawnDat.setY(rs.getInt("y"));
|
spawnDat.setRespawnDelay(60);
|
||||||
spawnDat.setZ(rs.getInt("z"));
|
_npcCommanders.add(spawnDat);
|
||||||
spawnDat.setHeading(rs.getInt("heading"));
|
|
||||||
spawnDat.setRespawnDelay(60);
|
|
||||||
_npcCommanders.add(spawnDat);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("Fort " + getResidenceId() + " initNpcCommanders: Data missing in NPC table for ID: " + rs.getInt("npcId") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1290,30 +1258,19 @@ public final class Fort extends AbstractResidence
|
|||||||
ps.setInt(2, 3);
|
ps.setInt(2, 3);
|
||||||
try (ResultSet rs = ps.executeQuery())
|
try (ResultSet rs = ps.executeQuery())
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template;
|
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
int castleId = rs.getInt("castleId");
|
final int castleId = rs.getInt("castleId");
|
||||||
int npcId = rs.getInt("npcId");
|
final L2Spawn spawnDat = new L2Spawn(rs.getInt("npcId"));
|
||||||
template = NpcData.getInstance().getTemplate(npcId);
|
spawnDat.setAmount(1);
|
||||||
if (template != null)
|
spawnDat.setX(rs.getInt("x"));
|
||||||
{
|
spawnDat.setY(rs.getInt("y"));
|
||||||
spawnDat = new L2Spawn(template);
|
spawnDat.setZ(rs.getInt("z"));
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setHeading(rs.getInt("heading"));
|
||||||
spawnDat.setX(rs.getInt("x"));
|
spawnDat.setRespawnDelay(60);
|
||||||
spawnDat.setY(rs.getInt("y"));
|
_specialEnvoys.add(spawnDat);
|
||||||
spawnDat.setZ(rs.getInt("z"));
|
_envoyCastles.put(spawnDat.getId(), castleId);
|
||||||
spawnDat.setHeading(rs.getInt("heading"));
|
_availableCastles.add(castleId);
|
||||||
spawnDat.setRespawnDelay(60);
|
|
||||||
_specialEnvoys.add(spawnDat);
|
|
||||||
_envoyCastles.put(npcId, castleId);
|
|
||||||
_availableCastles.add(castleId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("Fort " + getResidenceId() + " initSpecialEnvoys: Data missing in NPC table for ID: " + rs.getInt("npcId") + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,6 @@ import com.l2jserver.Config;
|
|||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.enums.ChatType;
|
import com.l2jserver.gameserver.enums.ChatType;
|
||||||
import com.l2jserver.gameserver.enums.FortTeleportWhoType;
|
import com.l2jserver.gameserver.enums.FortTeleportWhoType;
|
||||||
import com.l2jserver.gameserver.enums.SiegeClanType;
|
import com.l2jserver.gameserver.enums.SiegeClanType;
|
||||||
@ -51,7 +50,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
|
|||||||
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2FortCommanderInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2FortCommanderInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.events.EventDispatcher;
|
import com.l2jserver.gameserver.model.events.EventDispatcher;
|
||||||
import com.l2jserver.gameserver.model.events.impl.sieges.fort.OnFortSiegeFinish;
|
import com.l2jserver.gameserver.model.events.impl.sieges.fort.OnFortSiegeFinish;
|
||||||
import com.l2jserver.gameserver.model.events.impl.sieges.fort.OnFortSiegeStart;
|
import com.l2jserver.gameserver.model.events.impl.sieges.fort.OnFortSiegeStart;
|
||||||
@ -1098,28 +1096,18 @@ public class FortSiege implements Siegable
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
_commanders.clear();
|
_commanders.clear();
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate template1;
|
|
||||||
for (FortSiegeSpawn _sp : FortSiegeManager.getInstance().getCommanderSpawnList(getFort().getResidenceId()))
|
for (FortSiegeSpawn _sp : FortSiegeManager.getInstance().getCommanderSpawnList(getFort().getResidenceId()))
|
||||||
{
|
{
|
||||||
template1 = NpcData.getInstance().getTemplate(_sp.getId());
|
final L2Spawn spawnDat = new L2Spawn(_sp.getId());
|
||||||
if (template1 != null)
|
spawnDat.setAmount(1);
|
||||||
{
|
spawnDat.setX(_sp.getLocation().getX());
|
||||||
spawnDat = new L2Spawn(template1);
|
spawnDat.setY(_sp.getLocation().getY());
|
||||||
spawnDat.setAmount(1);
|
spawnDat.setZ(_sp.getLocation().getZ());
|
||||||
spawnDat.setX(_sp.getLocation().getX());
|
spawnDat.setHeading(_sp.getLocation().getHeading());
|
||||||
spawnDat.setY(_sp.getLocation().getY());
|
spawnDat.setRespawnDelay(60);
|
||||||
spawnDat.setZ(_sp.getLocation().getZ());
|
spawnDat.doSpawn();
|
||||||
spawnDat.setHeading(_sp.getLocation().getHeading());
|
spawnDat.stopRespawn();
|
||||||
spawnDat.setRespawnDelay(60);
|
_commanders.add(spawnDat);
|
||||||
spawnDat.doSpawn();
|
|
||||||
spawnDat.stopRespawn();
|
|
||||||
_commanders.add(spawnDat);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_log.warning("FortSiege.spawnCommander: Data missing in NPC table for ID: " + _sp.getId() + ".");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -42,7 +42,6 @@ import org.w3c.dom.Node;
|
|||||||
import com.l2jserver.Config;
|
import com.l2jserver.Config;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.enums.ChatType;
|
import com.l2jserver.gameserver.enums.ChatType;
|
||||||
import com.l2jserver.gameserver.enums.InstanceReenterType;
|
import com.l2jserver.gameserver.enums.InstanceReenterType;
|
||||||
import com.l2jserver.gameserver.enums.InstanceRemoveBuffType;
|
import com.l2jserver.gameserver.enums.InstanceRemoveBuffType;
|
||||||
@ -58,7 +57,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
|
|||||||
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2DoorTemplate;
|
import com.l2jserver.gameserver.model.actor.templates.L2DoorTemplate;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.holders.InstanceReenterTimeHolder;
|
import com.l2jserver.gameserver.model.holders.InstanceReenterTimeHolder;
|
||||||
import com.l2jserver.gameserver.model.instancezone.InstanceWorld;
|
import com.l2jserver.gameserver.model.instancezone.InstanceWorld;
|
||||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||||
@ -464,8 +462,6 @@ public final class Instance
|
|||||||
|
|
||||||
private void parseInstance(Node n) throws Exception
|
private void parseInstance(Node n) throws Exception
|
||||||
{
|
{
|
||||||
L2Spawn spawnDat;
|
|
||||||
L2NpcTemplate npcTemplate;
|
|
||||||
_name = n.getAttributes().getNamedItem("name").getNodeValue();
|
_name = n.getAttributes().getNamedItem("name").getNodeValue();
|
||||||
Node a = n.getAttributes().getNamedItem("ejectTime");
|
Node a = n.getAttributes().getNamedItem("ejectTime");
|
||||||
if (a != null)
|
if (a != null)
|
||||||
@ -596,45 +592,38 @@ public final class Instance
|
|||||||
{
|
{
|
||||||
allowRandomWalk = Boolean.valueOf(d.getAttributes().getNamedItem("allowRandomWalk").getNodeValue());
|
allowRandomWalk = Boolean.valueOf(d.getAttributes().getNamedItem("allowRandomWalk").getNodeValue());
|
||||||
}
|
}
|
||||||
npcTemplate = NpcData.getInstance().getTemplate(npcId);
|
|
||||||
if (npcTemplate != null)
|
final L2Spawn spawnDat = new L2Spawn(npcId);
|
||||||
|
spawnDat.setX(x);
|
||||||
|
spawnDat.setY(y);
|
||||||
|
spawnDat.setZ(z);
|
||||||
|
spawnDat.setAmount(1);
|
||||||
|
spawnDat.setHeading(heading);
|
||||||
|
spawnDat.setRespawnDelay(respawn, respawnRandom);
|
||||||
|
if (respawn == 0)
|
||||||
{
|
{
|
||||||
spawnDat = new L2Spawn(npcTemplate);
|
spawnDat.stopRespawn();
|
||||||
spawnDat.setX(x);
|
|
||||||
spawnDat.setY(y);
|
|
||||||
spawnDat.setZ(z);
|
|
||||||
spawnDat.setAmount(1);
|
|
||||||
spawnDat.setHeading(heading);
|
|
||||||
spawnDat.setRespawnDelay(respawn, respawnRandom);
|
|
||||||
if (respawn == 0)
|
|
||||||
{
|
|
||||||
spawnDat.stopRespawn();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
spawnDat.startRespawn();
|
|
||||||
}
|
|
||||||
spawnDat.setInstanceId(getId());
|
|
||||||
if (allowRandomWalk == null)
|
|
||||||
{
|
|
||||||
spawnDat.setIsNoRndWalk(!_allowRandomWalk);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
spawnDat.setIsNoRndWalk(!allowRandomWalk);
|
|
||||||
}
|
|
||||||
if (spawnGroup.equals("general"))
|
|
||||||
{
|
|
||||||
spawnDat.doSpawn();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
manualSpawn.add(spawnDat);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_log.warning("Instance: Data missing in NPC table for ID: " + npcId + " in Instance " + getId());
|
spawnDat.startRespawn();
|
||||||
|
}
|
||||||
|
spawnDat.setInstanceId(getId());
|
||||||
|
if (allowRandomWalk == null)
|
||||||
|
{
|
||||||
|
spawnDat.setIsNoRndWalk(!_allowRandomWalk);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
spawnDat.setIsNoRndWalk(!allowRandomWalk);
|
||||||
|
}
|
||||||
|
if (spawnGroup.equals("general"))
|
||||||
|
{
|
||||||
|
spawnDat.doSpawn();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
manualSpawn.add(spawnDat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,6 @@ import com.l2jserver.gameserver.model.L2Spawn;
|
|||||||
import com.l2jserver.gameserver.model.L2World;
|
import com.l2jserver.gameserver.model.L2World;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.holders.PlayerEventHolder;
|
import com.l2jserver.gameserver.model.holders.PlayerEventHolder;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.CharInfo;
|
import com.l2jserver.gameserver.network.serverpackets.CharInfo;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
|
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
|
||||||
@ -164,13 +163,9 @@ public class L2Event
|
|||||||
*/
|
*/
|
||||||
public static void spawnEventNpc(L2PcInstance target)
|
public static void spawnEventNpc(L2PcInstance target)
|
||||||
{
|
{
|
||||||
|
|
||||||
L2NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
L2Spawn spawn = new L2Spawn(template);
|
final L2Spawn spawn = new L2Spawn(_npcId);
|
||||||
|
|
||||||
spawn.setX(target.getX() + 50);
|
spawn.setX(target.getX() + 50);
|
||||||
spawn.setY(target.getY() + 50);
|
spawn.setY(target.getY() + 50);
|
||||||
spawn.setZ(target.getZ());
|
spawn.setZ(target.getZ());
|
||||||
|
@ -35,7 +35,6 @@ import com.l2jserver.Config;
|
|||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.data.xml.impl.SiegeScheduleData;
|
import com.l2jserver.gameserver.data.xml.impl.SiegeScheduleData;
|
||||||
import com.l2jserver.gameserver.enums.SiegeClanType;
|
import com.l2jserver.gameserver.enums.SiegeClanType;
|
||||||
import com.l2jserver.gameserver.enums.SiegeTeleportWhoType;
|
import com.l2jserver.gameserver.enums.SiegeTeleportWhoType;
|
||||||
@ -1552,7 +1551,7 @@ public class Siege implements Siegable
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(NpcData.getInstance().getTemplate(ts.getId()));
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
||||||
}
|
}
|
||||||
@ -1573,7 +1572,7 @@ public class Siege implements Siegable
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(NpcData.getInstance().getTemplate(ts.getId()));
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
final L2FlameTowerInstance tower = (L2FlameTowerInstance) spawn.doSpawn();
|
final L2FlameTowerInstance tower = (L2FlameTowerInstance) spawn.doSpawn();
|
||||||
tower.setUpgradeLevel(ts.getUpgradeLevel());
|
tower.setUpgradeLevel(ts.getUpgradeLevel());
|
||||||
|
@ -29,7 +29,6 @@ import java.util.logging.Logger;
|
|||||||
import com.l2jserver.Config;
|
import com.l2jserver.Config;
|
||||||
import com.l2jserver.gameserver.cache.HtmCache;
|
import com.l2jserver.gameserver.cache.HtmCache;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.datatables.ItemTable;
|
import com.l2jserver.gameserver.datatables.ItemTable;
|
||||||
import com.l2jserver.gameserver.datatables.SkillData;
|
import com.l2jserver.gameserver.datatables.SkillData;
|
||||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||||
@ -45,7 +44,6 @@ import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
|||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.events.EventDispatcher;
|
import com.l2jserver.gameserver.model.events.EventDispatcher;
|
||||||
import com.l2jserver.gameserver.model.events.impl.events.OnTvTEventFinish;
|
import com.l2jserver.gameserver.model.events.impl.events.OnTvTEventFinish;
|
||||||
import com.l2jserver.gameserver.model.events.impl.events.OnTvTEventKill;
|
import com.l2jserver.gameserver.model.events.impl.events.OnTvTEventKill;
|
||||||
@ -117,17 +115,9 @@ public class TvTEvent
|
|||||||
*/
|
*/
|
||||||
public static boolean startParticipation()
|
public static boolean startParticipation()
|
||||||
{
|
{
|
||||||
L2NpcTemplate tmpl = NpcData.getInstance().getTemplate(Config.TVT_EVENT_PARTICIPATION_NPC_ID);
|
|
||||||
|
|
||||||
if (tmpl == null)
|
|
||||||
{
|
|
||||||
_log.warning("TvTEventEngine[TvTEvent.startParticipation()]: L2NpcTemplate is a NullPointer -> Invalid npc id in configs?");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_npcSpawn = new L2Spawn(tmpl);
|
_npcSpawn = new L2Spawn(Config.TVT_EVENT_PARTICIPATION_NPC_ID);
|
||||||
|
|
||||||
_npcSpawn.setX(Config.TVT_EVENT_PARTICIPATION_NPC_COORDINATES[0]);
|
_npcSpawn.setX(Config.TVT_EVENT_PARTICIPATION_NPC_COORDINATES[0]);
|
||||||
_npcSpawn.setY(Config.TVT_EVENT_PARTICIPATION_NPC_COORDINATES[1]);
|
_npcSpawn.setY(Config.TVT_EVENT_PARTICIPATION_NPC_COORDINATES[1]);
|
||||||
|
@ -33,7 +33,6 @@ import com.l2jserver.Config;
|
|||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
|
||||||
import com.l2jserver.gameserver.enums.ChatType;
|
import com.l2jserver.gameserver.enums.ChatType;
|
||||||
import com.l2jserver.gameserver.enums.SiegeClanType;
|
import com.l2jserver.gameserver.enums.SiegeClanType;
|
||||||
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
|
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
|
||||||
@ -46,7 +45,6 @@ import com.l2jserver.gameserver.model.Location;
|
|||||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
||||||
import com.l2jserver.gameserver.model.entity.Siegable;
|
import com.l2jserver.gameserver.model.entity.Siegable;
|
||||||
import com.l2jserver.gameserver.model.quest.Quest;
|
import com.l2jserver.gameserver.model.quest.Quest;
|
||||||
import com.l2jserver.gameserver.network.NpcStringId;
|
import com.l2jserver.gameserver.network.NpcStringId;
|
||||||
@ -159,9 +157,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable
|
|||||||
{
|
{
|
||||||
while (rset.next())
|
while (rset.next())
|
||||||
{
|
{
|
||||||
final int npcId = rset.getInt("npcId");
|
final L2Spawn spawn = new L2Spawn(rset.getInt("npcId"));
|
||||||
final L2NpcTemplate template = NpcData.getInstance().getTemplate(npcId);
|
|
||||||
L2Spawn spawn = new L2Spawn(template);
|
|
||||||
spawn.setX(rset.getInt("x"));
|
spawn.setX(rset.getInt("x"));
|
||||||
spawn.setY(rset.getInt("y"));
|
spawn.setY(rset.getInt("y"));
|
||||||
spawn.setZ(rset.getInt("z"));
|
spawn.setZ(rset.getInt("z"));
|
||||||
|
@ -109,7 +109,7 @@ public class LongTimeEvent extends Quest
|
|||||||
*/
|
*/
|
||||||
private void loadConfig()
|
private void loadConfig()
|
||||||
{
|
{
|
||||||
File configFile = new File("data/scripts/events/" + getScriptName() + "/config.xml");
|
File configFile = new File("data/scripts/events/" + getName() + "/config.xml");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
||||||
@ -117,7 +117,7 @@ public class LongTimeEvent extends Quest
|
|||||||
Document doc = db.parse(configFile);
|
Document doc = db.parse(configFile);
|
||||||
if (!doc.getDocumentElement().getNodeName().equalsIgnoreCase("event"))
|
if (!doc.getDocumentElement().getNodeName().equalsIgnoreCase("event"))
|
||||||
{
|
{
|
||||||
throw new NullPointerException("WARNING!!! " + getScriptName() + " event: bad config file!");
|
throw new NullPointerException("WARNING!!! " + getName() + " event: bad config file!");
|
||||||
}
|
}
|
||||||
_eventName = doc.getDocumentElement().getAttributes().getNamedItem("name").getNodeValue();
|
_eventName = doc.getDocumentElement().getAttributes().getNamedItem("name").getNodeValue();
|
||||||
String period = doc.getDocumentElement().getAttributes().getNamedItem("active").getNodeValue();
|
String period = doc.getDocumentElement().getAttributes().getNamedItem("active").getNodeValue();
|
||||||
@ -140,7 +140,7 @@ public class LongTimeEvent extends Quest
|
|||||||
|
|
||||||
if (_eventPeriod == null)
|
if (_eventPeriod == null)
|
||||||
{
|
{
|
||||||
throw new NullPointerException("WARNING!!! " + getScriptName() + " event: illegal event period");
|
throw new NullPointerException("WARNING!!! " + getName() + " event: illegal event period");
|
||||||
}
|
}
|
||||||
|
|
||||||
Date today = new Date();
|
Date today = new Date();
|
||||||
@ -172,19 +172,19 @@ public class LongTimeEvent extends Quest
|
|||||||
|
|
||||||
if (ItemTable.getInstance().getTemplate(itemId) == null)
|
if (ItemTable.getInstance().getTemplate(itemId) == null)
|
||||||
{
|
{
|
||||||
_log.warning(getScriptName() + " event: " + itemId + " is wrong item id, item was not added in droplist");
|
_log.warning(getName() + " event: " + itemId + " is wrong item id, item was not added in droplist");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minCount > maxCount)
|
if (minCount > maxCount)
|
||||||
{
|
{
|
||||||
_log.warning(getScriptName() + " event: item " + itemId + " - min greater than max, item was not added in droplist");
|
_log.warning(getName() + " event: item " + itemId + " - min greater than max, item was not added in droplist");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((finalChance < 10000) || (finalChance > 1000000))
|
if ((finalChance < 10000) || (finalChance > 1000000))
|
||||||
{
|
{
|
||||||
_log.warning(getScriptName() + " event: item " + itemId + " - incorrect drop chance, item was not added in droplist");
|
_log.warning(getName() + " event: item " + itemId + " - incorrect drop chance, item was not added in droplist");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ public class LongTimeEvent extends Quest
|
|||||||
}
|
}
|
||||||
catch (NumberFormatException nfe)
|
catch (NumberFormatException nfe)
|
||||||
{
|
{
|
||||||
_log.warning("Wrong number format in config.xml droplist block for " + getScriptName() + " event");
|
_log.warning("Wrong number format in config.xml droplist block for " + getName() + " event");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -214,7 +214,7 @@ public class LongTimeEvent extends Quest
|
|||||||
|
|
||||||
if (NpcData.getInstance().getTemplate(npcId) == null)
|
if (NpcData.getInstance().getTemplate(npcId) == null)
|
||||||
{
|
{
|
||||||
_log.warning(getScriptName() + " event: " + npcId + " is wrong NPC id, NPC was not added in spawnlist");
|
_log.warning(getName() + " event: " + npcId + " is wrong NPC id, NPC was not added in spawnlist");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,7 +222,7 @@ public class LongTimeEvent extends Quest
|
|||||||
}
|
}
|
||||||
catch (NumberFormatException nfe)
|
catch (NumberFormatException nfe)
|
||||||
{
|
{
|
||||||
_log.warning("Wrong number format in config.xml spawnlist block for " + getScriptName() + " event");
|
_log.warning("Wrong number format in config.xml spawnlist block for " + getName() + " event");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -255,7 +255,7 @@ public class LongTimeEvent extends Quest
|
|||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.log(Level.WARNING, getScriptName() + " event: error reading " + configFile.getAbsolutePath() + " ! " + e.getMessage(), e);
|
_log.log(Level.WARNING, getName() + " event: error reading " + configFile.getAbsolutePath() + " ! " + e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.gameserver.model.events;
|
package com.l2jserver.gameserver.model.events;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -36,6 +37,8 @@ import java.util.function.Function;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import javax.script.ScriptException;
|
||||||
|
|
||||||
import com.l2jserver.Config;
|
import com.l2jserver.Config;
|
||||||
import com.l2jserver.gameserver.GameTimeController;
|
import com.l2jserver.gameserver.GameTimeController;
|
||||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||||
@ -113,6 +116,7 @@ import com.l2jserver.gameserver.model.events.returns.AbstractEventReturn;
|
|||||||
import com.l2jserver.gameserver.model.events.returns.TerminateReturn;
|
import com.l2jserver.gameserver.model.events.returns.TerminateReturn;
|
||||||
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
||||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||||
|
import com.l2jserver.gameserver.model.interfaces.INamable;
|
||||||
import com.l2jserver.gameserver.model.interfaces.IPositionable;
|
import com.l2jserver.gameserver.model.interfaces.IPositionable;
|
||||||
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
||||||
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
|
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
|
||||||
@ -131,21 +135,26 @@ import com.l2jserver.gameserver.network.serverpackets.ExUserInfoInvenWeight;
|
|||||||
import com.l2jserver.gameserver.network.serverpackets.InventoryUpdate;
|
import com.l2jserver.gameserver.network.serverpackets.InventoryUpdate;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.SpecialCamera;
|
import com.l2jserver.gameserver.network.serverpackets.SpecialCamera;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||||
import com.l2jserver.gameserver.scripting.ManagedScript;
|
import com.l2jserver.gameserver.scripting.L2ScriptEngineManager;
|
||||||
|
import com.l2jserver.gameserver.scripting.ScriptManager;
|
||||||
import com.l2jserver.gameserver.util.MinionList;
|
import com.l2jserver.gameserver.util.MinionList;
|
||||||
import com.l2jserver.util.Rnd;
|
import com.l2jserver.util.Rnd;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author UnAfraid
|
* Abstract script.
|
||||||
|
* @author KenM, UnAfraid, Zoey76
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractScript extends ManagedScript
|
public abstract class AbstractScript implements INamable
|
||||||
{
|
{
|
||||||
protected static final Logger _log = Logger.getLogger(AbstractScript.class.getName());
|
public static final Logger _log = Logger.getLogger(AbstractScript.class.getName());
|
||||||
private final Map<ListenerRegisterType, Set<Integer>> _registeredIds = new ConcurrentHashMap<>();
|
private final Map<ListenerRegisterType, Set<Integer>> _registeredIds = new ConcurrentHashMap<>();
|
||||||
private final List<AbstractEventListener> _listeners = new CopyOnWriteArrayList<>();
|
private final List<AbstractEventListener> _listeners = new CopyOnWriteArrayList<>();
|
||||||
|
private final File _scriptFile;
|
||||||
|
private boolean _isActive;
|
||||||
|
|
||||||
public AbstractScript()
|
public AbstractScript()
|
||||||
{
|
{
|
||||||
|
_scriptFile = L2ScriptEngineManager.getInstance().getCurrentLoadingScript();
|
||||||
initializeAnnotationListeners();
|
initializeAnnotationListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,10 +309,38 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setActive(boolean status)
|
||||||
|
{
|
||||||
|
_isActive = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isActive()
|
||||||
|
{
|
||||||
|
return _isActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public File getScriptFile()
|
||||||
|
{
|
||||||
|
return _scriptFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean reload()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
L2ScriptEngineManager.getInstance().executeScript(getScriptFile());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (ScriptException e)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unloads all listeners registered by this class.
|
* Unloads all listeners registered by this class.
|
||||||
|
* @return {@code true}
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public boolean unload()
|
public boolean unload()
|
||||||
{
|
{
|
||||||
_listeners.forEach(AbstractEventListener::unregisterMe);
|
_listeners.forEach(AbstractEventListener::unregisterMe);
|
||||||
@ -311,6 +348,8 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract ScriptManager<?> getManager();
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1718,13 +1757,6 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final L2NpcTemplate template = NpcData.getInstance().getTemplate(npcId);
|
|
||||||
if (template == null)
|
|
||||||
{
|
|
||||||
_log.severe("Couldn't find NPC template for ID:" + npcId + "!");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((x == 0) && (y == 0))
|
if ((x == 0) && (y == 0))
|
||||||
{
|
{
|
||||||
_log.log(Level.SEVERE, "addSpawn(): invalid spawn coordinates for NPC #" + npcId + "!");
|
_log.log(Level.SEVERE, "addSpawn(): invalid spawn coordinates for NPC #" + npcId + "!");
|
||||||
@ -1748,7 +1780,7 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
y += offset;
|
y += offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Spawn spawn = new L2Spawn(template);
|
final L2Spawn spawn = new L2Spawn(npcId);
|
||||||
spawn.setInstanceId(instanceId);
|
spawn.setInstanceId(instanceId);
|
||||||
spawn.setHeading(heading);
|
spawn.setHeading(heading);
|
||||||
spawn.setX(x);
|
spawn.setX(x);
|
||||||
@ -2318,24 +2350,34 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
*/
|
*/
|
||||||
public static boolean takeItems(L2PcInstance player, int itemId, long amount)
|
public static boolean takeItems(L2PcInstance player, int itemId, long amount)
|
||||||
{
|
{
|
||||||
// Get object item from player's inventory list
|
final List<L2ItemInstance> items = player.getInventory().getItemsByItemId(itemId);
|
||||||
final L2ItemInstance item = player.getInventory().getItemByItemId(itemId);
|
if (amount < 0)
|
||||||
if (item == null)
|
|
||||||
{
|
{
|
||||||
return false;
|
items.forEach(i -> takeItem(player, i, i.getCount()));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Tests on count value in order not to have negative value
|
|
||||||
if ((amount < 0) || (amount > item.getCount()))
|
|
||||||
{
|
{
|
||||||
amount = item.getCount();
|
long currentCount = 0;
|
||||||
|
for (L2ItemInstance i : items)
|
||||||
|
{
|
||||||
|
long toDelete = i.getCount();
|
||||||
|
if ((currentCount + toDelete) > amount)
|
||||||
|
{
|
||||||
|
toDelete = amount - currentCount;
|
||||||
|
}
|
||||||
|
takeItem(player, i, toDelete);
|
||||||
|
currentCount += toDelete;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
// Destroy the quantity of items wanted
|
}
|
||||||
|
|
||||||
|
private static boolean takeItem(L2PcInstance player, L2ItemInstance item, long toDelete)
|
||||||
|
{
|
||||||
if (item.isEquipped())
|
if (item.isEquipped())
|
||||||
{
|
{
|
||||||
final L2ItemInstance[] unequiped = player.getInventory().unEquipItemInBodySlotAndRecord(item.getItem().getBodyPart());
|
final L2ItemInstance[] unequiped = player.getInventory().unEquipItemInBodySlotAndRecord(item.getItem().getBodyPart());
|
||||||
InventoryUpdate iu = new InventoryUpdate();
|
final InventoryUpdate iu = new InventoryUpdate();
|
||||||
for (L2ItemInstance itm : unequiped)
|
for (L2ItemInstance itm : unequiped)
|
||||||
{
|
{
|
||||||
iu.addModifiedItem(itm);
|
iu.addModifiedItem(itm);
|
||||||
@ -2343,7 +2385,7 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
player.sendPacket(iu);
|
player.sendPacket(iu);
|
||||||
player.broadcastUserInfo();
|
player.broadcastUserInfo();
|
||||||
}
|
}
|
||||||
return player.destroyItemByItemId("Quest", itemId, amount, player, true);
|
return player.destroyItemByItemId("Quest", item.getId(), toDelete, player, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -673,7 +673,7 @@ public class PcInventory extends Inventory
|
|||||||
@Override
|
@Override
|
||||||
public L2ItemInstance destroyItem(String process, L2ItemInstance item, L2PcInstance actor, Object reference)
|
public L2ItemInstance destroyItem(String process, L2ItemInstance item, L2PcInstance actor, Object reference)
|
||||||
{
|
{
|
||||||
return this.destroyItem(process, item, item.getCount(), actor, reference);
|
return destroyItem(process, item, item.getCount(), actor, reference);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,7 +35,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
|
|||||||
import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
|
import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jserver.Config;
|
import com.l2jserver.Config;
|
||||||
@ -81,8 +80,6 @@ import com.l2jserver.util.Util;
|
|||||||
*/
|
*/
|
||||||
public class Quest extends AbstractScript implements IIdentifiable
|
public class Quest extends AbstractScript implements IIdentifiable
|
||||||
{
|
{
|
||||||
public static final Logger _log = Logger.getLogger(Quest.class.getName());
|
|
||||||
|
|
||||||
/** Map containing lists of timers from the name of the timer. */
|
/** Map containing lists of timers from the name of the timer. */
|
||||||
private volatile Map<String, List<QuestTimer>> _questTimers = null;
|
private volatile Map<String, List<QuestTimer>> _questTimers = null;
|
||||||
private final ReentrantReadWriteLock _rwLock = new ReentrantReadWriteLock();
|
private final ReentrantReadWriteLock _rwLock = new ReentrantReadWriteLock();
|
||||||
@ -109,22 +106,6 @@ public class Quest extends AbstractScript implements IIdentifiable
|
|||||||
private static final int RESET_HOUR = 6;
|
private static final int RESET_HOUR = 6;
|
||||||
private static final int RESET_MINUTES = 30;
|
private static final int RESET_MINUTES = 30;
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the reset hour for a daily quest, could be overridden on a script.
|
|
||||||
*/
|
|
||||||
public int getResetHour()
|
|
||||||
{
|
|
||||||
return RESET_HOUR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the reset minutes for a daily quest, could be overridden on a script.
|
|
||||||
*/
|
|
||||||
public int getResetMinutes()
|
|
||||||
{
|
|
||||||
return RESET_MINUTES;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Quest object constructor.<br>
|
* The Quest object constructor.<br>
|
||||||
* Constructing a quest also calls the {@code init_LoadGlobalData} convenience method.
|
* Constructing a quest also calls the {@code init_LoadGlobalData} convenience method.
|
||||||
@ -149,6 +130,24 @@ public class Quest extends AbstractScript implements IIdentifiable
|
|||||||
loadGlobalData();
|
loadGlobalData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the reset hour for a daily quest.
|
||||||
|
* @return the reset hour
|
||||||
|
*/
|
||||||
|
public int getResetHour()
|
||||||
|
{
|
||||||
|
return RESET_HOUR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the reset minutes for a daily quest.
|
||||||
|
* @return the reset minutes
|
||||||
|
*/
|
||||||
|
public int getResetMinutes()
|
||||||
|
{
|
||||||
|
return RESET_MINUTES;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is, by default, called by the constructor of all scripts.<br>
|
* This method is, by default, called by the constructor of all scripts.<br>
|
||||||
* Children of this class can implement this function in order to define what variables to load and what structures to save them in.<br>
|
* Children of this class can implement this function in order to define what variables to load and what structures to save them in.<br>
|
||||||
@ -217,9 +216,7 @@ public class Quest extends AbstractScript implements IIdentifiable
|
|||||||
return _initialState;
|
return _initialState;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @return the name of the quest
|
|
||||||
*/
|
|
||||||
public String getName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return _name;
|
return _name;
|
||||||
@ -2725,12 +2722,6 @@ public class Quest extends AbstractScript implements IIdentifiable
|
|||||||
takeItems(player, -1, questItemIds);
|
takeItems(player, -1, questItemIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getScriptName()
|
|
||||||
{
|
|
||||||
return getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setActive(boolean status)
|
public void setActive(boolean status)
|
||||||
{
|
{
|
||||||
@ -2789,7 +2780,7 @@ public class Quest extends AbstractScript implements IIdentifiable
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ScriptManager<?> getScriptManager()
|
public ScriptManager<?> getManager()
|
||||||
{
|
{
|
||||||
return QuestManager.getInstance();
|
return QuestManager.getInstance();
|
||||||
}
|
}
|
||||||
|
@ -446,50 +446,28 @@ public final class Formulas
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the CP regen rate (base + modifiers).
|
* Calculates the CP regeneration rate (base + modifiers).
|
||||||
* @param cha
|
* @param player the player
|
||||||
* @return
|
* @return the CP regeneration rate
|
||||||
*/
|
*/
|
||||||
public static final double calcCpRegen(L2Character cha)
|
public static final double calcCpRegen(L2PcInstance player)
|
||||||
{
|
{
|
||||||
double init = cha.isPlayer() ? cha.getActingPlayer().getTemplate().getBaseCpRegen(cha.getLevel()) : cha.getTemplate().getBaseHpReg();
|
// With CON bonus
|
||||||
|
final double init = player.getActingPlayer().getTemplate().getBaseCpRegen(player.getLevel()) * player.getLevelMod() * BaseStats.CON.calcBonus(player);
|
||||||
double cpRegenMultiplier = Config.CP_REGEN_MULTIPLIER;
|
double cpRegenMultiplier = Config.CP_REGEN_MULTIPLIER;
|
||||||
double cpRegenBonus = 0;
|
if (player.isSitting())
|
||||||
|
|
||||||
if (cha.isPlayer())
|
|
||||||
{
|
{
|
||||||
L2PcInstance player = cha.getActingPlayer();
|
cpRegenMultiplier *= 1.5; // Sitting
|
||||||
|
|
||||||
// Calculate Movement bonus
|
|
||||||
if (player.isSitting())
|
|
||||||
{
|
|
||||||
cpRegenMultiplier *= 1.5; // Sitting
|
|
||||||
}
|
|
||||||
else if (!player.isMoving())
|
|
||||||
{
|
|
||||||
cpRegenMultiplier *= 1.1; // Staying
|
|
||||||
}
|
|
||||||
else if (player.isRunning())
|
|
||||||
{
|
|
||||||
cpRegenMultiplier *= 0.7; // Running
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else if (!player.isMoving())
|
||||||
{
|
{
|
||||||
// Calculate Movement bonus
|
cpRegenMultiplier *= 1.1; // Staying
|
||||||
if (!cha.isMoving())
|
|
||||||
{
|
|
||||||
cpRegenMultiplier *= 1.1; // Staying
|
|
||||||
}
|
|
||||||
else if (cha.isRunning())
|
|
||||||
{
|
|
||||||
cpRegenMultiplier *= 0.7; // Running
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else if (player.isRunning())
|
||||||
// Apply CON bonus
|
{
|
||||||
init *= cha.getLevelMod() * BaseStats.CON.calcBonus(cha);
|
cpRegenMultiplier *= 0.7; // Running
|
||||||
return (cha.calcStat(Stats.REGENERATE_CP_RATE, Math.max(1, init), null, null) * cpRegenMultiplier) + cpRegenBonus;
|
}
|
||||||
|
return player.calcStat(Stats.REGENERATE_CP_RATE, Math.max(1, init), null, null) * cpRegenMultiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final double calcSiegeRegenModifier(L2PcInstance activeChar)
|
public static final double calcSiegeRegenModifier(L2PcInstance activeChar)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.gameserver.network.clientpackets;
|
package com.l2jserver.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jserver.gameserver.model.L2Party.messageType;
|
import com.l2jserver.gameserver.model.L2Party;
|
||||||
import com.l2jserver.gameserver.model.PartyMatchRoom;
|
import com.l2jserver.gameserver.model.PartyMatchRoom;
|
||||||
import com.l2jserver.gameserver.model.PartyMatchRoomList;
|
import com.l2jserver.gameserver.model.PartyMatchRoomList;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
@ -56,84 +56,83 @@ public final class RequestAnswerJoinParty extends L2GameClientPacket
|
|||||||
|
|
||||||
requestor.sendPacket(new JoinParty(_response));
|
requestor.sendPacket(new JoinParty(_response));
|
||||||
|
|
||||||
if (_response == 1)
|
switch (_response)
|
||||||
{
|
{
|
||||||
if (requestor.isInParty())
|
case -1: // Party disable by player client config
|
||||||
{
|
{
|
||||||
if (requestor.getParty().getMemberCount() >= 9)
|
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_SET_TO_REFUSE_PARTY_REQUESTS_AND_CANNOT_RECEIVE_A_PARTY_REQUEST);
|
||||||
{
|
sm.addPcName(player);
|
||||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_PARTY_IS_FULL);
|
requestor.sendPacket(sm);
|
||||||
player.sendPacket(sm);
|
break;
|
||||||
requestor.sendPacket(sm);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
player.joinParty(requestor.getParty());
|
case 0: // Party cancel by player
|
||||||
|
|
||||||
if (requestor.isInPartyMatchRoom() && player.isInPartyMatchRoom())
|
|
||||||
{
|
{
|
||||||
final PartyMatchRoomList list = PartyMatchRoomList.getInstance();
|
|
||||||
if ((list != null) && (list.getPlayerRoomId(requestor) == list.getPlayerRoomId(player)))
|
// requestor.sendPacket(SystemMessageId.THE_PLAYER_DECLINED_TO_JOIN_YOUR_PARTY); FIXME: Done in client?
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1: // Party accept by player
|
||||||
|
{
|
||||||
|
if (requestor.isInParty())
|
||||||
{
|
{
|
||||||
final PartyMatchRoom room = list.getPlayerRoom(requestor);
|
if (requestor.getParty().getMemberCount() >= 9)
|
||||||
if (room != null)
|
|
||||||
{
|
{
|
||||||
final ExManagePartyRoomMember packet = new ExManagePartyRoomMember(player, room, 1);
|
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_PARTY_IS_FULL);
|
||||||
for (L2PcInstance member : room.getPartyMembers())
|
player.sendPacket(sm);
|
||||||
|
requestor.sendPacket(sm);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
player.joinParty(requestor.getParty());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
requestor.setParty(new L2Party(requestor, requestor.getPartyDistributionType()));
|
||||||
|
player.joinParty(requestor.getParty());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requestor.isInPartyMatchRoom() && player.isInPartyMatchRoom())
|
||||||
|
{
|
||||||
|
final PartyMatchRoomList list = PartyMatchRoomList.getInstance();
|
||||||
|
if ((list != null) && (list.getPlayerRoomId(requestor) == list.getPlayerRoomId(player)))
|
||||||
|
{
|
||||||
|
final PartyMatchRoom room = list.getPlayerRoom(requestor);
|
||||||
|
if (room != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
final ExManagePartyRoomMember packet = new ExManagePartyRoomMember(player, room, 1);
|
||||||
|
for (L2PcInstance member : room.getPartyMembers())
|
||||||
{
|
{
|
||||||
member.sendPacket(packet);
|
if (member != null)
|
||||||
|
{
|
||||||
|
member.sendPacket(packet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
else if (requestor.isInPartyMatchRoom() && !player.isInPartyMatchRoom())
|
||||||
else if (requestor.isInPartyMatchRoom() && !player.isInPartyMatchRoom())
|
|
||||||
{
|
|
||||||
final PartyMatchRoomList list = PartyMatchRoomList.getInstance();
|
|
||||||
if (list != null)
|
|
||||||
{
|
{
|
||||||
final PartyMatchRoom room = list.getPlayerRoom(requestor);
|
final PartyMatchRoomList list = PartyMatchRoomList.getInstance();
|
||||||
if (room != null)
|
if (list != null)
|
||||||
{
|
{
|
||||||
room.addMember(player);
|
final PartyMatchRoom room = list.getPlayerRoom(requestor);
|
||||||
ExManagePartyRoomMember packet = new ExManagePartyRoomMember(player, room, 1);
|
if (room != null)
|
||||||
for (L2PcInstance member : room.getPartyMembers())
|
|
||||||
{
|
{
|
||||||
if (member != null)
|
room.addMember(player);
|
||||||
|
ExManagePartyRoomMember packet = new ExManagePartyRoomMember(player, room, 1);
|
||||||
|
for (L2PcInstance member : room.getPartyMembers())
|
||||||
{
|
{
|
||||||
member.sendPacket(packet);
|
if (member != null)
|
||||||
|
{
|
||||||
|
member.sendPacket(packet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
player.setPartyRoom(room.getId());
|
||||||
|
// player.setPartyMatching(1);
|
||||||
|
player.broadcastUserInfo();
|
||||||
}
|
}
|
||||||
player.setPartyRoom(room.getId());
|
|
||||||
// player.setPartyMatching(1);
|
|
||||||
player.broadcastUserInfo();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
}
|
|
||||||
else if (_response == -1)
|
|
||||||
{
|
|
||||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_SET_TO_REFUSE_PARTY_REQUESTS_AND_CANNOT_RECEIVE_A_PARTY_REQUEST);
|
|
||||||
sm.addPcName(player);
|
|
||||||
requestor.sendPacket(sm);
|
|
||||||
|
|
||||||
// activate garbage collection if there are no other members in party (happens when we were creating new one)
|
|
||||||
if (requestor.isInParty() && (requestor.getParty().getMemberCount() == 1))
|
|
||||||
{
|
|
||||||
requestor.getParty().removePartyMember(requestor, messageType.None);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
// 0
|
|
||||||
{
|
|
||||||
// requestor.sendPacket(SystemMessageId.THE_PLAYER_DECLINED_TO_JOIN_YOUR_PARTY); FIXME: Done in client?
|
|
||||||
|
|
||||||
// activate garbage collection if there are no other members in party (happens when we were creating new one)
|
|
||||||
if (requestor.isInParty() && (requestor.getParty().getMemberCount() == 1))
|
|
||||||
{
|
|
||||||
requestor.getParty().removePartyMember(requestor, messageType.None);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,11 +201,10 @@ public final class RequestJoinParty extends L2GameClientPacket
|
|||||||
|
|
||||||
if (!target.isProcessingRequest())
|
if (!target.isProcessingRequest())
|
||||||
{
|
{
|
||||||
requestor.setParty(new L2Party(requestor, partyDistributionType));
|
|
||||||
|
|
||||||
requestor.onTransactionRequest(target);
|
|
||||||
target.sendPacket(new AskJoinParty(requestor.getName(), partyDistributionType));
|
target.sendPacket(new AskJoinParty(requestor.getName(), partyDistributionType));
|
||||||
requestor.getParty().setPendingInvitation(true);
|
target.setActiveRequester(requestor);
|
||||||
|
requestor.onTransactionRequest(target);
|
||||||
|
requestor.setPartyDistributionType(partyDistributionType);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -47,7 +47,7 @@ public final class RequestPledgeCrest extends L2GameClientPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
final L2PcInstance activeChar = getClient().getActiveChar();
|
final L2PcInstance activeChar = getClient().getActiveChar();
|
||||||
if (activeChar.getClan().getId() == _clanId)
|
if ((activeChar.getClan() != null) && (activeChar.getClan().getId() == _clanId))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -386,7 +386,7 @@ public final class L2ScriptEngineManager
|
|||||||
/**
|
/**
|
||||||
* @return Returns the currentLoadingScript.
|
* @return Returns the currentLoadingScript.
|
||||||
*/
|
*/
|
||||||
protected File getCurrentLoadingScript()
|
public File getCurrentLoadingScript()
|
||||||
{
|
{
|
||||||
return _currentLoadingScript;
|
return _currentLoadingScript;
|
||||||
}
|
}
|
||||||
|
@ -1,98 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2004-2015 L2J Server
|
|
||||||
*
|
|
||||||
* This file is part of L2J Server.
|
|
||||||
*
|
|
||||||
* L2J Server 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 Server is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package com.l2jserver.gameserver.scripting;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import javax.script.ScriptException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract class for classes that are meant to be implemented by scripts.<BR>
|
|
||||||
* @author KenM
|
|
||||||
*/
|
|
||||||
public abstract class ManagedScript
|
|
||||||
{
|
|
||||||
private final File _scriptFile;
|
|
||||||
private long _lastLoadTime;
|
|
||||||
private boolean _isActive;
|
|
||||||
|
|
||||||
public ManagedScript()
|
|
||||||
{
|
|
||||||
_scriptFile = L2ScriptEngineManager.getInstance().getCurrentLoadingScript();
|
|
||||||
setLastLoadTime(System.currentTimeMillis());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attempts to reload this script and to refresh the necessary bindings with it ScriptControler.<BR>
|
|
||||||
* Subclasses of this class should override this method to properly refresh their bindings when necessary.
|
|
||||||
* @return true if and only if the script was reloaded, false otherwise.
|
|
||||||
*/
|
|
||||||
public boolean reload()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
L2ScriptEngineManager.getInstance().executeScript(getScriptFile());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch (ScriptException e)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract boolean unload();
|
|
||||||
|
|
||||||
public void setActive(boolean status)
|
|
||||||
{
|
|
||||||
_isActive = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isActive()
|
|
||||||
{
|
|
||||||
return _isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Returns the scriptFile.
|
|
||||||
*/
|
|
||||||
public File getScriptFile()
|
|
||||||
{
|
|
||||||
return _scriptFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param lastLoadTime The lastLoadTime to set.
|
|
||||||
*/
|
|
||||||
protected void setLastLoadTime(long lastLoadTime)
|
|
||||||
{
|
|
||||||
_lastLoadTime = lastLoadTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Returns the lastLoadTime.
|
|
||||||
*/
|
|
||||||
protected long getLastLoadTime()
|
|
||||||
{
|
|
||||||
return _lastLoadTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract String getScriptName();
|
|
||||||
|
|
||||||
public abstract ScriptManager<?> getScriptManager();
|
|
||||||
}
|
|
@ -20,11 +20,13 @@ package com.l2jserver.gameserver.scripting;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.l2jserver.gameserver.model.events.AbstractScript;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author KenM
|
* @author KenM
|
||||||
* @param <S>
|
* @param <S>
|
||||||
*/
|
*/
|
||||||
public abstract class ScriptManager<S extends ManagedScript>
|
public abstract class ScriptManager<S extends AbstractScript>
|
||||||
{
|
{
|
||||||
public abstract Map<String, S> getScripts();
|
public abstract Map<String, S> getScripts();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user