Crystal Prison (Baylor) 110 level.

Thanks to nasseka.
This commit is contained in:
MobiusDevelopment 2021-07-25 00:27:54 +00:00
parent e08d53462e
commit e8eebdb0bc
6 changed files with 252 additions and 18 deletions

View File

@ -5,4 +5,5 @@ Welcome! My name is Benusta. I help adventurers to travel to instance zones. I c
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AshenShadowRevolutionaries enterInstance">Go to Ashen Shadow Revolutionaries</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KrofinNest enterInstance">Krofin's Nest</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SpiritForest enterInstance">Spirit Forest</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BaylorWarzone enterInstance110">Crystal Prison (Baylor) - Lv. 110</Button>
</body></html>

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Baylor Warzone - High lv. 110 -->
<instance id="312" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/instance.xsd">
<time duration="60" empty="3" />
<locations>
<enter type="FIXED">
<location x="153573" y="143772" z="-12704" />
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party">
<param name="html" value="condNoParty.html" />
</condition>
<condition type="PartyLeader">
<param name="html" value="condNoPartyLeader.html" />
</condition>
<condition type="GroupMin">
<param name="limit" value="2" />
</condition>
<condition type="GroupMax">
<param name="limit" value="7" />
</condition>
<condition type="Level">
<param name="min" value="110" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="NONE">
<reset day="MONDAY" hour="6" minute="30" />
<reset day="TUESDAY" hour="6" minute="30" />
<reset day="WEDNESDAY" hour="6" minute="30" />
<reset day="THURSDAY" hour="6" minute="30" />
<reset day="FRIDAY" hour="6" minute="30" />
<reset day="SATURDAY" hour="6" minute="30" />
<reset day="SUNDAY" hour="6" minute="30" />
</reenter>
<doorlist>
<door id="24220008">
<openStatus default="open" />
</door>
<door id="24220009" />
<door id="24220010" />
<door id="24220011" />
<door id="24220012" />
<door id="24220013" />
<door id="24220014" />
<door id="24220015" />
<door id="24220016" />
<door id="24220017" />
<door id="24220018" />
<door id="24220019" />
</doorlist>
<spawnlist>
<group>
<npc id="29106" x="153568" y="142080" z="-12736" heading="60000" /> <!-- -->
<npc id="29107" x="152484" y="142710" z="-12736" heading="60000" /> <!-- -->
<npc id="29108" x="153351" y="142396" z="-12736" heading="60000" /> <!-- -->
<npc id="29109" x="153155" y="142317" z="-12736" heading="60000" /> <!-- -->
</group>
<group name="BAYLOR" spawnByDefault="false">
<npc id="29186" x="153776" y="141993" z="-12736" heading="60470" /> <!-- Baylor -->
<npc id="29186" x="153378" y="141997" z="-12736" heading="36076" /> <!-- Baylor -->
</group>
<group name="PRISON_GUARD_GROUP_1" spawnByDefault="false">
<npc id="29104" x="153360" y="141936" z="-12736" heading="8192" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153312" y="142048" z="-12736" heading="0" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153333" y="142176" z="-12736" heading="61439" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
</group>
<group name="PRISON_GUARD_GROUP_2" spawnByDefault="false">
<npc id="29104" x="153727" y="141875" z="-12736" heading="24500" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153600" y="141824" z="-12736" heading="16384" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153472" y="141840" z="-12736" heading="12288" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
</group>
<group name="PRISON_GUARD_GROUP_3" spawnByDefault="false">
<npc id="29104" x="153776" y="142224" z="-12736" heading="40960" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153824" y="142112" z="-12736" heading="32768" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153808" y="141984" z="-12736" heading="28672" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
</group>
<group name="PRISON_GUARD_GROUP_4" spawnByDefault="false">
<npc id="29104" x="153424" y="142288" z="-12736" heading="57344" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153520" y="142336" z="-12736" heading="49152" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153666" y="142312" z="-12736" heading="45055" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
</group>
</spawnlist>
</instance>

View File

