Retail like Blackbird Campsite NPC htmls.

Contributed by CostyKiller.
This commit is contained in:
MobiusDevelopment
2021-03-04 22:43:23 +00:00
parent d80438c173
commit a5266432c5
138 changed files with 2074 additions and 632 deletions

View File

@@ -1,4 +0,0 @@
<html><body>Kingdom's Royal Guard Teleport Device:<br>
This teleport device can be used to move from within the Enchanted Valley to the center.<br>
Your faction level with the Kingdom's Royal Guard is below 3, and you may not use the teleport device.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Giant Pursuers Teleport Device:<br>
In order to teleport to the three areas at the entrance to the upper level of the Giant's Cave, you need to have a faction level of 4 or higher with the Blackbird Clan.<br>
Your faction level with the Blackbird Clan is lower than 4. You may not teleport.
</body></html>

View File

@@ -1,11 +0,0 @@
<html><body>Atelia Refinery Teleport Device:<br>
This is a Teleport to Atelia Refinery.<br>
To use it, you need some special qualifications. The necessary qualifications, and the available teleport destinations, are as follow.<br><br>
<center>Qualification - <font color="LEVEL">Blackbird Clan faction level 4 and above</font><br1>
Location - Entrance to Atelia Refinery, region, controlled by Demonic Pontus, region, controlled by Devil Varos, region controlled by Demonic Weiss</center><br><br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery first_area">Teleport to the entrance</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery fifth_area">Teleport to the Atelia Outlet</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery second_area">Teleport to the Demonic Pontus region</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery third_area">Teleport to the Devil Varos region</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery fourth_area">Teleport to the Demonic Weiss Region</Button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Atelia Refinery Teleport Device:<br>
Atelia Refinery Teleport Device activated. Starting Teleportation.<br>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Giant Pursuers Teleport Device:<br>
In order to teleport to the three areas at the entrance to the upper level of the Giant's Cave, you need to have a faction level of 4 or higher with the Blackbird Clan.<br>
Your faction level with the Blackbird Clan is lower than 4. You may not teleport.
</body></html>

View File

@@ -1,11 +1,14 @@
<html><body>Atelia Refinery Teleport Device:<br>
This is a Teleport to Atelia Refinery.<br>
To use it, you need some special qualifications. The necessary qualifications, and the available teleport destinations, are as follow.<br><br>
<center>Qualification - <font color="LEVEL">Blackbird Clan faction level 4 and above</font><br1>
Location - Entrance to Atelia Refinery, region, controlled by Demonic Pontus, region, controlled by Devil Varos, region controlled by Demonic Weiss</center><br><br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery first_area">Teleport to the entrance</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery fifth_area">Teleport to the Atelia Outlet</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery second_area">Teleport to the Demonic Pontus region</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery third_area">Teleport to the Devil Varos region</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery fourth_area">Teleport to the Demonic Weiss Region</Button>
A device for teleporting to Atelia Refinery settled by the Blackbird Clan.<br>
Choose your destination.<br><br>
<center>Places:<br>
Inward of Atelia Refinery,<br>
the area controlled by Death Pondus,<br>
the area controlled by Devil Varos,<br>
the area controlled by Demonic Weiss.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery entrance">Teleport to the Atelia Refinery</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery outlet">Teleport to the Atelia Outlet</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery first_area">Teleport to the area controlled by Demonic Pontus</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery second_area">Teleport to the area controlled by Devil Varos</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest AteliaRefinery third_area">Teleport to the area controlled by Demonic Weiss</Button>
</body></html>

View File

