Addition of quests 10355, 10356, 10373 and 10535.

Contributed by Sero.
This commit is contained in:
MobiusDevelopment 2020-10-10 00:09:59 +00:00
parent dd9611da9c
commit 6a0c709977
208 changed files with 5871 additions and 832 deletions

View File

@ -49,7 +49,6 @@
940 Hunter Guild Request - Atelia Fortress
10298 Wasteland Queen
10357 Altar of Blood that Awakens Destruction
10373 Exploring the Dimension - Sealing the Dimension
10396 Witch of Spores
10506 Diana's Request
10712 The Minstrel's Song, Part 1

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
You have completed the quest.<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
It's a fortunate thing that such a skilled adventurer as yourself has committed to making yourself available to the cause. Here is your mission.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Beloa:<br>
You need 30 of the Renants of the Rift item in order to seal the Dimensional Rift..<br>
Are you strong enough to collect 30 Remnant of the Rift for me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10373_ExploringTheDimensionSealingTheDimension 34227-04.htm">"Yes I'm."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
Not done yet.
</body></html>

View File

@ -0,0 +1,107 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10373_ExploringTheDimensionSealingTheDimension;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
/**
* @author Sero
*/
public class Q10373_ExploringTheDimensionSealingTheDimension extends Quest
{
private static final int BELOA = 34227;
private static final int RUNE_STONE = 39738;
private static final int COMMANDO_BELT = 47044;
private static final int REMNANT_OF_THE_RIFT = 46787;
private static final int ZODIAC_AGATHION = 45577;
private static final int MIN_LEVEL = 95;
public Q10373_ExploringTheDimensionSealingTheDimension()
{
super(10373);
addStartNpc(BELOA);
addTalkId(BELOA);
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
if (event.equals("34227-04.htm"))
{
qs.startQuest();
htmltext = event;
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (npc.getId() == BELOA)
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34227-05.htm";
break;
}
case State.STARTED:
{
if (getQuestItemsCount(player, REMNANT_OF_THE_RIFT) >= 30)
{
takeItems(player, REMNANT_OF_THE_RIFT, -1);
giveItems(player, COMMANDO_BELT, 1);
giveItems(player, ZODIAC_AGATHION, 1);
giveItems(player, RUNE_STONE, 1);
addExpAndSp(player, 12113489880L, 12113460);
qs.exitQuest(QuestType.ONE_TIME);
htmltext = "30756-09.html";
}
else
{
htmltext = "34227-05a.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
}
return htmltext;
}
}

View File

@ -283,6 +283,7 @@ import quests.Q10369_NoblesseSoulTesting.Q10369_NoblesseSoulTesting;
import quests.Q10370_MenacingTimes.Q10370_MenacingTimes;
import quests.Q10371_GraspThyPower.Q10371_GraspThyPower;
import quests.Q10372_PurgatoryVolvere.Q10372_PurgatoryVolvere;
import quests.Q10373_ExploringTheDimensionSealingTheDimension.Q10373_ExploringTheDimensionSealingTheDimension;
import quests.Q10374_ThatPlaceSuccubus.Q10374_ThatPlaceSuccubus;
import quests.Q10375_SuccubusDisciples.Q10375_SuccubusDisciples;
import quests.Q10376_BloodyGoodTime.Q10376_BloodyGoodTime;
@ -518,7 +519,6 @@ import quests.not_done.Q00929_SeekerRescue;
import quests.not_done.Q00938_TheFishermansOtherHobby;
import quests.not_done.Q10298_WastelandQueen;
import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction;
import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension;
import quests.not_done.Q10396_WitchOfSpores;
import quests.not_done.Q10506_DianasRequest;
import quests.not_done.Q10748_MysteriousSuggestion1;
@ -835,7 +835,7 @@ public class QuestMasterHandler
Q10370_MenacingTimes.class,
Q10371_GraspThyPower.class,
Q10372_PurgatoryVolvere.class,
Q10373_ExploringTheDimensionSealingTheDimension.class, // TODO: Not done.
Q10373_ExploringTheDimensionSealingTheDimension.class,
Q10374_ThatPlaceSuccubus.class,
Q10375_SuccubusDisciples.class,
Q10376_BloodyGoodTime.class,

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10373_ExploringTheDimensionSealingTheDimension extends Quest
{
private static final int START_NPC = 34227;
public Q10373_ExploringTheDimensionSealingTheDimension()
{
super(10373);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,4 +1,3 @@
504 Competition for the Bandit Stronghold
655 A Grand Plan for Taming Wild Beasts
667 How to Cover Shilen's Eyes
690 |Attack| Begin Alliance Base Defense - 1
@ -104,13 +103,9 @@
988 Adventure Guild's Special Request - Lv. 4
989 Adventure Guild's Special Request - Lv. 5
10298 Wasteland Queen
10355 Blacksmith's Soul-awakening Weapon - 1
10356 Blacksmith's Soul-awakening Weapon - 2
10373 Exploring the Dimension - Sealing the Dimension
10396 Witch of Spores
10423 Embryo Stronghold Ambush
10506 Diana's Request
10535 Blacksmith's Soul-awakening Weapon - 3
10712 The Minstrel's Song, Part 1
10717 The Minstrel's Song, Part 2
10720 The Minstrel's Song, Part 3

View File

@ -0,0 +1,3 @@
<html><body>Taboy:<br>
Hello now Go ahead and talk with <font color="LEVEL">Legendary Blacksmith Shadai</font> in <font color="LEVEL">Heine</font>!<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You have made a great work now you go to <font color="LEVEL">Nightmare Kamaloka</font> and defeat 5 of <font color="LEVEL">Dark Rider</font> then go to <font color="LEVEL">Command Post</font> and defeat 5 of <font color="LEVEL"> Burnstein (Command Post)</font><br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You have made a great work now you go to <font color="LEVEL"> Enchanted Valley</font> and defeat 3000 of them.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You need to defeat 5 of <font color="LEVEL">Dark Rider</font> then go to <font color="LEVEL">Command Post</font> and defeat 5 of <font color="LEVEL"> Burnstein (Command Post)</font> and bring me 5 <font color="LEVEL"> Shadow ingot</font>.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Congratulations you have complate the challenge now you're able to take the next challenge <font color="LEVEL"> Blacksmiths Soul part 2 </font> and bring me 5 Shadow ingot.<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
Hello now go ahead and talk with <font color="LEVEL">Maestro Ishuma</font> at <font color="LEVEL">Wharf of Gludio Airships</font>!<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
Hello now Go ahead and talk with <font color="LEVEL">Blacksmith of Mammon</font> at <font color="LEVEL">Aden</font> or <font color="LEVEL">Giran</font>!<br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Neti:<br>
This will be long way !<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10355_BlacksmithsSoul1 34095-01.htm">"Okay."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Neti:<br>
Great you choose to take the challenge Go ahead and talk with <font color="LEVEL">Head Blacksmith Tapoy</font> in <font color="LEVEL">Gludin </font>!<br>
</body></html>

View File

@ -0,0 +1,320 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10355_BlacksmithsSoul1;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* @author Sero
*/
public class Q10355_BlacksmithsSoul1 extends Quest
{
// NPC
private static final int NETI = 34095;
private static final int TAPOY = 30499;
private static final int SHADAI = 32347;
private static final int ISHUMA = 32615;
private static final int MERCHANT_OF_MAMMON = 31126;
// Items
private static final int SHADOW_INGOT = 46395;
// Monsters
private static final int BURNSTEIN = 23587;
private static final int DARK_RIDER = 26102;
private static final int[] NYMPH_MONSTERS =
{
23569, // Nymph Lily
23583, // Nymph Lily big
23573, // Nymph Cosmos
23567, // Nymph Rose
23578, // Nymph Guardian
23570, // Nymph Tulip
19600, // Flower Bud
23581, // Apherus
};
// Misc
private static final int MIN_LEVEL = 99;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10355_BlacksmithsSoul1()
{
super(10355);
addStartNpc(NETI);
addTalkId(NETI, TAPOY, SHADAI, ISHUMA, MERCHANT_OF_MAMMON);
registerQuestItems(SHADOW_INGOT);
addKillId(DARK_RIDER);
addKillId(BURNSTEIN);
addKillId(NYMPH_MONSTERS);
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
if (event.equals("34095-01.htm"))
{
qs.startQuest();
htmltext = event;
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case NETI:
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34095-00.htm";
break;
}
case State.STARTED:
{
htmltext = "30756-09.html";
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case TAPOY:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "30499-00.htm";
qs.setCond(2);
}
else
{
htmltext = "30499-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case SHADAI:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(2))
{
htmltext = "32347-00.htm";
qs.setCond(3);
}
else
{
htmltext = "32347-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case ISHUMA:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(3))
{
htmltext = "32615-00.htm";
qs.setCond(4);
}
else
{
htmltext = "32615-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case MERCHANT_OF_MAMMON:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(4))
{
htmltext = "31126-00.htm";
qs.setCond(5);
}
else if (qs.isCond(5))
{
htmltext = "31126-00.htm";
}
else if (qs.isCond(6) && (getQuestItemsCount(player, SHADOW_INGOT) >= 5))
{
takeItems(player, SHADOW_INGOT, 5);
htmltext = "31126-01.htm";
qs.setCond(7);
}
else if (qs.isCond(8))
{
htmltext = "31126-03.htm";
addExpAndSp(player, 26918866543L, 24226979);
qs.exitQuest(false, true);
}
else
{
htmltext = "31126-02.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
}
return htmltext;
}
@Override
public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(5))
{
final int killedCount = qs.getInt(Integer.toString(npc.getId()));
if (killedCount < 5)
{
qs.set(Integer.toString(npc.getId()), killedCount + 1);
}
final int killedRessurected = qs.getInt(Integer.toString(DARK_RIDER));
final int killedLunatic = qs.getInt(Integer.toString(BURNSTEIN));
if ((killedLunatic == 5) && (killedRessurected == 5))
{
qs.setCond(6, true);
}
}
else if ((qs != null) && qs.isCond(7))
{
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 3000)
{
qs.setCond(8, true);
}
else
{
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
executeForEachPlayer(player, npc, isSummon, true, false);
return super.onKill(npc, player, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(5))
{
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
npcLogList.add(new NpcLogListHolder(DARK_RIDER, false, qs.getInt(Integer.toString(DARK_RIDER))));
npcLogList.add(new NpcLogListHolder(NpcStringId.DEFEAT_COMMANDER_BURNSTEIN_2, qs.getInt(Integer.toString(BURNSTEIN))));
return npcLogList;
}
else if ((qs != null) && qs.isCond(7))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTERS_IN_THE_ENCHANTED_VALLEY_2, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -0,0 +1,4 @@
<html><body>Mammon:<br>
Now the next part of your challenge is to bring me <font color="LEVEL">Improved Shadow Ingot</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 31126-01.htm">"Okay Let's go."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
When you have <font color="LEVEL">Improved Shadow Ingot</font> come back to me.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You need to complete Blacksmiths Soul - Part 1 first.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Mammon:<br>
Do you have the <font color="LEVEL">Improved Shadow Ingot</font>?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 31126-04.htm">"Yes take it."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Do you have the <font color="LEVEL">Improved Shadow Ingot</font>?
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Good job now bring me a Shadow weapon that you don't want so I can make my research.
</body></html>

View File

@ -0,0 +1,13 @@
<html><body>Mammon:<br>
Choose the weapon that you don't need to I can make my research on it "Warning! The weapon will not be returned to you" <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_1">"Shadow Shaper."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_2">"Shadow Cutter."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_3">"Shadow Slasher."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_4">"Shadow Fighter."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_5">"Shadow Stormer."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_6">"Shadow Thrower."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_7">"Shadow Shooter."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_8">"Shadow Buster."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_9">"Shadow Retributer."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_10">"Shadow Dual Sword."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Great work! Now take this weapon, upgrade it to +7 and bring it back to me.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Mammon:<br>
Nice now hand me the weapon let me do my research.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 RESEARCH_Shadow_WEAPON7">"Take it."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
It's hard work but please enchant my the weapon to +7.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You have done good so far now you can take your reward and be ready for the next challenge. Have a great day.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
I agreed to take a part in the research.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Ishuma:<br>
I agreed to take a part in the research.
</body></html>

View File

@ -0,0 +1,371 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10356_BlacksmithsSoul2;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import quests.Q10355_BlacksmithsSoul1.Q10355_BlacksmithsSoul1;
/**
* @author Sero
*/
public class Q10356_BlacksmithsSoul2 extends Quest
{
// NPCs
private static final int BLACKSMITH_MAMMON = 31126;
private static final int SHADAI = 32347;
private static final int ISHUMA = 32615;
// Items
private static final int Improved_SHADOW_Ingot = 47896;
private static final int RESEARCH_SHADOW_WEAPON = 47890;
private static final int SHADOW_WEAPON_1 = 46317;
private static final int SHADOW_WEAPON_2 = 46318;
private static final int SHADOW_WEAPON_3 = 46319;
private static final int SHADOW_WEAPON_4 = 46320;
private static final int SHADOW_WEAPON_5 = 46321;
private static final int SHADOW_WEAPON_6 = 46322;
private static final int SHADOW_WEAPON_7 = 46323;
private static final int SHADOW_WEAPON_8 = 46324;
private static final int SHADOW_WEAPON_9 = 46325;
private static final int SHADOW_WEAPON_10 = 46326;
private static final int SHADOW_CRYSTAL = 47899;
private static final int MAIN_LEVEL = 99;
public Q10356_BlacksmithsSoul2()
{
super(10356);
addStartNpc(BLACKSMITH_MAMMON);
addTalkId(BLACKSMITH_MAMMON, SHADAI, ISHUMA);
addCondCompletedQuest(Q10355_BlacksmithsSoul1.class.getSimpleName(), "31126-02.htm");
addCondMinLevel(MAIN_LEVEL, getNoQuestMsg(null));
registerQuestItems(Improved_SHADOW_Ingot, SHADOW_WEAPON_1, SHADOW_WEAPON_2, SHADOW_WEAPON_3, SHADOW_WEAPON_4, SHADOW_WEAPON_5, SHADOW_WEAPON_6, SHADOW_WEAPON_7, SHADOW_WEAPON_8, SHADOW_WEAPON_9, SHADOW_WEAPON_10, RESEARCH_SHADOW_WEAPON);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "31126-01.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31126-04.htm":
{
if (hasQuestItems(player, Improved_SHADOW_Ingot))
{
takeItems(player, Improved_SHADOW_Ingot, 1);
qs.setCond(2);
htmltext = event;
}
else
{
htmltext = "31126-03r.htm";
}
break;
}
case "SHADOW_WEAPON_1":
{
if (hasQuestItems(player, SHADOW_WEAPON_1))
{
takeItems(player, SHADOW_WEAPON_1, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_2":
{
if (hasQuestItems(player, SHADOW_WEAPON_2))
{
takeItems(player, SHADOW_WEAPON_2, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_3":
{
if (hasQuestItems(player, SHADOW_WEAPON_3))
{
takeItems(player, SHADOW_WEAPON_3, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_4":
{
if (hasQuestItems(player, SHADOW_WEAPON_4))
{
takeItems(player, SHADOW_WEAPON_4, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_5":
{
if (hasQuestItems(player, SHADOW_WEAPON_5))
{
takeItems(player, SHADOW_WEAPON_5, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_6":
{
if (hasQuestItems(player, SHADOW_WEAPON_6))
{
takeItems(player, SHADOW_WEAPON_6, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
htmltext = event;
}
break;
}
case "SHADOW_WEAPON_7":
{
if (hasQuestItems(player, SHADOW_WEAPON_7))
{
takeItems(player, SHADOW_WEAPON_7, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_8":
{
if (hasQuestItems(player, SHADOW_WEAPON_8))
{
takeItems(player, SHADOW_WEAPON_8, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_9":
{
if (hasQuestItems(player, SHADOW_WEAPON_9))
{
takeItems(player, SHADOW_WEAPON_9, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_10":
{
if (hasQuestItems(player, SHADOW_WEAPON_10))
{
takeItems(player, SHADOW_WEAPON_10, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "RESEARCH_SHADOW_WEAPON7":
{
if (hasQuestItems(player, RESEARCH_SHADOW_WEAPON) && (getEnchantLevel(player, RESEARCH_SHADOW_WEAPON) >= 7))
{
takeItems(player, RESEARCH_SHADOW_WEAPON, -1);
giveItems(player, SHADOW_CRYSTAL, 2);
qs.setCond(5);
}
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case BLACKSMITH_MAMMON:
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31126-00.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "31126-03.htm";
}
else if (qs.isCond(2))
{
htmltext = "31126-05.htm";
}
else if (qs.isCond(3))
{
htmltext = "31126-08.htm";
qs.setCond(4);
}
else if (qs.isCond(4))
{
if (hasQuestItems(player, RESEARCH_SHADOW_WEAPON))
{
htmltext = "31126-07.htm";
}
else
{
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
}
}
else if (qs.isCond(6))
{
htmltext = "31126-09.htm";
addExpAndSp(player, 32958000000L, 29662200);
qs.exitQuest(false, true);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
case SHADAI:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(5) && hasQuestItems(player, SHADOW_CRYSTAL))
{
htmltext = "32347-00.htm";
takeItems(player, SHADOW_CRYSTAL, -1);
qs.setCond(6);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
case ISHUMA:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(5) && hasQuestItems(player, SHADOW_CRYSTAL))
{
htmltext = "32615-00.htm";
takeItems(player, SHADOW_CRYSTAL, -1);
qs.setCond(6);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
executeForEachPlayer(player, npc, isSummon, true, false);
return super.onKill(npc, player, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(2))
{
if (hasAtLeastOneQuestItem(player, SHADOW_WEAPON_1, SHADOW_WEAPON_2, SHADOW_WEAPON_3, SHADOW_WEAPON_4, SHADOW_WEAPON_5, SHADOW_WEAPON_6, SHADOW_WEAPON_7, SHADOW_WEAPON_8, SHADOW_WEAPON_9, SHADOW_WEAPON_10))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.BRING_SHADOW_WEAPON, 1));
return holder;
}
}
if ((qs != null) && qs.isCond(4))
{
if ((getEnchantLevel(player, RESEARCH_SHADOW_WEAPON) >= 7))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.ENCHANT_THE_RESEARCH_WEAPON, 1));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
You have completed the quest.<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
It's a fortunate thing that such a skilled adventurer as yourself has committed to making yourself available to the cause. Here is your mission.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Beloa:<br>
You need 30 of the Renants of the Rift item in order to seal the Dimensional Rift..<br>
Are you strong enough to collect 30 Remnant of the Rift for me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10373_ExploringTheDimensionSealingTheDimension 34227-04.htm">"Yes I'm."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
Not done yet.
</body></html>

View File

@ -0,0 +1,107 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10373_ExploringTheDimensionSealingTheDimension;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
/**
* @author Sero
*/
public class Q10373_ExploringTheDimensionSealingTheDimension extends Quest
{
private static final int BELOA = 34227;
private static final int RUNE_STONE = 39738;
private static final int COMMANDO_BELT = 47044;
private static final int REMNANT_OF_THE_RIFT = 46787;
private static final int ZODIAC_AGATHION = 45577;
private static final int MIN_LEVEL = 95;
public Q10373_ExploringTheDimensionSealingTheDimension()
{
super(10373);
addStartNpc(BELOA);
addTalkId(BELOA);
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
if (event.equals("34227-04.htm"))
{
qs.startQuest();
htmltext = event;
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (npc.getId() == BELOA)
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34227-05.htm";
break;
}
case State.STARTED:
{
if (getQuestItemsCount(player, REMNANT_OF_THE_RIFT) >= 30)
{
takeItems(player, REMNANT_OF_THE_RIFT, -1);
giveItems(player, COMMANDO_BELT, 1);
giveItems(player, ZODIAC_AGATHION, 1);
giveItems(player, RUNE_STONE, 1);
addExpAndSp(player, 12113489880L, 12113460);
qs.exitQuest(QuestType.ONE_TIME);
htmltext = "30756-09.html";
}
else
{
htmltext = "34227-05a.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
}
return htmltext;
}
}

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
This the <font color="LEVEL">Last challenge</font> Defeat monster in Giant's Cave and Hellbound collect Ore with Giant's Energy and Crystal with Magical Power Crystal with Magical Power then take them to Shadai and Ishuma.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Congratulations you have completed the challenge you deserve your reward warrior!
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
Thank you for your hard work.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Ishuma:<br>
Thank you for your hard work.
</body></html>

View File

@ -0,0 +1,238 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10535_BlacksmithsSoul3;
import java.util.List;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10356_BlacksmithsSoul2.Q10356_BlacksmithsSoul2;
/**
* @author Sero
*/
public class Q10535_BlacksmithsSoul3 extends Quest
{
// NPCs
private static final int BLACKSMITH_MAMMON = 31126;
private static final int SHADAI = 32347;
private static final int ISHUMA = 32615;
// Monsters
private static final int[] HELL_MONSTERS =
{
23386, // Jabberwok
23387, // Kanzaroth
23388, // Kandiloth
23384, // Smaug
23385, // Lunatikan
23399, // Bend Beetle
23398, // Koraza
23397, // Desert Wendigo
23395, // Garion
23396, // Garion neti
};
private static final int[] CAVE_MONSTERS =
{
23727, // Shaqrima Bathus
23728, // Shaqrima Carcass
23729, // Kshana
};
// Items
private static final int OREWITH_GIANTS_ENERGY = 47892;
private static final int CRYSTAL_WITH_MAGOCAL_POWER = 47891;
private static final int ENCHANTED_SHADOW_INGOT = 47886;
// Misc
private static final int MAIN_LEVEL = 99;
public Q10535_BlacksmithsSoul3()
{
super(10535);
addStartNpc(BLACKSMITH_MAMMON);
addTalkId(BLACKSMITH_MAMMON, SHADAI, ISHUMA);
addKillId(HELL_MONSTERS);
addKillId(CAVE_MONSTERS);
addCondCompletedQuest(Q10356_BlacksmithsSoul2.class.getSimpleName(), "31126-02.htm");
addCondMinLevel(MAIN_LEVEL, getNoQuestMsg(null));
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case BLACKSMITH_MAMMON:
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31126-00.htm";
qs.startQuest();
break;
}
case State.STARTED:
{
if (qs.isCond(9))
{
htmltext = "31126-01.htm";
addExpAndSp(player, 40346120829L, 36311508);
giveItems(player, ENCHANTED_SHADOW_INGOT, 1);
qs.exitQuest(false, true);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
case SHADAI:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(7) && (getQuestItemsCount(player, CRYSTAL_WITH_MAGOCAL_POWER) >= 500) && (getQuestItemsCount(player, OREWITH_GIANTS_ENERGY) >= 500))
{
htmltext = "32347-00.htm";
takeItems(player, CRYSTAL_WITH_MAGOCAL_POWER, -1);
qs.setCond(8);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
case ISHUMA:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(8) && (getQuestItemsCount(player, OREWITH_GIANTS_ENERGY) >= 500))
{
htmltext = "32615-00.htm";
takeItems(player, OREWITH_GIANTS_ENERGY, -1);
qs.setCond(9);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
if (killer.isInParty())
{
final Party party = killer.getParty();
final List<PlayerInstance> partyMember = party.getMembers();
for (PlayerInstance singleMember : partyMember)
{
final QuestState qsPartyMember = getQuestState(singleMember, false);
final double distance = npc.calculateDistance3D(singleMember);
if ((qsPartyMember != null) && (distance <= 1000))
{
if (qsPartyMember.isCond(1))
{
if (CommonUtil.contains(HELL_MONSTERS, npc.getId()) && (getQuestItemsCount(singleMember, CRYSTAL_WITH_MAGOCAL_POWER) < 500))
{
giveItems(singleMember, CRYSTAL_WITH_MAGOCAL_POWER, 1);
playSound(singleMember, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if (qsPartyMember.isCond(1))
{
if (CommonUtil.contains(CAVE_MONSTERS, npc.getId()) && (getQuestItemsCount(singleMember, OREWITH_GIANTS_ENERGY) < 500))
{
giveItems(singleMember, OREWITH_GIANTS_ENERGY, 1);
playSound(singleMember, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if (qsPartyMember.isCond(1) && (getQuestItemsCount(singleMember, OREWITH_GIANTS_ENERGY) >= 500) && (getQuestItemsCount(singleMember, CRYSTAL_WITH_MAGOCAL_POWER) >= 500))
{
qsPartyMember.setCond(7);
}
}
}
}
else
{
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
if (qs != null)
{
if (qs.isCond(1))
{
if (CommonUtil.contains(HELL_MONSTERS, npc.getId()) && (getQuestItemsCount(killer, CRYSTAL_WITH_MAGOCAL_POWER) < 500))
{
giveItems(killer, CRYSTAL_WITH_MAGOCAL_POWER, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if (qs.isCond(1))
{
if (CommonUtil.contains(CAVE_MONSTERS, npc.getId()) && (getQuestItemsCount(killer, OREWITH_GIANTS_ENERGY) < 500))
{
giveItems(killer, OREWITH_GIANTS_ENERGY, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if (qs.isCond(1) && (getQuestItemsCount(killer, OREWITH_GIANTS_ENERGY) >= 500) && (getQuestItemsCount(killer, CRYSTAL_WITH_MAGOCAL_POWER) >= 500))
{
qs.setCond(7);
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -277,6 +277,8 @@ import quests.Q10346_DayOfDestinyKamaelsFate.Q10346_DayOfDestinyKamaelsFate;
import quests.Q10351_OwnerOfHall.Q10351_OwnerOfHall;
import quests.Q10353_CertificationOfValue.Q10353_CertificationOfValue;
import quests.Q10354_ResurrectedOwnerOfHall.Q10354_ResurrectedOwnerOfHall;
import quests.Q10355_BlacksmithsSoul1.Q10355_BlacksmithsSoul1;
import quests.Q10356_BlacksmithsSoul2.Q10356_BlacksmithsSoul2;
import quests.Q10358_DividedSakumPoslof.Q10358_DividedSakumPoslof;
import quests.Q10359_TracesOfEvil.Q10359_TracesOfEvil;
import quests.Q10360_CertificationOfFate.Q10360_CertificationOfFate;
@ -375,6 +377,7 @@ import quests.Q10530_KekropusLetterTheDragonsTransition.Q10530_KekropusLetterThe
import quests.Q10531_OddHappeningsAtDragonValley.Q10531_OddHappeningsAtDragonValley;
import quests.Q10532_UncoveringTheConspiracy.Q10532_UncoveringTheConspiracy;
import quests.Q10534_HatchlingResearch.Q10534_HatchlingResearch;
import quests.Q10535_BlacksmithsSoul3.Q10535_BlacksmithsSoul3;
import quests.Q10537_KamaelDisarray.Q10537_KamaelDisarray;
import quests.Q10538_GiantsEvolution.Q10538_GiantsEvolution;
import quests.Q10539_EnergySupplyCutoffPlan.Q10539_EnergySupplyCutoffPlan;
@ -527,13 +530,9 @@ import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
import quests.not_done.Q00989_AdventureGuildsSpecialRequestLv5;
import quests.not_done.Q10298_WastelandQueen;
import quests.not_done.Q10355_BlacksmithsSoulAwakeningWeapon1;
import quests.not_done.Q10356_BlacksmithsSoulAwakeningWeapon2;
import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension;
import quests.not_done.Q10396_WitchOfSpores;
import quests.not_done.Q10423_EmbryoStrongholdAmbush;
import quests.not_done.Q10506_DianasRequest;
import quests.not_done.Q10535_BlacksmithsSoulAwakeningWeapon3;
import quests.not_done.Q10748_MysteriousSuggestion1;
import quests.not_done.Q10749_MysteriousSuggestion2;
import quests.not_done.Q10845_BloodyBattleRescueTheSmiths;
@ -847,8 +846,8 @@ public class QuestMasterHandler
Q10351_OwnerOfHall.class,
Q10353_CertificationOfValue.class,
Q10354_ResurrectedOwnerOfHall.class,
Q10355_BlacksmithsSoulAwakeningWeapon1.class, // TODO: Not done.
Q10356_BlacksmithsSoulAwakeningWeapon2.class, // TODO: Not done.
Q10355_BlacksmithsSoul1.class,
Q10356_BlacksmithsSoul2.class,
Q10358_DividedSakumPoslof.class,
Q10359_TracesOfEvil.class,
Q10360_CertificationOfFate.class,
@ -861,7 +860,6 @@ public class QuestMasterHandler
Q10370_MenacingTimes.class,
Q10371_GraspThyPower.class,
Q10372_PurgatoryVolvere.class,
Q10373_ExploringTheDimensionSealingTheDimension.class, // TODO: Not done.
Q10374_ThatPlaceSuccubus.class,
Q10375_SuccubusDisciples.class,
Q10376_BloodyGoodTime.class,
@ -951,7 +949,7 @@ public class QuestMasterHandler
Q10531_OddHappeningsAtDragonValley.class,
Q10532_UncoveringTheConspiracy.class,
Q10534_HatchlingResearch.class,
Q10535_BlacksmithsSoulAwakeningWeapon3.class, // TODO: Not done.
Q10535_BlacksmithsSoul3.class,
Q10537_KamaelDisarray.class,
Q10538_GiantsEvolution.class,
Q10539_EnergySupplyCutoffPlan.class,

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10355_BlacksmithsSoulAwakeningWeapon1 extends Quest
{
private static final int START_NPC = 34095;
public Q10355_BlacksmithsSoulAwakeningWeapon1()
{
super(10355);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10356_BlacksmithsSoulAwakeningWeapon2 extends Quest
{
private static final int START_NPC = 31126;
public Q10356_BlacksmithsSoulAwakeningWeapon2()
{
super(10356);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10373_ExploringTheDimensionSealingTheDimension extends Quest
{
private static final int START_NPC = 34227;
public Q10373_ExploringTheDimensionSealingTheDimension()
{
super(10373);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10535_BlacksmithsSoulAwakeningWeapon3 extends Quest
{
private static final int START_NPC = 31126;
public Q10535_BlacksmithsSoulAwakeningWeapon3()
{
super(10535);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -109,13 +109,9 @@
988 Adventure Guild's Special Request - Lv. 4
989 Adventure Guild's Special Request - Lv. 5
10298 Wasteland Queen
10355 Blacksmith's Soul-awakening Weapon - 1
10356 Blacksmith's Soul-awakening Weapon - 2
10373 Exploring the Dimension - Sealing the Dimension
10396 Witch of Spores
10423 Embryo Stronghold Ambush
10506 Diana's Request
10535 Blacksmith's Soul-awakening Weapon - 3
10552 Challenge! Balthus Knight!
10553 What Matters More Than Ability
10554 Gift for You

View File

@ -0,0 +1,3 @@
<html><body>Taboy:<br>
Hello now Go ahead and talk with <font color="LEVEL">Legendary Blacksmith Shadai</font> in <font color="LEVEL">Heine</font>!<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You have made a great work now you go to <font color="LEVEL">Nightmare Kamaloka</font> and defeat 5 of <font color="LEVEL">Dark Rider</font> then go to <font color="LEVEL">Command Post</font> and defeat 5 of <font color="LEVEL"> Burnstein (Command Post)</font><br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You have made a great work now you go to <font color="LEVEL"> Enchanted Valley</font> and defeat 3000 of them.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You need to defeat 5 of <font color="LEVEL">Dark Rider</font> then go to <font color="LEVEL">Command Post</font> and defeat 5 of <font color="LEVEL"> Burnstein (Command Post)</font> and bring me 5 <font color="LEVEL"> Shadow ingot</font>.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Congratulations you have complate the challenge now you're able to take the next challenge <font color="LEVEL"> Blacksmiths Soul part 2 </font> and bring me 5 Shadow ingot.<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
Hello now go ahead and talk with <font color="LEVEL">Maestro Ishuma</font> at <font color="LEVEL">Wharf of Gludio Airships</font>!<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
Hello now Go ahead and talk with <font color="LEVEL">Blacksmith of Mammon</font> at <font color="LEVEL">Aden</font> or <font color="LEVEL">Giran</font>!<br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Neti:<br>
This will be long way !<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10355_BlacksmithsSoul1 34095-01.htm">"Okay."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Neti:<br>
Great you choose to take the challenge Go ahead and talk with <font color="LEVEL">Head Blacksmith Tapoy</font> in <font color="LEVEL">Gludin </font>!<br>
</body></html>

View File

@ -0,0 +1,320 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10355_BlacksmithsSoul1;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* @author Sero
*/
public class Q10355_BlacksmithsSoul1 extends Quest
{
// NPC
private static final int NETI = 34095;
private static final int TAPOY = 30499;
private static final int SHADAI = 32347;
private static final int ISHUMA = 32615;
private static final int MERCHANT_OF_MAMMON = 31126;
// Items
private static final int SHADOW_INGOT = 46395;
// Monsters
private static final int BURNSTEIN = 23587;
private static final int DARK_RIDER = 26102;
private static final int[] NYMPH_MONSTERS =
{
23569, // Nymph Lily
23583, // Nymph Lily big
23573, // Nymph Cosmos
23567, // Nymph Rose
23578, // Nymph Guardian
23570, // Nymph Tulip
19600, // Flower Bud
23581, // Apherus
};
// Misc
private static final int MIN_LEVEL = 99;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10355_BlacksmithsSoul1()
{
super(10355);
addStartNpc(NETI);
addTalkId(NETI, TAPOY, SHADAI, ISHUMA, MERCHANT_OF_MAMMON);
registerQuestItems(SHADOW_INGOT);
addKillId(DARK_RIDER);
addKillId(BURNSTEIN);
addKillId(NYMPH_MONSTERS);
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
if (event.equals("34095-01.htm"))
{
qs.startQuest();
htmltext = event;
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case NETI:
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34095-00.htm";
break;
}
case State.STARTED:
{
htmltext = "30756-09.html";
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case TAPOY:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "30499-00.htm";
qs.setCond(2);
}
else
{
htmltext = "30499-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case SHADAI:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(2))
{
htmltext = "32347-00.htm";
qs.setCond(3);
}
else
{
htmltext = "32347-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case ISHUMA:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(3))
{
htmltext = "32615-00.htm";
qs.setCond(4);
}
else
{
htmltext = "32615-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case MERCHANT_OF_MAMMON:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(4))
{
htmltext = "31126-00.htm";
qs.setCond(5);
}
else if (qs.isCond(5))
{
htmltext = "31126-00.htm";
}
else if (qs.isCond(6) && (getQuestItemsCount(player, SHADOW_INGOT) >= 5))
{
takeItems(player, SHADOW_INGOT, 5);
htmltext = "31126-01.htm";
qs.setCond(7);
}
else if (qs.isCond(8))
{
htmltext = "31126-03.htm";
addExpAndSp(player, 26918866543L, 24226979);
qs.exitQuest(false, true);
}
else
{
htmltext = "31126-02.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
}
return htmltext;
}
@Override
public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(5))
{
final int killedCount = qs.getInt(Integer.toString(npc.getId()));
if (killedCount < 5)
{
qs.set(Integer.toString(npc.getId()), killedCount + 1);
}
final int killedRessurected = qs.getInt(Integer.toString(DARK_RIDER));
final int killedLunatic = qs.getInt(Integer.toString(BURNSTEIN));
if ((killedLunatic == 5) && (killedRessurected == 5))
{
qs.setCond(6, true);
}
}
else if ((qs != null) && qs.isCond(7))
{
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 3000)
{
qs.setCond(8, true);
}
else
{
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
executeForEachPlayer(player, npc, isSummon, true, false);
return super.onKill(npc, player, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(5))
{
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
npcLogList.add(new NpcLogListHolder(DARK_RIDER, false, qs.getInt(Integer.toString(DARK_RIDER))));
npcLogList.add(new NpcLogListHolder(NpcStringId.DEFEAT_COMMANDER_BURNSTEIN_2, qs.getInt(Integer.toString(BURNSTEIN))));
return npcLogList;
}
else if ((qs != null) && qs.isCond(7))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTERS_IN_THE_ENCHANTED_VALLEY_2, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -0,0 +1,4 @@
<html><body>Mammon:<br>
Now the next part of your challenge is to bring me <font color="LEVEL">Improved Shadow Ingot</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 31126-01.htm">"Okay Let's go."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
When you have <font color="LEVEL">Improved Shadow Ingot</font> come back to me.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You need to complete Blacksmiths Soul - Part 1 first.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Mammon:<br>
Do you have the <font color="LEVEL">Improved Shadow Ingot</font>?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 31126-04.htm">"Yes take it."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Do you have the <font color="LEVEL">Improved Shadow Ingot</font>?
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Good job now bring me a Shadow weapon that you don't want so I can make my research.
</body></html>

View File

@ -0,0 +1,13 @@
<html><body>Mammon:<br>
Choose the weapon that you don't need to I can make my research on it "Warning! The weapon will not be returned to you" <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_1">"Shadow Shaper."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_2">"Shadow Cutter."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_3">"Shadow Slasher."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_4">"Shadow Fighter."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_5">"Shadow Stormer."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_6">"Shadow Thrower."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_7">"Shadow Shooter."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_8">"Shadow Buster."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_9">"Shadow Retributer."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_10">"Shadow Dual Sword."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Great work! Now take this weapon, upgrade it to +7 and bring it back to me.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Mammon:<br>
Nice now hand me the weapon let me do my research.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 RESEARCH_Shadow_WEAPON7">"Take it."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
It's hard work but please enchant my the weapon to +7.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You have done good so far now you can take your reward and be ready for the next challenge. Have a great day.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
I agreed to take a part in the research.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Ishuma:<br>
I agreed to take a part in the research.
</body></html>

View File

@ -0,0 +1,371 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10356_BlacksmithsSoul2;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import quests.Q10355_BlacksmithsSoul1.Q10355_BlacksmithsSoul1;
/**
* @author Sero
*/
public class Q10356_BlacksmithsSoul2 extends Quest
{
// NPCs
private static final int BLACKSMITH_MAMMON = 31126;
private static final int SHADAI = 32347;
private static final int ISHUMA = 32615;
// Items
private static final int Improved_SHADOW_Ingot = 47896;
private static final int RESEARCH_SHADOW_WEAPON = 47890;
private static final int SHADOW_WEAPON_1 = 46317;
private static final int SHADOW_WEAPON_2 = 46318;
private static final int SHADOW_WEAPON_3 = 46319;
private static final int SHADOW_WEAPON_4 = 46320;
private static final int SHADOW_WEAPON_5 = 46321;
private static final int SHADOW_WEAPON_6 = 46322;
private static final int SHADOW_WEAPON_7 = 46323;
private static final int SHADOW_WEAPON_8 = 46324;
private static final int SHADOW_WEAPON_9 = 46325;
private static final int SHADOW_WEAPON_10 = 46326;
private static final int SHADOW_CRYSTAL = 47899;
private static final int MAIN_LEVEL = 99;
public Q10356_BlacksmithsSoul2()
{
super(10356);
addStartNpc(BLACKSMITH_MAMMON);
addTalkId(BLACKSMITH_MAMMON, SHADAI, ISHUMA);
addCondCompletedQuest(Q10355_BlacksmithsSoul1.class.getSimpleName(), "31126-02.htm");
addCondMinLevel(MAIN_LEVEL, getNoQuestMsg(null));
registerQuestItems(Improved_SHADOW_Ingot, SHADOW_WEAPON_1, SHADOW_WEAPON_2, SHADOW_WEAPON_3, SHADOW_WEAPON_4, SHADOW_WEAPON_5, SHADOW_WEAPON_6, SHADOW_WEAPON_7, SHADOW_WEAPON_8, SHADOW_WEAPON_9, SHADOW_WEAPON_10, RESEARCH_SHADOW_WEAPON);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "31126-01.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31126-04.htm":
{
if (hasQuestItems(player, Improved_SHADOW_Ingot))
{
takeItems(player, Improved_SHADOW_Ingot, 1);
qs.setCond(2);
htmltext = event;
}
else
{
htmltext = "31126-03r.htm";
}
break;
}
case "SHADOW_WEAPON_1":
{
if (hasQuestItems(player, SHADOW_WEAPON_1))
{
takeItems(player, SHADOW_WEAPON_1, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_2":
{
if (hasQuestItems(player, SHADOW_WEAPON_2))
{
takeItems(player, SHADOW_WEAPON_2, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_3":
{
if (hasQuestItems(player, SHADOW_WEAPON_3))
{
takeItems(player, SHADOW_WEAPON_3, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_4":
{
if (hasQuestItems(player, SHADOW_WEAPON_4))
{
takeItems(player, SHADOW_WEAPON_4, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_5":
{
if (hasQuestItems(player, SHADOW_WEAPON_5))
{
takeItems(player, SHADOW_WEAPON_5, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_6":
{
if (hasQuestItems(player, SHADOW_WEAPON_6))
{
takeItems(player, SHADOW_WEAPON_6, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
htmltext = event;
}
break;
}
case "SHADOW_WEAPON_7":
{
if (hasQuestItems(player, SHADOW_WEAPON_7))
{
takeItems(player, SHADOW_WEAPON_7, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_8":
{
if (hasQuestItems(player, SHADOW_WEAPON_8))
{
takeItems(player, SHADOW_WEAPON_8, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_9":
{
if (hasQuestItems(player, SHADOW_WEAPON_9))
{
takeItems(player, SHADOW_WEAPON_9, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "SHADOW_WEAPON_10":
{
if (hasQuestItems(player, SHADOW_WEAPON_10))
{
takeItems(player, SHADOW_WEAPON_10, 1);
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
qs.setCond(3);
}
break;
}
case "RESEARCH_SHADOW_WEAPON7":
{
if (hasQuestItems(player, RESEARCH_SHADOW_WEAPON) && (getEnchantLevel(player, RESEARCH_SHADOW_WEAPON) >= 7))
{
takeItems(player, RESEARCH_SHADOW_WEAPON, -1);
giveItems(player, SHADOW_CRYSTAL, 2);
qs.setCond(5);
}
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case BLACKSMITH_MAMMON:
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31126-00.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "31126-03.htm";
}
else if (qs.isCond(2))
{
htmltext = "31126-05.htm";
}
else if (qs.isCond(3))
{
htmltext = "31126-08.htm";
qs.setCond(4);
}
else if (qs.isCond(4))
{
if (hasQuestItems(player, RESEARCH_SHADOW_WEAPON))
{
htmltext = "31126-07.htm";
}
else
{
giveItems(player, RESEARCH_SHADOW_WEAPON, 1);
htmltext = "31126-06.htm";
}
}
else if (qs.isCond(6))
{
htmltext = "31126-09.htm";
addExpAndSp(player, 32958000000L, 29662200);
qs.exitQuest(false, true);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
case SHADAI:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(5) && hasQuestItems(player, SHADOW_CRYSTAL))
{
htmltext = "32347-00.htm";
takeItems(player, SHADOW_CRYSTAL, -1);
qs.setCond(6);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
case ISHUMA:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(5) && hasQuestItems(player, SHADOW_CRYSTAL))
{
htmltext = "32615-00.htm";
takeItems(player, SHADOW_CRYSTAL, -1);
qs.setCond(6);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
executeForEachPlayer(player, npc, isSummon, true, false);
return super.onKill(npc, player, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(2))
{
if (hasAtLeastOneQuestItem(player, SHADOW_WEAPON_1, SHADOW_WEAPON_2, SHADOW_WEAPON_3, SHADOW_WEAPON_4, SHADOW_WEAPON_5, SHADOW_WEAPON_6, SHADOW_WEAPON_7, SHADOW_WEAPON_8, SHADOW_WEAPON_9, SHADOW_WEAPON_10))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.BRING_SHADOW_WEAPON, 1));
return holder;
}
}
if ((qs != null) && qs.isCond(4))
{
if ((getEnchantLevel(player, RESEARCH_SHADOW_WEAPON) >= 7))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.ENCHANT_THE_RESEARCH_WEAPON, 1));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
You have completed the quest.<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
It's a fortunate thing that such a skilled adventurer as yourself has committed to making yourself available to the cause. Here is your mission.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Beloa:<br>
You need 30 of the Renants of the Rift item in order to seal the Dimensional Rift..<br>
Are you strong enough to collect 30 Remnant of the Rift for me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10373_ExploringTheDimensionSealingTheDimension 34227-04.htm">"Yes I'm."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Beola:<br>
Not done yet.
</body></html>

View File

@ -0,0 +1,107 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10373_ExploringTheDimensionSealingTheDimension;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
/**
* @author Sero
*/
public class Q10373_ExploringTheDimensionSealingTheDimension extends Quest
{
private static final int BELOA = 34227;
private static final int RUNE_STONE = 39738;
private static final int COMMANDO_BELT = 47044;
private static final int REMNANT_OF_THE_RIFT = 46787;
private static final int ZODIAC_AGATHION = 45577;
private static final int MIN_LEVEL = 95;
public Q10373_ExploringTheDimensionSealingTheDimension()
{
super(10373);
addStartNpc(BELOA);
addTalkId(BELOA);
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
if (event.equals("34227-04.htm"))
{
qs.startQuest();
htmltext = event;
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (npc.getId() == BELOA)
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34227-05.htm";
break;
}
case State.STARTED:
{
if (getQuestItemsCount(player, REMNANT_OF_THE_RIFT) >= 30)
{
takeItems(player, REMNANT_OF_THE_RIFT, -1);
giveItems(player, COMMANDO_BELT, 1);
giveItems(player, ZODIAC_AGATHION, 1);
giveItems(player, RUNE_STONE, 1);
addExpAndSp(player, 12113489880L, 12113460);
qs.exitQuest(QuestType.ONE_TIME);
htmltext = "30756-09.html";
}
else
{
htmltext = "34227-05a.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
}
return htmltext;
}
}

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
This the <font color="LEVEL">Last challenge</font> Defeat monster in Giant's Cave and Hellbound collect Ore with Giant's Energy and Crystal with Magical Power Crystal with Magical Power then take them to Shadai and Ishuma.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Congratulations you have completed the challenge you deserve your reward warrior!
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
Thank you for your hard work.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Ishuma:<br>
Thank you for your hard work.
</body></html>

View File

@ -0,0 +1,238 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10535_BlacksmithsSoul3;
import java.util.List;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10356_BlacksmithsSoul2.Q10356_BlacksmithsSoul2;
/**
* @author Sero
*/
public class Q10535_BlacksmithsSoul3 extends Quest
{
// NPCs
private static final int BLACKSMITH_MAMMON = 31126;
private static final int SHADAI = 32347;
private static final int ISHUMA = 32615;
// Monsters
private static final int[] HELL_MONSTERS =
{
23386, // Jabberwok
23387, // Kanzaroth
23388, // Kandiloth
23384, // Smaug
23385, // Lunatikan
23399, // Bend Beetle
23398, // Koraza
23397, // Desert Wendigo
23395, // Garion
23396, // Garion neti
};
private static final int[] CAVE_MONSTERS =
{
23727, // Shaqrima Bathus
23728, // Shaqrima Carcass
23729, // Kshana
};
// Items
private static final int OREWITH_GIANTS_ENERGY = 47892;
private static final int CRYSTAL_WITH_MAGOCAL_POWER = 47891;
private static final int ENCHANTED_SHADOW_INGOT = 47886;
// Misc
private static final int MAIN_LEVEL = 99;
public Q10535_BlacksmithsSoul3()
{
super(10535);
addStartNpc(BLACKSMITH_MAMMON);
addTalkId(BLACKSMITH_MAMMON, SHADAI, ISHUMA);
addKillId(HELL_MONSTERS);
addKillId(CAVE_MONSTERS);
addCondCompletedQuest(Q10356_BlacksmithsSoul2.class.getSimpleName(), "31126-02.htm");
addCondMinLevel(MAIN_LEVEL, getNoQuestMsg(null));
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case BLACKSMITH_MAMMON:
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31126-00.htm";
qs.startQuest();
break;
}
case State.STARTED:
{
if (qs.isCond(9))
{
htmltext = "31126-01.htm";
addExpAndSp(player, 40346120829L, 36311508);
giveItems(player, ENCHANTED_SHADOW_INGOT, 1);
qs.exitQuest(false, true);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
case SHADAI:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(7) && (getQuestItemsCount(player, CRYSTAL_WITH_MAGOCAL_POWER) >= 500) && (getQuestItemsCount(player, OREWITH_GIANTS_ENERGY) >= 500))
{
htmltext = "32347-00.htm";
takeItems(player, CRYSTAL_WITH_MAGOCAL_POWER, -1);
qs.setCond(8);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
case ISHUMA:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(8) && (getQuestItemsCount(player, OREWITH_GIANTS_ENERGY) >= 500))
{
htmltext = "32615-00.htm";
takeItems(player, OREWITH_GIANTS_ENERGY, -1);
qs.setCond(9);
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31126-00a.htm";
break;
}
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
if (killer.isInParty())
{
final Party party = killer.getParty();
final List<PlayerInstance> partyMember = party.getMembers();
for (PlayerInstance singleMember : partyMember)
{
final QuestState qsPartyMember = getQuestState(singleMember, false);
final double distance = npc.calculateDistance3D(singleMember);
if ((qsPartyMember != null) && (distance <= 1000))
{
if (qsPartyMember.isCond(1))
{
if (CommonUtil.contains(HELL_MONSTERS, npc.getId()) && (getQuestItemsCount(singleMember, CRYSTAL_WITH_MAGOCAL_POWER) < 500))
{
giveItems(singleMember, CRYSTAL_WITH_MAGOCAL_POWER, 1);
playSound(singleMember, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if (qsPartyMember.isCond(1))
{
if (CommonUtil.contains(CAVE_MONSTERS, npc.getId()) && (getQuestItemsCount(singleMember, OREWITH_GIANTS_ENERGY) < 500))
{
giveItems(singleMember, OREWITH_GIANTS_ENERGY, 1);
playSound(singleMember, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if (qsPartyMember.isCond(1) && (getQuestItemsCount(singleMember, OREWITH_GIANTS_ENERGY) >= 500) && (getQuestItemsCount(singleMember, CRYSTAL_WITH_MAGOCAL_POWER) >= 500))
{
qsPartyMember.setCond(7);
}
}
}
}
else
{
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
if (qs != null)
{
if (qs.isCond(1))
{
if (CommonUtil.contains(HELL_MONSTERS, npc.getId()) && (getQuestItemsCount(killer, CRYSTAL_WITH_MAGOCAL_POWER) < 500))
{
giveItems(killer, CRYSTAL_WITH_MAGOCAL_POWER, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if (qs.isCond(1))
{
if (CommonUtil.contains(CAVE_MONSTERS, npc.getId()) && (getQuestItemsCount(killer, OREWITH_GIANTS_ENERGY) < 500))
{
giveItems(killer, OREWITH_GIANTS_ENERGY, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if (qs.isCond(1) && (getQuestItemsCount(killer, OREWITH_GIANTS_ENERGY) >= 500) && (getQuestItemsCount(killer, CRYSTAL_WITH_MAGOCAL_POWER) >= 500))
{
qs.setCond(7);
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -297,6 +297,8 @@ import quests.Q10346_DayOfDestinyKamaelsFate.Q10346_DayOfDestinyKamaelsFate;
import quests.Q10351_OwnerOfHall.Q10351_OwnerOfHall;
import quests.Q10353_CertificationOfValue.Q10353_CertificationOfValue;
import quests.Q10354_ResurrectedOwnerOfHall.Q10354_ResurrectedOwnerOfHall;
import quests.Q10355_BlacksmithsSoul1.Q10355_BlacksmithsSoul1;
import quests.Q10356_BlacksmithsSoul2.Q10356_BlacksmithsSoul2;
import quests.Q10358_DividedSakumPoslof.Q10358_DividedSakumPoslof;
import quests.Q10359_TracesOfEvil.Q10359_TracesOfEvil;
import quests.Q10360_CertificationOfFate.Q10360_CertificationOfFate;
@ -309,6 +311,7 @@ import quests.Q10369_NoblesseSoulTesting.Q10369_NoblesseSoulTesting;
import quests.Q10370_MenacingTimes.Q10370_MenacingTimes;
import quests.Q10371_GraspThyPower.Q10371_GraspThyPower;
import quests.Q10372_PurgatoryVolvere.Q10372_PurgatoryVolvere;
import quests.Q10373_ExploringTheDimensionSealingTheDimension.Q10373_ExploringTheDimensionSealingTheDimension;
import quests.Q10374_ThatPlaceSuccubus.Q10374_ThatPlaceSuccubus;
import quests.Q10375_SuccubusDisciples.Q10375_SuccubusDisciples;
import quests.Q10376_BloodyGoodTime.Q10376_BloodyGoodTime;
@ -393,6 +396,7 @@ import quests.Q10530_KekropusLetterTheDragonsTransition.Q10530_KekropusLetterThe
import quests.Q10531_OddHappeningsAtDragonValley.Q10531_OddHappeningsAtDragonValley;
import quests.Q10532_UncoveringTheConspiracy.Q10532_UncoveringTheConspiracy;
import quests.Q10534_HatchlingResearch.Q10534_HatchlingResearch;
import quests.Q10535_BlacksmithsSoul3.Q10535_BlacksmithsSoul3;
import quests.Q10537_KamaelDisarray.Q10537_KamaelDisarray;
import quests.Q10538_GiantsEvolution.Q10538_GiantsEvolution;
import quests.Q10539_EnergySupplyCutoffPlan.Q10539_EnergySupplyCutoffPlan;
@ -562,12 +566,8 @@ import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
import quests.not_done.Q00989_AdventureGuildsSpecialRequestLv5;
import quests.not_done.Q10298_WastelandQueen;
import quests.not_done.Q10355_BlacksmithsSoul1;
import quests.not_done.Q10356_BlacksmithsSoul2;
import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension;
import quests.not_done.Q10396_WitchOfSpores;
import quests.not_done.Q10506_DianasRequest;
import quests.not_done.Q10535_BlacksmithsSoul3;
import quests.not_done.Q10552_ChallengeBalthusKnight;
import quests.not_done.Q10553_WhatMattersMoreThanAbility;
import quests.not_done.Q10554_GiftForYou;
@ -920,8 +920,8 @@ public class QuestMasterHandler
Q10351_OwnerOfHall.class,
Q10353_CertificationOfValue.class,
Q10354_ResurrectedOwnerOfHall.class,
Q10355_BlacksmithsSoul1.class, // TODO: Not done.
Q10356_BlacksmithsSoul2.class, // TODO: Not done.
Q10355_BlacksmithsSoul1.class,
Q10356_BlacksmithsSoul2.class,
Q10358_DividedSakumPoslof.class,
Q10359_TracesOfEvil.class,
Q10360_CertificationOfFate.class,
@ -934,7 +934,7 @@ public class QuestMasterHandler
Q10370_MenacingTimes.class,
Q10371_GraspThyPower.class,
Q10372_PurgatoryVolvere.class,
Q10373_ExploringTheDimensionSealingTheDimension.class, // TODO: Not done.
Q10373_ExploringTheDimensionSealingTheDimension.class,
Q10374_ThatPlaceSuccubus.class,
Q10375_SuccubusDisciples.class,
Q10376_BloodyGoodTime.class,
@ -1021,7 +1021,7 @@ public class QuestMasterHandler
Q10531_OddHappeningsAtDragonValley.class,
Q10532_UncoveringTheConspiracy.class,
Q10534_HatchlingResearch.class,
Q10535_BlacksmithsSoul3.class, // TODO: Not done.
Q10535_BlacksmithsSoul3.class,
Q10537_KamaelDisarray.class,
Q10538_GiantsEvolution.class,
Q10539_EnergySupplyCutoffPlan.class,

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10355_BlacksmithsSoul1 extends Quest
{
private static final int START_NPC = 34095;
public Q10355_BlacksmithsSoul1()
{
super(10355);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10356_BlacksmithsSoul2 extends Quest
{
private static final int START_NPC = 31126;
public Q10356_BlacksmithsSoul2()
{
super(10356);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10373_ExploringTheDimensionSealingTheDimension extends Quest
{
private static final int START_NPC = 34227;
public Q10373_ExploringTheDimensionSealingTheDimension()
{
super(10373);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10535_BlacksmithsSoul3 extends Quest
{
private static final int START_NPC = 31126;
public Q10535_BlacksmithsSoul3()
{
super(10535);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -117,14 +117,10 @@
988 Adventure Guild's Special Request - Lv. 4
989 Adventure Guild's Special Request - Lv. 5
10298 Wasteland Queen
10355 Blacksmith's Soul-awakening Weapon - 1
10356 Blacksmith's Soul-awakening Weapon - 2
10373 Exploring the Dimension - Sealing the Dimension
10423 Embryo Stronghold Ambush
10506 Diana's Request
10529 Ivory Tower's Research - Sea of Spores Journal
10533 Orfen's Ambition
10535 Blacksmith's Soul-awakening Weapon - 3
10552 Challenge! Balthus Knight!
10553 What Matters More Than Ability
10554 Gift for You

View File

@ -0,0 +1,3 @@
<html><body>Taboy:<br>
Hello now Go ahead and talk with <font color="LEVEL">Legendary Blacksmith Shadai</font> in <font color="LEVEL">Heine</font>!<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You have made a great work now you go to <font color="LEVEL">Nightmare Kamaloka</font> and defeat 5 of <font color="LEVEL">Dark Rider</font> then go to <font color="LEVEL">Command Post</font> and defeat 5 of <font color="LEVEL"> Burnstein (Command Post)</font><br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You have made a great work now you go to <font color="LEVEL"> Enchanted Valley</font> and defeat 3000 of them.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
You need to defeat 5 of <font color="LEVEL">Dark Rider</font> then go to <font color="LEVEL">Command Post</font> and defeat 5 of <font color="LEVEL"> Burnstein (Command Post)</font> and bring me 5 <font color="LEVEL"> Shadow ingot</font>.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mammon:<br>
Congratulations you have complate the challenge now you're able to take the next challenge <font color="LEVEL"> Blacksmiths Soul part 2 </font> and bring me 5 Shadow ingot.<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
Hello now go ahead and talk with <font color="LEVEL">Maestro Ishuma</font> at <font color="LEVEL">Wharf of Gludio Airships</font>!<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Shadai:<br>
Hello now Go ahead and talk with <font color="LEVEL">Blacksmith of Mammon</font> at <font color="LEVEL">Aden</font> or <font color="LEVEL">Giran</font>!<br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Neti:<br>
This will be long way !<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10355_BlacksmithsSoul1 34095-01.htm">"Okay."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Neti:<br>
Great you choose to take the challenge Go ahead and talk with <font color="LEVEL">Head Blacksmith Tapoy</font> in <font color="LEVEL">Gludin </font>!<br>
</body></html>

View File

@ -0,0 +1,320 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10355_BlacksmithsSoul1;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* @author Sero
*/
public class Q10355_BlacksmithsSoul1 extends Quest
{
// NPC
private static final int NETI = 34095;
private static final int TAPOY = 30499;
private static final int SHADAI = 32347;
private static final int ISHUMA = 32615;
private static final int MERCHANT_OF_MAMMON = 31126;
// Items
private static final int SHADOW_INGOT = 46395;
// Monsters
private static final int BURNSTEIN = 23587;
private static final int DARK_RIDER = 26102;
private static final int[] NYMPH_MONSTERS =
{
23569, // Nymph Lily
23583, // Nymph Lily big
23573, // Nymph Cosmos
23567, // Nymph Rose
23578, // Nymph Guardian
23570, // Nymph Tulip
19600, // Flower Bud
23581, // Apherus
};
// Misc
private static final int MIN_LEVEL = 99;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10355_BlacksmithsSoul1()
{
super(10355);
addStartNpc(NETI);
addTalkId(NETI, TAPOY, SHADAI, ISHUMA, MERCHANT_OF_MAMMON);
registerQuestItems(SHADOW_INGOT);
addKillId(DARK_RIDER);
addKillId(BURNSTEIN);
addKillId(NYMPH_MONSTERS);
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
if (event.equals("34095-01.htm"))
{
qs.startQuest();
htmltext = event;
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case NETI:
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34095-00.htm";
break;
}
case State.STARTED:
{
htmltext = "30756-09.html";
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case TAPOY:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "30499-00.htm";
qs.setCond(2);
}
else
{
htmltext = "30499-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case SHADAI:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(2))
{
htmltext = "32347-00.htm";
qs.setCond(3);
}
else
{
htmltext = "32347-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case ISHUMA:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(3))
{
htmltext = "32615-00.htm";
qs.setCond(4);
}
else
{
htmltext = "32615-00.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
case MERCHANT_OF_MAMMON:
{
switch (qs.getState())
{
case State.STARTED:
{
if (qs.isCond(4))
{
htmltext = "31126-00.htm";
qs.setCond(5);
}
else if (qs.isCond(5))
{
htmltext = "31126-00.htm";
}
else if (qs.isCond(6) && (getQuestItemsCount(player, SHADOW_INGOT) >= 5))
{
takeItems(player, SHADOW_INGOT, 5);
htmltext = "31126-01.htm";
qs.setCond(7);
}
else if (qs.isCond(8))
{
htmltext = "31126-03.htm";
addExpAndSp(player, 26918866543L, 24226979);
qs.exitQuest(false, true);
}
else
{
htmltext = "31126-02.htm";
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "34227-00a.htm";
break;
}
}
}
break;
}
}
return htmltext;
}
@Override
public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(5))
{
final int killedCount = qs.getInt(Integer.toString(npc.getId()));
if (killedCount < 5)
{
qs.set(Integer.toString(npc.getId()), killedCount + 1);
}
final int killedRessurected = qs.getInt(Integer.toString(DARK_RIDER));
final int killedLunatic = qs.getInt(Integer.toString(BURNSTEIN));
if ((killedLunatic == 5) && (killedRessurected == 5))
{
qs.setCond(6, true);
}
}
else if ((qs != null) && qs.isCond(7))
{
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 3000)
{
qs.setCond(8, true);
}
else
{
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
executeForEachPlayer(player, npc, isSummon, true, false);
return super.onKill(npc, player, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(5))
{
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
npcLogList.add(new NpcLogListHolder(DARK_RIDER, false, qs.getInt(Integer.toString(DARK_RIDER))));
npcLogList.add(new NpcLogListHolder(NpcStringId.DEFEAT_COMMANDER_BURNSTEIN_2, qs.getInt(Integer.toString(BURNSTEIN))));
return npcLogList;
}
else if ((qs != null) && qs.isCond(7))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTERS_IN_THE_ENCHANTED_VALLEY_2, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -0,0 +1,4 @@
<html><body>Mammon:<br>
Now the next part of your challenge is to bring me <font color="LEVEL">Improved Shadow Ingot</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 31126-01.htm">"Okay Let's go."</Button>
</body></html>

Some files were not shown because too many files have changed in this diff Show More