@ -16,6 +16,10 @@
*/
package ai.bosses.Baylor;
import java.util.List;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.World;
@ -29,7 +33,9 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
@ -41,6 +47,7 @@ public class BaylorWarzone extends AbstractInstance
{
// NPCs
private static final int BAYLOR = 29213;
private static final int BAYLOR_110 = 29186;
private static final int PRISON_GUARD = 29104;
private static final int BENUSTA = 34542;
private static final int INVISIBLE_NPC_1 = 29106;
@ -51,28 +58,48 @@ public class BaylorWarzone extends AbstractInstance
private static final SkillHolder BAYLOR_SOCIAL_SKILL = new SkillHolder(5402, 1);
// Item
private static final ItemHolder BENUSTAS_REWARD_BOX = new ItemHolder(81151, 1);
private static final ItemHolder BENUSTAS_REWARD_BOX_110 = new ItemHolder(81741, 1);
// Locations
private static final Location BATTLE_PORT = new Location(153567, 143319, -12736);
// Misc
private static final int TEMPLATE_ID = 166;
private static final int[] TEMPLATE_IDS =
{
166,
312
};
public BaylorWarzone()
{
super(TEMPLATE_ID);
super(TEMPLATE_IDS);
addStartNpc(BENUSTA);
addTalkId(BENUSTA);
addInstanceCreatedId(TEMPLATE_ID);
addInstanceCreatedId(TEMPLATE_IDS);
addSpellFinishedId(INVISIBLE_NPC_1);
addCreatureSeeId(INVISIBLE_NPC_1);
setCreatureKillId(this::onBossKill, BAYLOR);
setCreatureKillId(this::onBossKill, BAYLOR, BAYLOR_110);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
if (event.equals("enterInstance"))
if (event.contains("enterInstance"))
{
enterInstance(player, npc, TEMPLATE_ID);
if (event.contains("110"))
{
// Cannot enter if player finished another instance.
final long currentTime = Chronos.currentTimeMillis();
if ((currentTime < InstanceManager.getInstance().getInstanceTime(player, 166)))
{
player.sendPacket(new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON).addString(player.getName()));
return null;
}
enterInstance(player, npc, TEMPLATE_IDS[1]);
}
else
{
enterInstance(player, npc, TEMPLATE_IDS[0]);
}
}
return super.onAdvEvent(event, npc, player);
}
@ -174,7 +201,8 @@ public class BaylorWarzone extends AbstractInstance
}
case "START_SCENE_13":
{
world.getAliveNpcs(BAYLOR).forEach(baylor ->
final List<Npc> baylors = world.getAliveNpcs(world.getTemplateId() == TEMPLATE_IDS[0] ? BAYLOR : BAYLOR_110);
baylors.forEach(baylor ->
{
getTimers().addTimer("BAYLOR_SOCIAL_SKILL", (baylor.getVariables().getInt("is_after_you") == 0 ? 14 : 16) * 1000, baylor, null);
broadcastSocialAction(baylor, 1);
@ -294,11 +322,12 @@ public class BaylorWarzone extends AbstractInstance
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (world.getAliveNpcs(BAYLOR).isEmpty())
final List<Npc> baylors = world.getAliveNpcs(world.getTemplateId() == TEMPLATE_IDS[0] ? BAYLOR : BAYLOR_110);
if (baylors.isEmpty())
{
for (PlayerInstance member : world.getPlayers())
{
giveItems(member, BENUSTAS_REWARD_BOX);
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
world.finishInstance();
}

View File

@ -5,4 +5,5 @@ Welcome! My name is Benusta. I help adventurers to travel to instance zones. I c
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AshenShadowRevolutionaries enterInstance">Go to Ashen Shadow Revolutionaries</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KrofinNest enterInstance">Krofin's Nest</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SpiritForest enterInstance">Spirit Forest</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BaylorWarzone enterInstance110">Crystal Prison (Baylor) - Lv. 110</Button>
</body></html>

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Baylor Warzone - High lv. 110 -->
<instance id="312" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/instance.xsd">
<time duration="60" empty="3" />
<locations>
<enter type="FIXED">
<location x="153573" y="143772" z="-12704" />
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party">
<param name="html" value="condNoParty.html" />
</condition>
<condition type="PartyLeader">
<param name="html" value="condNoPartyLeader.html" />
</condition>
<condition type="GroupMin">
<param name="limit" value="2" />
</condition>
<condition type="GroupMax">
<param name="limit" value="7" />
</condition>
<condition type="Level">
<param name="min" value="110" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="NONE">
<reset day="MONDAY" hour="6" minute="30" />
<reset day="TUESDAY" hour="6" minute="30" />
<reset day="WEDNESDAY" hour="6" minute="30" />
<reset day="THURSDAY" hour="6" minute="30" />
<reset day="FRIDAY" hour="6" minute="30" />
<reset day="SATURDAY" hour="6" minute="30" />
<reset day="SUNDAY" hour="6" minute="30" />
</reenter>
<doorlist>
<door id="24220008">
<openStatus default="open" />
</door>
<door id="24220009" />
<door id="24220010" />
<door id="24220011" />
<door id="24220012" />
<door id="24220013" />
<door id="24220014" />
<door id="24220015" />
<door id="24220016" />
<door id="24220017" />
<door id="24220018" />
<door id="24220019" />
</doorlist>
<spawnlist>
<group>
<npc id="29106" x="153568" y="142080" z="-12736" heading="60000" /> <!-- -->
<npc id="29107" x="152484" y="142710" z="-12736" heading="60000" /> <!-- -->
<npc id="29108" x="153351" y="142396" z="-12736" heading="60000" /> <!-- -->
<npc id="29109" x="153155" y="142317" z="-12736" heading="60000" /> <!-- -->
</group>
<group name="BAYLOR" spawnByDefault="false">
<npc id="29186" x="153776" y="141993" z="-12736" heading="60470" /> <!-- Baylor -->
<npc id="29186" x="153378" y="141997" z="-12736" heading="36076" /> <!-- Baylor -->
</group>
<group name="PRISON_GUARD_GROUP_1" spawnByDefault="false">
<npc id="29104" x="153360" y="141936" z="-12736" heading="8192" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153312" y="142048" z="-12736" heading="0" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153333" y="142176" z="-12736" heading="61439" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
</group>
<group name="PRISON_GUARD_GROUP_2" spawnByDefault="false">
<npc id="29104" x="153727" y="141875" z="-12736" heading="24500" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153600" y="141824" z="-12736" heading="16384" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153472" y="141840" z="-12736" heading="12288" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
</group>
<group name="PRISON_GUARD_GROUP_3" spawnByDefault="false">
<npc id="29104" x="153776" y="142224" z="-12736" heading="40960" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153824" y="142112" z="-12736" heading="32768" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153808" y="141984" z="-12736" heading="28672" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
</group>
<group name="PRISON_GUARD_GROUP_4" spawnByDefault="false">
<npc id="29104" x="153424" y="142288" z="-12736" heading="57344" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153520" y="142336" z="-12736" heading="49152" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
<npc id="29104" x="153666" y="142312" z="-12736" heading="45055" spawnAnimation="true" /> <!-- Crystal Prison Guard -->
</group>
</spawnlist>
</instance>

View File

@ -16,6 +16,10 @@
*/
package ai.bosses.Baylor;
import java.util.List;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.World;
@ -29,7 +33,9 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
@ -41,6 +47,7 @@ public class BaylorWarzone extends AbstractInstance
{
// NPCs
private static final int BAYLOR = 29213;
private static final int BAYLOR_110 = 29186;
private static final int PRISON_GUARD = 29104;
private static final int BENUSTA = 34542;
private static final int INVISIBLE_NPC_1 = 29106;
@ -51,28 +58,48 @@ public class BaylorWarzone extends AbstractInstance
private static final SkillHolder BAYLOR_SOCIAL_SKILL = new SkillHolder(5402, 1);
// Item
private static final ItemHolder BENUSTAS_REWARD_BOX = new ItemHolder(81151, 1);
private static final ItemHolder BENUSTAS_REWARD_BOX_110 = new ItemHolder(81741, 1);
// Locations
private static final Location BATTLE_PORT = new Location(153567, 143319, -12736);
// Misc
private static final int TEMPLATE_ID = 166;
private static final int[] TEMPLATE_IDS =
{
166,
312
};
public BaylorWarzone()
{
super(TEMPLATE_ID);
super(TEMPLATE_IDS);
addStartNpc(BENUSTA);
addTalkId(BENUSTA);
addInstanceCreatedId(TEMPLATE_ID);
addInstanceCreatedId(TEMPLATE_IDS);
addSpellFinishedId(INVISIBLE_NPC_1);
addCreatureSeeId(INVISIBLE_NPC_1);
setCreatureKillId(this::onBossKill, BAYLOR);
setCreatureKillId(this::onBossKill, BAYLOR, BAYLOR_110);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
if (event.equals("enterInstance"))
if (event.contains("enterInstance"))
{
enterInstance(player, npc, TEMPLATE_ID);
if (event.contains("110"))
{
// Cannot enter if player finished another instance.
final long currentTime = Chronos.currentTimeMillis();
if ((currentTime < InstanceManager.getInstance().getInstanceTime(player, 166)))
{
player.sendPacket(new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON).addString(player.getName()));
return null;
}
enterInstance(player, npc, TEMPLATE_IDS[1]);
}
else
{
enterInstance(player, npc, TEMPLATE_IDS[0]);
}
}
return super.onAdvEvent(event, npc, player);
}
@ -174,7 +201,8 @@ public class BaylorWarzone extends AbstractInstance
}
case "START_SCENE_13":
{
world.getAliveNpcs(BAYLOR).forEach(baylor ->
final List<Npc> baylors = world.getAliveNpcs(world.getTemplateId() == TEMPLATE_IDS[0] ? BAYLOR : BAYLOR_110);
baylors.forEach(baylor ->
{
getTimers().addTimer("BAYLOR_SOCIAL_SKILL", (baylor.getVariables().getInt("is_after_you") == 0 ? 14 : 16) * 1000, baylor, null);
broadcastSocialAction(baylor, 1);
@ -294,11 +322,12 @@ public class BaylorWarzone extends AbstractInstance
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (world.getAliveNpcs(BAYLOR).isEmpty())
final List<Npc> baylors = world.getAliveNpcs(world.getTemplateId() == TEMPLATE_IDS[0] ? BAYLOR : BAYLOR_110);
if (baylors.isEmpty())
{
for (PlayerInstance member : world.getPlayers())
{
giveItems(member, BENUSTAS_REWARD_BOX);
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
world.finishInstance();
}