Addition of Spirit Forest instance.

Contributed by manax182.
This commit is contained in:
MobiusDevelopment
2021-07-02 22:40:11 +00:00
parent 741cb757b6
commit bb06a36ca8
6 changed files with 332 additions and 0 deletions

View File

@@ -3,4 +3,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 BaylorWarzone enterInstance">Fight Baylor</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest NightmareKamaloka enterInstance">Go to Nightmare Kamaloka</Button>
<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 SpiritForest enterInstance">Spirit Forest</Button>
</body></html>

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Spirit Forest -->
<instance id="310" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
<time duration="60" empty="1" />
<locations>
<enter type="FIXED">
<location x="-83306" y="244696" z="-14160" heading="0" /> <!-- Spirit Forest -->
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="GroupMin">
<param name="limit" value="5" />
</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="ON_FINISH">
<reset day="SATURDAY" hour="6" minute="30" />
</reenter>
<spawnlist>
<group name="general" spawnByDefault="true">
<npc id="24630" x="-81336" y="245944" z="-14157" heading="16530" respawnTime="60sec" /> <!-- Evolved Growler -->
<npc id="24629" x="-81912" y="245480" z="-14157" heading="4942" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-81640" y="246168" z="-14157" heading="10603" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-81848" y="246664" z="-14157" heading="18802" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-82744" y="246344" z="-14153" heading="54507" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-82856" y="245848" z="-14160" heading="46992" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-82449" y="245293" z="-14160" heading="55619" respawnTime="60sec" /> <!-- Growler -->
<npc id="24627" x="-82312" y="245528" z="-14157" heading="18259" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24627" x="-81944" y="245864" z="-14156" heading="7064" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24627" x="-81960" y="246376" z="-14157" heading="21032" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24627" x="-82456" y="246568" z="-14154" heading="30288" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24628" x="-82216" y="246200" z="-14158" heading="50624" respawnTime="60sec" /> <!-- Honeybee -->
<npc id="24628" x="-83000" y="246056" z="-14156" heading="64254" respawnTime="60sec" /> <!-- Honeybee -->
<npc id="24625" x="-82328" y="245928" z="-14160" heading="57922" respawnTime="60sec" /> <!-- Treant -->
<npc id="24625" x="-82696" y="246072" z="-14149" heading="17355" respawnTime="60sec" /> <!-- Treant -->
<npc id="24625" x="-81784" y="245592" z="-14157" heading="62351" respawnTime="60sec" /> <!-- Treant -->
<npc id="24625" x="-81784" y="245704" z="-14157" heading="16979" respawnTime="60sec" /> <!-- Treant -->
<npc id="24626" x="-82712" y="245576" z="-14152" heading="36094" respawnTime="60sec" /> <!-- Ratel -->
<npc id="24626" x="-81848" y="246232" z="-14157" heading="7048" respawnTime="60sec" /> <!-- Ratel -->
<npc id="24626" x="-82168" y="245272" z="-14160" heading="45511" respawnTime="60sec" /> <!-- Ratel -->
<npc id="24629" x="-82120" y="246424" z="-14154" heading="15639" respawnTime="60sec" /> <!-- Growler -->
<npc id="24630" x="-82712" y="246552" z="-14153" heading="27043" respawnTime="60sec" /> <!-- Evolved Growler -->
<npc id="24629" x="-82968" y="246264" z="-14151" heading="41494" respawnTime="60sec" /> <!-- Growler -->
<npc id="24627" x="-82696" y="245384" z="-14153" heading="59660" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24628" x="-82136" y="245448" z="-14158" heading="1108" respawnTime="60sec" /> <!-- Honeybee -->
</group>
</spawnlist>
</instance>

View File

@@ -0,0 +1,109 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.SpiritForest;
import java.util.List;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
/**
* @author Manax, Mobius
*/
public class SpiritForest extends AbstractInstance
{
private static final int TEMPLATE = 310; // Spirit Forest
public SpiritForest()
{
super(TEMPLATE);
addInstanceLeaveId(TEMPLATE);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
if (event.equals("enterInstance"))
{
if (player.isInParty())
{
final Party party = player.getParty();
if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null;
}
if (player.isInCommandChannel())
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<PlayerInstance> members = party.getMembers();
for (PlayerInstance member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
return null;
}
}
for (PlayerInstance member : members)
{
enterInstance(member, npc, TEMPLATE);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
}
return null;
}
@Override
protected void onEnter(PlayerInstance player, Instance instance, boolean firstEnter)
{
super.onEnter(player, instance, firstEnter);
player.sendPacket(new ExSendUIEvent(player, false, false, Math.min(3600000, (int) (instance.getRemainingTime() / 1000)), 0, NpcStringId.TIME_LEFT));
}
@Override
public void onInstanceLeave(PlayerInstance player, Instance instance)
{
player.sendPacket(new ExSendUIEvent(player, true, false, 3600, 0, NpcStringId.TIME_LEFT));
}
public static void main(String[] args)
{
new SpiritForest();
}
}

