[Classic] Removed unused html files.
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
I am Avant-Garde, the Transformation Wizard. I have long wandered through the land and only recently settled here.<br>
|
||||
In fact, my young friend, I am not a wizard of the Ivory Tower. You look surprised! Heh. Think of me as a wanderer who acquired a special power quite by chance... My magic, however, requires some very specialized items.<br>
|
||||
If you have acquired these unique items from the dark wizard in Hardin's Academy, then perhaps I can help you.<br>
|
||||
<a action="bypass -h Quest AvantGarde 32323-02.html">Ask about transformation.</a><br>
|
||||
<a action="bypass -h Quest AvantGarde LearnTransformationSkill">Learn transformation.</a><br>
|
||||
<a action="bypass -h Quest AvantGarde BuyTransformationItems">Purchase items related to transformation.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
|
||||
</body></html>
|
@@ -1,7 +0,0 @@
|
||||
<html><body>Wizard of Trasformation Avant-Garde:<br>
|
||||
What do you wish to know about transformation?<br>
|
||||
<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-02a.html">"What do I need to know about transformation?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-02b.html">"What do I need to do to transform into another shape?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-02c.html">"What do I need to know before transformation?"</Button>
|
||||
</body></html>
|
@@ -1,7 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
To learn the magic of transformation, you will need to receive special training.<br>
|
||||
Find the Wizard of Darkness, who lives at Hardin's Academy. He will open the path to transformation.<br>
|
||||
You must have reached at least <font color="LEVEL">level 50 </font> to embark on this path.<br>
|
||||
You will also need a special seal. I do not know how you can obtain it, but without it transformation is impossible.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-02.html">Back.</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
After you have been guided through the process of transformation by a wizard, you may transform yourself into another shape by bringing a transform sealbook to me.<br>
|
||||
Know that it is no easy task to earn one. I have heard, however, that you may find one through the Marketeer of Mammon or the Adventure Guild.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-02.html">Back.</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
You must remember that once you have been transformed, you must not go into <font color="LEVEL">deep water</font>. Once you have reverted to your original form, your soul will need time to recover -- you will not be able to transform again for some time. Understand?<br>
|
||||
Other than that... Each individual soul contains its own <font color="LEVEL">unique character</font>. If you transform into something that matches that character, you may earn some benefits. Think of it as wearing a suit of clothes that fit you perfectly. Every race has its own respective "figure," so I advise you to do a little research about what kind of transformation would fit you best.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-02.html">Back.</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
This is not a path for every one. It is meaningless for me to even teach you Transformation until you have proven your ability.<br>
|
||||
Meet the great wizard who uses black magic, open the road of Transformation, and then return to me.
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
You must be able to transform in order to buy transformation-related goods.<br>
|
||||
Find a great wizard who wields black magic and can open the path to transformation for you. Then you may return here.
|
||||
</body></html>
|
@@ -1,10 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
If your subclass skill is above a certain level, you can transfer that power to your main class.<br>
|
||||
Because this is a very dangerous mission, however, you must be certified in order to carry it out.<br>
|
||||
If you were certified by your subclass master and have brought the certificate, I will transfer some of your subclass power to your main class.<br>
|
||||
Be warned: this will inflict a serious shock to your soul. You must strengthen it in preparation for this rite.<br>
|
||||
In order to learn certified subclass skills, you must first speak to Hardin and obtain the first sealbook. Hardin's Academy is in Dragon Valley.<br>
|
||||
Do you wish to proceed?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde LearnSubClassSkill">Learn skills.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-06.html">Return.</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
What do you wish to know about subclass certification?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-05.html">Learn skills of the certified subclass.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-05no.html">Certification removal.</Button>
|
||||
</body></html>
|
@@ -1,7 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
It is a tremendous endeavor to obtain subclass certification and learn the appropriate skills. Beyond the purely physical effort, the burden on your soul is beyond your imagination... It is almost a suicidal venture.<br>
|
||||
However, the process can be undone. There is a special kind of herb that can be used to remove your previously chosen skills. The price of the herb, though, is approximately <font color="LEVEL">10 million Adena</font>... I have the herb here, so I can cancel the certification anytime once you have paid.<br>
|
||||
If the certification is canceled, <font color="LEVEL">the current certification status and skills will vanish immediately -- poof!</font> Now then, do you really wish to cancel certification?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde CancelCertification">Cancel certification.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AvantGarde 32323-06no.html">Return.</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
If you want to give up, I cannot help you.<br>
|
||||
To use the subclass power in the main class requires a great deal of power, after all.
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
An excellent decision, I think. In fact, it is very difficult to even get the herb. Since there's no one except that vicious Dark Wizard who lives in Dragon Valley who knows the technique, I didn't feel like it either...<br>
|
||||
But isn't it a pity to throw away all of the skills for which you have already been certified?
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-garde:<br>
|
||||
A great deal of soul energy is needed to transfer subclass powers to the main class. Although you vanquished the Bridle of Soul by Mimir's Elixir, it is not so easy to practice it.<br>
|
||||
To utilize the subclass power, you must be ritually cleansed by both the <font color="LEVEL">Dark Wizard and Mimir's Elixir</font>. Visit the Dark Wizard inside the Dragon Valley to obtain the magic power of transformation.<br>
|
||||
Once you have learned the magic power of transformation, <font color="LEVEL">visit a subclass master</font> in order to certify your ability. Then come back to me on your main class.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
To transfer the sub-class power, <font color="LEVEL">make your current class your main class and bring me either a certificate or a Scroll of Transformation</font>.
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
As I just told you, you need 10 million Adena.<br>
|
||||
I don't see that much money on you...
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
Then I have no choice...<br>
|
||||
Your certifications are all canceled in exchange for <font color="LEVEL">10 million Adena</font>. However, that does not change the fact that you are very skilled. Why don't you find another master and obtain the certification you want?
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Transformation Wizard Avant-Garde:<br>
|
||||
What are you going to cancel? You have neither certification nor the related skills.<br>
|
||||
This herb is very rare -- unless you really need it, I would rather not use it.
|
||||
</body></html>
|
@@ -1,158 +0,0 @@
|
||||
/*
|
||||
* 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.AvantGarde;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.MultisellData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.model.L2SkillLearn;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.base.AcquireSkillType;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.clientpackets.RequestAcquireSkill;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExAcquirableSkillListByClass;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||
|
||||
/**
|
||||
* Avant-Garde AI.<br>
|
||||
* Sub-Class Certification system, skill learning and certification canceling.<br>
|
||||
* Transformation skill learning and transformation scroll sell.
|
||||
* @author Zoey76
|
||||
*/
|
||||
public final class AvantGarde extends AbstractNpcAI
|
||||
{
|
||||
// NPC
|
||||
private static final int AVANT_GARDE = 32323;
|
||||
|
||||
public AvantGarde()
|
||||
{
|
||||
super(AvantGarde.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(AVANT_GARDE);
|
||||
addTalkId(AVANT_GARDE);
|
||||
addFirstTalkId(AVANT_GARDE);
|
||||
addAcquireSkillId(AVANT_GARDE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAcquireSkill(L2Npc npc, L2PcInstance player, Skill skill, AcquireSkillType type)
|
||||
{
|
||||
if (type.equals(AcquireSkillType.TRANSFORM))
|
||||
{
|
||||
showTransformSkillList(player);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "32323-02.html":
|
||||
case "32323-02a.html":
|
||||
case "32323-02b.html":
|
||||
case "32323-02c.html":
|
||||
case "32323-05.html":
|
||||
case "32323-05no.html":
|
||||
case "32323-06.html":
|
||||
case "32323-06no.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "LearnTransformationSkill":
|
||||
{
|
||||
if (RequestAcquireSkill.canTransform(player))
|
||||
{
|
||||
showTransformSkillList(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "32323-03.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "BuyTransformationItems":
|
||||
{
|
||||
if (RequestAcquireSkill.canTransform(player))
|
||||
{
|
||||
MultisellData.getInstance().separateAndSend(32323001, player, npc, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "32323-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
return "32323-01.html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance talker)
|
||||
{
|
||||
return "32323-01.html";
|
||||
}
|
||||
|
||||
/**
|
||||
* This displays Transformation Skill List to the player.
|
||||
* @param player the active character.
|
||||
*/
|
||||
public static void showTransformSkillList(L2PcInstance player)
|
||||
{
|
||||
final List<L2SkillLearn> skills = SkillTreesData.getInstance().getAvailableTransformSkills(player);
|
||||
|
||||
if (skills.isEmpty())
|
||||
{
|
||||
final int minlevel = SkillTreesData.getInstance().getMinLevelForNewSkill(player, SkillTreesData.getInstance().getTransformSkillTree());
|
||||
if (minlevel > 0)
|
||||
{
|
||||
// No more skills to learn, come back when you level.
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_DO_NOT_HAVE_ANY_FURTHER_SKILLS_TO_LEARN_COME_BACK_WHEN_YOU_HAVE_REACHED_LEVEL_S1);
|
||||
sm.addInt(minlevel);
|
||||
player.sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THERE_ARE_NO_OTHER_SKILLS_TO_LEARN);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
player.sendPacket(new ExAcquirableSkillListByClass(skills, AcquireSkillType.TRANSFORM));
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new AvantGarde();
|
||||
}
|
||||
}
|
@@ -1,6 +0,0 @@
|
||||
<html><body>Black Marketeer of Mammon:<br>
|
||||
<font color="LEVEL">[Exchange Ancient Adena for Adena]</font><br>
|
||||
Enter the amount of Ancient Adena you wish to exchange.<br>
|
||||
<td align=left><edit var="data1" width=100></td>
|
||||
<button value="Exchange" action="bypass -h Quest BlackMarketeerOfMammon exchange $data1" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" width=80 height=27>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><head><body>Black Marketeer of Mammon:<br>
|
||||
<font color="FF0000">[Exchange failure]</font><br>
|
||||
You've entered an invalid value. Please input a correct amount.<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest BlackMarketeerOfMammon 31092-01.html">Back</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><head><body>Black Marketeer of Mammon:<br>
|
||||
<font color="FF0000">[Exchange failure]</font><br>
|
||||
You don't have enough of the item that you're trying to exchange.<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest BlackMarketeerOfMammon 31092-01.html">Back</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Black Marketeer of Mammon:<br>
|
||||
<FONT color="LEVEL">[Exchange success]</FONT><br>
|
||||
Thank you! There you go! Are you satisfied now? Or do you want to exchange something else?<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="Quest BlackMarketeerOfMammon 31092-01.html">Back</Button>
|
||||
</body></html>
|
@@ -1,11 +0,0 @@
|
||||
<html><body>Black Marketeer of Mammon:<br>
|
||||
The Lords of Dawn and the Revolutionary Troops of Dusk use <font color="LEVEL">Ancient Adena</font> as their currency, following in the old empire's tradition.<br>
|
||||
Tradition and customs are important but they are so old... If you were to go to the market with that money in this day and age, you couldn't buy a thing.<br>
|
||||
Do you have any ancient adena that you don't know what to do with? If you do, I'll exchange them for adena.<br>
|
||||
Also, if your weapon has a special ability that you do not want, I can remove that, too. I dont't know why you would want to take off a special ability that's been bestowed on your weapon, but we'll do anything for adena.<br>
|
||||
I have also obtained some rare goods, so stop by some time - these items aren't easy to obtain!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BlackMarketeerOfMammon 31092-01.html">"I want to exchange Ancient Adena for Adena."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 310922002">"Can I trade black market goods?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 310922001">"I want to remove special abilities from my weapon."</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* 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.BlackMarketeerOfMammon;
|
||||
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
||||
import com.l2jserver.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Black Marketeer of Mammon AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public final class BlackMarketeerOfMammon extends AbstractNpcAI
|
||||
{
|
||||
// NPC
|
||||
private static final int BLACK_MARKETEER = 31092;
|
||||
|
||||
private BlackMarketeerOfMammon()
|
||||
{
|
||||
super(BlackMarketeerOfMammon.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(BLACK_MARKETEER);
|
||||
addTalkId(BLACK_MARKETEER);
|
||||
addFirstTalkId(BLACK_MARKETEER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (event.equals("31092-01.html"))
|
||||
{
|
||||
return event;
|
||||
}
|
||||
else if (event.startsWith("exchange"))
|
||||
{
|
||||
final StringTokenizer st = new StringTokenizer(event, " ");
|
||||
event = st.nextToken();
|
||||
|
||||
if (!st.hasMoreElements())
|
||||
{
|
||||
return "31092-02.html";
|
||||
}
|
||||
|
||||
final String value = st.nextToken();
|
||||
if (!Util.isDigit(value))
|
||||
{
|
||||
return "31092-02.html";
|
||||
}
|
||||
|
||||
final long count = Integer.parseInt(value);
|
||||
final long AAcount = player.getAncientAdena();
|
||||
|
||||
if (count < 1)
|
||||
{
|
||||
return "31092-02.html";
|
||||
}
|
||||
|
||||
if (count > AAcount)
|
||||
{
|
||||
return "31092-03.html";
|
||||
|
||||
}
|
||||
takeItems(player, Inventory.ANCIENT_ADENA_ID, count);
|
||||
giveAdena(player, count, false);
|
||||
return "31092-04.html";
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new BlackMarketeerOfMammon();
|
||||
}
|
||||
}
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Clan Trader Mulia:<br>
|
||||
I seek the leader of a Clan!<br>
|
||||
That person alone can validate their Clan's reputation and be justly rewarded for doing so...<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,9 +0,0 @@
|
||||
<html><body>Clan Trader Mulia:<br>
|
||||
There are many ways to increase your clan's reputation, from capturing a castle or fortress in battle, to helping out wandering newbies. Protecting a territory is also laudable, and in that spirit I wish to make you an offer if you can bring me these items:<br><br>
|
||||
<font color = "LEVEL">1 Blood Alliance</font> to prove that you have successfully defended a castle, <font color = "LEVEL">10 Blood Oaths gained by preserving civic order in a territory</font>, and finally <font color = "LEVEL">100 Knight's Epaulettes to prove that you are invincible in battle</font>.<br><br>
|
||||
Bring me these things, and I will personally see to it that your reputation increases.<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClanTrader exchange-ba">Provide 1 Blood Alliance</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClanTrader exchange-bo">Provide 10 Blood Oaths</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClanTrader exchange-ke">Provide 100 Knight's Epaulettes</Button>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32024.html">Back</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Clan Trader Mulia:<br>
|
||||
You have not brought a sufficient number of the items I requested to justify an increase in reputation.<br><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32024.html">Back</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Clan Trader Mulia:<br>
|
||||
Your reputation has been increased.<br><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32024.html">Back</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Clan Trader Mulia:<br>
|
||||
The maximum clan level for raising reputation is 5.<br><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32024.html">Back</Button>
|
||||
</body></html>
|
@@ -1,8 +0,0 @@
|
||||
<html><body>Clan Trader Mulia:<br>
|
||||
Oh, renowned leader of the clan! What business do you have with me?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 1235">Buy a Clan Item</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 1236">Upgrade a clan item</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClanTrader repinfo">Ask about Clan Reputation Points</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">Ask about the local lord and tax rate</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,6 +0,0 @@
|
||||
<html><body>Clan Trader Ilia:<br>
|
||||
I seek a partner to a blood oath, the most sacred pledge of allegiance!<br>
|
||||
I will not release any item to anyone else!<br>
|
||||
Our reputation depends on it!<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,9 +0,0 @@
|
||||
<html><body>Clan Trader Ilia:<br>
|
||||
There are many ways to increase your clan's reputation, from capturing a castle or fortress in battle, to helping out wandering newbies. Protecting a territory is also laudable, and in that spirit I wish to make you an offer if you can bring me these items:<br><br>
|
||||
<font color = "LEVEL">1 Blood Alliance</font> to prove that you have successfully defended a castle, <font color = "LEVEL">10 Blood Oaths gained by preserving civic order in a territory</font>, and finally <font color = "LEVEL">100 Knight's Epaulettes to prove that you are invincible in battle</font>.<br><br>
|
||||
Bring me these things, and I will personally see to it that your reputation increases.<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClanTrader exchange-ba">Provide 1 Blood Alliance</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClanTrader exchange-bo">Provide 10 Blood Oaths</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClanTrader exchange-ke">Provide 100 Knight's Epaulettes</Button>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32025.html">Back</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Clan Trader Ilia:<br>
|
||||
You have not brought a sufficient number of the items I requested to justify an increase in reputation.<br><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32025.html">Back</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Clan Trader Ilia:<br>
|
||||
Your reputation has been increased.<br><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32025.html">Back</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Clan Trader Ilia:<br>
|
||||
The maximum clan level for raising reputation is 5.<br><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32025.html">Back</Button>
|
||||
</body></html>
|
@@ -1,8 +0,0 @@
|
||||
<html><body>Clan Trader Ilia:<br>
|
||||
We swore the blood oath together, did we not? If you are that oath-holder, come speak with me.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 1235">Buy a Clan Item</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 1236">Upgrade a clan item</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClanTrader repinfo">Ask about Clan Reputation Points</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">Ask about the local lord and tax rate</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,125 +0,0 @@
|
||||
/*
|
||||
* 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.ClanTrader;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.model.ClanPrivilege;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||
|
||||
/**
|
||||
* Clan Trader AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public final class ClanTrader extends AbstractNpcAI
|
||||
{
|
||||
// Npc
|
||||
private static final int[] CLAN_TRADER =
|
||||
{
|
||||
32024, // Mulia
|
||||
32025, // Ilia
|
||||
};
|
||||
// Items
|
||||
private static final int BLOOD_ALLIANCE = 9911; // Blood Alliance
|
||||
private static final int BLOOD_ALLIANCE_COUNT = 1; // Blood Alliance Count
|
||||
private static final int BLOOD_OATH = 9910; // Blood Oath
|
||||
private static final int BLOOD_OATH_COUNT = 10; // Blood Oath Count
|
||||
private static final int KNIGHTS_EPAULETTE = 9912; // Knight's Epaulette
|
||||
private static final int KNIGHTS_EPAULETTE_COUNT = 100; // Knight's Epaulette Count
|
||||
|
||||
private ClanTrader()
|
||||
{
|
||||
super(ClanTrader.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(CLAN_TRADER);
|
||||
addTalkId(CLAN_TRADER);
|
||||
addFirstTalkId(CLAN_TRADER);
|
||||
}
|
||||
|
||||
private String giveReputation(L2Npc npc, L2PcInstance player, int count, int itemId, int itemCount)
|
||||
{
|
||||
if (getQuestItemsCount(player, itemId) >= itemCount)
|
||||
{
|
||||
takeItems(player, itemId, itemCount);
|
||||
player.getClan().addReputationScore(count, true);
|
||||
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_CLAN_HAS_ADDED_S1_POINT_S_TO_ITS_CLAN_REPUTATION);
|
||||
sm.addInt(count);
|
||||
player.sendPacket(sm);
|
||||
return npc.getId() + "-04.html";
|
||||
}
|
||||
return npc.getId() + "-03.html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "32024.html":
|
||||
case "32024-02.html":
|
||||
case "32025.html":
|
||||
case "32025-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "repinfo":
|
||||
{
|
||||
htmltext = (player.getClan().getLevel() > 4) ? npc.getId() + "-02.html" : npc.getId() + "-05.html";
|
||||
break;
|
||||
}
|
||||
case "exchange-ba":
|
||||
{
|
||||
htmltext = giveReputation(npc, player, Config.BLOODALLIANCE_POINTS, BLOOD_ALLIANCE, BLOOD_ALLIANCE_COUNT);
|
||||
break;
|
||||
}
|
||||
case "exchange-bo":
|
||||
{
|
||||
htmltext = giveReputation(npc, player, Config.BLOODOATH_POINTS, BLOOD_OATH, BLOOD_OATH_COUNT);
|
||||
break;
|
||||
}
|
||||
case "exchange-ke":
|
||||
{
|
||||
htmltext = giveReputation(npc, player, Config.KNIGHTSEPAULETTE_POINTS, KNIGHTS_EPAULETTE, KNIGHTS_EPAULETTE_COUNT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME))
|
||||
{
|
||||
return npc.getId() + ".html";
|
||||
}
|
||||
return npc.getId() + "-01.html";
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new ClanTrader();
|
||||
}
|
||||
}
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Reputation Manager Rapidus:<br>
|
||||
You have not yet met the qualifications. (Requires completion of second class transfer and Clan Fame level above 40.)<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FameManager 36479-07.html">Ask how to obtain Clan Fame points.</Button>
|
||||
</body></html>
|
@@ -1,7 +0,0 @@
|
||||
<html><body>Reputation Manager Rapidus:<br>
|
||||
Tell me what you want, and if you are worthy I will help you.<br>
|
||||
If you have already <font color="LEVEL">bestowed them with a special ability</font>, <font color="LEVEL">top-grade weapons and armor</font> can be enhanced <font color="LEVEL">beyond A-Grade</font> especially for PvP combat. Once a multi-user item is specialized, you will still be able to enchant the item. However, you cannot augment, crystallize, convert or add an attribute to it.</font> Think carefully before making a decision...<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 364790001">Enhance weapons and armor for PvP.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 364790002">Cancel enhancement.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 364790003">Obtain consumable item.</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Reputation Manager Rapidus:<br>
|
||||
If you are not part of a clan, or if your clan status is too low, your victory cannot be recognized.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Reputation Manager Rapidus:<br>
|
||||
Your clan will be proud of you.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Reputation Manager Rapidus:<br>
|
||||
You have no sins for which you need to atone.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Reputation Manager Rapidus:<br>
|
||||
No matter what excuses you make, there is no justifying murder. From now on, make every effort to obey the law. Do not fail!
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Reputation Manager Rapidus:<br>
|
||||
Fame comes naturally when one takes an active part in battles with others. If you have clan members with the same goal, consider participating in Castle Sieges, Fortress Battles and Clan Hall Battles. If you have party members who work extremely well together, try your luck in the Underground Coliseum Game or the Festival of Darkness. If you are alone, demonstrate your prowess by participating in the Olympiad.<br>
|
||||
You can use Clan Reputation Points earned in any of the above games to help increase your clan's fame or improve your own PVP capabilities.
|
||||
</body></html>
|
@@ -1,7 +0,0 @@
|
||||
<html><body>Reputation Manager Rapidus:<br>
|
||||
O victorious one, have you set your next goal? I have prepared something for you. You will be awarded according to your distinguished service. What is it that you seek?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FameManager 36479-02.html">Examine PVP exclusive items.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FameManager decreasePk">Decrease PK count by 1 (5,000 Fame Points).</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FameManager clanRep">Increase Clan Fame (1,000 Fame Points).</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h Quest FameManager clanRep">Quest.</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Reputation Manager Scipio:<br>
|
||||
Diplomacy is sometimes wiser than fighting. Nevertheless, Warriors need power if they are to protect those who depend on them. (Requires completion of second class transfer and Clan Fame level above 40.)<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FameManager 36480-07.html">Ask how to obtain Clan Fame points.</Button>
|
||||
</body></html>
|
@@ -1,8 +0,0 @@
|
||||
<html><body>Reputation Manager Scipio:<br>
|
||||
If you need something, please let me know.<br>
|
||||
Weapons and armor can be enhanced <font color="LEVEL">beyond Grade A</font> for <font color="LEVEL">top-grade items</font> and specialized for PvP. Weapons must have <font color="LEVEL">bestowed special abilities</font>... Once it is enhanced, an item <font color="LEVEL">can only be used by its owner</font>.<br>
|
||||
And once a multi-user item is specialized, <font color="LEVEL">you can use enhanced Spellbooks, but you cannot augment, soul crystalize or convert it</font>. Be careful so that you don't have to cancel the effect.<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 364790001">Enhance weapons and armor for PvP.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 364790002">Cancel enhancement.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 364790003">Obtain consumable item.</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Reputation Manager Scipio:<br>
|
||||
Whether or not you are a member of a clan, your victory cannot be acknowledged unless you possess Clan Reputation Points. Work harder for the benefit of your clan and fame will follow.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Reputation Manager Scipio:<br>
|
||||
You are the pride of your clan!
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Reputation Manager Scipio:<br>
|
||||
You do not need to ask for forgiveness by lowering your Clan Fame if you did not commit an offense.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Reputation Manager Scipio:<br>
|
||||
You have committed a serious crime! No matter the circumstances, murder is inexcusable. I will forgive you this once, but do not do this again or the consequences will be dire...
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Reputation Manager Scipio:<br>
|
||||
Fame comes naturally when one takes an active part in battles with others. If you have clan members with the same goal, consider jointly participating in Castle Sieges, Fortress Battles and Clan Hall Battles. If you have party members who work extremely well together, try your luck in the Underground Coliseum Game or at the Festival of Darkness. If you are alone, demonstrate your prowess by participating in the Olympiad.<br>
|
||||
You can use Clan Reputation Points earned in any of the above games to help increase your clan's fame or improve your own PvP capabilities.
|
||||
</body></html>
|
||||
|
@@ -1,7 +0,0 @@
|
||||
<html><body>Reputation Manager Scipio:<br>
|
||||
Warrior, are you confident that your actions are undertaken for the sake of peace rather than to serve your own greed? If so, your reward shall be as great as your accomplishment. What do you seek?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FameManager 36479-02.html">Examine PVP exclusive items.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FameManager decreasePk">Decrease PK count by 1 (5,000 Fame Points).</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FameManager clanRep">Increase Clan Fame (1,000 Fame Points).</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest.</Button>
|
||||
</body></html>
|
@@ -1,130 +0,0 @@
|
||||
/*
|
||||
* 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.FameManager;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.UserInfo;
|
||||
|
||||
/**
|
||||
* Fame Manager AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public final class FameManager extends AbstractNpcAI
|
||||
{
|
||||
// Npc
|
||||
private static final int[] FAME_MANAGER =
|
||||
{
|
||||
36479, // Rapidus
|
||||
36480, // Scipio
|
||||
};
|
||||
// Misc
|
||||
private static final int MIN_LVL = 40;
|
||||
private static final int DECREASE_COST = 5000;
|
||||
private static final int REPUTATION_COST = 1000;
|
||||
private static final int MIN_CLAN_LVL = 5;
|
||||
private static final int CLASS_LVL = 2;
|
||||
|
||||
private FameManager()
|
||||
{
|
||||
super(FameManager.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(FAME_MANAGER);
|
||||
addTalkId(FAME_MANAGER);
|
||||
addFirstTalkId(FAME_MANAGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "36479.html":
|
||||
case "36479-02.html":
|
||||
case "36479-07.html":
|
||||
case "36480.html":
|
||||
case "36480-02.html":
|
||||
case "36480-07.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "decreasePk":
|
||||
{
|
||||
if (player.getPkKills() > 0)
|
||||
{
|
||||
if ((player.getFame() >= DECREASE_COST) && (player.getLevel() >= MIN_LVL) && (player.getClassId().level() >= CLASS_LVL))
|
||||
{
|
||||
player.setFame(player.getFame() - DECREASE_COST);
|
||||
player.setPkKills(player.getPkKills() - 1);
|
||||
player.sendPacket(new UserInfo(player));
|
||||
htmltext = npc.getId() + "-06.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = npc.getId() + "-01.html";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = npc.getId() + "-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "clanRep":
|
||||
{
|
||||
if ((player.getClan() != null) && (player.getClan().getLevel() >= MIN_CLAN_LVL))
|
||||
{
|
||||
if ((player.getFame() >= REPUTATION_COST) && (player.getLevel() >= MIN_LVL) && (player.getClassId().level() >= CLASS_LVL))
|
||||
{
|
||||
player.setFame(player.getFame() - REPUTATION_COST);
|
||||
player.getClan().addReputationScore(50, true);
|
||||
player.sendPacket(new UserInfo(player));
|
||||
player.sendPacket(SystemMessageId.YOU_HAVE_ACQUIRED_50_CLAN_REPUTATION);
|
||||
htmltext = npc.getId() + "-04.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = npc.getId() + "-01.html";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = npc.getId() + "-03.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
return ((player.getFame() > 0) && (player.getLevel() >= MIN_LVL) && (player.getClassId().level() >= CLASS_LVL)) ? npc.getId() + ".html" : npc.getId() + "-01.html";
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new FameManager();
|
||||
}
|
||||
}
|
@@ -1,6 +0,0 @@
|
||||
<html><body>Hierarch Kadun Zu Ketra:<br>
|
||||
We Ketras have come here to reclaim the land of our ancestors! We've discovered that the Varka Silenos, our loathsome enemy, defile this Holy Land! We will never forgive them this insult!<br>
|
||||
Help us return to our homeland! May the flame of Pa'agrio burn within your heart eternally!<br>
|
||||
But, be careful! You must remember our brothers are always watching you. <font color="LEVEL">As soon as you lay a hand on our Ketra tribe, all the promises between us will be gone!</font><br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Hierarch Kadun Zu Ketra:<br>
|
||||
Hold it, stranger! This is the sacred land of the Ketra! You defile it with your presence!<br>
|
||||
We're different from the vile Orcs to the north... We'll surely reclaim this land of our ancestors! If you seriously want to help us return to our homeland, visit Messenger Wahkan!
|
||||
</body></html>
|
@@ -1,6 +0,0 @@
|
||||
<html><body>Ketra's Messenger Wahkan:<br>
|
||||
Welcome, brave comrade!<br>
|
||||
You've brought many heads of Varka Silenos! We're very impressed! A few more friends like you and we can put those Varkas down for good!<br>
|
||||
Tejakar Ketra!<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Ketra's Messenger Wahkan:<br>
|
||||
We Ketra are the bravest of all Orc tribes! We're here to reclaim the land of our ancestors! Prepare to die, all who stand in our way!<br>
|
||||
Don't take us for fools! We're well aware of the fact that in order to defeat the enemy, we must ally with outside forces! Like you! Will you be our comrade in arms? Are you ready to prove your worth alongside us on the battlefield?<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Soul Guide Asefa:<br>
|
||||
Welcome, comrade of Ketra! Until the day comes when you win an honorable name on the battlefield, may the souls of our ancestors bless you and protect you!<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Soul Guide Asefa:<br>
|
||||
In order to receive the blessing of the ancestors, you must dedicate a <font color="LEVEL">Buffalo horn</font> to them! Go to the battleground and return victorious, you'll receive a Buffalo horn as a reward!
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Soul Guide Asefa:<br>
|
||||
You, nameless foreigner! Get away from here! Don't defile the land of our ancestors!<br>
|
||||
I'll bring down the curse of flames upon the enemies of Ketra!
|
||||
</body></html>
|
@@ -1,13 +0,0 @@
|
||||
<html><body>Soul Guide Asefa:<br>
|
||||
Welcome, sworn friend of Ketra! I pray that the Flame of Paagrio will shed its light on your soul!<br>
|
||||
The blood of the Varka Silenos you drew has been dedicated to the souls of our great ancestors in the midst of sacred flames in heaven! You'll receive the blessings of our ancestors!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport 1">Blessing of Wolf (Focus): Requires 2 Buffalo Horns</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport 2">Blessing of Hawk (Death Whisper): Requires 2 Buffalo Horns</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport 3">Blessing of Bear (Might): Requires 3 Buffalo Horns</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport 4">Blessing of Spider (Acumen): Requires 3 Buffalo Horns</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport 5">Blessing of Lion (Berserker): Requires 3 Buffalo Horns</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport 6">Blessing of Coyote (Vampiric Rage): Requires 3 Buffalo Horns</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport 7">Blessing of Owl (Empower): Requires 6 Buffalo Horns</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport 8">Blessing of Wild Horse (Haste): Requires 6 Buffalo Horns</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Grocer Atan:<br>
|
||||
Come on in, comrade of Ketra! I'm responsible for providing supplies to the honorable warriors of our tribe. Under special orders from the chief of our tribe, I can now offer supplies to outsiders like you!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Buy 383">Buy</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Grocer Atan:<br>
|
||||
I can't sell supplies to someone who is not a comrade of Ketra! Go away!
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Warehouse Keeper Jaff:<br>
|
||||
Yo, comrade of Ketra! Welcome! This warehouse is where our war supplies are stored!<br>
|
||||
I know you've worked hard, but I can't yet open the warehouse to a foreigner such as yourself! Keep up the good work! One day our chief will allow you to use the warehouse!<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,6 +0,0 @@
|
||||
<html><body>Warehouse Keeper Jaff:<br>
|
||||
Come here, friend of Ketra!<br>
|
||||
You've been given permission to use our warehouse by our chief! A valued warrior like you shouldn't have to carry around a heavy load! Leave anything here you don't need for combat!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_DepositP">Deposit an item.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_WithdrawP">Pick up an item.</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Warehouse Keeper Jaff:<br>
|
||||
Go away! This warehouse is reserved for the glorious warriors of Ketra! It's not for outsiders!
|
||||
</body></html>
|
@@ -1,8 +0,0 @@
|
||||
<html><body>Trader Jumara:<br>
|
||||
Tejakar Ketra! Welcome, comrade! I'm a supplier of specialty items! The elder tells me that you're interested in buying something!<br>
|
||||
How about this low-level booty pouch? Someday, when you're qualified to open it, you'll have the strongest armor available!<br>
|
||||
Bring me a <font color="LEVEL">Buffalo Horn</font> and I'll give you whatever you want!<br>
|
||||
What would you like?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 313750001">"I'd like one of the Ketra's specialty products."</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,7 +0,0 @@
|
||||
<html><body>Trader Jumara:<br>
|
||||
Tejakar Ketra! Welcome, dear friend!<br>
|
||||
I've been ordered to supply a higher-level pouch to you, but you won't get the strongest armor yet! Try again when you've had more experiences.<br>
|
||||
Bring me a <font color="LEVEL">Buffalo Horn</font> and I'll give you whatever you want. Care to take a look?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 313750002">"I'd like one of the Ketra's specialty products."</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,8 +0,0 @@
|
||||
<html><body>Trader Jumara:<br>
|
||||
Tejakar Ketra! Welcome, dear friend!<br>
|
||||
You're finally qualified to get the most valuable looted goods from our tribe!<br>
|
||||
Now, open the box that holds the strongest armor!<br>
|
||||
Bring me a <font color="LEVEL">Buffalo Horn</font> and I'll give you anything you want!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 313750003">"I'd like one of the Ketra's specialty products."</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Trader Jumara:<br>
|
||||
I don't deal with foreigners! Get lost, you filthy invader!
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Gatekeeper Kurfa:<br>
|
||||
You're a true friend of my people. My ancestors guard your every step!<br>
|
||||
Stories of your valor grow everyday! Unfortunately, I can't allow you to use the gate of time and space yet. Keep up the good work!<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Gatekeeper Kurfa:<br>
|
||||
You, comrade of the Ketra. May the divine protection of the ancestors be with you always!<br>
|
||||
Our chief has approved of your valor and will allow you to travel to a bigger battleground. So, tell me where you wish to go! I, Kurfa, will open the gate of time and space for you!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport Teleport">Teleport</Button>
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Gatekeeper Kurfa:<br>
|
||||
Dear sworn friend of Ketra. May the divine blessing and protection of our ancestors be with you always!<br>
|
||||
Your bravery is renowned! Everybody says that when you battle, you are as hot as an exploding volcano! Our chief has given his approval for you to travel to another village! You, tell me where you wish to go! I, Kurfa will open the gate of time and space for you!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KetraOrcSupport Teleport">Teleport</Button>
|
||||
</body></html>
|
@@ -1,6 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10028" msg="811;Town of Goddard">Goddard Castle Town - 2400 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10029" msg="811;Rune Township">Rune Township - 11000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10031" msg="811;Wall of Argos">Wall of Argos - 4200 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10032" msg="811;Hot Springs">Hot Springs - 5400 Adena</Button>
|
||||
</body></html>
|
@@ -1,8 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10028" msg="811;Town of Goddard">Goddard Castle Town - 2400 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10029" msg="811;Rune Township">Rune Township - 11000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10030" msg="811;Town of Aden">Town of Aden - 10000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10040" msg="811;Town of Schuttgart">Town of Schuttgart - 8900 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10031" msg="811;Wall of Argos">Wall of Argos - 4200 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10032" msg="811;Hot Springs">Hot Springs - 5400 Adena</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Gatekeeper Kurfa:<br>
|
||||
I guide travelers through the gate of time and space! I don't deal with outsiders!
|
||||
</body></html>
|
@@ -1,215 +0,0 @@
|
||||
/*
|
||||
* 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.KetraOrcSupport;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Ketra Orc Support AI.<br>
|
||||
* Original Jython script by Emperorc and Kerberos_20.
|
||||
* @authors Nyaran
|
||||
*/
|
||||
public final class KetraOrcSupport extends AbstractNpcAI
|
||||
{
|
||||
private static class BuffsData
|
||||
{
|
||||
private final int _skill;
|
||||
private final int _cost;
|
||||
|
||||
public BuffsData(int skill, int cost)
|
||||
{
|
||||
_skill = skill;
|
||||
_cost = cost;
|
||||
}
|
||||
|
||||
public Skill getSkill()
|
||||
{
|
||||
return SkillData.getInstance().getSkill(_skill, 1);
|
||||
}
|
||||
|
||||
public int getCost()
|
||||
{
|
||||
return _cost;
|
||||
}
|
||||
}
|
||||
|
||||
// NPCs
|
||||
private static final int KADUN = 31370; // Hierarch
|
||||
private static final int WAHKAN = 31371; // Messenger
|
||||
private static final int ASEFA = 31372; // Soul Guide
|
||||
private static final int ATAN = 31373; // Grocer
|
||||
private static final int JAFF = 31374; // Warehouse Keeper
|
||||
private static final int JUMARA = 31375; // Trader
|
||||
private static final int KURFA = 31376; // Gate Keeper
|
||||
// Items
|
||||
private static final int HORN = 7186;
|
||||
private static final int[] KETRA_MARKS =
|
||||
{
|
||||
7211, // Mark of Ketra's Alliance - Level 1
|
||||
7212, // Mark of Ketra's Alliance - Level 2
|
||||
7213, // Mark of Ketra's Alliance - Level 3
|
||||
7214, // Mark of Ketra's Alliance - Level 4
|
||||
7215, // Mark of Ketra's Alliance - Level 5
|
||||
};
|
||||
// Misc
|
||||
private static final Map<Integer, BuffsData> BUFF = new HashMap<>();
|
||||
static
|
||||
{
|
||||
BUFF.put(1, new BuffsData(4359, 2)); // Focus: Requires 2 Buffalo Horns
|
||||
BUFF.put(2, new BuffsData(4360, 2)); // Death Whisper: Requires 2 Buffalo Horns
|
||||
BUFF.put(3, new BuffsData(4345, 3)); // Might: Requires 3 Buffalo Horns
|
||||
BUFF.put(4, new BuffsData(4355, 3)); // Acumen: Requires 3 Buffalo Horns
|
||||
BUFF.put(5, new BuffsData(4352, 3)); // Berserker: Requires 3 Buffalo Horns
|
||||
BUFF.put(6, new BuffsData(4354, 3)); // Vampiric Rage: Requires 3 Buffalo Horns
|
||||
BUFF.put(7, new BuffsData(4356, 6)); // Empower: Requires 6 Buffalo Horns
|
||||
BUFF.put(8, new BuffsData(4357, 6)); // Haste: Requires 6 Buffalo Horns
|
||||
}
|
||||
|
||||
private KetraOrcSupport()
|
||||
{
|
||||
super(KetraOrcSupport.class.getSimpleName(), "ai/npc");
|
||||
addFirstTalkId(KADUN, WAHKAN, ASEFA, ATAN, JAFF, JUMARA, KURFA);
|
||||
addTalkId(ASEFA, KURFA, JAFF);
|
||||
addStartNpc(KURFA, JAFF);
|
||||
}
|
||||
|
||||
private int getAllianceLevel(L2PcInstance player)
|
||||
{
|
||||
for (int i = 0; i < KETRA_MARKS.length; i++)
|
||||
{
|
||||
if (hasQuestItems(player, KETRA_MARKS[i]))
|
||||
{
|
||||
return (i + 1);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
if (Util.isDigit(event) && BUFF.containsKey(Integer.parseInt(event)))
|
||||
{
|
||||
final BuffsData buff = BUFF.get(Integer.parseInt(event));
|
||||
if (getQuestItemsCount(player, HORN) >= buff.getCost())
|
||||
{
|
||||
takeItems(player, HORN, buff.getCost());
|
||||
npc.setTarget(player);
|
||||
npc.doCast(buff.getSkill());
|
||||
npc.setCurrentHpMp(npc.getMaxHp(), npc.getMaxMp());
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "31372-02.html";
|
||||
}
|
||||
}
|
||||
else if (event.equals("Teleport"))
|
||||
{
|
||||
final int AllianceLevel = getAllianceLevel(player);
|
||||
if (AllianceLevel == 4)
|
||||
{
|
||||
htmltext = "31376-04.html";
|
||||
}
|
||||
else if (AllianceLevel == 5)
|
||||
{
|
||||
htmltext = "31376-05.html";
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final int AllianceLevel = getAllianceLevel(player);
|
||||
switch (npc.getId())
|
||||
{
|
||||
case KADUN:
|
||||
htmltext = (AllianceLevel > 0) ? "31370-friend.html" : "31370-no.html";
|
||||
break;
|
||||
case WAHKAN:
|
||||
htmltext = (AllianceLevel > 0) ? "31371-friend.html" : "31371-no.html";
|
||||
break;
|
||||
case ASEFA:
|
||||
htmltext = (AllianceLevel > 0) ? (AllianceLevel < 3) ? "31372-01.html" : "31372-04.html" : "31372-03.html";
|
||||
break;
|
||||
case ATAN:
|
||||
htmltext = (AllianceLevel > 0) ? "31373-friend.html" : "31373-no.html";
|
||||
break;
|
||||
case JAFF:
|
||||
htmltext = (AllianceLevel > 0) ? (AllianceLevel == 1) ? "31374-01.html" : "31374-02.html" : "31374-no.html";
|
||||
break;
|
||||
case JUMARA:
|
||||
switch (AllianceLevel)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
htmltext = "31375-01.html";
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
htmltext = "31375-02.html";
|
||||
break;
|
||||
case 5:
|
||||
htmltext = "31375-03.html";
|
||||
break;
|
||||
default:
|
||||
htmltext = "31375-no.html";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case KURFA:
|
||||
switch (AllianceLevel)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
htmltext = "31376-01.html";
|
||||
break;
|
||||
case 4:
|
||||
htmltext = "31376-02.html";
|
||||
break;
|
||||
case 5:
|
||||
htmltext = "31376-03.html";
|
||||
break;
|
||||
default:
|
||||
htmltext = "31376-no.html";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
public static void main(String args[])
|
||||
{
|
||||
new KetraOrcSupport();
|
||||
}
|
||||
}
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Treasure seeker Sumiel:<br>
|
||||
Is it hard? Yeah, true. Looking at the torch, we can do it about two more times. You using the lighting skill on the lighted torch?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Minigame restart">Restart Mini Game</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Treasure seeker Sumiel:<br>
|
||||
Last time. Concentrate on the treasure to appear. We can't try if the torch is all burnt.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Minigame restart">Restart Mini Game</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Treasure Seeker Sumiel:<br>
|
||||
Now's not the time. There's another adventurer trying. Wait your turn! Haha!
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Treasure Seeker Sumiel:<br>
|
||||
No, there's none. You have to light it the moment the furnace is turned on.
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Treasure seeker Sumiel:<br>
|
||||
Is that so? If you say so... so what else can I do for you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Minigame teleport1">Teleport outside the door.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Minigame teleport2">Teleport to Greymore</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Treasure seeker Sumiel:<br>
|
||||
Ha, ha, you're funny. Since you started already, light up the rest.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Treasure seeker Sumiel:<br>
|
||||
Ekoo... wait. I'm not ready yet. I need to clean up, this equipment has fingerprints all over it! Give me <font color="LEVEL">3 minutes</font>, I'll be ready then.<br>
|
||||
</body></html>
|
@@ -1,6 +0,0 @@
|
||||
<html><body>Treasure seeker Sumiel:<br>
|
||||
Success! You've found this room, wandered around this Monastery of Silence for a long time, got lost, got hungry, found your way here now, haven't you? Trust me when I say I don't know where the treasure is. I'd be long gone if I did. But I've had time to look, and I think there is a connection in the turning order of this furnace... I think we can solve the puzzle if we have an item to light. Do you want to give it a try? Tricky part is this, we have to light it within a certain time...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Minigame restart">Say you will try.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Minigame 32758-06.html">Say you don't have time for this jibber jabber, so you want to get out.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,539 +0,0 @@
|
||||
/*
|
||||
* 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.Minigame;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SpawnTable;
|
||||
import com.l2jserver.gameserver.enums.ChatType;
|
||||
import com.l2jserver.gameserver.model.L2Object;
|
||||
import com.l2jserver.gameserver.model.L2Spawn;
|
||||
import com.l2jserver.gameserver.model.Location;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.events.EventType;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.OnCreatureSkillUse;
|
||||
import com.l2jserver.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jserver.gameserver.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Monastery Minigame AI.
|
||||
* @author nonom
|
||||
*/
|
||||
public final class Minigame extends AbstractNpcAI
|
||||
{
|
||||
private static final int SUMIEL = 32758;
|
||||
private static final int BURNER = 18913;
|
||||
private static final int TREASURE_BOX = 18911;
|
||||
|
||||
private static final int UNLIT_TORCHLIGHT = 15540;
|
||||
private static final int TORCHLIGHT = 15485;
|
||||
|
||||
private static final int SKILL_TORCH_LIGHT = 9059;
|
||||
private static final SkillHolder TRIGGER_MIRAGE = new SkillHolder(5144, 1);
|
||||
|
||||
private static final Location TELEPORT1 = new Location(113187, -85388, -3424, 0);
|
||||
private static final Location TELEPORT2 = new Location(118833, -80589, -2688, 0);
|
||||
|
||||
private static final int TIMER_INTERVAL = 3;
|
||||
private static final int MAX_ATTEMPTS = 3;
|
||||
|
||||
private final List<MinigameRoom> _rooms = new ArrayList<>(2);
|
||||
|
||||
private Minigame()
|
||||
{
|
||||
super(Minigame.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(SUMIEL);
|
||||
addFirstTalkId(SUMIEL);
|
||||
addTalkId(SUMIEL);
|
||||
addSpawnId(SUMIEL, TREASURE_BOX);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final MinigameRoom room = getRoomByManager(npc);
|
||||
switch (event)
|
||||
{
|
||||
case "restart":
|
||||
{
|
||||
final boolean miniGameStarted = room.getStarted();
|
||||
if (!miniGameStarted && !hasQuestItems(player, UNLIT_TORCHLIGHT))
|
||||
{
|
||||
return "32758-05.html";
|
||||
}
|
||||
else if ((npc.getTarget() != null) && (npc.getTarget() != player))
|
||||
{
|
||||
return "32758-04.html";
|
||||
}
|
||||
|
||||
takeItems(player, UNLIT_TORCHLIGHT, 1);
|
||||
giveItems(player, TORCHLIGHT, 1);
|
||||
broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.I_LL_START_THE_FURNACE_MECHANISM_WATCH_FOR_THE_PATTERN);
|
||||
|
||||
room.getManager().setTarget(player);
|
||||
room.setParticipant(player);
|
||||
room.setStarted(true);
|
||||
for (int i = 0; i < 9; i++)
|
||||
{
|
||||
room.getOrder()[i] = getRandom(8);
|
||||
}
|
||||
cancelQuestTimer("hurry_up", npc, null);
|
||||
cancelQuestTimer("hurry_up2", npc, null);
|
||||
cancelQuestTimer("expire", npc, null);
|
||||
|
||||
startQuestTimer("hurry_up", 120000, npc, null);
|
||||
startQuestTimer("expire", 190000, npc, null);
|
||||
startQuestTimer("start", 1000, npc, null);
|
||||
return null;
|
||||
}
|
||||
case "off":
|
||||
{
|
||||
if (npc.getId() == BURNER)
|
||||
{
|
||||
npc.setState(2);
|
||||
npc.setIsRunning(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (L2Npc burner : room.getBurners())
|
||||
{
|
||||
burner.setState(2);
|
||||
burner.setIsRunning(false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "teleport1":
|
||||
{
|
||||
player.teleToLocation(TELEPORT1, 0);
|
||||
break;
|
||||
}
|
||||
case "teleport2":
|
||||
{
|
||||
player.teleToLocation(TELEPORT2, 0);
|
||||
break;
|
||||
}
|
||||
case "start":
|
||||
{
|
||||
room.burnThemAll();
|
||||
startQuestTimer("off", 2000, npc, null); // It should be null to stop burnthemAll 2s after
|
||||
startQuestTimer("timer", 4000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "timer":
|
||||
{
|
||||
if (room.getCurrentPot() < 9)
|
||||
{
|
||||
L2Npc b = room.getBurners()[room.getOrder()[room.getCurrentPot()]];
|
||||
b.setState(1);
|
||||
b.setIsRunning(false);
|
||||
startQuestTimer("off", 2000, b, null); // Stopping burning each pot 2s after
|
||||
startQuestTimer("timer", TIMER_INTERVAL * 1000, npc, null);
|
||||
room.setCurrentPot(room.getCurrentPot() + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
broadcastNpcSay(room.getManager(), ChatType.NPC_GENERAL, NpcStringId.NOW_LIGHT_THE_FURNACES_IN_THE_CORRECT_ORDER);
|
||||
room.burnThemAll();
|
||||
startQuestTimer("off", 2000, npc, null);
|
||||
final ConsumerEventListener listener = new ConsumerEventListener(room.getParticipant(), EventType.ON_CREATURE_SKILL_USE, (OnCreatureSkillUse listenerEvent) -> onSkillUse(listenerEvent), room);
|
||||
room.getParticipant().addListener(listener);
|
||||
room.setCurrentPot(0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "hurry_up":
|
||||
{
|
||||
broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.ONLY_1_MINUTE_LEFT);
|
||||
startQuestTimer("hurry_up2", 60000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "hurry_up2":
|
||||
{
|
||||
broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.JUST_10_SECONDS_LEFT);
|
||||
startQuestTimer("expire", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "expire":
|
||||
{
|
||||
broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.TOO_LATE_THE_TORCH_HAS_RUN_OUT_MAYBE_NEXT_TIME);
|
||||
}
|
||||
case "end":
|
||||
{
|
||||
cancelQuestTimer("expire", npc, null);
|
||||
cancelQuestTimer("hurry_up", npc, null);
|
||||
cancelQuestTimer("hurry_up2", npc, null);
|
||||
room.getManager().setTarget(null);
|
||||
room.setParticipant(null);
|
||||
room.setStarted(false);
|
||||
room.setAttemptNumber(1);
|
||||
room.setCurrentPot(0);
|
||||
break;
|
||||
}
|
||||
case "afterthat":
|
||||
{
|
||||
npc.deleteMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(L2Npc npc, L2PcInstance talker)
|
||||
{
|
||||
String htmltext = null;
|
||||
final MinigameRoom room = getRoomByManager(npc);
|
||||
final boolean miniGameStarted = room.getStarted();
|
||||
|
||||
if (npc.getTarget() == null)
|
||||
{
|
||||
htmltext = (miniGameStarted ? "32758-08.html" : "32758.html");
|
||||
}
|
||||
else if (npc.getTarget() == talker)
|
||||
{
|
||||
if (miniGameStarted)
|
||||
{
|
||||
htmltext = "32758-07.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
int attemptNumber = room.getAttemptNumber();
|
||||
|
||||
if (attemptNumber == 2)
|
||||
{
|
||||
htmltext = "32758-02.html";
|
||||
}
|
||||
else if (attemptNumber == 3)
|
||||
{
|
||||
htmltext = "32758-03.html";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "32758-04.html";
|
||||
}
|
||||
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SUMIEL:
|
||||
{
|
||||
_rooms.add(initRoom(npc));
|
||||
break;
|
||||
}
|
||||
case TREASURE_BOX:
|
||||
{
|
||||
npc.disableCoreAI(true);
|
||||
startQuestTimer("afterthat", 180000, npc, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onSkillUse(OnCreatureSkillUse event)
|
||||
{
|
||||
final MinigameRoom room = getRoomByParticipant((L2PcInstance) event.getCaster());
|
||||
final boolean miniGameStarted = room.getStarted();
|
||||
if (miniGameStarted && (event.getSkill().getId() == SKILL_TORCH_LIGHT))
|
||||
{
|
||||
for (L2Object obj : event.getTargets())
|
||||
{
|
||||
if ((obj != null) && obj.isNpc())
|
||||
{
|
||||
L2Npc npc = (L2Npc) obj;
|
||||
if (npc.getId() == BURNER)
|
||||
{
|
||||
npc.doCast(TRIGGER_MIRAGE.getSkill());
|
||||
final int pos = room.getBurnerPos(npc);
|
||||
if (pos == room.getOrder()[room.getCurrentPot()])
|
||||
{
|
||||
if (room.getCurrentPot() < 8)
|
||||
{
|
||||
npc.setState(1);
|
||||
npc.setIsRunning(false);
|
||||
startQuestTimer("off", 2000, npc, null);
|
||||
room.setCurrentPot(room.getCurrentPot() + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
addSpawn(TREASURE_BOX, room.getParticipant().getLocation(), true, 0);
|
||||
broadcastNpcSay(room.getManager(), ChatType.NPC_GENERAL, NpcStringId.THAT_S_IT_YOU_VE_DONE_IT);
|
||||
room.setCurrentPot(0);
|
||||
room.burnThemAll();
|
||||
startQuestTimer("off", 2000, room.getManager(), null);
|
||||
startQuestTimer("end", 4000, room.getManager(), null);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (room.getAttemptNumber() == MAX_ATTEMPTS)
|
||||
{
|
||||
broadcastNpcSay(room.getManager(), ChatType.NPC_GENERAL, NpcStringId.I_VE_FAILED_ANY_FURTHER_ATTEMPTS_WOULD_BE_WASTEFUL);
|
||||
room.burnThemAll();
|
||||
startQuestTimer("off", 2000, room.getManager(), null);
|
||||
room.getParticipant().removeListenerIf(EventType.ON_CREATURE_SKILL_USE, listener -> listener.getOwner() == room);
|
||||
startQuestTimer("end", 4000, room.getManager(), null);
|
||||
}
|
||||
else if (room.getAttemptNumber() < MAX_ATTEMPTS)
|
||||
{
|
||||
broadcastNpcSay(room.getManager(), ChatType.NPC_GENERAL, NpcStringId.TOO_BAD_I_WILL_NOT_GIVE_UP_ON_THIS_THOUGH);
|
||||
room.burnThemAll();
|
||||
startQuestTimer("off", 2000, room.getManager(), null);
|
||||
room.setAttemptNumber(room.getAttemptNumber() + 1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and initialize a MinigameRoom<br>
|
||||
* It's loading the nearby pots around the game instructor NPC.<br>
|
||||
* TODO: Load the pot_number value from npc ai_params.
|
||||
* @param manager the NPC instructor
|
||||
* @return MinigameRoom
|
||||
*/
|
||||
private MinigameRoom initRoom(L2Npc manager)
|
||||
{
|
||||
final L2Npc[] burners = new L2Npc[9];
|
||||
L2Npc lastSpawn;
|
||||
int potNumber = 0;
|
||||
|
||||
for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(BURNER))
|
||||
{
|
||||
lastSpawn = spawn.getLastSpawn();
|
||||
if ((potNumber <= 8) && Util.checkIfInRange(1000, manager, lastSpawn, false))
|
||||
{
|
||||
lastSpawn.setAutoAttackable(true);
|
||||
burners[potNumber++] = lastSpawn;
|
||||
}
|
||||
}
|
||||
return new MinigameRoom(burners, manager);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a MinigameRoom by game instructor
|
||||
* @param manager the NPC instructor
|
||||
* @return MinigameRoom
|
||||
*/
|
||||
private MinigameRoom getRoomByManager(L2Npc manager)
|
||||
{
|
||||
for (MinigameRoom room : _rooms)
|
||||
{
|
||||
if (room.getManager() == manager)
|
||||
{
|
||||
return room;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a MinigameRoom by participant
|
||||
* @param participant the L2PcInstance participating
|
||||
* @return MinigameRoom
|
||||
*/
|
||||
private MinigameRoom getRoomByParticipant(L2PcInstance participant)
|
||||
{
|
||||
for (MinigameRoom room : _rooms)
|
||||
{
|
||||
if (room.getParticipant() == participant)
|
||||
{
|
||||
return room;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* An object that holds the participant, manager, burning order<br>
|
||||
* and game status for each secret room into Monastery of Silence.
|
||||
*/
|
||||
private class MinigameRoom
|
||||
{
|
||||
private final L2Npc[] _burners;
|
||||
private final L2Npc _manager;
|
||||
private L2PcInstance _participant;
|
||||
private boolean _started;
|
||||
private int _attemptNumber;
|
||||
private int _currentPot;
|
||||
private final int _order[];
|
||||
|
||||
public MinigameRoom(L2Npc[] burners, L2Npc manager)
|
||||
{
|
||||
_burners = burners;
|
||||
_manager = manager;
|
||||
_participant = null;
|
||||
_started = false;
|
||||
_attemptNumber = 1;
|
||||
_currentPot = 0;
|
||||
_order = new int[9];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the burner position into the array
|
||||
* @param npc the L2Npc burner
|
||||
* @return the array index
|
||||
*/
|
||||
public int getBurnerPos(L2Npc npc)
|
||||
{
|
||||
for (int i = 0; i < 9; i++)
|
||||
{
|
||||
if (npc.equals(_burners[i]))
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Burn all the pots into the room
|
||||
*/
|
||||
public void burnThemAll()
|
||||
{
|
||||
for (L2Npc burner : _burners)
|
||||
{
|
||||
burner.setState(1);
|
||||
burner.setIsRunning(false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a list of burners
|
||||
* @return An array of L2Npcs
|
||||
*/
|
||||
public L2Npc[] getBurners()
|
||||
{
|
||||
return _burners;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current game manager
|
||||
* @return The L2Npc game instructor
|
||||
*/
|
||||
public L2Npc getManager()
|
||||
{
|
||||
return _manager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current game participant
|
||||
* @return The L2PcInstance who is participating
|
||||
*/
|
||||
public L2PcInstance getParticipant()
|
||||
{
|
||||
return _participant;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current participant
|
||||
* @param participant The L2PcInstance participating
|
||||
*/
|
||||
public void setParticipant(L2PcInstance participant)
|
||||
{
|
||||
_participant = participant;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the MinigameRoom status
|
||||
* @return {@code true} if the game is started, {@code false} otherwise
|
||||
*/
|
||||
public boolean getStarted()
|
||||
{
|
||||
return _started;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the MinigameRoom status
|
||||
* @param started The game status {@code true} if the game is started, {@code false} otherwise
|
||||
*/
|
||||
public void setStarted(boolean started)
|
||||
{
|
||||
_started = started;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current burner position
|
||||
* @return The array index
|
||||
*/
|
||||
public int getCurrentPot()
|
||||
{
|
||||
return _currentPot;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current burner position
|
||||
* @param pot The position
|
||||
*/
|
||||
public void setCurrentPot(int pot)
|
||||
{
|
||||
_currentPot = pot;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current attempt Number
|
||||
* @return The attempt number
|
||||
*/
|
||||
public int getAttemptNumber()
|
||||
{
|
||||
return _attemptNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the attempt number
|
||||
* @param attempt attempt number
|
||||
*/
|
||||
public void setAttemptNumber(int attempt)
|
||||
{
|
||||
_attemptNumber = attempt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the burning order
|
||||
* @return an array of Ids
|
||||
*/
|
||||
public int[] getOrder()
|
||||
{
|
||||
return _order;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new Minigame();
|
||||
}
|
||||
}
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
Is this a Freya Necklace? Hmm... it's okay I guess. It isn't as interesting as a Blessed Freya Necklace. You could be lucky enough to get one, or if you happen to aquire Freya's Soul in a bottle you can create a Blessed Freya Necklace. However the process is, well... different. Tell you what, if you bring me these items I can make one for you.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Rafforty 32020-04.html">"I have a Bottle of Freya's Soul."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Rafforty 32020-03.html">"Where can I get Freya's Soul?"</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
I wish I could tell you more about whatever it is you have to show me. But it doesn't look like you have anything to show.<br>
|
||||
(Requires a Freya Necklace.)
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
I don't know the details, but if I had to hazard a guess, it would be something you would get after defeating Freya. You could always ask around to see what other people have to say.
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
Yes, I sensed that you had Freya's Soul contained in a Bottle before you even answered! Nah, I saw it when you were showing me your Freya Necklace. You must have made her very angry. If you are ready, I can begin the process of making a Blessed Freya Necklace.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Rafforty 32020-07.html">"Make me a Blessed Freya Necklace."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Rafforty 32020-06.html">"I do not want a Blessed Freya Necklace."</Button>
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
Sorry there, stranger, but unless you can bring me a Bottle of Freya's Soul, I can't do anything with that Freya Necklace you are carrying. Speak to me when you actually have these items.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
Wow. Lack of trust, huh? Good luck finding someone else who can make a Blessed Freya Necklace.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
Ah... a masterpiece if I do say so myself. Here is your Blessed Freya Necklace. Now you truly have something that is interesting.
|
||||
</body></html>
|
@@ -1,3 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
If you want me to help you will have to give me the item. I cannot do anything without it.
|
||||
</body></html>
|
@@ -1,5 +0,0 @@
|
||||
<html><body>Rafforty:<br>
|
||||
Welcome to my little oasis. Although it may be cold and blustery out there, it's like an endless spring day in here. Needless to say, I don't really venture outside much any more. Although I like my privacy, I'm always willing to lend a helping hand to those in need. And if you don't mind me saying, you look like you're in need.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Rafforty 32020-01.html">I have a necklace I'd like you to look at.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,82 +0,0 @@
|
||||
/*
|
||||
* 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.Rafforty;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
|
||||
/**
|
||||
* Rafforty AI.
|
||||
* @author malyelfik, Gladicek
|
||||
*/
|
||||
public final class Rafforty extends AbstractNpcAI
|
||||
{
|
||||
// NPC
|
||||
private static final int RAFFORTY = 32020;
|
||||
// Items
|
||||
private static final int NECKLACE = 16025;
|
||||
private static final int BLESSED_NECKLACE = 16026;
|
||||
private static final int BOTTLE = 16027;
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = event;
|
||||
switch (event)
|
||||
{
|
||||
case "32020-01.html":
|
||||
if (!hasQuestItems(player, NECKLACE))
|
||||
{
|
||||
htmltext = "32020-02.html";
|
||||
}
|
||||
break;
|
||||
case "32020-04.html":
|
||||
if (!hasQuestItems(player, BOTTLE))
|
||||
{
|
||||
htmltext = "32020-05.html";
|
||||
}
|
||||
break;
|
||||
case "32020-07.html":
|
||||
if (!hasQuestItems(player, BOTTLE, NECKLACE))
|
||||
{
|
||||
return "32020-08.html";
|
||||
}
|
||||
takeItems(player, NECKLACE, 1);
|
||||
takeItems(player, BOTTLE, 1);
|
||||
giveItems(player, BLESSED_NECKLACE, 1);
|
||||
break;
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
private Rafforty()
|
||||
{
|
||||
super(Rafforty.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(RAFFORTY);
|
||||
addFirstTalkId(RAFFORTY);
|
||||
addTalkId(RAFFORTY);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new Rafforty();
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<html><body>Remembrance Tower:<br>
|
||||
On the day Faeron passed through the Dimensional Rift into the Material Realm, we were attacked by the monsters of the Material Realm.<br>
|
||||
We were not prepared for such a sudden attack and suffered a great loss of life.<br>
|
||||
In remembrance of those poor lives we could not protect, this tower is hereby erected.<br>
|
||||
<center>Queen Navari</center><br>
|
||||
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest RemembranceTower action">"I offer my condolences for the dead."</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
|
||||
</body></html>
|
@@ -1,67 +0,0 @@
|
||||
/*
|
||||
* 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.RemembranceTower;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.network.serverpackets.OnEventTrigger;
|
||||
|
||||
/**
|
||||
* Remembrance Tower AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public final class RemembranceTower extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int REMEMBRANCE_TOWER = 33989;
|
||||
// Misc
|
||||
private static final int EMMITER_ID = 17250700;
|
||||
|
||||
private RemembranceTower()
|
||||
{
|
||||
super(RemembranceTower.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(REMEMBRANCE_TOWER);
|
||||
addTalkId(REMEMBRANCE_TOWER);
|
||||
addFirstTalkId(REMEMBRANCE_TOWER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (event.equals("action") && npc.isScriptValue(0))
|
||||
{
|
||||
npc.broadcastPacket(new OnEventTrigger(EMMITER_ID, true));
|
||||
npc.setScriptValue(1);
|
||||
startQuestTimer("TRIGGER", 3000, npc, null);
|
||||
}
|
||||
else if (event.equals("TRIGGER"))
|
||||
{
|
||||
npc.setScriptValue(0);
|
||||
npc.broadcastPacket(new OnEventTrigger(EMMITER_ID, false));
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new RemembranceTower();
|
||||
}
|
||||
}
|
@@ -3,5 +3,4 @@
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest NewbieTravelToken 30601">Dwarven Village - 1 Newbie Travel Token</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest NewbieTravelToken 30599">Elven Village - 1 Newbie Travel Token</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest NewbieTravelToken 30602">Orc Village - 1 Newbie Travel Token</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest NewbieTravelToken 32135">Kamael Village - 1 Newbie Travel Token</Button>
|
||||
</body></html>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user