@@ -16,6 +16,7 @@
*/
package ai.areas.AteliaRefinery;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -28,6 +29,14 @@ public class AteliaRefinery extends AbstractNpcAI
{
// NPC
private static final int ATELIA_REFINERY_TELEPORT_DEVICE = 34441;
// Teleport Locations
private static final Location[] TELE_LOCATIONS =
{
new Location(-59493, 52620, -8610), // Entrance
new Location(-56096, 49688, -8729), // First Area
new Location(-56160, 45406, -8847), // Second Area
new Location(-56140, 41067, -8965), // Third Area
};
// Special Mobs
private static final int HARKE = 24161;
private static final int ERGALION = 24162;
@@ -67,29 +76,28 @@ public class AteliaRefinery extends AbstractNpcAI
String htmltext = null;
switch (event)
{
case "entrance":
{
player.teleToLocation(TELE_LOCATIONS[0]);
htmltext = "34441-01.html";
break;
}
case "first_area":
{
player.teleToLocation(-59493, 52620, -8610);
player.teleToLocation(TELE_LOCATIONS[1]);
htmltext = "34441-01.html";
break;
}
case "second_area":
{
player.teleToLocation(-56096, 49688, -8729);
player.teleToLocation(TELE_LOCATIONS[2]);
htmltext = "34441-01.html";
break;
}
case "third_area":
{
player.teleToLocation(-56160, 45406, -8847);
break;
}
case "fourth_area":
{
player.teleToLocation(-56140, 41067, -8965);
break;
}
case "fifth_area":
{
player.teleToLocation(-251728, 178576, -8928);
player.teleToLocation(TELE_LOCATIONS[3]);
htmltext = "34441-01.html";
break;
}
}

View File

@@ -1,3 +0,0 @@
<html><body>Soul Summon Stone:<br>
To summon raid, you must have an <font color="LEVEL">Soul Quartz</font>.
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Soul Summon Stone:<br>
Ordinary-looking, but this altar has seen many bloody sacrifices.<br>
There is transparent space where you can place an <font color="LEVEL">Soul Quartz</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite request_boss">Place an Soul Quartz there</Button>
</body></html>

View File

@@ -1,12 +0,0 @@
<html><body>Ivory Tower Wizard Valleria:<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite medal_for_blackbird">"Exchange Medal of Honor for 100 Blackbird Clan Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite medal_for_mt">"Exchange Medal of Honor for 100 Mother Tree Guardians Clan Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite medal_for_giant">"Exchange Medal of Honor for 100 Giant's Trackers Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite medal_for_unworldly">"Exchange Medal of Honor for 100 Unworldly Visitors Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite medal_for_kingdom">"Exchange Medal of Honor for 100 Kingdom's Royal Guard Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite grand_medal_for_blackbird">"Exchange Grand Medal of Honor for 1000 Blackbird Clan Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite grand_medal_for_mt">"Exchange Grand Medal of Honor for 1000 Mother Tree Guardians Clan Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite grand_medal_for_giant">"Exchange Grand Medal of Honor for 1000 Giant's Trackers Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite grand_medal_for_unworldly">"Exchange Grand Medal of Honor for 1000 Unworldly Visitors Faction Points."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite grand_medal_for_kingdom">"Exchange Grand Medal of Honor for 1000 Kingdom's Royal Guard Faction Points."</Button>
</body></html>

View File

@@ -1,7 +0,0 @@
<html><body>Ivory Tower Wizard Valleria:<br>
The wind has changed. I don't like how this feels.<br>
The Embryo are expanding their influence by the day, and the Atelia Fortress is becoming stronger. I heard that they build a <font color="LEVEL">Command Post</font> inside the fortress. I hear that terrible things are going on in there.<br>
<button align="left" icon="NORMAL" action="bypass -h npc_%objectId%_multisell 34435"><font color="LEVEL">"I want to buy Soul Quartz."</font></button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackbirdCampsite 34435-01.html">"Exchange Medals of Honor for Faction Points."</Button>
<button align="left" icon="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Magister Belas:<br>
We have been teleporting everybody to Garden of Spirits so far regardless of whether they have been helping the Unworldly Visitors or not.<br>
But our generosity has limits.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Belas West">Garden of Spirits - West</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Belas East">Garden of Spirits - East</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Magister Belas:<br>
I feel weird energy around here...<br>
We shouldn't miss the opportunity to find out anything new. This knowledge can help the Ertheias return to the Spirit Realm.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Belas 34056-01.html">Teleport to Garden of Spirits</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -14,7 +14,7 @@
* 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.areas.GardenOfSpirits.Belas;
package ai.areas.BlackbirdCampsite.Belas;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Npc;
@@ -58,8 +58,8 @@ public class Belas extends AbstractNpcAI
{
// if (hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) || hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
// {
player.teleToLocation(WEST);
// break;
player.teleToLocation(WEST);
// break;
// }
// htmltext = "34056-02.html";
break;
@@ -68,8 +68,8 @@ public class Belas extends AbstractNpcAI
{
// if (hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) || hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
// {
player.teleToLocation(EAST);
// break;
player.teleToLocation(EAST);
// break;
// }
// htmltext = "34056-02.html";
break;

View File

@@ -1,3 +1,3 @@
<html><body>Soul Summon Stone:<br>
You've challenged <font color="LEVEL">Summoned Harpas</font> to a battle.
<html><body>Soul Summon Stone:<br>
You've challenged <font color="LEVEL">Summoned Harpas</font> to a battle.
</body></html>

View File

@@ -1,3 +1,3 @@
<html><body>Soul Summon Stone:<br>
You've challenged <font color="LEVEL">Summoned Garp</font> to a battle.
<html><body>Soul Summon Stone:<br>
You've challenged <font color="LEVEL">Summoned Garp</font> to a battle.
</body></html>

View File

@@ -1,3 +1,3 @@
<html><body>Soul Summon Stone:<br>
You've challenged <font color="LEVEL">Summoned Moricks</font> to a battle.
<html><body>Soul Summon Stone:<br>
You've challenged <font color="LEVEL">Summoned Moricks</font> to a battle.
</body></html>

View File

@@ -1,3 +1,3 @@
<html><body>Soul Summon Stone:<br>
<font color="LEVEL">Raid</font> is already engaged into a battle.
<html><body>Soul Summon Stone:<br>
<font color="LEVEL">Raid</font> is already engaged into a battle.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Soul Summon Stone:<br>
There isn't a <font color="LEVEL">Soul Quartz</font> in the Inventory.
</body></html>

View File

@@ -0,0 +1,8 @@
<html><body>Soul Summon Stone:<br>
A device used to safley summon monsters using a Soul Quartz. Placing the <font color="LEVEL">Soul Quartz</font> upon a Soul Summon Stone can summon the soul of a monster contained within the SOul Quartz.<br>
Summoned Monster:<br>
<font color="LEVEL">Summoned Harpas</font><br>
<font color="LEVEL">Summoned Garp</font><br>
<font color="LEVEL">Summoned Moricks</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SoulSummonStone request_boss">Place Soul Quartz</Button>
</body></html>

View File

@@ -14,7 +14,7 @@
* 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.areas.BlackbirdCampsite;
package ai.areas.BlackbirdCampsite.SoulSummonStone;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -25,11 +25,10 @@ import ai.AbstractNpcAI;
* Soul Summon Stone AI.
* @author NviX
*/
public final class BlackbirdCampsite extends AbstractNpcAI
public final class SoulSummonStone extends AbstractNpcAI
{
// NPCs
private static final int SOUL_SUMMON_STONE = 34434;
private static final int VALLERIA = 34435;
// Bosses
private static final int SUMMONED_HARPAS = 26347;
private static final int SUMMONED_GARP = 26348;
@@ -37,13 +36,13 @@ public final class BlackbirdCampsite extends AbstractNpcAI
// Items
private static final int SOUL_QUARTZ = 48536;
// Misc
private Npc BOSS;
private Npc _boss;
private BlackbirdCampsite()
private SoulSummonStone()
{
addStartNpc(SOUL_SUMMON_STONE, VALLERIA);
addFirstTalkId(SOUL_SUMMON_STONE, VALLERIA);
addTalkId(SOUL_SUMMON_STONE, VALLERIA);
addStartNpc(SOUL_SUMMON_STONE);
addFirstTalkId(SOUL_SUMMON_STONE);
addTalkId(SOUL_SUMMON_STONE);
addKillId(SUMMONED_HARPAS, SUMMONED_GARP, SUMMONED_MORICKS);
}
@@ -54,9 +53,9 @@ public final class BlackbirdCampsite extends AbstractNpcAI
{
case "request_boss":
{
if ((BOSS != null) && !BOSS.isDead())
if ((_boss != null) && !_boss.isDead())
{
return "34434-4.html";
return "34434-04.html";
}
if (hasQuestItems(player, SOUL_QUARTZ))
{
@@ -64,21 +63,21 @@ public final class BlackbirdCampsite extends AbstractNpcAI
int i = getRandom(100);
if (i < 40)
{
BOSS = addSpawn(SUMMONED_HARPAS, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "34434-1.html";
_boss = addSpawn(SUMMONED_HARPAS, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "34434-01.html";
}
else if (i < 80)
{
BOSS = addSpawn(SUMMONED_GARP, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "34434-2.html";
_boss = addSpawn(SUMMONED_GARP, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "34434-02.html";
}
else
{
BOSS = addSpawn(SUMMONED_MORICKS, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "34434-3.html";
_boss = addSpawn(SUMMONED_MORICKS, player.getX() + getRandom(-300, 300), player.getY() + getRandom(-300, 300), player.getZ() + 10, getRandom(64000), false, 0, true);
return "34434-03.html";
}
}
return "34434-5.html";
return "34434-05.html";
}
}
return super.onAdvEvent(event, npc, player);
@@ -87,15 +86,11 @@ public final class BlackbirdCampsite extends AbstractNpcAI
@Override
public String onFirstTalk(Npc npc, PlayerInstance player)
{
if (npc.getId() == VALLERIA)
{
return "34435.html";
}
return "34434.html";
}
public static void main(String[] args)
{
new BlackbirdCampsite();
new SoulSummonStone();
}
}

View File

@@ -1,8 +1,7 @@
<html><body>Kingdom's Royal Guard Teleport Device:<br>
This is a teleport device installed by the Kingdom's Royal Guard for the purpose of teleporting to the various strongholds of Atelia Fortress.<br>
To use it, you need some special qualifications. The necessary qualifications, and the available teleport destinations, are as follow.<br><br>
<center>Qualification - <font color="LEVEL">Kingdom's Royal Guard Faction level 3 and above</font><br1>
Location - Atelia Fortress Strongholds</center><br><br>
You see a device installed by the Royal Guards. It allows you to travel between the strongholds of the Atelia Fortress.<br>
Choose your destination.<br><br>
<center>Locations: strongholds of the Atelia Fortress</center><br><br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest TeleportDevice teleport1">Teleport to Stronghold I</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest TeleportDevice teleport2">Teleport to Stronghold II</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest TeleportDevice teleport3">Teleport to Stronghold III</Button>

View File

@@ -14,9 +14,8 @@
* 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.areas.AteliaFortress.TeleportDevice;
package ai.areas.BlackbirdCampsite.TeleportDevice;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -32,7 +31,7 @@ public class TeleportDevice extends AbstractNpcAI
{
// NPC
private static final int TELEPORT_DEVICE = 34242;
// Teleport's
// Teleports
private static final Location LOCATION1 = new Location(-46335, 59575, -2960);
private static final Location LOCATION2 = new Location(-42307, 51232, -2032);
private static final Location LOCATION3 = new Location(-44060, 40139, -1432);
@@ -47,10 +46,6 @@ public class TeleportDevice extends AbstractNpcAI
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
if (player.getFactionLevel(Faction.KINGDOM_ROYAL_GUARDS) < 3)
{
return "34242-01.html";
}
switch (event)
{
case "teleport1":

View File

@@ -0,0 +1,10 @@
<html><body>Ivory Tower Wizard Valleria:<br>
You can obtain <font color="LEVEL">Medals of Honor</font> from monsters summoned through the Soul Quartz. Think of it as proof that the monster's soul is bound in the SOul Quartz.<br>
<font color="LEVEL">1 Medal of Honor</font> can be exchanged for <font color="LEVEL">100 Faction Amity Points.</font> Clans you can choose from are the <font color="LEVEL">Blackbird Clan, Mother Tree Guardians, Giant Trackers, Unworldly Visitors and Kindgom's Royal Guard.</font><br>
Which clan would you like to choose? You cannot reselect, so please choose carefully.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria medal_for_blackbird">Exchange Blackbird Clan Amity Points.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria medal_for_mother">Exchange Mother Tree Guardians Clan Faction Amity Points.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria medal_for_giant">Exchange Giant Trackers Clan Faction Amity Points.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria medal_for_unworldly">Exchange Unworldly Visitors Clan Faction Amity Points.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria medal_for_kingdom">Exchange Kingdom's Royal Guard Clan Faction Amity Points.</Button>
</body></html>

View File

@@ -0,0 +1,10 @@
<html><body>Ivory Tower Wizard Valleria:<br>
A <font color="LEVEL">Grand Medal of Honor</font> can only be obtained by <font color="LEVEL">whoever</font> uses the Soul Quartz to <font color="LEVEL">Summon Moricks</font> from the Soul Summon Stone. Great power has been used on the Soul Quartz to bind it with the Moricks' soul, so it's different from the other monsters.<br>
<font color="LEVEL">1 Grand Medal of Honor</font> can be exchanged for <font color="LEVEL">1000 Faction Amity Points.</font> Clans you can choose from are the A <font color="LEVEL">Blackbird Clan, Mother Tree Guardians, Giant Trackers, Unworldly Visitors and Kingdom's Royal Guard.</font><br>
Which clan would you like to choose? You cannot reselect, so please choos carefully.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria grand_medal_for_blackbird">"Exchange Blackbird Clan Faction Amity Points.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria grand_medal_for_mother">"Exchange Mother Tree Guardians Clan Faction Amity Points.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria grand_medal_for_giant">"Exchange Giant's Trackers Clan Faction Amity Points.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria grand_medal_for_unworldly">"Exchange Unworldly Visitors Clan Faction Amity Points.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria grand_medal_for_kingdom">"Exchange Kingdom's Royal Guard Clan Faction Amity Points.</Button>
</body></html>

View File

@@ -0,0 +1,8 @@
<html><body>Ivory Tower Wizard Valleria:<br>
Do you want to know about the Soul Quartz? Its creation was pure coincidence. I just wanted to learn about the effects of Clan Shards supplied by Clans in the Aden Continent and Talismans.<br>
So I was doing some tests with Clan Shards and found out that this crystal has the power to summon souls of monsters.<br>
At first, I didn't know what I had to do to summon monsters with Clan Shards. I was doing some tests and learned that applying magic power on shards of the same Clan will change them into a single crystal that could contain the souls of monsters. Then I had to conduct even more tests until I found out that I needed 20 crystals to make a stable crystal.<br>
And thus, the Soul Quartz.<br>
<button align="left" icon="NORMAL" action="bypass -h npc_%objectId%_multisell 344350001"><font color="LEVEL">Exchange Clan Shards.</font></button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Valleria 34435.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Ivory Tower Wizard Valleria:<br>
I installed the Soul Summon Stone to provide some stability when monsters are summoned using the Soul Quartz.<br>
Without the Soul Summon Stone, summoning with Soul Quartz alone would be very difficult and unpredictable.I personally don't require the Soul Summon Stone, but others can't summon monsters reliably without it, and I need people other than myself to be able to summon monsters so I can continue on with my research.<br>
The kingdom of Aden took interest in my research and gave me permission to install Soul Summon Stones here. This place is taken care of by the Kingdom's Royal Guard, right?<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Valleria 34435.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,10 @@
<html><body>Ivory Tower Wizard Valleria:<br>
I am Valleria, an Ivory Tower Wizard.<br>
I am investigating crystals that are used by Aden's factions. Did you know that they can be used for summoning monsters.<br>
To tell the truth, my research is not completed yet but thanks to Ivory Tower elders and factions' leaders I have to managed to advance significantly. If you want to know more about the crystals, please ask. We should share our knowledge.
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria 34435-01.html"><font color="LEVEL">Exchange Medal of Honor for Faction Points.</font></button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria 34435-02.html"><font color="LEVEL">Exchange Grand Medal of Honor for Faction Points.</font></button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria 34435-03.html">Ask about Soul Crystal.</button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Valleria 34435-04.html">Ask about Soul Summon Stone.</button>
<button align="left" icon="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html>

View File

@@ -0,0 +1,287 @@
/*
* 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 ai.areas.BlackbirdCampsite.Valleria;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import ai.AbstractNpcAI;
/**
* Valleria AI.
* @author CostyKiller
*/
public final class Valleria extends AbstractNpcAI
{
// NPC
private static final int VALLERIA = 34435;
// Items
private static final int MEDAL = 48516; // Medal of Honor
private static final int GRAND_MEDAL = 48517; // Grand Medal of Honor
// Misc
private static final int MEDAL_POINTS = 100;
private static final int GRAND_MEDAL_POINTS = 1000;
private static final int MIN_LEVEL = 99;
private Valleria()
{
addStartNpc(VALLERIA);
addFirstTalkId(VALLERIA);
addTalkId(VALLERIA);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
switch (event)
{
case "34435.html":
case "34435-01.html":
case "34435-02.html":
case "34435-03.html":
case "34435-04.html":
{
htmltext = event;
break;
}
case "medal_for_blackbird":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, MEDAL))
{
takeItems(player, 1, MEDAL);
player.addFactionPoints(Faction.BLACKBIRD_CLAN, MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "medal_for_mother":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, MEDAL))
{
takeItems(player, 1, MEDAL);
player.addFactionPoints(Faction.MOTHER_TREE_GUARDIANS, MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "medal_for_giant":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, MEDAL))
{
takeItems(player, 1, MEDAL);
player.addFactionPoints(Faction.GIANT_TRACKERS, MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "medal_for_unworldly":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, MEDAL))
{
takeItems(player, 1, MEDAL);
player.addFactionPoints(Faction.UNWORLDLY_VISITORS, MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "medal_for_kingdom":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, MEDAL))
{
takeItems(player, 1, MEDAL);
player.addFactionPoints(Faction.KINGDOM_ROYAL_GUARDS, MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "grand_medal_for_blackbird":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, GRAND_MEDAL))
{
takeItems(player, 1, GRAND_MEDAL);
player.addFactionPoints(Faction.BLACKBIRD_CLAN, GRAND_MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "grand_medal_for_mother":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, GRAND_MEDAL))
{
takeItems(player, 1, GRAND_MEDAL);
player.addFactionPoints(Faction.MOTHER_TREE_GUARDIANS, GRAND_MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "grand_medal_for_giant":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, GRAND_MEDAL))
{
takeItems(player, 1, GRAND_MEDAL);
player.addFactionPoints(Faction.GIANT_TRACKERS, GRAND_MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "grand_medal_for_unworldly":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, GRAND_MEDAL))
{
takeItems(player, 1, GRAND_MEDAL);
player.addFactionPoints(Faction.UNWORLDLY_VISITORS, GRAND_MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
case "grand_medal_for_kingdom":
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "no_level.html";
}
else
{
if (hasAtLeastOneQuestItem(player, GRAND_MEDAL))
{
takeItems(player, 1, GRAND_MEDAL);
player.addFactionPoints(Faction.KINGDOM_ROYAL_GUARDS, GRAND_MEDAL_POINTS);
htmltext = "success.html";
}
else
{
htmltext = "no_medal.html";
}
}
break;
}
}
return htmltext;
}
@Override
public String onFirstTalk(Npc npc, PlayerInstance player)
{
return "34435.html";
}
public static void main(String[] args)
{
new Valleria();
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Ivory Tower Wizard Valleria:<br>
Characters below <font color="LEVEL"> Level 99</font> can't exchange Medals of Honor and Grand Medals of Honor.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Valleria 34435.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Ivory Tower Wizard Valleria:<br>
You don't have that medal to exchange.
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Valleria 34435.html">Back</Button>
</body></html>

View File

@@ -1,3 +1,4 @@
<html><body>Ivory Tower Wizard Valleria:<br>
You have successfully received faction points.
<html><body>Ivory Tower Wizard Valleria:<br>
You have successfully received faction points.
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Valleria 34435.html">Back</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Ivory Tower Wizard Valleria:<br>
You no have that medal to exchange.
</body></html>

View File

@@ -1,7 +0,0 @@
<html><body>Magister Belas:<br>
We help those who give the Unworldly Visitors a helping hand to teleport to key locations in the Garden of Spirits.<br>
Remember that teleporting from here to key locations in the Garden of Spirits is available only to those whose faction level with the Unworldly Visitors is 2 or higher. Teleporting from key locations in the Garden of Spirits to this location is provided only to those who have a faction level of 4 or higher with the Unworldly Visitors.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Belas West">Western region of the Garden of Spirits</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Belas East">Eastern region of the Garden of Spirits</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Magister Belas:<br>
This strange energy around us... <br>
If there is even the smallest clue, we must not lose it that small clue might be the only hope the Ertheia have to return to the Spirit Realm.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Belas 34056-01.html">Teleport to a key location in the Garden of Spirits</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Dinford:<br>
I am now in charge of administrative affairs relating to Atelia Fortress.<br>
While the Aden Vanguard will be involved with special operations within the Atelia Fortress, much as it was before, all other work has been officially handed over to the Kingdom's Royal Guard. This means that any honorary member certificates issued by the Royal Guard of the Kingdom are no longer effective.<br>
In appreciation of your hard work so far, if you <font color="LEVEL">return your Honorary Member Certificate back</font>, we will give you an <font color="LEVEL">appropriate award</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Dinford 34236-03.html">"Thanks."</Button>
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>Dinford:<br>
The Kingdom's Royal Guard Talisman is a talisman that has been developed with help from the outstanding wizards of Aden.<br>
You'll have to find the ingredients yourself, but if you help us with our work, we can provide some of the more important ingredients.<br>
We also continue to improve the performance of the talismans, and if you want, their performance can be improved.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Dinford 34236-04.html">"How is the talisman made?"</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Dinford 34236-05.html">"Tell me about the effects."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h menu_select?ask=-303&reply=2178">"I want to make a Kingdom's Royal Guard Talisman."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h menu_select?ask=-303&reply=2179">"I want to upgrade."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Dinford:<br>
It doesn't appear you have an honorary certificate on you.<br>
I am a member of the Kingdom's Royal Guard, and am but an administrative officer who handles administrative affairs relating to Atelia Fortress.<br>
If you do not have the Honorary Member Certificate, there is no way that you can prove the work you have done. Therefore, we cannot offer you any rewards.
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Dinford:<br>
If you prepare the ingredients and expense necessary for making a Kingdom's Royal Guard Talisman, I will use the methods I have learned from the wizards of the Kingdom's Royal Guard to make the talisman.<br>
The core ingredients are the <font color="LEVEL">Blood Crystal</font> and <font color="LEVEL">Giant's Energy</font>, of which the <font color="LEVEL">Blood Crystal</font> can be obtained through the supply boxes you receive after helping with the assignments of the Kingdom's Royal Guard.<br>
Upgrades can be performed in the same manner. Of course, performance enhancements sometimes require additional materials, so be sure to check what materials you need.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Dinford 34236-02.html">Back</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Dinford:<br>
Would you like to know about the effects of the Kingdom's Royal Guard Talisman?<br>
The prime enemy of the Kingdom's Royal Guard is currently the Embryo. We developed it in order to fight more efficiently against the Embryo.<br>
When you wear the Kingdom's Royal Guard Talisman, you will receive less damage from the Embryo, and be able to deal more damage.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Dinford 34236-02.html">Back</Button>
</body></html>

View File

@@ -1,8 +0,0 @@
<html><body>Dinford:<br>
Welco.. Wait! First, identify yourself. <br>
I am Dinford. I work for Logart, and am in charge of administrative affairs for the Kingdom's Royal Guard.<br>
The Atelia Fortress will be under the direct control of the Kingdom's Royal Guard from now on. <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Dinford 34236-01.html">"I want to return my Honorary Member Certificate."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Dinford 34236-02.html">"Tell me about the Kingdom's Royal Guard Talisman."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -1,108 +0,0 @@
/*
* 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 ai.areas.GardenOfSpirits.Dinford;
import org.l2jmobius.gameserver.data.xml.MultisellData;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.Id;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import ai.AbstractNpcAI;
/**
* Dinford in Blackbird Campsite
* @author Gigi
* @date 2018-04-07 - [12:07:12]
*/
public class Dinford extends AbstractNpcAI
{
// NPC
private static final int DINFORD = 34236;
private Dinford()
{
addFirstTalkId(DINFORD);
addTalkId(DINFORD);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
switch (event)
{
case "34236.html":
case "34236-01.html":
case "34236-02.html":
case "34236-03.html":
case "34236-04.html":
case "34236-05.html":
{
htmltext = event;
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_NPC_MENU_SELECT)
@RegisterType(ListenerRegisterType.NPC)
@Id(DINFORD)
public void OnNpcMenuSelect(OnNpcMenuSelect event)
{
final PlayerInstance player = event.getTalker();
final Npc npc = event.getNpc();
final int ask = event.getAsk();
final int reply = event.getReply();
if (ask == -303)
{
if (reply == 2178)
{
MultisellData.getInstance().separateAndSend(2178, player, npc, false);
}
else if (reply == 2179)
{
MultisellData.getInstance().separateAndSend(2179, player, npc, false);
}
}
}
@Override
public String onFirstTalk(Npc npc, PlayerInstance player)
{
if (getRandom(10) < 5)
{
player.sendPacket(new PlaySound(3, "Npcdialog1.dinfod_faction_1", 0, 0, 0, 0, 0));
}
else
{
player.sendPacket(new PlaySound(3, "Npcdialog1.dinfod_faction_2", 0, 0, 0, 0, 0));
}
return "34236.html";
}
public static void main(String[] args)
{
new Dinford();
}
}