Faeron area reworked.

This commit is contained in:
MobiusDev
2015-11-18 13:11:53 +00:00
parent 26622e2c4f
commit 1694bf3a2f
15 changed files with 469 additions and 537 deletions

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
You've challenged <font color="LEVEL">Earth Terakan</font> to a battle.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
You've challenged <font color="LEVEL">Wind Cassius</font> to a battle.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
You've challenged <font color="LEVEL">Flaming Ladar</font> to a battle.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
<font color="LEVEL">Earth Terakan</font> is already engaged into a battle.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
<font color="LEVEL">Wind Cassius</font> is already engaged into a battle.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
<font color="LEVEL">Flaming Ladar</font> is already engaged into a battle.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
To summon Earth Terakan, you must have an <font color="LEVEL">Apparition Stone (Lv. 88)</font>.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
To summon Wind Cassius, you must have an <font color="LEVEL">Apparition Stone (Lv. 93)</font>.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Altar of Souls:<br>
To summon Flaming Ladar, you must have an <font color="LEVEL">Apparition Stone (Lv. 98)</font>.
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Altar of Souls:<br>
Ordinary-looking, but this altar has seen many bloody sacrifices.<br>
There is transparent space where you can place an <font color="LEVEL">Apparition Stone (Lv. 88)</font>, an <font color="LEVEL">Apparition Stone (Lv. 93)</font> and an <font color="LEVEL">Apparition Stone (Lv. 98)</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AltarOfSouls request_boss_88">Place an Apparition Stone (Lv. 88) there</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AltarOfSouls request_boss_93">Place an Apparition Stone (Lv. 93) there</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AltarOfSouls request_boss_98">Place an Apparition Stone (Lv. 98) there</Button>
</body></html>

View File

@@ -0,0 +1,120 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ai.npc.AltarOfSouls;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
/**
* Altar of Souls AI.
* @author Mobius
*/
public final class AltarOfSouls extends AbstractNpcAI
{
// NPCs
private static final int ALTAR_OF_SOULS = 33920;
private static final int LADAR = 25942;
private static final int CASSIUS = 25943;
private static final int TERAKAN = 25944;
// Items
private static final int APPARITION_STONE_88 = 38572;
private static final int APPARITION_STONE_93 = 38573;
private static final int APPARITION_STONE_98 = 38574;
// Misc
private L2Npc BOSS_88;
private L2Npc BOSS_93;
private L2Npc BOSS_98;
private AltarOfSouls()
{
super(AltarOfSouls.class.getSimpleName(), "ai/npc");
addStartNpc(ALTAR_OF_SOULS);
addFirstTalkId(ALTAR_OF_SOULS);
addTalkId(ALTAR_OF_SOULS);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (npc.getId() != ALTAR_OF_SOULS)
{
return null;
}
switch (event)
{
case "request_boss_88":
{
if ((BOSS_88 != null) && !BOSS_88.isDead())
{
return "33920-4.html";
}
if (hasQuestItems(player, APPARITION_STONE_88))
{
takeItems(player, APPARITION_STONE_88, 1);
BOSS_88 = addSpawn(TERAKAN, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "33920-1.html";
}
return "33920-7.html";
}
case "request_boss_93":
{
if ((BOSS_93 != null) && !BOSS_93.isDead())
{
return "33920-5.html";
}
if (hasQuestItems(player, APPARITION_STONE_93))
{
takeItems(player, APPARITION_STONE_93, 1);
BOSS_93 = addSpawn(CASSIUS, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "33920-2.html";
}
return "33920-8.html";
}
case "request_boss_98":
{
if ((BOSS_98 != null) && !BOSS_98.isDead())
{
return "33920-6.html";
}
if (hasQuestItems(player, APPARITION_STONE_98))
{
takeItems(player, APPARITION_STONE_98, 1);
BOSS_98 = addSpawn(LADAR, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "33920-3.html";
}
return "33920-9.html";
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
return "33920.html";
}
public static void main(String[] args)
{
new AltarOfSouls();
}
}

View File

@@ -54,6 +54,7 @@ public final class Nomi extends AbstractNpcAI
// Others
private static final Location[] SPAWN_LOCATIONS =
{
new Location(-79687, 247655, -3480, 29783), // Faeron
new Location(83505, 148375, -3405, 31863), // Giran
new Location(147445, 26874, -2204, 48319), // Aden
new Location(147722, -56376, -2781, 20021), // Goddart