View File

@@ -3,4 +3,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 BaylorWarzone enterInstance">Fight Baylor</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest NightmareKamaloka enterInstance">Go to Nightmare Kamaloka</Button>
<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 SpiritForest enterInstance">Spirit Forest</Button>
</body></html>

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Spirit Forest -->
<instance id="310" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
<time duration="60" empty="1" />
<locations>
<enter type="FIXED">
<location x="-83306" y="244696" z="-14160" heading="0" /> <!-- Spirit Forest -->
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="GroupMin">
<param name="limit" value="5" />
</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="ON_FINISH">
<reset day="SATURDAY" hour="6" minute="30" />
</reenter>
<spawnlist>
<group name="general" spawnByDefault="true">
<npc id="24630" x="-81336" y="245944" z="-14157" heading="16530" respawnTime="60sec" /> <!-- Evolved Growler -->
<npc id="24629" x="-81912" y="245480" z="-14157" heading="4942" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-81640" y="246168" z="-14157" heading="10603" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-81848" y="246664" z="-14157" heading="18802" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-82744" y="246344" z="-14153" heading="54507" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-82856" y="245848" z="-14160" heading="46992" respawnTime="60sec" /> <!-- Growler -->
<npc id="24629" x="-82449" y="245293" z="-14160" heading="55619" respawnTime="60sec" /> <!-- Growler -->
<npc id="24627" x="-82312" y="245528" z="-14157" heading="18259" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24627" x="-81944" y="245864" z="-14156" heading="7064" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24627" x="-81960" y="246376" z="-14157" heading="21032" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24627" x="-82456" y="246568" z="-14154" heading="30288" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24628" x="-82216" y="246200" z="-14158" heading="50624" respawnTime="60sec" /> <!-- Honeybee -->
<npc id="24628" x="-83000" y="246056" z="-14156" heading="64254" respawnTime="60sec" /> <!-- Honeybee -->
<npc id="24625" x="-82328" y="245928" z="-14160" heading="57922" respawnTime="60sec" /> <!-- Treant -->
<npc id="24625" x="-82696" y="246072" z="-14149" heading="17355" respawnTime="60sec" /> <!-- Treant -->
<npc id="24625" x="-81784" y="245592" z="-14157" heading="62351" respawnTime="60sec" /> <!-- Treant -->
<npc id="24625" x="-81784" y="245704" z="-14157" heading="16979" respawnTime="60sec" /> <!-- Treant -->
<npc id="24626" x="-82712" y="245576" z="-14152" heading="36094" respawnTime="60sec" /> <!-- Ratel -->
<npc id="24626" x="-81848" y="246232" z="-14157" heading="7048" respawnTime="60sec" /> <!-- Ratel -->
<npc id="24626" x="-82168" y="245272" z="-14160" heading="45511" respawnTime="60sec" /> <!-- Ratel -->
<npc id="24629" x="-82120" y="246424" z="-14154" heading="15639" respawnTime="60sec" /> <!-- Growler -->
<npc id="24630" x="-82712" y="246552" z="-14153" heading="27043" respawnTime="60sec" /> <!-- Evolved Growler -->
<npc id="24629" x="-82968" y="246264" z="-14151" heading="41494" respawnTime="60sec" /> <!-- Growler -->
<npc id="24627" x="-82696" y="245384" z="-14153" heading="59660" respawnTime="60sec" /> <!-- Kiku -->
<npc id="24628" x="-82136" y="245448" z="-14158" heading="1108" respawnTime="60sec" /> <!-- Honeybee -->
</group>
</spawnlist>
</instance>

View File

@@ -0,0 +1,109 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.SpiritForest;
import java.util.List;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
/**
* @author Manax, Mobius
*/
public class SpiritForest extends AbstractInstance
{
private static final int TEMPLATE = 310; // Spirit Forest
public SpiritForest()
{
super(TEMPLATE);
addInstanceLeaveId(TEMPLATE);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
if (event.equals("enterInstance"))
{
if (player.isInParty())
{
final Party party = player.getParty();
if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null;
}
if (player.isInCommandChannel())
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<PlayerInstance> members = party.getMembers();
for (PlayerInstance member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
return null;
}
}
for (PlayerInstance member : members)
{
enterInstance(member, npc, TEMPLATE);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
}
return null;
}
@Override
protected void onEnter(PlayerInstance player, Instance instance, boolean firstEnter)
{
super.onEnter(player, instance, firstEnter);
player.sendPacket(new ExSendUIEvent(player, false, false, Math.min(3600000, (int) (instance.getRemainingTime() / 1000)), 0, NpcStringId.TIME_LEFT));
}
@Override
public void onInstanceLeave(PlayerInstance player, Instance instance)
{
player.sendPacket(new ExSendUIEvent(player, true, false, 3600, 0, NpcStringId.TIME_LEFT));
}
public static void main(String[] args)
{
new SpiritForest();
}
}