Sync with L2JServer Jan 2nd 2015.
This commit is contained in:
@@ -296,4 +296,4 @@ public final class DragonValley extends AbstractNpcAI
|
||||
{
|
||||
new DragonValley();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -111,4 +111,4 @@ public final class GiantsCave extends AbstractNpcAI
|
||||
{
|
||||
new GiantsCave();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
6
trunk/dist/game/data/scripts/ai/npc/Apprentice/33124.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Apprentice/33124.html
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Apprentice:<br>
|
||||
Have you seen the Dwarven Workshop here?<br>
|
||||
They're working on some kind of new product, and they're offering people a sneak peek at it.<br>
|
||||
It's not complete, or anything, so don't judge too harshly, but do you want to give it a go?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Apprentice rideKukuru">"Why not?"</Button>
|
||||
</body></html>
|
81
trunk/dist/game/data/scripts/ai/npc/Apprentice/Apprentice.java
vendored
Normal file
81
trunk/dist/game/data/scripts/ai/npc/Apprentice/Apprentice.java
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* 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.Apprentice;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jserver.gameserver.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.network.clientpackets.Say2;
|
||||
|
||||
/**
|
||||
* Apprentice AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public final class Apprentice extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int APPRENTICE = 33124;
|
||||
// Skill
|
||||
private static final SkillHolder KUKURU = new SkillHolder(9204, 1); // Kukuru
|
||||
|
||||
private Apprentice()
|
||||
{
|
||||
super(Apprentice.class.getSimpleName(), "ai/npc");
|
||||
addSpawnId(APPRENTICE);
|
||||
addStartNpc(APPRENTICE);
|
||||
addTalkId(APPRENTICE);
|
||||
addFirstTalkId(APPRENTICE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (event.equals("rideKukuru"))
|
||||
{
|
||||
if (!player.isTransformed())
|
||||
{
|
||||
KUKURU.getSkill().applyEffects(npc, player);
|
||||
}
|
||||
else
|
||||
{
|
||||
broadcastNpcSay(npc, Say2.NPC_ALL, NpcStringId.YOU_CAN_T_RIDE_A_KUKURI_NOW);
|
||||
}
|
||||
}
|
||||
else if (event.equals("SPAM_TEXT") && (npc != null))
|
||||
{
|
||||
broadcastNpcSay(npc, Say2.NPC_ALL, NpcStringId.TRY_RIDING_A_KUKURI);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
startQuestTimer("SPAM_TEXT", 12000, npc, null, true);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new Apprentice();
|
||||
}
|
||||
}
|
@@ -131,4 +131,4 @@ public final class CastleMercenaryManager extends AbstractNpcAI
|
||||
{
|
||||
new CastleMercenaryManager();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<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! Our reputation depends on it!<br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest</a><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>
|
@@ -2,8 +2,8 @@
|
||||
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>
|
||||
<a action="bypass -h Quest ClanTrader exchange-ba">Provide 1 Blood Alliance.</a><br>
|
||||
<a action="bypass -h Quest ClanTrader exchange-bo">Provide 10 Blood Oaths.</a><br>
|
||||
<a action="bypass -h Quest ClanTrader exchange-ke">Provide 100 Knight's Epaulettes.</a><br>
|
||||
<a action="bypass -h Quest ClanTrader 32025.html">Back.</a><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 +1,4 @@
|
||||
<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>
|
||||
<a action="bypass -h Quest ClanTrader 32025.html">Back.</a><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32025.html">Back.</Button>
|
||||
</body></html>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<html><body>Clan Trader Ilia:<br>
|
||||
Your reputation has been increased.<br><br>
|
||||
<a action="bypass -h Quest ClanTrader 32025.html">Back.</a><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32025.html">Back.</Button>
|
||||
</body></html>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<html><body>Clan Trader Ilia:<br>
|
||||
The maximum clan level for raising reputation is 5.<br><br>
|
||||
<a action="bypass -h Quest ClanTrader 32025.html">Back.</a><br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest ClanTrader 32025.html">Back.</Button>
|
||||
</body></html>
|
@@ -1,8 +1,8 @@
|
||||
<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>
|
||||
<a action="bypass -h npc_%objectId%_multisell 1235">Buy a Clan Item.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_multisell 1236">Upgrade a clan item.</a><br>
|
||||
<a action="bypass -h Quest ClanTrader repinfo">Ask about Clan Reputation Points.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_TerritoryStatus">Ask about the local lord and tax rate.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest.</a><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,4 +1,4 @@
|
||||
<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>
|
||||
<a action="bypass -h Quest FameManager 36479-07.html">Ask how to obtain Clan Fame points.</a>
|
||||
<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 +1,7 @@
|
||||
<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>
|
||||
<a action="bypass -h npc_%objectId%_exc_multisell 364790001">Enhance weapons and armor for PvP.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_exc_multisell 364790002">Cancel enhancement.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_multisell 364790003">Obtain consumable item.</a>
|
||||
<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,7 +1,7 @@
|
||||
<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>
|
||||
<a action="bypass -h Quest FameManager 36479-02.html">Examine PVP exclusive items.</a><br>
|
||||
<a action="bypass -h Quest FameManager decreasePk">Decrease PK count by 1 (5,000 Fame Points).</a><br>
|
||||
<a action="bypass -h Quest FameManager clanRep">Increase Clan Fame (1,000 Fame Points).</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
|
||||
<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>
|
@@ -31,6 +31,7 @@ import ai.npc.AbstractNpcAI;
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.engines.DocumentParser;
|
||||
import com.l2jserver.gameserver.enums.CategoryType;
|
||||
import com.l2jserver.gameserver.enums.MailType;
|
||||
import com.l2jserver.gameserver.instancemanager.MailManager;
|
||||
import com.l2jserver.gameserver.instancemanager.MentorManager;
|
||||
import com.l2jserver.gameserver.model.L2Mentee;
|
||||
@@ -38,7 +39,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.base.ClassLevel;
|
||||
import com.l2jserver.gameserver.model.entity.Message;
|
||||
import com.l2jserver.gameserver.model.entity.Message.SendBySystem;
|
||||
import com.l2jserver.gameserver.model.events.EventType;
|
||||
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
|
||||
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
|
||||
@@ -451,9 +451,7 @@ public class MentorGuide extends AbstractNpcAI implements DocumentParser
|
||||
|
||||
private void sendMail(L2PcInstance player, String title, String body, int itemId, long amount)
|
||||
{
|
||||
// TODO: Update me when mail system is updated
|
||||
// final Message msg = new Message(MENTOR_GUIDE, player.getObjectId(), title, body, MailType.MENTOR_NPC);
|
||||
final Message msg = new Message(player.getObjectId(), title, body, SendBySystem.ALEGRIA);
|
||||
final Message msg = new Message(MENTOR_GUIDE, player.getObjectId(), title, body, MailType.MENTOR_NPC);
|
||||
msg.createAttachments().addItem(getName(), itemId, amount, null, player);
|
||||
|
||||
MailManager.getInstance().sendMessage(msg);
|
||||
|
73
trunk/dist/game/data/scripts/ai/npc/Milia/Milia.java
vendored
Normal file
73
trunk/dist/game/data/scripts/ai/npc/Milia/Milia.java
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* 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.Milia;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
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.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.network.clientpackets.Say2;
|
||||
|
||||
/**
|
||||
* Milia AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public final class Milia extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int MILIA = 30006;
|
||||
// Locations
|
||||
private static final Location GLUDIO_AIRSHIP = new Location(-149406, 255247, -80);
|
||||
|
||||
private Milia()
|
||||
{
|
||||
super(Milia.class.getSimpleName(), "ai/npc/Teleports");
|
||||
addSpawnId(MILIA);
|
||||
addStartNpc(MILIA);
|
||||
addTalkId(MILIA);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (event.equals("gludioAirship"))
|
||||
{
|
||||
player.teleToLocation(GLUDIO_AIRSHIP);
|
||||
}
|
||||
else if (event.equals("TEXT_SPAM") && (npc != null))
|
||||
{
|
||||
broadcastNpcSay(npc, Say2.NPC_ALL, NpcStringId.SPEAK_WITH_ME_ABOUT_TRAVELING_AROUND_ADEN);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
startQuestTimer("TEXT_SPAM", 10000, npc, null, true);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new Milia();
|
||||
}
|
||||
}
|
@@ -1,8 +1,6 @@
|
||||
<html><body>Priest Ross:<br>
|
||||
Did you hear about the recent meeting in Oren Castle? Representatives from the 5 races met for the first time as a Council to plan our defense against the coming darkness.<br>
|
||||
Did you hear about the recent meeting in Oren Castle? Representatives from the 5 races met for the first time as a Council to plan our defenses against the coming darkness.<br>
|
||||
Following that meeting, we are now sending messengers to the peoples of this continent to rally support for our united cause. We need many priests filled with courage and faith...<br>
|
||||
<a action="bypass -h npc_%objectId%_SkillList">Learn skills.</a><br>
|
||||
<a action="bypass -h Quest HealerTrainer SkillTransfer">Ask about Skill Transfer.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Link common/skill_enchant_help.htm">Ask about Skill Enchanting.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest HealerTrainer SkillTransfer">"So I heard something about skill linking. Can you tell me about it?"</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,8 +1,6 @@
|
||||
<html><body>Priestess Vivian:<br>
|
||||
<html><body>Priestess Vivyan:<br>
|
||||
Einhasad is eternal, and her words never fail. She fills the world with the light of her justice and compassion.<br>
|
||||
Welcome to this temple, child. Though I am a seeker after truth such as yourself, I will gladly pass on what I have learned to you.<br>
|
||||
<a action="bypass -h npc_%objectId%_SkillList">Learn skills.</a><br>
|
||||
<a action="bypass -h Quest HealerTrainer SkillTransfer">Ask about Skill Transfer.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Link common/skill_enchant_help.htm">Ask about Skill Enchanting.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest HealerTrainer SkillTransfer">"So I heard something about skill linking. Can you tell me about it?"</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,8 +1,6 @@
|
||||
<html><body>Priestess Flownia:<br>
|
||||
Welcome, seeker of truth. How do you like this Town of Aden? A beautiful and grand city, isn't it? I think it is even more impressive when you consider how close it is to the battlefront.<br>
|
||||
Welcome, seeker of truth. How do you like Aden? It's a beautiful and grand city, isn't it? I think it is even more impressive when you consider how close it is to the battlefront.<br>
|
||||
But never forget that this magnificent city was built upon the sacrifices of many saints. Unless we are prepared to follow their example, even Aden may someday fall...<br>
|
||||
<a action="bypass -h npc_%objectId%_SkillList">Learn skills.</a><br>
|
||||
<a action="bypass -h Quest HealerTrainer SkillTransfer">Ask about Skill Transfer.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Link common/skill_enchant_help.htm">Ask about Skill Enchanting.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest HealerTrainer SkillTransfer">"So I heard something about skill linking. Can you tell me about it?"</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,8 +1,6 @@
|
||||
<html><body>Priest Linette:<br>
|
||||
<html><body>Priest Leonard:<br>
|
||||
May Eva smile upon you. Oh! I feel a bit embarrassed to utter this greeting in the Temple of Einhasad. But I suppose if Giran is the center of commerce and Oren is the center of military might, then Aden is the center of culture and religion.<br>
|
||||
Now what can I do for you, my child?<br>
|
||||
<a action="bypass -h npc_%objectId%_SkillList">Learn skills.</a><br>
|
||||
<a action="bypass -h Quest HealerTrainer SkillTransfer">Ask about Skill Transfer.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Link common/skill_enchant_help.htm">Ask about Skill Enchanting.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest HealerTrainer SkillTransfer">"So I heard something about skill linking. Can you tell me about it?"</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,5 +1,5 @@
|
||||
<html><body>Magister Hanellin:<br>
|
||||
The king of this country so focused on foreign intrigues that he is blind to the revolt brewing in his own capital!<br>
|
||||
There are dozens of plots, cabals and conspiracies to dethrone him and take over this castle. Those self-righteous Elves may frown and sniff at the goings-on, but we Dark Elves would never criticize. It's just the way of things. Humans may talk like Elves, but they inevitably behave like Dark Elves. It's just their nature...<br>
|
||||
<a action="bypass -h Quest HealerTrainer 30864.html">Back</a>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest HealerTrainer 30864.html">Back</Button>
|
||||
</body></html>
|
@@ -1,8 +1,6 @@
|
||||
<html><body>Magister Hanellin:<br>
|
||||
People say this town is the center of culture and religion, but to me it feels like like a piece of rotten wood -- ready to collapse at the slightest push. Humans are closer to Dark Elves than they think...<br>
|
||||
<a action="bypass -h Quest HealerTrainer 30864-1.html">"How can you say that?"</a><br>
|
||||
<a action="bypass -h npc_%objectId%_SkillList">Learn skills.</a><br>
|
||||
<a action="bypass -h Quest HealerTrainer SkillTransfer">Ask about Skill Transfer.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Link common/skill_enchant_help.htm">Ask about Skill Enchanting.</a><br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
|
||||
People say this town is the center of culture and religion, but to me it feels like a piece of rotten wood ready to collapse at the slightest push. Humans are closer to Dark Elves than they think...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest HealerTrainer 30864-1.html">"Why is that?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest HealerTrainer SkillTransfer">"So I heard something about skill linking. Can you tell me about it?"</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,7 +1,7 @@
|
||||
<html><body>Weaver Olf Kanore:<br>
|
||||
Select an item from which you wish the seal removed.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 32610-2.htm">Remove the seal on the pin.</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 32610-3.htm">Remove the seal on the pouch.</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 32610-4.htm">Remove the seal on the clip.</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 32610-5.htm">Remove the seal on the accessory.</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 32610-2.htm">Remove the seal on the pin.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 32610-3.htm">Remove the seal on the pouch.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 32610-4.htm">Remove the seal on the clip.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 32610-5.htm">Remove the seal on the accessory.</Button>
|
||||
</body></html>
|
@@ -1,7 +1,7 @@
|
||||
<html><body>Weaver Olf Kanore:<br>
|
||||
Select a magic pin from which to remove the seal. Keep in mind that there is a fee for doing so.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 0_grade_pin">C-Grade Magic Pin (3200 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 1_grade_pin">B-Grade Magic Pin (11,800 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 2_grade_pin">A-Grade Magic Pin (26,500 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 3_grade_pin">S-Grade Magic Pin (136,600 Adena)</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 0_grade_pin">C-Grade Magic Pin (3200 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 1_grade_pin">B-Grade Magic Pin (11,800 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 2_grade_pin">A-Grade Magic Pin (26,500 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 3_grade_pin">S-Grade Magic Pin (136,600 Adena)</Button>
|
||||
</body></html>
|
@@ -1,7 +1,7 @@
|
||||
<html><body>Weaver Olf Kanore:<br>
|
||||
Select a magic pouch from which to remove the seal. Keep in mind that there is a fee for doing so.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 0_grade_pouch">C-Grade Magic Pouch (3200 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 1_grade_pouch">B-Grade Magic Pouch (11,800 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 2_grade_pouch">A-Grade Magic Pouch (26,500 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 3_grade_pouch">S-Grade Magic Pouch (136,600 Adena)</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 0_grade_pouch">C-Grade Magic Pouch (3200 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 1_grade_pouch">B-Grade Magic Pouch (11,800 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 2_grade_pouch">A-Grade Magic Pouch (26,500 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 3_grade_pouch">S-Grade Magic Pouch (136,600 Adena)</Button>
|
||||
</body></html>
|
@@ -1,5 +1,5 @@
|
||||
<html><body>Weaver Olf Kanore:<br>
|
||||
Select a magic clip from which to remove the seal. Keep in mind that there is a fee for doing so.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 2_grade_clip">A-Grade Magic Clip (26,500 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 3_grade_clip">S-Grade Magic Clip (136,600 Adena)</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 2_grade_clip">A-Grade Magic Clip (26,500 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 3_grade_clip">S-Grade Magic Clip (136,600 Adena)</Button>
|
||||
</body></html>
|
@@ -1,5 +1,5 @@
|
||||
<html><body>Weaver Olf Kanore:<br>
|
||||
Select an accessory from which to remove the seal. Keep in mind that there is a fee for doing so.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 2_grade_ornament">A-Grade Accessory (26,500 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 3_grade_ornament">S-Grade Accessory (136,600 Adena)</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 2_grade_ornament">A-Grade Accessory (26,500 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 3_grade_ornament">S-Grade Accessory (136,600 Adena)</Button>
|
||||
</body></html>
|
@@ -1,7 +1,7 @@
|
||||
<html><body>Weaver Olf Adams:<br>
|
||||
Select an item from which you wish the seal removed.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 32612-2.htm">Remove the seal on the pin.</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 32612-3.htm">Remove the seal on the pouch.</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 32612-4.htm">Remove the seal on the clip.</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 32612-5.htm">Remove the seal on the accessory.</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 32612-2.htm">Remove the seal on the pin.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 32612-3.htm">Remove the seal on the pouch.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 32612-4.htm">Remove the seal on the clip.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 32612-5.htm">Remove the seal on the accessory.</Button>
|
||||
</body></html>
|
@@ -1,7 +1,7 @@
|
||||
<html><body>Weaver Olf Adams:<br>
|
||||
Select a magic pin from which to remove the seal. Keep in mind that there is a fee for doing so.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 0_grade_pin">C-Grade Magic Pin (3200 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 1_grade_pin">B-Grade Magic Pin (11,800 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 2_grade_pin">A-Grade Magic Pin (26,500 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 3_grade_pin">S-Grade Magic Pin (136,600 Adena)</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 0_grade_pin">C-Grade Magic Pin (3200 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 1_grade_pin">B-Grade Magic Pin (11,800 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 2_grade_pin">A-Grade Magic Pin (26,500 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 3_grade_pin">S-Grade Magic Pin (136,600 Adena)</Button>
|
||||
</body></html>
|
@@ -1,7 +1,7 @@
|
||||
<html><body>Weaver Olf Adams:<br>
|
||||
Select a magic pouch from which to remove the seal. Keep in mind that there is a fee for doing so.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 0_grade_pouch">C-Grade Magic Pouch (3200 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 1_grade_pouch">B-Grade Magic Pouch (11,800 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 2_grade_pouch">A-Grade Magic Pouch (26,500 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 3_grade_pouch">S-Grade Magic Pouch (136,600 Adena)</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 0_grade_pouch">C-Grade Magic Pouch (3200 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 1_grade_pouch">B-Grade Magic Pouch (11,800 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 2_grade_pouch">A-Grade Magic Pouch (26,500 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 3_grade_pouch">S-Grade Magic Pouch (136,600 Adena)</Button>
|
||||
</body></html>
|
@@ -1,5 +1,5 @@
|
||||
<html><body>Weaver Olf Adams:<br>
|
||||
Select a magic clip from which to remove the seal. Keep in mind that there is a fee for doing so.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 2_grade_clip">A-Grade Magic Clip (26,500 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 3_grade_clip">S-Grade Magic Clip (136,600 Adena)</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 2_grade_clip">A-Grade Magic Clip (26,500 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 3_grade_clip">S-Grade Magic Clip (136,600 Adena)</Button>
|
||||
</body></html>
|
@@ -1,5 +1,5 @@
|
||||
<html><body>Weaver Olf Adams:<br>
|
||||
Select an accessory from which to remove the seal. Keep in mind that there is a fee for doing so.<br>
|
||||
<a action="bypass -h Quest WeaverOlf 2_grade_ornament">A-Grade Accessory (26,500 Adena)</a><br>
|
||||
<a action="bypass -h Quest WeaverOlf 3_grade_ornament">S-Grade Accessory (136,600 Adena)</a>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 2_grade_ornament">A-Grade Accessory (26,500 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest WeaverOlf 3_grade_ornament">S-Grade Accessory (136,600 Adena)</Button>
|
||||
</body></html>
|
@@ -1,10 +1,6 @@
|
||||
<html>
|
||||
<head>
|
||||
<body>
|
||||
Zephyra:<br>
|
||||
<html><body>Zephyra:<br>
|
||||
Only the Ertheia from the Spirit Realm may learn alchemy.<br>
|
||||
Because Alchemy creates rare materials, it requires rigorous training. You must complete your 1st Liberation at least to learn the basics of alchemy. Remember that!<br>
|
||||
Alchemy consists of <font color="LEVEL">Combination</font>, using an Alchemy Cube, and <font color="LEVEL">Transmutation</font> for all kinds of rare items. There is one more thing you will require, but you will find out when you are ready.<br>
|
||||
<button align=LEFT icon="RETURN" action="bypass -h Quest Zephyra 33978.html">Back</button>
|
||||
</body>
|
||||
</html>
|
||||
</body></html>
|
@@ -1,9 +1,5 @@
|
||||
<html>
|
||||
<head>
|
||||
<body>
|
||||
Zephyra:<br>
|
||||
<html><body>Zephyra:<br>
|
||||
Not just anyone can learn Alchemy. Only the Ertheia can learn thanks to our special connections with the Wind Spirits.<br>
|
||||
(Only Ertheia may learn Alchemy as their main class.)<br>
|
||||
<button align=LEFT icon="RETURN" action="bypass -h Quest Zephyra 33978.html">Back</button>
|
||||
</body>
|
||||
</html>
|
||||
</body></html>
|
@@ -1,7 +1,4 @@
|
||||
<html>
|
||||
<head>
|
||||
<body>
|
||||
Zephyra:<br>
|
||||
<html><body>Zephyra:<br>
|
||||
There's so much we don't know about in the Material Realm. They require us to pay with Adena for everything.<br>
|
||||
So I started my research with Veruti. I also got help from the spirits. Research was hard, but then we discovered a new skill that can save Adena by creating valuable goods.<br>
|
||||
So, do you want to join my research? By the way, only Lv. 40 or above Ertheia who have completed their 1st Liberation may learn Alchemy.<br>
|
||||
@@ -10,5 +7,4 @@ So, do you want to join my research? By the way, only Lv. 40 or above Ertheia wh
|
||||
<button align=LEFT icon="NORMAL" action="bypass -h package_deposit" msg="1040">"I want to share my items."</button>
|
||||
<button align=LEFT icon="NORMAL" action="bypass -h package_withdraw">"I want to retrieve my shared items."</button>
|
||||
<button align=LEFT icon="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
|
||||
</body>
|
||||
</html>
|
||||
</body></html>
|
@@ -33,11 +33,14 @@ import com.l2jserver.gameserver.network.serverpackets.ExAcquirableSkillListByCla
|
||||
import com.l2jserver.gameserver.network.serverpackets.TutorialShowHtml;
|
||||
|
||||
/**
|
||||
* Zephyra AI.
|
||||
* @author Sdw
|
||||
*/
|
||||
public class Zephyra extends AbstractNpcAI
|
||||
public final class Zephyra extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int ZEPHYRA = 33978;
|
||||
// Misc
|
||||
private static final String TUTORIAL_LINK = "..\\L2text\\QT_026_alchemy_01.htm";
|
||||
|
||||
private Zephyra()
|
||||
|
@@ -376,4 +376,4 @@ public final class Maguen extends AbstractNpcAI
|
||||
{
|
||||
return QuestManager.getInstance().getQuest(Nemo.class.getSimpleName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -112,7 +112,6 @@ import handlers.admincommandhandlers.AdminRepairChar;
|
||||
import handlers.admincommandhandlers.AdminRes;
|
||||
import handlers.admincommandhandlers.AdminRide;
|
||||
import handlers.admincommandhandlers.AdminScan;
|
||||
import handlers.admincommandhandlers.AdminServerInfo;
|
||||
import handlers.admincommandhandlers.AdminShop;
|
||||
import handlers.admincommandhandlers.AdminShowQuests;
|
||||
import handlers.admincommandhandlers.AdminShutdown;
|
||||
@@ -379,7 +378,6 @@ public class MasterHandler
|
||||
AdminRes.class,
|
||||
AdminRide.class,
|
||||
AdminScan.class,
|
||||
AdminServerInfo.class,
|
||||
AdminShop.class,
|
||||
AdminShowQuests.class,
|
||||
AdminShutdown.class,
|
||||
@@ -629,4 +627,4 @@ public class MasterHandler
|
||||
|
||||
_log.log(Level.INFO, "Handlers Loaded...");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -64,4 +64,4 @@ public final class Escape extends AbstractEffect
|
||||
info.getEffected().teleToLocation(MapRegionManager.getInstance().getTeleToLocation(info.getEffected(), _escapeType), true);
|
||||
info.getEffected().setInstanceId(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -48,4 +48,4 @@ public final class Recovery extends AbstractEffect
|
||||
info.getEffected().getActingPlayer().decreaseShilensBreathDebuff();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -44,7 +44,6 @@ public final class ShilensBreath extends AbstractEffect
|
||||
{
|
||||
if (info.getEffected().isPlayer() && !info.getEffected().isDead())
|
||||
{
|
||||
_log.info("Time je: " + info.getAbnormalTime());
|
||||
final L2PcInstance player = (L2PcInstance) info.getEffected();
|
||||
int nextLv = info.getSkill().getLevel() - 1;
|
||||
|
||||
|
@@ -23,6 +23,8 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.CharInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExUserInfoCubic;
|
||||
|
||||
/**
|
||||
* Summon Agathion effect implementation.
|
||||
@@ -61,6 +63,7 @@ public final class SummonAgathion extends AbstractEffect
|
||||
final L2PcInstance player = info.getEffected().getActingPlayer();
|
||||
|
||||
player.setAgathionId(_npcId);
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExUserInfoCubic(player));
|
||||
player.broadcastPacket(new CharInfo(player));
|
||||
}
|
||||
}
|
||||
|
@@ -24,6 +24,8 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.CharInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExUserInfoCubic;
|
||||
import com.l2jserver.util.Rnd;
|
||||
|
||||
/**
|
||||
@@ -121,6 +123,7 @@ public final class SummonCubic extends AbstractEffect
|
||||
}
|
||||
// Adding a new cubic.
|
||||
player.addCubic(_cubicId, _cubicSkillLevel, _cubicPower, _cubicDelay, _cubicSkillChance, _cubicMaxCount, _cubicDuration, info.getEffected() != info.getEffector());
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExUserInfoCubic(player));
|
||||
player.broadcastPacket(new CharInfo(player));
|
||||
}
|
||||
}
|
||||
|
@@ -23,6 +23,8 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.CharInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExUserInfoCubic;
|
||||
|
||||
/**
|
||||
* Unsummon Agathion effect implementation.
|
||||
@@ -48,7 +50,8 @@ public final class UnsummonAgathion extends AbstractEffect
|
||||
if (player != null)
|
||||
{
|
||||
player.setAgathionId(0);
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExUserInfoCubic(player));
|
||||
player.broadcastPacket(new CharInfo(player));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -116,4 +116,4 @@ public final class Warpgate extends AbstractNpcAI
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -116,4 +116,4 @@ public final class BaseTower extends AbstractNpcAI
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -111,4 +111,4 @@ public class Q00176_StepsForHonor extends Quest
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -18,12 +18,16 @@
|
||||
*/
|
||||
package quests.Q00186_ContractExecution;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
|
||||
|
||||
import com.l2jserver.gameserver.enums.QuestSound;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.model.quest.State;
|
||||
import com.l2jserver.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
@@ -33,8 +37,8 @@ import com.l2jserver.gameserver.util.Util;
|
||||
public final class Q00186_ContractExecution extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int RESEARCHER_LORAIN = 30673;
|
||||
private static final int MAESTRO_NIKOLA = 30621;
|
||||
private static final int RESEARCHER_LORAIN = 30673;
|
||||
private static final int BLUEPRINT_SELLER_LUKA = 31437;
|
||||
// Items
|
||||
private static final int LORAINES_CERTIFICATE = 10362;
|
||||
@@ -44,64 +48,71 @@ public final class Q00186_ContractExecution extends Quest
|
||||
private static final int MIN_LEVEL = 41;
|
||||
private static final int MAX_LEVEL_FOR_EXP_SP = 47;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS = new int[]
|
||||
private static final Map<Integer, Integer> MONSTERS = new HashMap<>();
|
||||
static
|
||||
{
|
||||
20577, // Leto Lizardman
|
||||
20578, // Leto Lizardman Archer
|
||||
20579, // Leto Lizardman Soldier
|
||||
20580, // Leto Lizardman Warrior
|
||||
20581, // Leto Lizardman Shaman
|
||||
20582, // Leto Lizardman Overlord
|
||||
};
|
||||
MONSTERS.put(20577, 40); // Leto Lizardman
|
||||
MONSTERS.put(20578, 44); // Leto Lizardman Archer
|
||||
MONSTERS.put(20579, 46); // Leto Lizardman Soldier
|
||||
MONSTERS.put(20580, 88); // Leto Lizardman Warrior
|
||||
MONSTERS.put(20581, 50); // Leto Lizardman Shaman
|
||||
MONSTERS.put(20582, 100); // Leto Lizardman Overlord
|
||||
}
|
||||
|
||||
public Q00186_ContractExecution()
|
||||
{
|
||||
super(186, Q00186_ContractExecution.class.getSimpleName(), "Contract Execution");
|
||||
addStartNpc(RESEARCHER_LORAIN);
|
||||
addTalkId(RESEARCHER_LORAIN, BLUEPRINT_SELLER_LUKA, MAESTRO_NIKOLA);
|
||||
addKillId(MONSTERS);
|
||||
addKillId(MONSTERS.keySet());
|
||||
registerQuestItems(METALLOGRAPH_RESEARCH_REPORT, LETO_LIZARDMAN_ACCESSORY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if (st == null)
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "30621-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30673-03.htm":
|
||||
{
|
||||
if ((player.getLevel() >= MIN_LEVEL) && st.hasQuestItems(LORAINES_CERTIFICATE))
|
||||
if ((player.getLevel() >= MIN_LEVEL) && hasQuestItems(player, LORAINES_CERTIFICATE))
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setMemoState(1);
|
||||
giveItems(player, METALLOGRAPH_RESEARCH_REPORT, 1);
|
||||
takeItems(player, LORAINES_CERTIFICATE, -1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30621-02.html":
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
st.startQuest();
|
||||
st.giveItems(METALLOGRAPH_RESEARCH_REPORT, 1);
|
||||
st.takeItems(LORAINES_CERTIFICATE, -1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30621-03.html":
|
||||
{
|
||||
if (st.isCond(1))
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
qs.setMemoState(2);
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31437-03.html":
|
||||
{
|
||||
if (st.isCond(2) && st.hasQuestItems(LETO_LIZARDMAN_ACCESSORY))
|
||||
if (qs.isMemoState(2) && hasQuestItems(player, LETO_LIZARDMAN_ACCESSORY))
|
||||
{
|
||||
htmltext = event;
|
||||
}
|
||||
@@ -109,23 +120,23 @@ public final class Q00186_ContractExecution extends Quest
|
||||
}
|
||||
case "31437-04.html":
|
||||
{
|
||||
if (st.isCond(2) && st.hasQuestItems(LETO_LIZARDMAN_ACCESSORY))
|
||||
if (qs.isMemoState(2) && hasQuestItems(player, LETO_LIZARDMAN_ACCESSORY))
|
||||
{
|
||||
st.setCond(3);
|
||||
qs.setMemoState(3);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31437-06.html":
|
||||
{
|
||||
if (st.isCond(3))
|
||||
if (qs.isMemoState(3))
|
||||
{
|
||||
st.giveAdena(105083, true);
|
||||
giveAdena(player, 105083, true);
|
||||
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
|
||||
{
|
||||
st.addExpAndSp(285935, 18711);
|
||||
addExpAndSp(player, 285935, 18711);
|
||||
}
|
||||
st.exitQuest(false, true);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
@@ -137,13 +148,13 @@ public final class Q00186_ContractExecution extends Quest
|
||||
@Override
|
||||
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState st = getQuestState(killer, false);
|
||||
if ((st != null) && st.isCond(2) && Util.checkIfInRange(1500, npc, killer, false))
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isMemoState(2) && Util.checkIfInRange(1500, npc, killer, false) && (getRandom(100) < MONSTERS.get(npc.getId())))
|
||||
{
|
||||
if (!st.hasQuestItems(LETO_LIZARDMAN_ACCESSORY))
|
||||
if (!hasQuestItems(killer, LETO_LIZARDMAN_ACCESSORY))
|
||||
{
|
||||
st.giveItems(LETO_LIZARDMAN_ACCESSORY, 1);
|
||||
st.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
giveItems(killer, LETO_LIZARDMAN_ACCESSORY, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
@@ -152,68 +163,70 @@ public final class Q00186_ContractExecution extends Quest
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
final int memoState = qs.getMemoState();
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
if (qs.isCreated())
|
||||
{
|
||||
return htmltext;
|
||||
if (npc.getId() == RESEARCHER_LORAIN)
|
||||
{
|
||||
final QuestState q184 = player.getQuestState(Q00184_ArtOfPersuasion.class.getSimpleName());
|
||||
if ((q184 != null) && q184.isCompleted() && hasQuestItems(player, LORAINES_CERTIFICATE))
|
||||
{
|
||||
htmltext = player.getLevel() >= MIN_LEVEL ? "30673-01.htm" : "30673-02.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (npc.getId())
|
||||
else if (qs.isStarted())
|
||||
{
|
||||
case RESEARCHER_LORAIN:
|
||||
switch (npc.getId())
|
||||
{
|
||||
switch (st.getState())
|
||||
case RESEARCHER_LORAIN:
|
||||
{
|
||||
case State.CREATED:
|
||||
if (memoState >= 1)
|
||||
{
|
||||
final QuestState qs = player.getQuestState("184_Nikolas_Cooperation_Contract");
|
||||
if ((qs != null) && qs.isCompleted() && st.hasQuestItems(LORAINES_CERTIFICATE))
|
||||
{
|
||||
htmltext = player.getLevel() >= MIN_LEVEL ? "30673-01.htm" : "30673-02.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.getCond() >= 1)
|
||||
{
|
||||
htmltext = "30673-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
htmltext = "30673-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MAESTRO_NIKOLA:
|
||||
{
|
||||
if (st.isStarted())
|
||||
case MAESTRO_NIKOLA:
|
||||
{
|
||||
htmltext = st.isCond(1) ? "30621-01.html" : "30621-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BLUEPRINT_SELLER_LUKA:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 2:
|
||||
if (memoState == 1)
|
||||
{
|
||||
htmltext = st.hasQuestItems(LETO_LIZARDMAN_ACCESSORY) ? "31437-02.html" : "31437-01.html";
|
||||
break;
|
||||
htmltext = "30621-01.html";
|
||||
}
|
||||
case 3:
|
||||
else if (memoState == 2)
|
||||
{
|
||||
htmltext = "30621-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BLUEPRINT_SELLER_LUKA:
|
||||
{
|
||||
if (memoState == 2)
|
||||
{
|
||||
if (hasQuestItems(player, LETO_LIZARDMAN_ACCESSORY))
|
||||
{
|
||||
htmltext = "31437-02.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "31437-01.html";
|
||||
}
|
||||
}
|
||||
else if (memoState == 3)
|
||||
{
|
||||
htmltext = "31437-05.html";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (qs.isCompleted())
|
||||
{
|
||||
if (npc.getId() == RESEARCHER_LORAIN)
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
@@ -18,11 +18,12 @@
|
||||
*/
|
||||
package quests.Q00187_NikolasHeart;
|
||||
|
||||
import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Nikola's Heart (187)
|
||||
@@ -39,7 +40,7 @@ public final class Q00187_NikolasHeart extends Quest
|
||||
private static final int METALLOGRAPH = 10368;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 41;
|
||||
private static final int MIN_LEVEL_FOR_EXP_SP = 47;
|
||||
private static final int MAX_LEVEL_FOR_EXP_SP = 47;
|
||||
|
||||
public Q00187_NikolasHeart()
|
||||
{
|
||||
@@ -52,50 +53,63 @@ public final class Q00187_NikolasHeart extends Quest
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if (st == null)
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "30621-02.html":
|
||||
case "30512-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30673-03.htm":
|
||||
{
|
||||
if (st.isCreated())
|
||||
if (qs.isCreated())
|
||||
{
|
||||
st.startQuest();
|
||||
st.takeItems(LORAINES_CERTIFICATE, -1);
|
||||
st.giveItems(METALLOGRAPH, 1);
|
||||
qs.startQuest();
|
||||
qs.setMemoState(1);
|
||||
giveItems(player, METALLOGRAPH, 1);
|
||||
takeItems(player, LORAINES_CERTIFICATE, -1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30621-03.html":
|
||||
case "30512-02.html":
|
||||
{
|
||||
if (st.isCond(1))
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30512-03.html":
|
||||
{
|
||||
if (st.isCond(2))
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
st.giveAdena(93383, true);
|
||||
if (player.getLevel() < MIN_LEVEL_FOR_EXP_SP)
|
||||
giveAdena(player, 93383, true);
|
||||
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
|
||||
{
|
||||
st.addExpAndSp(285935, 18711);
|
||||
addExpAndSp(player, 285935, 18711);
|
||||
}
|
||||
st.exitQuest(false, true);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30621-02.html":
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30621-03.html":
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
qs.setMemoState(2);
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
@@ -107,59 +121,59 @@ public final class Q00187_NikolasHeart extends Quest
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
final int memoState = qs.getMemoState();
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
if (qs.isCreated())
|
||||
{
|
||||
return htmltext;
|
||||
if (npc.getId() == RESEARCHER_LORAIN)
|
||||
{
|
||||
final QuestState q185 = player.getQuestState(Q00185_NikolasCooperation.class.getSimpleName());
|
||||
if ((q185 != null) && q185.isCompleted() && hasQuestItems(player, LORAINES_CERTIFICATE))
|
||||
{
|
||||
htmltext = player.getLevel() >= MIN_LEVEL ? "30673-01.htm" : "30673-02.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (npc.getId())
|
||||
else if (qs.isStarted())
|
||||
{
|
||||
case RESEARCHER_LORAIN:
|
||||
switch (npc.getId())
|
||||
{
|
||||
switch (st.getState())
|
||||
case RESEARCHER_LORAIN:
|
||||
{
|
||||
case State.CREATED:
|
||||
if (memoState >= 1)
|
||||
{
|
||||
final QuestState qs = player.getQuestState("185_Nikolas_Cooperation_Consideration");
|
||||
if ((qs != null) && qs.isCompleted() && st.hasQuestItems(LORAINES_CERTIFICATE))
|
||||
{
|
||||
htmltext = player.getLevel() < MIN_LEVEL ? "30673-02.htm" : "30673-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.getCond() >= 1)
|
||||
{
|
||||
htmltext = "30673-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
htmltext = "30673-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HEAD_BLACKSMITH_KUSTO:
|
||||
{
|
||||
if (memoState == 2)
|
||||
{
|
||||
htmltext = "30512-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MAESTRO_NIKOLA:
|
||||
{
|
||||
if (memoState == 1)
|
||||
{
|
||||
htmltext = "30621-01.html";
|
||||
}
|
||||
else if (memoState == 2)
|
||||
{
|
||||
htmltext = "30621-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MAESTRO_NIKOLA:
|
||||
}
|
||||
else if (qs.isCompleted())
|
||||
{
|
||||
if (npc.getId() == RESEARCHER_LORAIN)
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
htmltext = st.isCond(1) ? "30621-01.html" : "30621-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HEAD_BLACKSMITH_KUSTO:
|
||||
{
|
||||
if (st.isCond(2) && st.hasQuestItems(METALLOGRAPH))
|
||||
{
|
||||
htmltext = "30512-01.html";
|
||||
}
|
||||
break;
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
@@ -18,6 +18,8 @@
|
||||
*/
|
||||
package quests.Q00188_SealRemoval;
|
||||
|
||||
import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
|
||||
import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
|
||||
import quests.Q00186_ContractExecution.Q00186_ContractExecution;
|
||||
import quests.Q00187_NikolasHeart.Q00187_NikolasHeart;
|
||||
|
||||
@@ -25,7 +27,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Seal Removal (188)
|
||||
@@ -55,50 +56,70 @@ public final class Q00188_SealRemoval extends Quest
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if (st == null)
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "30970-02.html":
|
||||
case "30621-02.html":
|
||||
case "30621-04.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30673-03.htm":
|
||||
{
|
||||
if (st.isCreated())
|
||||
if (qs.isCreated())
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setMemoState(1);
|
||||
giveItems(player, BROKEN_METAL_PIECES, 1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30621-02.html":
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
st.startQuest();
|
||||
st.giveItems(BROKEN_METAL_PIECES, 1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30621-03.html":
|
||||
{
|
||||
if (st.isCond(1))
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
qs.setMemoState(2);
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30621-04.html":
|
||||
{
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30970-02.html":
|
||||
{
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30970-03.html":
|
||||
{
|
||||
if (st.isCond(2))
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
st.giveAdena(98583, true);
|
||||
giveAdena(player, 98583, true);
|
||||
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
|
||||
{
|
||||
st.addExpAndSp(285935, 18711);
|
||||
addExpAndSp(player, 285935, 18711);
|
||||
}
|
||||
st.exitQuest(false, true);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
@@ -110,72 +131,61 @@ public final class Q00188_SealRemoval extends Quest
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
if (qs.isCreated())
|
||||
{
|
||||
return htmltext;
|
||||
if (npc.getId() == RESEARCHER_LORAIN)
|
||||
{
|
||||
if (!hasQuestItems(player, LORAINES_CERTIFICATE))
|
||||
{
|
||||
final QuestState q184 = player.getQuestState(Q00184_ArtOfPersuasion.class.getSimpleName());
|
||||
final QuestState q185 = player.getQuestState(Q00185_NikolasCooperation.class.getSimpleName());
|
||||
final QuestState q186 = player.getQuestState(Q00186_ContractExecution.class.getSimpleName());
|
||||
final QuestState q187 = player.getQuestState(Q00187_NikolasHeart.class.getSimpleName());
|
||||
if (((q184 != null) && q184.isCompleted()) || ((q185 != null) && q185.isCompleted() && (q186 == null) && (q187 == null)))
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30673-01.htm" : "30673-02.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (npc.getId())
|
||||
else if (qs.isStarted())
|
||||
{
|
||||
case RESEARCHER_LORAIN:
|
||||
switch (npc.getId())
|
||||
{
|
||||
switch (st.getState())
|
||||
case RESEARCHER_LORAIN:
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (st.hasQuestItems(LORAINES_CERTIFICATE))
|
||||
{
|
||||
final QuestState q184 = player.getQuestState("184_Nikolas_Cooperation_Contract"); // TODO: Update.
|
||||
if ((q184 != null) && q184.isCompleted())
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30673-01.htm" : "30673-02.htm";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final QuestState q185 = player.getQuestState("185_Nikolas_Cooperation_Consideration"); // TODO: Update.
|
||||
final QuestState q186 = player.getQuestState(Q00186_ContractExecution.class.getSimpleName());
|
||||
final QuestState q187 = player.getQuestState(Q00187_NikolasHeart.class.getSimpleName());
|
||||
if ((q185 != null) && q185.isCompleted() && (q186 != null) && q186.isCompleted() && (q187 != null) && q187.isCompleted())
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30673-01.htm" : "30673-02.htm";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.getCond() >= 1)
|
||||
{
|
||||
htmltext = "30673-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
htmltext = "30673-04.html";
|
||||
break;
|
||||
}
|
||||
case MAESTRO_NIKOLA:
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
htmltext = "30621-01.html";
|
||||
}
|
||||
else if (qs.isMemoState(2))
|
||||
{
|
||||
htmltext = "30621-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DOROTHY_LOCKSMITH:
|
||||
{
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
htmltext = "30970-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MAESTRO_NIKOLA:
|
||||
}
|
||||
else if (qs.isCompleted())
|
||||
{
|
||||
if (npc.getId() == RESEARCHER_LORAIN)
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
htmltext = st.isCond(1) ? "30621-01.html" : "30621-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DOROTHY_LOCKSMITH:
|
||||
{
|
||||
if (st.isCond(2))
|
||||
{
|
||||
htmltext = "30970-01.html";
|
||||
}
|
||||
break;
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
@@ -24,7 +24,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Contract Completion (189)
|
||||
@@ -33,10 +32,10 @@ import com.l2jserver.gameserver.model.quest.State;
|
||||
public final class Q00189_ContractCompletion extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int BLUEPRINT_SELLER_LUKA = 31437;
|
||||
private static final int SHEGFIELD = 30068;
|
||||
private static final int HEAD_BLACKSMITH_KUSTO = 30512;
|
||||
private static final int RESEARCHER_LORAIN = 30673;
|
||||
private static final int SHEGFIELD = 30068;
|
||||
private static final int BLUEPRINT_SELLER_LUKA = 31437;
|
||||
// Items
|
||||
private static final int SCROLL_OF_DECODING = 10370;
|
||||
// Misc
|
||||
@@ -54,58 +53,65 @@ public final class Q00189_ContractCompletion extends Quest
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if (st == null)
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "30068-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "31437-03.htm":
|
||||
{
|
||||
if (st.isCreated())
|
||||
if (qs.isCreated())
|
||||
{
|
||||
st.startQuest();
|
||||
st.giveItems(SCROLL_OF_DECODING, 1);
|
||||
qs.startQuest();
|
||||
qs.setMemoState(1);
|
||||
giveItems(player, SCROLL_OF_DECODING, 1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30512-02.html":
|
||||
{
|
||||
if (st.isCond(4))
|
||||
if (qs.isMemoState(4))
|
||||
{
|
||||
st.giveAdena(121527, true);
|
||||
giveAdena(player, 121527, true);
|
||||
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
|
||||
{
|
||||
st.addExpAndSp(309467, 20614);
|
||||
addExpAndSp(player, 309467, 20614);
|
||||
}
|
||||
st.exitQuest(false, true);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30673-02.html":
|
||||
{
|
||||
if (st.isCond(1))
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
qs.setMemoState(2);
|
||||
qs.setCond(2, true);
|
||||
takeItems(player, SCROLL_OF_DECODING, -1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30068-02.html":
|
||||
{
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
st.takeItems(SCROLL_OF_DECODING, -1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30068-03.html":
|
||||
{
|
||||
if (st.isCond(2))
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
st.setCond(3, true);
|
||||
qs.setMemoState(3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
@@ -117,96 +123,92 @@ public final class Q00189_ContractCompletion extends Quest
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
if (qs.isCreated())
|
||||
{
|
||||
return htmltext;
|
||||
if (npc.getId() == BLUEPRINT_SELLER_LUKA)
|
||||
{
|
||||
final QuestState q186 = player.getQuestState(Q00186_ContractExecution.class.getSimpleName());
|
||||
if ((q186 != null) && q186.isCompleted())
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "31437-01.htm" : "31437-02.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (npc.getId())
|
||||
else if (qs.isStarted())
|
||||
{
|
||||
case BLUEPRINT_SELLER_LUKA:
|
||||
switch (npc.getId())
|
||||
{
|
||||
switch (st.getState())
|
||||
case BLUEPRINT_SELLER_LUKA:
|
||||
{
|
||||
case State.CREATED:
|
||||
if (qs.getMemoState() >= 1)
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00186_ContractExecution.class.getSimpleName());
|
||||
if ((qs != null) && qs.isCompleted())
|
||||
htmltext = "31437-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HEAD_BLACKSMITH_KUSTO:
|
||||
{
|
||||
if (qs.isMemoState(4))
|
||||
{
|
||||
htmltext = "30512-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RESEARCHER_LORAIN:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "31437-01.htm" : "31437-02.htm";
|
||||
htmltext = "30673-01.html";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.getCond() >= 1)
|
||||
case 2:
|
||||
{
|
||||
htmltext = "31437-04.html";
|
||||
htmltext = "30673-03.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
qs.setMemoState(4);
|
||||
qs.setCond(4, true);
|
||||
htmltext = "30673-04.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "30673-05.html";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HEAD_BLACKSMITH_KUSTO:
|
||||
{
|
||||
if (st.isCond(4))
|
||||
case SHEGFIELD:
|
||||
{
|
||||
htmltext = "30512-01.html";
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
htmltext = "30068-01.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "30068-04.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RESEARCHER_LORAIN:
|
||||
}
|
||||
else if (qs.isCompleted())
|
||||
{
|
||||
if (npc.getId() == BLUEPRINT_SELLER_LUKA)
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "30673-01.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "30673-03.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
st.setCond(4, true);
|
||||
htmltext = "30673-04.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "30673-05.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SHEGFIELD:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
htmltext = "30068-01.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "30068-04.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
@@ -24,7 +24,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Lost Dream (190)
|
||||
@@ -33,10 +32,10 @@ import com.l2jserver.gameserver.model.quest.State;
|
||||
public final class Q00190_LostDream extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int HEAD_BLACKSMITH_KUSTO = 30512;
|
||||
private static final int RESEARCHER_LORAIN = 30673;
|
||||
private static final int MAESTRO_NIKOLA = 30621;
|
||||
private static final int JURIS = 30113;
|
||||
private static final int HEAD_BLACKSMITH_KUSTO = 30512;
|
||||
private static final int MAESTRO_NIKOLA = 30621;
|
||||
private static final int RESEARCHER_LORAIN = 30673;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 42;
|
||||
private static final int MAX_LEVEL_FOR_EXP_SP = 48;
|
||||
@@ -51,43 +50,49 @@ public final class Q00190_LostDream extends Quest
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
|
||||
if (st == null)
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "30113-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30512-03.htm":
|
||||
{
|
||||
if (st.isCreated())
|
||||
if (qs.isCreated())
|
||||
{
|
||||
st.startQuest();
|
||||
qs.startQuest();
|
||||
qs.setMemoState(1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30512-06.html":
|
||||
{
|
||||
if (st.isCond(2))
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
qs.setMemoState(3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30113-02.html":
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
st.setCond(3, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30113-03.html":
|
||||
{
|
||||
if (st.isCond(1))
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
qs.setMemoState(2);
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
@@ -99,122 +104,97 @@ public final class Q00190_LostDream extends Quest
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
final int memoState = qs.getMemoState();
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
if (qs.isCreated())
|
||||
{
|
||||
return htmltext;
|
||||
if (npc.getId() == HEAD_BLACKSMITH_KUSTO)
|
||||
{
|
||||
final QuestState q187 = player.getQuestState(Q00187_NikolasHeart.class.getSimpleName());
|
||||
if ((q187 != null) && q187.isCompleted())
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30512-01.htm" : "30512-02.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (npc.getId())
|
||||
else if (qs.isStarted())
|
||||
{
|
||||
case HEAD_BLACKSMITH_KUSTO:
|
||||
switch (npc.getId())
|
||||
{
|
||||
switch (st.getState())
|
||||
case HEAD_BLACKSMITH_KUSTO:
|
||||
{
|
||||
case State.CREATED:
|
||||
if (memoState == 1)
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00187_NikolasHeart.class.getSimpleName());
|
||||
if ((qs != null) && qs.isCompleted())
|
||||
htmltext = "30512-04.html";
|
||||
}
|
||||
else if (memoState == 2)
|
||||
{
|
||||
htmltext = "30512-05.html";
|
||||
}
|
||||
else if ((memoState >= 3) && (memoState <= 4))
|
||||
{
|
||||
htmltext = "30512-07.html";
|
||||
}
|
||||
else if (memoState == 5)
|
||||
{
|
||||
htmltext = "30512-08.html";
|
||||
giveAdena(player, 109427, true);
|
||||
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30512-01.htm" : "30512-02.htm";
|
||||
addExpAndSp(player, 309467, 20614);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "30512-04.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "30512-05.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
case 4:
|
||||
{
|
||||
htmltext = "30512-07.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "30512-08.html";
|
||||
st.giveAdena(109427, true);
|
||||
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
|
||||
{
|
||||
st.addExpAndSp(309467, 20614);
|
||||
}
|
||||
st.exitQuest(false, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
qs.exitQuest(false, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RESEARCHER_LORAIN:
|
||||
{
|
||||
switch (st.getCond())
|
||||
case JURIS:
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
st.setCond(4, true);
|
||||
htmltext = "30673-01.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "30673-02.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MAESTRO_NIKOLA:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 4:
|
||||
{
|
||||
st.setCond(5, true);
|
||||
htmltext = "30621-01.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "30621-02.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case JURIS:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
if (memoState == 1)
|
||||
{
|
||||
htmltext = "30113-01.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
else if (memoState == 2)
|
||||
{
|
||||
htmltext = "30113-04.html";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case MAESTRO_NIKOLA:
|
||||
{
|
||||
if (memoState == 4)
|
||||
{
|
||||
qs.setMemoState(5);
|
||||
qs.setCond(5, true);
|
||||
htmltext = "30621-01.html";
|
||||
}
|
||||
else if (memoState == 5)
|
||||
{
|
||||
htmltext = "30621-02.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RESEARCHER_LORAIN:
|
||||
{
|
||||
if (memoState == 3)
|
||||
{
|
||||
qs.setMemoState(4);
|
||||
qs.setCond(4, true);
|
||||
htmltext = "30673-01.html";
|
||||
}
|
||||
else if (memoState == 4)
|
||||
{
|
||||
htmltext = "30673-02.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (qs.isCompleted())
|
||||
{
|
||||
if (npc.getId() == HEAD_BLACKSMITH_KUSTO)
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
@@ -24,7 +24,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Vain Conclusion (191)
|
||||
@@ -33,10 +32,10 @@ import com.l2jserver.gameserver.model.quest.State;
|
||||
public final class Q00191_VainConclusion extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int SHEGFIELD = 30068;
|
||||
private static final int HEAD_BLACKSMITH_KUSTO = 30512;
|
||||
private static final int RESEARCHER_LORAIN = 30673;
|
||||
private static final int DOROTHY_LOCKSMITH = 30970;
|
||||
private static final int SHEGFIELD = 30068;
|
||||
// Items
|
||||
private static final int REPAIRED_METALLOGRAPH = 10371;
|
||||
// Misc
|
||||
@@ -54,15 +53,15 @@ public final class Q00191_VainConclusion extends Quest
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if (st == null)
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "30068-02.html":
|
||||
case "30970-03.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
@@ -70,43 +69,54 @@ public final class Q00191_VainConclusion extends Quest
|
||||
}
|
||||
case "30970-04.htm":
|
||||
{
|
||||
if (st.isCreated())
|
||||
if (qs.isCreated())
|
||||
{
|
||||
st.startQuest();
|
||||
st.giveItems(REPAIRED_METALLOGRAPH, 1);
|
||||
qs.startQuest();
|
||||
qs.setMemoState(1);
|
||||
giveItems(player, REPAIRED_METALLOGRAPH, 1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30512-02.html":
|
||||
case "30068-02.html":
|
||||
{
|
||||
if (st.isCond(4))
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
st.giveAdena(117327, true);
|
||||
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
|
||||
{
|
||||
st.addExpAndSp(309467, 20614);
|
||||
}
|
||||
st.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30673-02.html":
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
st.takeItems(REPAIRED_METALLOGRAPH, -1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30068-03.html":
|
||||
{
|
||||
if (st.isCond(2))
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
st.setCond(3, true);
|
||||
qs.setMemoState(3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30512-02.html":
|
||||
{
|
||||
if (qs.isMemoState(4))
|
||||
{
|
||||
giveAdena(player, 117327, true);
|
||||
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
|
||||
{
|
||||
addExpAndSp(player, 309467, 20614);
|
||||
}
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30673-02.html":
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
qs.setMemoState(2);
|
||||
qs.setCond(2, true);
|
||||
takeItems(player, REPAIRED_METALLOGRAPH, -1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
@@ -118,96 +128,92 @@ public final class Q00191_VainConclusion extends Quest
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
if (qs.isCreated())
|
||||
{
|
||||
return htmltext;
|
||||
if (npc.getId() == DOROTHY_LOCKSMITH)
|
||||
{
|
||||
final QuestState q188 = player.getQuestState(Q00188_SealRemoval.class.getSimpleName());
|
||||
if ((q188 != null) && q188.isCompleted())
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30970-01.htm" : "30970-02.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (npc.getId())
|
||||
else if (qs.isStarted())
|
||||
{
|
||||
case DOROTHY_LOCKSMITH:
|
||||
switch (npc.getId())
|
||||
{
|
||||
switch (st.getState())
|
||||
case DOROTHY_LOCKSMITH:
|
||||
{
|
||||
case State.CREATED:
|
||||
if (qs.getMemoState() >= 1)
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00188_SealRemoval.class.getName());
|
||||
if ((qs != null) && qs.isCompleted())
|
||||
htmltext = "30970-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SHEGFIELD:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30970-01.htm" : "30970-02.htm";
|
||||
htmltext = "30068-01.html";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.getCond() >= 1)
|
||||
case 3:
|
||||
{
|
||||
htmltext = "30970-05.html";
|
||||
htmltext = "30068-04.html";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HEAD_BLACKSMITH_KUSTO:
|
||||
{
|
||||
if (st.isCond(4))
|
||||
case HEAD_BLACKSMITH_KUSTO:
|
||||
{
|
||||
htmltext = "30512-01.html";
|
||||
if (qs.isMemoState(4))
|
||||
{
|
||||
htmltext = "30512-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RESEARCHER_LORAIN:
|
||||
{
|
||||
switch (st.getCond())
|
||||
case RESEARCHER_LORAIN:
|
||||
{
|
||||
case 1:
|
||||
switch (qs.getCond())
|
||||
{
|
||||
htmltext = "30673-01.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "30673-03.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
st.setCond(4, true);
|
||||
htmltext = "30673-04.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "30673-05.html";
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
htmltext = "30673-01.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "30673-03.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
qs.setMemoState(4);
|
||||
qs.setCond(4, true);
|
||||
htmltext = "30673-04.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "30673-05.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SHEGFIELD:
|
||||
}
|
||||
else if (qs.isCompleted())
|
||||
{
|
||||
if (npc.getId() == DOROTHY_LOCKSMITH)
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
htmltext = "30068-01.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "30068-04.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
5
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-01.html
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-01.html
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>High Priestess Levian:<br>
|
||||
The followers of Einhasad will always be subject to trials. Now is no different, as the people of Gludio are being confronted by evil itself.<br>
|
||||
Lizardmen are reptiles. They look somewhat like dragons. They are just the lackeys of Shilen. The true evil we must confront is <font color="LEVEL">evil spirit Bifrons</font>, who is secretly controlling the actions of the lizardmen. Please help us deal with him.<br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30037-02.html">"I will help."</a>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-02.html
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-02.html
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>High Priestess Levian:<br>
|
||||
From all accounts it seems that the lizardmen worship Bifrons as a god. I would not be surprised to discover that he was being controlled by an even higher being.<br>
|
||||
I sense a great evil on the <font color="LEVEL">south shore of Gludio</font>. You will not be able to deal with this menace alone, you must bring your trusted comrades with you.<br>
|
||||
You must kill the evil spirit and find a weird looking chest. Inside this chest you will find the <font color="LEVEL">mark of darkness</font>. Bring it to me. Then, together, with the power of the goddess, we will destroy that blasphemous object.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-03.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-03.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>High Priestess Levian:<br>
|
||||
The evil spirit can be found on the <font color="LEVEL">south shore of Gludio</font>. You must not confront <font color="LEVEL">Bifrons</font> alone. Take comrades with you.<br>
|
||||
After slaying the evil spirit, find the weird looking chest and bring me the <font color="LEVEL">mark of darkness</font> that is contained within. Then we will destroy that blasphemous object once and for all.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-04.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-04.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>High Priestess Levian:<br>
|
||||
Ah, it is a pleasure to see you once again in bosom of the goddess. Now I must prepare for the ritual to destroy this evil object. I have let the guards know of your noble deeds in service to the temple. <font color="LEVEL">Guard Weisz</font> wishes to meet with you. You should go and see him right away.<br>
|
||||
And remember, never let your guard down, even for a moment. May the divine protection of the goddess be with you as you fight for justice...<br>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-05.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30037-05.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>High Priestess Levian:<br>
|
||||
The guards have been apprised of your noble service to the temple. You should go and meet <font color="LEVEL">Guard Weisz</font> right away. May the blessing of Einhasad be with you...
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-01.html
vendored
Normal file
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-01.html
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Priest Adonius:<br>
|
||||
Were you sent by the guards? Oh, thank heaven you've arrived! We are desperately in need of your help!<br>
|
||||
First, I suppose I should tell you of the horrible event of three days ago. Priestess Agnes was leading a group of the faithful of our congregation back home from a pilgrimage to the Grand Temple in Giran when they were attacked by the dreaded Langk lizardmen. They were all slaughtered mercilessly, in the most gruesome fashion!<br>
|
||||
Now I can think of nothing but recovering the remains of our faithful and giving them a proper burial. We must at least recover the relics left by Agnes.<br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30375-02.html">"I will recover the relics."</a>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-02.html
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-02.html
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Priest Adonius:<br>
|
||||
Oh, thank you! The site of the massacre is on the south shore of Gludio. Please find and return the remains of Priestess Agnes so that we can give her a proper burial.<br>
|
||||
Please, bring us her <font color="LEVEL">crucifix</font> and <font color="LEVEL">rosary</font>.<br>
|
||||
Now please be off, time is of the essence...
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-03.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-03.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Priest Adonius:<br>
|
||||
Please recover the <font color="LEVEL">crucifix</font> and <font color="LEVEL">rosary</font> that belonged to Priestess Agnes. This is essential if we are to give her a proper funeral.<br>
|
||||
You will find her remains on the south shore of Gludio. You should leave for there immediately! May the light of Einhasad guide your path...
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-04.html
vendored
Normal file
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-04.html
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Priest Adonius:<br>
|
||||
You have performed a noble deed for our temple. Now Agnes can have a funeral befitting a person of her stature.<br>
|
||||
It is all so very tragic! I know that all that happens is the will of Einhasad, still, when something so senseless happens it makes a person wonder...<br>
|
||||
Well, we must meditate upon the light and seek the truth of the Goddess.<br>
|
||||
Our struggle is bound to continue. Our temple could definitely use the services of a powerful defender such as yourself. Please go and meet with <font color="LEVEL">High Priestess Levian</font>.
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-05.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-05.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Priest Adonius:<br>
|
||||
<font color="LEVEL">High Priestess Levian</font> is expecting you. She will tell you what you need to do.
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-06.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30375-06.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Priest Adonius:<br>
|
||||
Oh Divine One, please give this fine warrior the strength and courage to conquer the evil ones...
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-01.htm
vendored
Normal file
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-01.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
Do you plan to follow the northern road on your voyage to Oren? If so, you must beware of the lizardmen. They are becoming more brazen in their atrocities.<br>
|
||||
Those filthy reptiles! It wasn't enough to burn farms and slaughter livestock, now they are looting in broad daylight! Something must be done about this outrage!<br>
|
||||
Unfortunately, our guards have their hands full with the Turek orcs and Ol Mahums... We have come to the conclusion that we have no choice but to rely on mercenaries to save us from these lizardmen. If you know any skilled ones, send them to me.<br>
|
||||
(This quest can only be undertaken by a character of level 17 or higher.)
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-02.htm
vendored
Normal file
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-02.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
Do you plan to follow the northern road on your voyage to Oren? If so, you must beware of the lizardmen. They are becoming more brazen with their atrocities.<br>
|
||||
Those filthy reptiles! It wasn't enough to burn farms and slaughter livestock. Now they are looting in broad daylight! Something must be done about this outrage!<br>
|
||||
Unfortunately, our guards have their hands full with the Turek orcs and the Ol Mahums... We are going to have to rely on mercenaries to save us from these lizardmen. If you know any skilled ones, please send them to me!<br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30385-03.htm">"I will destroy the lizardmen!"</a>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-03.htm
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-03.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
Yes, I suppose you could be helpful.<br>
|
||||
Recently, lizardmen have been attacking the cargo wagons of the Aden Trade Guild. They slaughter the traders and guards and plunder the cargo. The guild has filed a formal request for assistance in dealing with the lizardmen. This task falls to you.<br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30385-04.html">"Tell me more about this task."</a>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-04.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-04.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
You must recover <font color="LEVEL">30 Cargo Boxes belonging to the trade guild</font> from the <font color="LEVEL">felim lizardmen</font>. They can be found at the Fellmere Harvesting Grounds between the Ruins of Agony and Windy Hill. Go and destroy those filthy reptiles and restore peace to the village!
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-05.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-05.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
Please hurry! The trade guild is getting impatient. Their cargo wagons are still coming under attack from <font color="LEVEL">felim lizardmen</font> at the Fellmere Harvesting Grounds. Go and recover <font color="LEVEL">30 Cargo Boxes belonging to the trade guild</font>.
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-06.html
vendored
Normal file
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-06.html
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
Ah, you've recovered all of the guild's Cargo Boxes! Good job! I will return them to the Aden Trade Guild immediately. We really appreciate your hard work.<br>
|
||||
However, despite the efforts of noble mercenaries like yourself, the lizardmen continue their despicable actions. The day before yesterday Langk lizardmen attacked and killed pilgrims from the temple of Einhasad! The temple has asked the Guards to recover the remains of the pilgrims. Would you care to join us on this mission?<br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30385-07.html">"I will join the mission."</a><br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30385-08.html">"No."</a>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-07.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-07.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
You must speak with <font color="LEVEL">Priest Adonius</font> of the Einhasad Temple. He knows the whole story.
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-08.html
vendored
Normal file
6
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-08.html
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
Oh well, too bad. I'll have to find someone else to help the temple.<br>
|
||||
Anyway, the guild is still suffering attacks from the felim lizardmen. Once again we must send a mercenary to recover stolen cargo from them. Are you interested?<br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30385-09.html">"I'll do it."</a><br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30385-10.html">Quit</a>
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-09.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-09.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
First, please accept this token of our appreciation for the work you've done so far...<br>
|
||||
The task is the same as before. You must kill <font color="LEVEL">felim lizardmen</font> at the Fellmere Harvesting Grounds between the Ruins of Agony and Windy Hill and recover <font color="LEVEL">30 Cargo Boxes belonging to the trade guild</font>. Thank you for once again helping our cause.
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-10.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-10.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
Very well. Please accept this token of appreciation for all of your hard work from the people of Gludio.
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-11.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-11.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
<font color="LEVEL">Priest Adonius</font> awaits! Leave for the temple of Einhasad immediately!
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-12.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-12.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
The people of Gludio put their faith in the priests of Einhasad. The murder of the pilgrims by Langk lizardmen will not be forgotten!
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-13.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30385-13.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Guard Weisz:<br>
|
||||
High Priestess Levian has spoken about you. She says that you stabbed to death the ringleader of the rampaging lizardmen, is that true? Very impressive! Please accept this gift on behalf of the people of Gludio! Perhaps one day, with the help of noble warriors like you, lizardmen will be wiped from the face of the earth!
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30989-01.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30989-01.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Chest of Bifrons:<br>
|
||||
The chest emits a sinister aura.<br>
|
||||
<a action="bypass -h Quest Q00340_SubjugationOfLizardmen 30989-02.html">Open the chest.</a>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30989-02.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30989-02.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Chest of Bifrons:<br>
|
||||
Inside the chest is a crudely-cut statue made of black rock.
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30989-03.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/30989-03.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Chest of Bifrons:<br>
|
||||
The chest is empty.
|
||||
</body></html>
|
345
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/Q00340_SubjugationOfLizardmen.java
vendored
Normal file
345
trunk/dist/game/data/scripts/quests/Q00340_SubjugationOfLizardmen/Q00340_SubjugationOfLizardmen.java
vendored
Normal file
@@ -0,0 +1,345 @@
|
||||
/*
|
||||
* 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 quests.Q00340_SubjugationOfLizardmen;
|
||||
|
||||
import com.l2jserver.gameserver.enums.QuestSound;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Subjugation Of Lizardmen (340)
|
||||
* @author ivantotov
|
||||
*/
|
||||
public final class Q00340_SubjugationOfLizardmen extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int HIGH_PRIESTESS_LEVIAN = 30037;
|
||||
private static final int PRIEST_ADONIUS = 30375;
|
||||
private static final int GUARD_WEISZ = 30385;
|
||||
private static final int CHEST_OF_BIFRONS = 30989;
|
||||
// Items
|
||||
private static final int TRADE_CARGO = 4255;
|
||||
private static final int AGNESS_HOLY_SYMBOL = 4256;
|
||||
private static final int AGNESS_ROSARY = 4257;
|
||||
private static final int SINISTER_TOTEM = 4258;
|
||||
// Monster
|
||||
private static final int FELIM_LIZARDMAN = 20008;
|
||||
private static final int FELIM_LIZARDMAN_SCOUT = 20010;
|
||||
private static final int FELIM_LIZARDMAN_WARRIOR = 20014;
|
||||
private static final int LANGK_LIZARDMAN_WARRIOR = 20024;
|
||||
private static final int LANGK_LIZARDMAN_SCOUT = 20027;
|
||||
private static final int LANGK_LIZARDMAN = 20030;
|
||||
// Raid Boss
|
||||
private static final int SERPENT_DEMON_BIFRONS = 25146;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 17;
|
||||
|
||||
public Q00340_SubjugationOfLizardmen()
|
||||
{
|
||||
super(340, Q00340_SubjugationOfLizardmen.class.getSimpleName(), "Subjugation Of Lizardmen");
|
||||
addStartNpc(GUARD_WEISZ);
|
||||
addTalkId(GUARD_WEISZ, HIGH_PRIESTESS_LEVIAN, PRIEST_ADONIUS, CHEST_OF_BIFRONS);
|
||||
addKillId(FELIM_LIZARDMAN, FELIM_LIZARDMAN_SCOUT, FELIM_LIZARDMAN_WARRIOR, LANGK_LIZARDMAN_WARRIOR, LANGK_LIZARDMAN_SCOUT, LANGK_LIZARDMAN, SERPENT_DEMON_BIFRONS);
|
||||
registerQuestItems(TRADE_CARGO, AGNESS_HOLY_SYMBOL, AGNESS_ROSARY, SINISTER_TOTEM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "30385-03.htm":
|
||||
{
|
||||
if (qs.isCreated())
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setMemoState(1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30385-04.html":
|
||||
case "30385-08.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30385-07.html":
|
||||
{
|
||||
takeItems(player, TRADE_CARGO, -1);
|
||||
qs.setMemoState(2);
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30385-09.html":
|
||||
{
|
||||
if (getQuestItemsCount(player, TRADE_CARGO) >= 30)
|
||||
{
|
||||
giveAdena(player, 4090, true);
|
||||
takeItems(player, TRADE_CARGO, -1);
|
||||
qs.setMemoState(1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30385-10.html":
|
||||
{
|
||||
if (getQuestItemsCount(player, TRADE_CARGO) >= 30)
|
||||
{
|
||||
giveAdena(player, 4090, true);
|
||||
takeItems(player, TRADE_CARGO, -1);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30037-02.html":
|
||||
{
|
||||
qs.setMemoState(5);
|
||||
qs.setCond(5, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30375-02.html":
|
||||
{
|
||||
qs.setMemoState(3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30989-02.html":
|
||||
{
|
||||
if (qs.isMemoState(5))
|
||||
{
|
||||
qs.setMemoState(6);
|
||||
qs.setCond(6, true);
|
||||
giveItems(player, SINISTER_TOTEM, 1);
|
||||
htmltext = event;
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "30989-03.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, killer, true))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case FELIM_LIZARDMAN:
|
||||
case FELIM_LIZARDMAN_SCOUT:
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
giveItemRandomly(killer, npc, TRADE_CARGO, 1, 30, 0.63, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FELIM_LIZARDMAN_WARRIOR:
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
giveItemRandomly(killer, npc, TRADE_CARGO, 1, 30, 0.68, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case LANGK_LIZARDMAN_WARRIOR:
|
||||
{
|
||||
if (qs.isMemoState(3))
|
||||
{
|
||||
if (!hasQuestItems(killer, AGNESS_HOLY_SYMBOL) && (getRandom(100) <= 19))
|
||||
{
|
||||
giveItems(killer, AGNESS_HOLY_SYMBOL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
else if (hasQuestItems(killer, AGNESS_HOLY_SYMBOL) && !hasQuestItems(killer, AGNESS_ROSARY) && (getRandom(100) <= 18))
|
||||
{
|
||||
giveItems(killer, AGNESS_ROSARY, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case LANGK_LIZARDMAN_SCOUT:
|
||||
case LANGK_LIZARDMAN:
|
||||
{
|
||||
if (qs.isMemoState(3))
|
||||
{
|
||||
if (!hasQuestItems(killer, AGNESS_HOLY_SYMBOL) && (getRandom(100) <= 18))
|
||||
{
|
||||
giveItems(killer, AGNESS_HOLY_SYMBOL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
else if (hasQuestItems(killer, AGNESS_HOLY_SYMBOL) && !hasQuestItems(killer, AGNESS_ROSARY) && (getRandom(100) <= 18))
|
||||
{
|
||||
giveItems(killer, AGNESS_ROSARY, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SERPENT_DEMON_BIFRONS:
|
||||
{
|
||||
addSpawn(CHEST_OF_BIFRONS, npc, true, 30000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
final int memoState = qs.getMemoState();
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
if (qs.isCreated())
|
||||
{
|
||||
if (npc.getId() == GUARD_WEISZ)
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30385-02.htm" : "30385-01.htm";
|
||||
}
|
||||
}
|
||||
else if (qs.isStarted())
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case GUARD_WEISZ:
|
||||
{
|
||||
if (memoState == 1)
|
||||
{
|
||||
if (getQuestItemsCount(player, TRADE_CARGO) < 30)
|
||||
{
|
||||
htmltext = "30385-05.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "30385-06.html";
|
||||
}
|
||||
}
|
||||
else if (memoState == 2)
|
||||
{
|
||||
htmltext = "30385-11.html";
|
||||
}
|
||||
else if ((memoState >= 3) && (memoState < 7))
|
||||
{
|
||||
htmltext = "30385-12.html";
|
||||
}
|
||||
else if (memoState == 7)
|
||||
{
|
||||
giveAdena(player, 14700, true);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = "30385-13.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HIGH_PRIESTESS_LEVIAN:
|
||||
{
|
||||
if (memoState == 4)
|
||||
{
|
||||
htmltext = "30037-01.html";
|
||||
}
|
||||
else if (memoState == 5)
|
||||
{
|
||||
htmltext = "30037-03.html";
|
||||
}
|
||||
else if (memoState == 6)
|
||||
{
|
||||
takeItems(player, SINISTER_TOTEM, 1);
|
||||
qs.setMemoState(7);
|
||||
qs.setCond(7, true);
|
||||
htmltext = "30037-04.html";
|
||||
}
|
||||
else if (memoState == 7)
|
||||
{
|
||||
htmltext = "30037-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PRIEST_ADONIUS:
|
||||
{
|
||||
if (memoState == 2)
|
||||
{
|
||||
htmltext = "30375-01.html";
|
||||
}
|
||||
else if (memoState == 3)
|
||||
{
|
||||
if (hasQuestItems(player, AGNESS_HOLY_SYMBOL, AGNESS_ROSARY))
|
||||
{
|
||||
takeItems(player, AGNESS_HOLY_SYMBOL, 1);
|
||||
takeItems(player, AGNESS_ROSARY, 1);
|
||||
qs.setMemoState(4);
|
||||
qs.setCond(4, true);
|
||||
htmltext = "30375-04.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "30375-03.html";
|
||||
}
|
||||
}
|
||||
else if (memoState == 4)
|
||||
{
|
||||
htmltext = "30375-05.html";
|
||||
}
|
||||
else if (memoState >= 5)
|
||||
{
|
||||
htmltext = "30375-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CHEST_OF_BIFRONS:
|
||||
{
|
||||
if (memoState == 5)
|
||||
{
|
||||
htmltext = "30989-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (qs.isCompleted())
|
||||
{
|
||||
if (npc.getId() == GUARD_WEISZ)
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
@@ -248,4 +248,4 @@ public final class Q00457_LostAndFound extends Quest
|
||||
{
|
||||
((whisper) ? player : npc).sendPacket(new NpcSay(npc.getObjectId(), ((whisper) ? Say2.TELL : Say2.ALL), npc.getId(), stringId));
|
||||
}
|
||||
}
|
||||
}
|
@@ -284,4 +284,4 @@ public final class Q00625_TheFinestIngredientsPart2 extends Quest
|
||||
{
|
||||
return SpawnTable.getInstance().getFirstSpawn(ICICLE_EMPEROR_BUMBALUMP) != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -134,6 +134,7 @@ import quests.Q00328_SenseForBusiness.Q00328_SenseForBusiness;
|
||||
import quests.Q00329_CuriosityOfADwarf.Q00329_CuriosityOfADwarf;
|
||||
import quests.Q00331_ArrowOfVengeance.Q00331_ArrowOfVengeance;
|
||||
import quests.Q00338_AlligatorHunter.Q00338_AlligatorHunter;
|
||||
import quests.Q00340_SubjugationOfLizardmen.Q00340_SubjugationOfLizardmen;
|
||||
import quests.Q00341_HuntingForWildBeasts.Q00341_HuntingForWildBeasts;
|
||||
import quests.Q00344_1000YearsTheEndOfLamentation.Q00344_1000YearsTheEndOfLamentation;
|
||||
import quests.Q00345_MethodToRaiseTheDead.Q00345_MethodToRaiseTheDead;
|
||||
@@ -425,6 +426,7 @@ public class QuestMasterHandler
|
||||
Q00329_CuriosityOfADwarf.class,
|
||||
Q00331_ArrowOfVengeance.class,
|
||||
Q00338_AlligatorHunter.class,
|
||||
Q00340_SubjugationOfLizardmen.class,
|
||||
Q00341_HuntingForWildBeasts.class,
|
||||
Q00344_1000YearsTheEndOfLamentation.class,
|
||||
Q00345_MethodToRaiseTheDead.class,
|
||||
|
Reference in New Issue
Block a user