Addition of 1-20 level quests.

Contributed by robikbobik.
This commit is contained in:
MobiusDevelopment
2019-11-14 11:03:58 +00:00
parent 962d923de2
commit 0c2533f581
114 changed files with 3698 additions and 14 deletions

View File

@@ -22,20 +22,7 @@
10870 Unfinished Device 10870 Unfinished Device
10871 Death to the Pirate King! 10871 Death to the Pirate King!
10960 10960
10961
10962
10963 10963
10964 10964
10965 10965
10966
10967 10967
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990

View File

@@ -0,0 +1,5 @@
<html><body>Newbie Guide:<br>
You just woke up from your sleep, so Im sure its still strange for you.<br>
I prepared some training for you to adapt, so lets get strated.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10961_EffectiveTraining 34110-02.htm">"What doest it say?"</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Newbie Guide:<br>
The southem part of the Jim Kamael village is called Hills of Hope. Its the place we first settled down, and we believed it would become our hope.<br>
A long time has passed, but you should also find your hope in that place.<br>
The Hills of Hope has realtively small animals that are not that dangerous. Start training by hunting them and get used to your sences.<br>
Hunt 20 <font color=LEVEL>Grey Keltir, Elder Grey Keltir, Black Wolf, Elder Black Wolf</font> and come back to me.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10961_EffectiveTraining TELEPORT_TO_HUNTING_GROUND">"Alright"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Trader Leahen:<br>
Amazing! As expected of a promising Jim Kamael soldier.<br>
Alright, how about getting ready to go out into the world?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons NEXT_QUEST">"Yes, Sure"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Trader Leahen:<br>
It looks like you completed the training.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10961_EffectiveTraining 34111-02.htm">"Yes"</Button>
</body></html>

View File

@@ -0,0 +1,193 @@
/*
* 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.Q10961_EffectiveTraining;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Effective Training (10961)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10961_EffectiveTraining extends Quest
{
// NPCs
private static final int NEWBIE_GUIDE = 34110;
private static final int REAHEN = 34111;
// Monsters
private static final int GREY_KELTIR = 21981;
private static final int ELDER_GREY_KELTIR = 21982;
private static final int BLACK_WOLF = 21983;
private static final int ELDER_BLACK_WOLF = 21984;
// Items
private static final ItemHolder SOE_TO_REAHEN = new ItemHolder(91917, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10);
private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2);
private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2);
private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1);
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10961_EffectiveTraining()
{
super(10961);
addStartNpc(NEWBIE_GUIDE);
addTalkId(NEWBIE_GUIDE, REAHEN);
addKillId(GREY_KELTIR, ELDER_GREY_KELTIR, BLACK_WOLF, ELDER_BLACK_WOLF);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_2_20_EFFECTIVE_TRAINING);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(-120020, 55668, -1560);
break;
}
case "34110-02.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "34111-02.htm":
{
if (qs.isStarted())
{
addExpAndSp(player, 260000, 6000);
giveItems(player, SOE_NOVICE);
giveItems(player, RING_NOVICE);
giveItems(player, EARRING_NOVICE);
giveItems(player, NECKLACE_NOVICE);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 20)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to return to Trader Reahen", 5000));
giveItems(killer, SOE_TO_REAHEN);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_THE_MONSTERS_ON_THE_HILL_OF_HOPE.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "34110-01.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case NEWBIE_GUIDE:
{
if (qs.isCond(1))
{
htmltext = "34110-02.htm";
}
break;
}
case REAHEN:
{
if (qs.isCond(2))
{
htmltext = "34111.htm";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == NEWBIE_GUIDE)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,3 @@
<html><body>Newbie Guide:<br>
You do not meet the requirements of the quest (Quest is only available to 2-20 levels).
</body></html>

View File

@@ -0,0 +1,14 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Armor<br><br>
[Recommended Classes]<br>
Warrior(Humans)<br1>
Knight(Humans)<br1>
Elven Knight(Elves)<br1>
Palus Knight(Dark Elves)<br1>
Orc Raider(Orcs)<br1>
Scavenger(Dwarves)<br1>
Artisan(Dwarves)<br1>
Trooper(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons HeavyArmor.html">Receive (Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,12 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Outfit<br><br>
[Recommended Classes]<br>
Rogue(Humans)<br1>
Elven Scout(Elves)<br1>
Assassin(Dark Elves)<br1>
Orc Monk(Orcs)<br1>
Soul Finder(Jin Kamael))<br1>
Warder(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons LightArmor.html">Receive (Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,13 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Doublet<br><br>
[Recommended Classes]<br>
Wizard(Humans)<br1>
Cleric(Humans)<br1>
Elven Wizard(Elves)<br1>
Oracle(Elves)<br1>
Dark Wizard(Dark Elves)<br1>
Shillien Oracle(Dark Elves)<br1>
Orc Shaman(Orcs)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons Robe.html">Receive (Robe) Moonshadow Double Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,8 @@
<html><body>Captain Bathis:<br>
You are a Jin Kamael Soldier? You look as strong as I heard.<br>
I heard you are coming out of your seclusion into the world.<br>
You will need some things to be able to get by. I prepared some stuff you might need, so take your pick.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons 30332-01.html">(Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons 30332-02.html">(Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons 30332-03.html">(Robe Armor) Moonshadow Double Set</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Trader Leahen:<br>
You are strong-willed.<br>
There is a place called Hills of Gold to the east of the village. It is said that gold was discovered when we first settled down, but there is no way confirm that now, so dont worry about the origin of the name.<br>
What is important right now is to defeat 30 of the <font color=LEVEL>Mountain Werewolf, Mountain Fungus, Muertos Warrior, and Muertos Captain.</font><br>
I will send you there so that you can train faster.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons TELEPORT_TO_HUNTING_GROUND">Teleport</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Trader Leahen:<br>
I retired and am living in peace as a trader, but I used to ve an instructor in charge of training Jin Kamael Sodiers.<br>
Im still good to offer some training, so dont worry, and do as I say.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10962_NewHorizons 34111-01.html">"Yes, Sure"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Armor.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Ourfit.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,276 @@
/*
* 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.Q10962_NewHorizons;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* New Horizons (10962)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10962_NewHorizons extends Quest
{
// NPCs
private static final int LEAHEN = 34111;
private static final int CAPTAIN_BATHIS = 30332;
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
// Items
private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20);
private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50);
private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item
private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1);
// HELMET FOR ALL ARMORS
private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1);
// HEAVY
private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1);
private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1);
private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1);
// LIGHT
private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1);
private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1);
private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1);
// ROBE
private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1);
private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1);
private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1);
// Monsters
private static final int MOUNTAIN_WEREWORLF = 21985;
private static final int MOUNTAIN_FUNGUES = 21986;
private static final int MUERTOS_WARRIOR = 21987;// NOTE: Murtos Fighter in old client
private static final int MUERTOS_CAPTAIN = 21988;
public Q10962_NewHorizons()
{
super(10962);
addStartNpc(LEAHEN);
addTalkId(LEAHEN, CAPTAIN_BATHIS);
addKillId(MOUNTAIN_WEREWORLF, MOUNTAIN_FUNGUES, MUERTOS_WARRIOR, MUERTOS_CAPTAIN);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_15_20_NEW_HORIZONS);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "34111-01.html":
{
qs.startQuest();
htmltext = event;
break;
}
case "30332-01.html":
{
htmltext = event;
break;
}
case "30332-02.html":
{
htmltext = event;
break;
}
case "30332-03.html":
{
htmltext = event;
break;
}
case "30332.html":
{
htmltext = event;
break;
}
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(-107827, 47535, -1448);
break;
}
case "NEXT_QUEST":
{
htmltext = "34111.htm";
break;
}
case "HeavyArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_ARMOR);
giveItems(player, MOON_GAUNTLETS);
giveItems(player, MOON_BOOTS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "LightArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_SHELL);
giveItems(player, MOON_LEATHER_GLOVES);
giveItems(player, MOON_SHOES);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "Robe.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_CAPE);
giveItems(player, MOON_SILK);
giveItems(player, MOON_SANDALS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 30)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000));
giveItems(killer, SOE_TO_CAPTAIN_BATHIS);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_THE_MONSTERS_IN_THE_GOLDEN_HILLS.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "34111.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case LEAHEN:
{
if (qs.isCond(1))
{
htmltext = "34111-01.html";
}
break;
}
case CAPTAIN_BATHIS:
{
if (qs.isCond(2))
{
htmltext = "30332.html";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == LEAHEN)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Robe.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Trader Vollodov:<br>
You do not meet the requirements of the quest (Quest is only available to 15-20 levels).
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Gatekeeper Bella:<br>
Well... I recommend the Ruins of Agony.<br>
It is an old ruin with few visitors.<br>
You can go there via Teleport, which you have just learned.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Gatekeeper Bella:<br>
You are a novice adventurer. Are you going on an adventure?<br>
If so, you did better first learn how to get to the places that match you level.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10966_ATripBegins 30256-01.html">"What should I do?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
Dont be so impatient. Follow my guidance and you will make a name for youself as a skilled adventurer in no time.<br>
First, let me tell you a couple of things that are of the highest importance no matter what you do in future. They are about <font color=LEVEL>auto-hunting</font>, which will come in handy if you learn about them before you starting fighting in earnest.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10966_ATripBegins 30332-02.htm">Next step</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
If you are studied them well lets get started<br>
But before that, its crucial for adventurers to know how to find places to explore that are suitable for their skill level. Do you know how?
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10966_ATripBegins 30332-03.htm">Tell me</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Captain Bathis:<br>
In that case, I will introduce you to someone more suitable.<br>
Go down the hill and you will see Gatekeeper Bella. Talk to Bella and she will tel youu how you can find places to explore that match your skill level and how you can get those places.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
Did you defeat the monsters?<br>
Hmm, you look a bit stronger too.
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10966_ATripBegins 30332-05.html">"Yes"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Captain Bathis:<br>
Good, then I got a reward for you! It will help you grow quickly.<br>
This bracelet in particular is quite valueable. I went through some trouble getting it in case you are under-prepared and suffer diffuculties. I hope you put it to a good use.
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Captain Bathis:<br>
Turning a greenhorn adventurer into a half-decent one has always been an important task.<br>
That is right, adventurers like you who havent completed a class transfer yes. If you are skilled enough to transfer class, then there is no reason to delay it.<br>
I would not force you if you are adamant about not transferring your class, but getting it done will be much more beneficial to you. And its not particularly complex either, just look for the Transfer Class button and press it, and thats it.<br>
Alright, enought about the class transfer here. Why dont you get serious and start prepairing to make a name for youself as an adventurer?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10966_ATripBegins 30332-01.htm">"What should I do?"</Button>
</body></html>

View File

@@ -0,0 +1,213 @@
/*
* 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.Q10966_ATripBegins;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.ChatType;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
/**
* A Trip Begins (10966)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10966_ATripBegins extends Quest
{
// NPCs
private static final int CAPTAIN_BATHIS = 30332;
private static final int BELLA = 30256;
// Items
private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10);// TODO: Replace with Advanced Scroll of Escape Event(s)
private static final ItemHolder TALISMAN_OF_ADEN = new ItemHolder(91745, 1);// TODO: Fix item
private static final ItemHolder SCROLL_OF_ENCHANT_TALISMAN_OF_ADEN = new ItemHolder(91756, 1);// TODO: Fix item
private static final ItemHolder ADVENTURERS_BRACELET = new ItemHolder(91934, 1);
// Monsters
private static final int ARACHNID_PREDATOR = 20926;
private static final int SKELETON_BOWMAN = 20051;
private static final int RUIN_SPARTOI = 20054;
private static final int RAGING_SPARTOI = 20060;
private static final int TUMRAN_BUGBEAR = 20062;
private static final int TUMRAN_BUGBEAR_WARRIOR = 20064;
// Misc
private static final int MAX_LEVEL = 25;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10966_ATripBegins()
{
super(10966);
addStartNpc(CAPTAIN_BATHIS);
addTalkId(CAPTAIN_BATHIS, BELLA);
addKillId(ARACHNID_PREDATOR, SKELETON_BOWMAN, RUIN_SPARTOI, RAGING_SPARTOI, RAGING_SPARTOI, TUMRAN_BUGBEAR, TUMRAN_BUGBEAR_WARRIOR);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_20_25_A_TRIP_BEGINS);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30332-01.htm":
{
htmltext = event;
break;
}
case "30332-02.htm":
{
htmltext = event;
break;
}
case "30332-03.htm":
{
qs.startQuest();
npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.TALK_TO_BELLA));
htmltext = event;
break;
}
case "30256-01.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "30332-05.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 500000, 12500);
giveItems(player, SOE_NOVICE);
giveItems(player, TALISMAN_OF_ADEN);
giveItems(player, SCROLL_OF_ENCHANT_TALISMAN_OF_ADEN);
giveItems(player, ADVENTURERS_BRACELET);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(2))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 300)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(3, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You have taken your first step as an adventurer.#Return to Bathis and get your reward.", 5000));
giveItems(killer, SOE_TO_CAPTAIN_BATHIS);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(2))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_THE_MONSTERS_IN_THE_RUINS_OF_AGONY.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30332.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case CAPTAIN_BATHIS:
{
if (qs.isCond(1))
{
htmltext = "30332-03.htm";
}
else if (qs.isCond(3))
{
htmltext = "30332-04.html";
}
break;
}
case BELLA:
{
if (qs.isCond(1))
{
htmltext = "30256.html";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == CAPTAIN_BATHIS)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,3 @@
<html><body>Captain bathis:<br>
You do not meet the requirements of the quest (Quest is only available to 20-25 levels).
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Trader Jackson:<br>
It is not much, but I hope it helps.<br>
By the way. I heard that Captain Bathis of Gludio Castle is looking for someone to help... Are you interested?<br>
<font color=LEVEL>(Open the Missions window and receive the reward for reaching level 10.)</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt NEXT_QUEST">"I will try"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Trader Jackson:<br>
It is quiter now. Thank you. Please take it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10981_UnbearableWolvesHowling 30002-02.htm">"Thank you"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Newbie Guide:<br>
Those Keltirs and Wolves are wandering around the front of the village, so it is beem chaotic.<br>
Jackson said he cannot even sleep at night because of their howling. He asked for those Wolves to be kicked out.<br>
Will you help?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10981_UnbearableWolvesHowling 30598-02.htm">"I will help"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Newbie Guide:<br>
Thank you!<br>
Please hunt 20 Wolves or Keltirs.<br1>
if you are going to the hunting ground, I can send you there.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10981_UnbearableWolvesHowling TELEPORT_TO_HUNTING_GROUND">Go to the hunting ground</Button>
</body></html>

View File

@@ -0,0 +1,191 @@
/*
* 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.Q10981_UnbearableWolvesHowling;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Unbearable Wolves Howling (10981)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10981_UnbearableWolvesHowling extends Quest
{
// NPCs
private static final int NEWBIE_GUIDE = 30598;
private static final int JACKSON = 30002;
// Items
private static final ItemHolder SOE_TO_JACKSON = new ItemHolder(91646, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10);
private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2);
private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2);
private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1);
// Monsters
private static final int BEARDED_KELTIR = 20481;
private static final int WOLF = 20120;
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10981_UnbearableWolvesHowling()
{
super(10981);
addStartNpc(NEWBIE_GUIDE);
addTalkId(NEWBIE_GUIDE, JACKSON);
addKillId(BEARDED_KELTIR, WOLF);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_2_20_UNBEARABLE_WOLVES_HOWLING);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(-90050, 241763, -3560);
break;
}
case "30598-02.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30002-02.htm":
{
if (qs.isStarted())
{
addExpAndSp(player, 260000, 6000);
giveItems(player, SOE_NOVICE);
giveItems(player, RING_NOVICE);
giveItems(player, EARRING_NOVICE);
giveItems(player, NECKLACE_NOVICE);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 20)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to return to Trader Jackson", 5000));
giveItems(killer, SOE_TO_JACKSON);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.KILL_WOLVES_AND_BEARDED_KELTIRS.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30598-01.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case NEWBIE_GUIDE:
{
if (qs.isCond(1))
{
htmltext = "30598-02.htm";
}
break;
}
case JACKSON:
{
if (qs.isCond(2))
{
htmltext = "30002.htm";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == NEWBIE_GUIDE)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,3 @@
<html><body>Newbie Guide:<br>
You do not meet the requirements of the quest (Quest is only available to 2-20 levels).
</body></html>

View File

@@ -0,0 +1,8 @@
<html><body>Trader Jackson:<br>
Captain Bathis want someone who knows about spiders, more than a veteran.<br1>
It looks like he wants to raise someone to hunt spiders expertly in Gludio.<br1>
How many, you ask? I think 30 should be enough.<br1>
There are many spiders to the west of the island. It is pretty far to walk there.<br1>
If you are going to the hunting ground, I can help you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt TELEPORT_TO_HUNTING_GROUND">Go to the hunting ground.</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Trader Jackson:<br>
Captain Bathis of Gludio Castle is looking for a spider expert to hunt spiders.<br>
Defeat some Giant Spiders as practice and go to find Captain Bathis.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt 30002-01.html">"I will do it"</Button>
</body></html>

View File

@@ -0,0 +1,14 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Armor<br><br>
[Recommended Classes]<br>
Warrior(Humans)<br1>
Knight(Humans)<br1>
Elven Knight(Elves)<br1>
Palus Knight(Dark Elves)<br1>
Orc Raider(Orcs)<br1>
Scavenger(Dwarves)<br1>
Artisan(Dwarves)<br1>
Trooper(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt HeavyArmor.html">Receive (Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,12 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Outfit<br><br>
[Recommended Classes]<br>
Rogue(Humans)<br1>
Elven Scout(Elves)<br1>
Assassin(Dark Elves)<br1>
Orc Monk(Orcs)<br1>
Soul Finder(Jin Kamael))<br1>
Warder(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt LightArmor.html">Receive (Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,13 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Doublet<br><br>
[Recommended Classes]<br>
Wizard(Humans)<br1>
Cleric(Humans)<br1>
Elven Wizard(Elves)<br1>
Oracle(Elves)<br1>
Dark Wizard(Dark Elves)<br1>
Shillien Oracle(Dark Elves)<br1>
Orc Shaman(Orcs)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt Robe.html">Receive (Robe) Moonshadow Double Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Captain Bathis:<br>
You came from Talking Island? I see. You know how hunt spiders?<br>
Hm. It should be good enough for you. You will have to get ready to go hunt. Pick one of these for your armor.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt 30332-01.html">(Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt 30332-02.html">(Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10982_SpiderHunt 30332-03.html">(Robe Armor) Moonshadow Double Set</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Armor.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Ourfit.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,275 @@
/*
* 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.Q10982_SpiderHunt;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* New Horizons (10982)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10982_SpiderHunt extends Quest
{
// NPCs
private static final int JACKSON = 30002;
private static final int CAPTAIN_BATHIS = 30332;
// Monsters
private static final int GIANT_SPIDER = 20103;
private static final int GIANT_FANG_SPIDER = 20106;
private static final int GIANT_BLADE_SPIDER = 20108;
// Items
private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20);
private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50);
private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item
private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1);
// HELMET FOR ALL ARMORS
private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1);
// HEAVY
private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1);
private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1);
private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1);
// LIGHT
private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1);
private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1);
private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1);
// ROBE
private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1);
private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1);
private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1);
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10982_SpiderHunt()
{
super(10982);
addStartNpc(JACKSON);
addTalkId(JACKSON, CAPTAIN_BATHIS);
addKillId(GIANT_SPIDER, GIANT_FANG_SPIDER, GIANT_BLADE_SPIDER);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_15_20_SPIDER_HUNT);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30002-01.html":
{
qs.startQuest();
htmltext = event;
break;
}
case "30332-01.html":
{
htmltext = event;
break;
}
case "30332-02.html":
{
htmltext = event;
break;
}
case "30332-03.html":
{
htmltext = event;
break;
}
case "30332.html":
{
htmltext = event;
break;
}
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(-117409, 227185, -2896);
break;
}
case "NEXT_QUEST":
{
htmltext = "30002.htm";
break;
}
case "HeavyArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_ARMOR);
giveItems(player, MOON_GAUNTLETS);
giveItems(player, MOON_BOOTS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "LightArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_SHELL);
giveItems(player, MOON_LEATHER_GLOVES);
giveItems(player, MOON_SHOES);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "Robe.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_CAPE);
giveItems(player, MOON_SILK);
giveItems(player, MOON_SANDALS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 30)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000));
giveItems(killer, SOE_TO_CAPTAIN_BATHIS);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.KILL_GIANT_SPIDERS.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30002.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case JACKSON:
{
if (qs.isCond(1))
{
htmltext = "30002-01.html";
}
break;
}
case CAPTAIN_BATHIS:
{
if (qs.isCond(2))
{
htmltext = "30332.html";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == JACKSON)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Robe.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Trader Vollodov:<br>
You do not meet the requirements of the quest (Quest is only available to 15-20 levels).
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Trader Herbiel:<br>
I heard that Captain Bathis of GLudio Castle is looking for some spider web. He wants to make a rope with that. I wonder for what?<br>
Would you like to try, adventurer?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb NEXT_QUEST">"How much doest he need?"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Trader Herbiel:<br>
Im feeling great. It is not much, but please take it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10983_TroubledForest 30150-02.htm">You have my gratitude.</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Newbie Guide:<br>
Have you seen the Goblin Raiders and the Kaboo Orcs outside the village? They are very violent.<br1>
Herbiel was chased by them before. That is why he is looking for someone to beat them up.<br>
Will you help?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10983_TroubledForest 30599-02.htm">"I will help"</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Newbie Guide:<br>
Thank you!<br>
Please beath up 20 Goblin Raiders and Kaboo Orcs causing trouble in front of the village.<br>
If you are going to hunting ground, I can send you there. You say it is too close?<br>
Still, I like doing this. Just let me know.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10983_TroubledForest TELEPORT_TO_HUNTING_GROUND">Go to the hunting ground.</Button>
</body></html>

View File

@@ -0,0 +1,191 @@
/*
* 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.Q10983_TroubledForest;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Troubled Forest (10983)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10983_TroubledForest extends Quest
{
// NPCs
private static final int NEWBIE_GUIDE = 30599;
private static final int HERBIEL = 30150;
// Monsters
private static final int GOBLIN_RAIDER = 20325;
private static final int KABOO_ORC = 20468;
// Items
private static final ItemHolder SOE_TO_HERBIEL = new ItemHolder(91647, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10);
private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2);
private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2);
private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1);
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10983_TroubledForest()
{
super(10983);
addStartNpc(NEWBIE_GUIDE);
addTalkId(NEWBIE_GUIDE, HERBIEL);
addKillId(GOBLIN_RAIDER, KABOO_ORC);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_2_20_TROUBLED_FOREST);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(52746, 49932, -3480);
break;
}
case "30599-02.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30150-02.htm":
{
if (qs.isStarted())
{
addExpAndSp(player, 260000, 6000);
giveItems(player, SOE_NOVICE);
giveItems(player, RING_NOVICE);
giveItems(player, EARRING_NOVICE);
giveItems(player, NECKLACE_NOVICE);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 20)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to return to Trader Herbiel.", 5000));
giveItems(killer, SOE_TO_HERBIEL);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.KILL_ORCS_AND_GOBLINS.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30599-01.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case NEWBIE_GUIDE:
{
if (qs.isCond(1))
{
htmltext = "30599-02.htm";
}
break;
}
case HERBIEL:
{
if (qs.isCond(2))
{
htmltext = "30150.htm";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == NEWBIE_GUIDE)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,3 @@
<html><body>Newbie Guide:<br>
You do not meet the requirements of the quest (Quest is only available to 2-20 levels).
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Trader Herbiel:<br>
I think 30 Spider Webs should be enough. Once you get it, go to straight to Captain Bathis.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb TELEPORT_TO_HUNTING_GROUND">Go to the hunting ground.</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Trader Herbiel:<br>
I heard that Captain Bathis of Gludio Castle is looking for some spider web. He want to make a rope with that. I wonder for what?<br>
Would you like to try, adventurer?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb 30150-01.html">"How much doest he need?"</Button>
</body></html>

View File

@@ -0,0 +1,14 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Armor<br><br>
[Recommended Classes]<br>
Warrior(Humans)<br1>
Knight(Humans)<br1>
Elven Knight(Elves)<br1>
Palus Knight(Dark Elves)<br1>
Orc Raider(Orcs)<br1>
Scavenger(Dwarves)<br1>
Artisan(Dwarves)<br1>
Trooper(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb HeavyArmor.html">Receive (Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,12 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Outfit<br><br>
[Recommended Classes]<br>
Rogue(Humans)<br1>
Elven Scout(Elves)<br1>
Assassin(Dark Elves)<br1>
Orc Monk(Orcs)<br1>
Soul Finder(Jin Kamael))<br1>
Warder(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb LightArmor.html">Receive (Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,13 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Doublet<br><br>
[Recommended Classes]<br>
Wizard(Humans)<br1>
Cleric(Humans)<br1>
Elven Wizard(Elves)<br1>
Oracle(Elves)<br1>
Dark Wizard(Dark Elves)<br1>
Shillien Oracle(Dark Elves)<br1>
Orc Shaman(Orcs)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb Robe.html">Receive (Robe) Moonshadow Double Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,9 @@
<html><body>Captain Bathis:<br>
Lets see<br>
Hm, this should be enough.<br>
I cant tell you the details, but there are many creatures in the swamp these days. Im prepared for it. It is nothing to be worried about.<br>
Since you helped me. I looked for armor that could fit you. Pick one that you would like.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb 30332-01.html">(Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb 30332-02.html">(Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10984_CollectSpiderweb 30332-03.html">(Robe Armor) Moonshadow Double Set</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Armor.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Ourfit.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,276 @@
/*
* 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.Q10984_CollectSpiderweb;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Collect Spiderweb (10984)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10984_CollectSpiderweb extends Quest
{
// NPCs
private static final int HERBIEL = 30150;
private static final int CAPTAIN_BATHIS = 30332;
// Monsters
private static final int HOOK_SPIDER = 20308;
private static final int CRIMSON_SPIDER = 20460;
private static final int PINCER_SPIDER = 20466;
// Items
private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20);
private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50);
private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item
private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1);
// HELMET FOR ALL ARMORS
private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1);
// HEAVY
private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1);
private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1);
private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1);
// LIGHT
private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1);
private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1);
private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1);
// ROBE
private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1);
private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1);
private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1);
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10984_CollectSpiderweb()
{
super(10984);
addStartNpc(HERBIEL);
addTalkId(HERBIEL, CAPTAIN_BATHIS);
addKillId(HOOK_SPIDER, CRIMSON_SPIDER, PINCER_SPIDER);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_15_20_SPIDER_WEB);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30150-01.html":
{
qs.startQuest();
htmltext = event;
break;
}
case "30332-01.html":
{
htmltext = event;
break;
}
case "30332-02.html":
{
htmltext = event;
break;
}
case "30332-03.html":
{
htmltext = event;
break;
}
case "30332.html":
{
htmltext = event;
break;
}
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(5135, 68148, -3256);
break;
}
case "NEXT_QUEST":
{
htmltext = "30150.htm";
break;
}
case "HeavyArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_ARMOR);
giveItems(player, MOON_GAUNTLETS);
giveItems(player, MOON_BOOTS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "LightArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_SHELL);
giveItems(player, MOON_LEATHER_GLOVES);
giveItems(player, MOON_SHOES);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "Robe.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_CAPE);
giveItems(player, MOON_SILK);
giveItems(player, MOON_SANDALS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 30)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000));
giveItems(killer, SOE_TO_CAPTAIN_BATHIS);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
// TODO: Find correct ID of string
holder.add(new NpcLogListHolder(NpcStringId.LV_15_20_SPIDER_WEB_IN_PROGRESS.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30150.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case HERBIEL:
{
if (qs.isCond(1))
{
htmltext = "30150-01.html";
}
break;
}
case CAPTAIN_BATHIS:
{
if (qs.isCond(2))
{
htmltext = "30332.html";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == HERBIEL)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Robe.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Trader Vollodov:<br>
You do not meet the requirements of the quest (Quest is only available to 15-20 levels).
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Trader Vollodos:<br>
Lets see... Some accessories... And a Scroll of Escape.<br>
Oh, Im sorry.<br>
This isnt to make up for it, but I heard that Captain Bathis of Gludio Castle is looking for someone to help. Are you interested?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster NEXT_QUEST">"I will try"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Trader Vollodos:<br>
I heard about you from the Newbie Guide. Here is the item.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10985_CleaningUpTheGround 30137-02.htm">Receive the item.</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Newbie Guide:<br>
Did you see the goblins in front of the village? There are even dirty Imps.<br>
I need them to disappear to feel better.<br>
You want to try?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10985_CleaningUpTheGround 30600-02.htm">"I will do it."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Newbie Guide:<br>
Take a care of those dirty bastards.<br>Get rid of those Imps, Goblins, and Ashen Wolves. How many you ask? About 20 should be enough.<br>
Dont you want to go now? I can send you there.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10985_CleaningUpTheGround TELEPORT_TO_HUNTING_GROUND">"Go to the hunting ground."</Button>
</body></html>

View File

@@ -0,0 +1,192 @@
/*
* 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.Q10985_CleaningUpTheGround;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Cleaning-Up The Ground (10985)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10985_CleaningUpTheGround extends Quest
{
// NPCs
private static final int NEWBIE_GUIDE = 30600;
private static final int VOLODOS = 30137;
// Monsters
private static final int ASHEN_WOLF = 20456;
private static final int GOBLIN = 20003;
private static final int IMP = 20004;
// Items
private static final ItemHolder SOE_TO_VOLLODOS = new ItemHolder(91648, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10);
private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2);
private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2);
private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1);
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10985_CleaningUpTheGround()
{
super(10985);
addStartNpc(NEWBIE_GUIDE);
addTalkId(NEWBIE_GUIDE, VOLODOS);
addKillId(ASHEN_WOLF, GOBLIN, IMP);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_2_20_CLEANING_UP_THE_GROUNDS);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(8945, 3529, -2504);
break;
}
case "30600-02.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30137-02.htm":
{
if (qs.isStarted())
{
addExpAndSp(player, 260000, 6000);
giveItems(player, SOE_NOVICE);
giveItems(player, RING_NOVICE);
giveItems(player, EARRING_NOVICE);
giveItems(player, NECKLACE_NOVICE);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 20)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory.", 5000));
giveItems(killer, SOE_TO_VOLLODOS);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.LV_15_20_TERRIBLE_SWAMP_MONSTERS_2.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30600-01.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case NEWBIE_GUIDE:
{
if (qs.isCond(1))
{
htmltext = "30600-02.htm";
}
break;
}
case VOLODOS:
{
if (qs.isCond(2))
{
htmltext = "30137.htm";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == NEWBIE_GUIDE)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,3 @@
<html><body>Newbie Guide:<br>
You do not meet the requirements of the quest (Quest is only available to 2-20 levels).
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Trader Vollodos:<br>
Captain Bathis asked to get rid of the Undead in the Swampland. I heard that there are Marsh Zombies and Dark Horrors.<br>
Im counting on you.<br>
But it is pretty far to walk all the way to the Swampland.<br>
If you are going to the hunting ground, I can help you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster TELEPORT_TO_HUNTING_GROUND">Go to the hunting ground.</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Trader Vollodos:<br>
Captain Bathis of Gludio Castle is looking for someone to take care of the Undead in the Swamplant.<br>
Gludio Castle is so far from here, so Im not sure why he requested that.<br>
Will you do it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster 30137-01.html">"I will do it"</Button>
</body></html>

View File

@@ -0,0 +1,14 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Armor<br><br>
[Recommended Classes]<br>
Warrior(Humans)<br1>
Knight(Humans)<br1>
Elven Knight(Elves)<br1>
Palus Knight(Dark Elves)<br1>
Orc Raider(Orcs)<br1>
Scavenger(Dwarves)<br1>
Artisan(Dwarves)<br1>
Trooper(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster HeavyArmor.html">Receive (Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,12 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Outfit<br><br>
[Recommended Classes]<br>
Rogue(Humans)<br1>
Elven Scout(Elves)<br1>
Assassin(Dark Elves)<br1>
Orc Monk(Orcs)<br1>
Soul Finder(Jin Kamael))<br1>
Warder(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster LightArmor.html">Receive (Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,13 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Doublet<br><br>
[Recommended Classes]<br>
Wizard(Humans)<br1>
Cleric(Humans)<br1>
Elven Wizard(Elves)<br1>
Oracle(Elves)<br1>
Dark Wizard(Dark Elves)<br1>
Shillien Oracle(Dark Elves)<br1>
Orc Shaman(Orcs)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster Robe.html">Receive (Robe) Moonshadow Double Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Captain Bathis:<br>
I heard from Vollodos. You are skilled. if there were more monsters in the swamp, they might have come to Gludio. Thank you<br>
its not much, but pick an armor piece.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster 30332-01.html">(Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster 30332-02.html">(Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10986_SwampMonster 30332-03.html">(Robe Armor) Moonshadow Double Set</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Armor.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Ourfit.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,276 @@
/*
* 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.Q10986_SwampMonster;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Swamp Monsters (10986)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10986_SwampMonster extends Quest
{
// NPCs
private static final int VOLODOS = 30137;
private static final int CAPTAIN_BATHIS = 30332;
// Monsters
private static final int MARSH_ZOMBIE = 20015; // NOTE: Zombie Forest Elf in old client
private static final int MARSH_ZOMBIE_SCOUT = 20020; // NOTE: Zombie Forest Elf Resercher in old client
private static final int DARK_HORROR = 20105;
private static final int LESSER_DARK_HORROR = 20025;
// Items
private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20);
private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50);
private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item
private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1);
// HELMET FOR ALL ARMORS
private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1);
// HEAVY
private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1);
private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1);
private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1);
// LIGHT
private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1);
private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1);
private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1);
// ROBE
private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1);
private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1);
private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1);
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10986_SwampMonster()
{
super(10986);
addStartNpc(VOLODOS);
addTalkId(VOLODOS, CAPTAIN_BATHIS);
addKillId(MARSH_ZOMBIE, MARSH_ZOMBIE_SCOUT, DARK_HORROR, LESSER_DARK_HORROR);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_15_20_TERRIBLE_SWAMP_MONSTERS);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30137-01.html":
{
qs.startQuest();
htmltext = event;
break;
}
case "30332-01.html":
{
htmltext = event;
break;
}
case "30332-02.html":
{
htmltext = event;
break;
}
case "30332-03.html":
{
htmltext = event;
break;
}
case "30332.html":
{
htmltext = event;
break;
}
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(-19004, 47388, -3608);
break;
}
case "NEXT_QUEST":
{
htmltext = "30137.htm";
break;
}
case "HeavyArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_ARMOR);
giveItems(player, MOON_GAUNTLETS);
giveItems(player, MOON_BOOTS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "LightArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_SHELL);
giveItems(player, MOON_LEATHER_GLOVES);
giveItems(player, MOON_SHOES);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "Robe.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_CAPE);
giveItems(player, MOON_SILK);
giveItems(player, MOON_SANDALS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 30)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000));
giveItems(killer, SOE_TO_CAPTAIN_BATHIS);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.KILL_ZOMBIES_AND_DARK_HORRORS.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30137.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case VOLODOS:
{
if (qs.isCond(1))
{
htmltext = "30137-01.html";
}
break;
}
case CAPTAIN_BATHIS:
{
if (qs.isCond(2))
{
htmltext = "30332.html";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == VOLODOS)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Robe.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Trader Vollodov:<br>
You do not meet the requirements of the quest (Quest is only available to 15-20 levels).
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Trader Uska:<br>
I heard someting that might help you. The Maraku Werewolves seem to be scheming something. Its something they always do, but it looks like it is something big this time. Even Captain Bathis from Gludio Castle is worried about what the Maraku Werewolves are up to. How about taking care of the Maraku Werewolves and going to Bathis?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy NEXT_QUEST">"I will try"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Trader Uska:<br>
I heard that you beat those guys up. Our ancestors will be able to rest in peace.Here is the item I was storing. Thank you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10987_PlunderedGraves 30560-02.htm">Thank you</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Newbie Guide:<br>
You know that many ancestora are resting in the Valley of Heroes, right?<br>
But it looks like the Kasha Wolves and Goblin Tomb Raiders have been damaging the tombs.<br1>
Will you take care of those bastards? I have left some rewards with Uska, so go after you finish the job.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10987_PlunderedGraves 30602-02.htm">"I cannot forgive them, no."</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Newbie Guide:<br>
Hunt those Kasha Wolves, Goblin Tomb Raiders, and Rakeclaw Imps. They dared to damage the tombs of our ancestors.<br>
20 of them should be enough. And one you are done, go find Uska. I left some rewards with him.<br>
If you are going to hunting ground, I can send you there.
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10987_PlunderedGraves TELEPORT_TO_HUNTING_GROUND">"Go to the hunting ground."</Button>
</body></html>

View File

@@ -0,0 +1,193 @@
/*
* 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.Q10987_PlunderedGraves;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Plundered Graves (10987)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10987_PlunderedGraves extends Quest
{
// NPCs
private static final int NEWBIE_GUIDE = 30602;
private static final int USKA = 30560;
// Monsters
private static final int KASHA_WOLF = 20475;
private static final int KASHA_TIMBER_WOLF = 20477; // NOTE: Kasha Forest Wolf in old client
private static final int GOBLIN_TOMB_RAIDER = 20319;
private static final int RAKECLAW_IMP_HUNTER = 20312;
// Items
private static final ItemHolder SOE_TO_USKA = new ItemHolder(91649, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 10);
private static final ItemHolder RING_NOVICE = new ItemHolder(49041, 2);
private static final ItemHolder EARRING_NOVICE = new ItemHolder(49040, 2);
private static final ItemHolder NECKLACE_NOVICE = new ItemHolder(49039, 1);
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10987_PlunderedGraves()
{
super(10987);
addStartNpc(NEWBIE_GUIDE);
addTalkId(NEWBIE_GUIDE, USKA);
addKillId(KASHA_WOLF, KASHA_TIMBER_WOLF, GOBLIN_TOMB_RAIDER, RAKECLAW_IMP_HUNTER);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_2_20_PLUNDERED_GRAVES);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(-39527, -117654, -1840);
break;
}
case "30602-02.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30560-02.htm":
{
if (qs.isStarted())
{
addExpAndSp(player, 260000, 6000);
giveItems(player, SOE_NOVICE);
giveItems(player, RING_NOVICE);
giveItems(player, EARRING_NOVICE);
giveItems(player, NECKLACE_NOVICE);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 20)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory.", 5000));
giveItems(killer, SOE_TO_USKA);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.TRACK_DOWN_GRAVE_ROBBERS.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30602-01.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case NEWBIE_GUIDE:
{
if (qs.isCond(1))
{
htmltext = "30602-02.htm";
}
break;
}
case USKA:
{
if (qs.isCond(2))
{
htmltext = "30560.htm";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == NEWBIE_GUIDE)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,3 @@
<html><body>Newbie Guide:<br>
You do not meet the requirements of the quest (Quest is only available to 2-20 levels).
</body></html>

View File

@@ -0,0 +1,14 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Armor<br><br>
[Recommended Classes]<br>
Warrior(Humans)<br1>
Knight(Humans)<br1>
Elven Knight(Elves)<br1>
Palus Knight(Dark Elves)<br1>
Orc Raider(Orcs)<br1>
Scavenger(Dwarves)<br1>
Artisan(Dwarves)<br1>
Trooper(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy HeavyArmor.html">Receive (Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,12 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Outfit<br><br>
[Recommended Classes]<br>
Rogue(Humans)<br1>
Elven Scout(Elves)<br1>
Assassin(Dark Elves)<br1>
Orc Monk(Orcs)<br1>
Soul Finder(Jin Kamael))<br1>
Warder(Jin Kamael)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy LightArmor.html">Receive (Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,13 @@
<html><body>Captain Bathis:<br>
If you want to transfer to the following classes, I recommend Moonshadow Doublet<br><br>
[Recommended Classes]<br>
Wizard(Humans)<br1>
Cleric(Humans)<br1>
Elven Wizard(Elves)<br1>
Oracle(Elves)<br1>
Dark Wizard(Dark Elves)<br1>
Shillien Oracle(Dark Elves)<br1>
Orc Shaman(Orcs)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy Robe.html">Receive (Robe) Moonshadow Double Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy 30332.html">Back</Button>
</body></html>

View File

@@ -0,0 +1,9 @@
<html><body>Captain Bathis:<br>
Its you- The one who made Maraku Werevolves shiver...<br>
I was worrived about what they were up to, but thanks to you, I am relived.<br>
What?<br1>
You look curious. But Im sorry. I dont think I can tell you. I will give you an armor instead, so pick one you like.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy 30332-01.html">(Heavy Armor) Moonshadow Armor Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy 30332-02.html">(Light Armor) Moonshadow Outfit Set</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy 30332-03.html">(Robe Armor) Moonshadow Double Set</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Trader Uska:<br>
I heard that the Maraku Werewolves are raising spiders to do something. We better give them a warning. Defeating 30 of them should be good enough of a warning. Will you go?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy TELEPORT_TO_HUNTING_GROUND">Go to the hunting ground.</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Trader Uska:<br>
You want to know what counts as a warning?<br>
Lets me see... Defeat 30 of Maraku Werewolfs, and that should do the trick.<br>
Will you do it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10988_Conspiracy 30560-01.html">"I will do it."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Armor.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Ourfit.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,276 @@
/*
* 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.Q10988_Conspiracy;
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.ItemHolder;
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.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Conspiracy (10988)
* @author RobikBobik
* @Notee: Based on NA server September 2019
*/
public class Q10988_Conspiracy extends Quest
{
// NPCs
private static final int USKA = 30560;
private static final int CAPTAIN_BATHIS = 30332;
// Monsters
private static final int KASHA_SPIDER = 20474;
private static final int KASHA_BLADE_SPIDER = 20478;
private static final int MARAKU_WEREVOLF_CHIEFTAIN = 20364;
private static final int EVIL_EYE_PATROL = 20428;
// Items
private static final ItemHolder SOE_TO_CAPTAIN_BATHIS = new ItemHolder(91651, 1);
private static final ItemHolder SOE_NOVICE = new ItemHolder(10650, 20);
private static final ItemHolder SPIRIT_ORE = new ItemHolder(3031, 50);
private static final ItemHolder HP_POTS = new ItemHolder(91912, 50);// TODO: Finish Item
private static final ItemHolder RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT = new ItemHolder(91840, 1);
// HELMET FOR ALL ARMORS
private static final ItemHolder MOON_HELMET = new ItemHolder(7850, 1);
// HEAVY
private static final ItemHolder MOON_ARMOR = new ItemHolder(7851, 1);
private static final ItemHolder MOON_GAUNTLETS = new ItemHolder(7852, 1);
private static final ItemHolder MOON_BOOTS = new ItemHolder(7853, 1);
// LIGHT
private static final ItemHolder MOON_SHELL = new ItemHolder(7854, 1);
private static final ItemHolder MOON_LEATHER_GLOVES = new ItemHolder(7855, 1);
private static final ItemHolder MOON_SHOES = new ItemHolder(7856, 1);
// ROBE
private static final ItemHolder MOON_CAPE = new ItemHolder(7857, 1);
private static final ItemHolder MOON_SILK = new ItemHolder(7858, 1);
private static final ItemHolder MOON_SANDALS = new ItemHolder(7859, 1);
// Misc
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10988_Conspiracy()
{
super(10988);
addStartNpc(USKA);
addTalkId(USKA, CAPTAIN_BATHIS);
addKillId(KASHA_SPIDER, KASHA_BLADE_SPIDER, MARAKU_WEREVOLF_CHIEFTAIN, EVIL_EYE_PATROL);
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_15_20_CONSPIRACY);
}
@Override
public boolean checkPartyMember(PlayerInstance member, Npc npc)
{
final QuestState qs = getQuestState(member, false);
return ((qs != null) && qs.isStarted());
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30560-01.html":
{
qs.startQuest();
htmltext = event;
break;
}
case "30332-01.html":
{
htmltext = event;
break;
}
case "30332-02.html":
{
htmltext = event;
break;
}
case "30332-03.html":
{
htmltext = event;
break;
}
case "30332.html":
{
htmltext = event;
break;
}
case "TELEPORT_TO_HUNTING_GROUND":
{
player.teleToLocation(13136, -131688, -1312);
break;
}
case "NEXT_QUEST":
{
htmltext = "30560.htm";
break;
}
case "HeavyArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_ARMOR);
giveItems(player, MOON_GAUNTLETS);
giveItems(player, MOON_BOOTS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "LightArmor.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_SHELL);
giveItems(player, MOON_LEATHER_GLOVES);
giveItems(player, MOON_SHOES);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
case "Robe.html":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, RICE_CAKE_OF_FLAMING_FIGHTING_SPIRIT_EVENT);
giveItems(player, MOON_HELMET);
giveItems(player, MOON_CAPE);
giveItems(player, MOON_SILK);
giveItems(player, MOON_SANDALS);
player.sendPacket(new ExShowScreenMessage("Completed the tutorial.#Now try the first class transfer and as instructed by Bathis carry out the Adventurers Journey misions to grow your character.", 5000));
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
if (killCount < 30)
{
qs.set(KILL_COUNT_VAR, killCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
sendNpcLogList(killer);
}
else
{
qs.setCond(2, true);
qs.unset(KILL_COUNT_VAR);
killer.sendPacket(new ExShowScreenMessage("You hunted all monsters.#Use the Scroll of Escape in you inventory to go to Captain Bathis in the Town of Gludio.", 5000));
giveItems(killer, SOE_TO_CAPTAIN_BATHIS);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.EXPOSE_A_PLOT_OF_MARAKU_WEREWOLVES.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "30560.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case USKA:
{
if (qs.isCond(1))
{
htmltext = "30560-01.html";
}
break;
}
case CAPTAIN_BATHIS:
{
if (qs.isCond(2))
{
htmltext = "30332.html";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == USKA)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
You picked Moonshadow Robe.<br><br>
You are getting stronger very quickly, so if you have reached <font color=LEVEL>level 20</font>, go to the village and start your <font color=LEVEL>class transfer</font>. You will get even stronger.<br>
I ve prepared a few things for you. Hope that the <font color=LEVEL>HP Potions</font>, and the <font color=LEVEL>Rice Cake of Flaming Fighting Spirit</font> are useful.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Trader Vollodov:<br>
You do not meet the requirements of the quest (Quest is only available to 15-20 levels).
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Newbie Guide:<br>
I heard that Wolves and keltiers are wandering in front of the village. Those things get in the way of work. Especially when sending food to the mines, those Gnomes make some loud noises, so people hate it.<br>
I want to show them away. Can you help?<br>
If you help, I will talk to Gerald and get you some accessories.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10989_DangerousPredators 30601-02.htm">"Sure."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Newbie Guide:<br>
Thank you. Hunt 20 from either Longtail Keltirs , Elder Longtail Keltirs, or Black Wolves.<br1>
Get going.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10989_DangerousPredators TELEPORT_TO_HUNTING_GROUND">"Go to the hunting ground."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Priest of the Earth Gerald:<br>
I heard the Captain Bathis from Gludio Castle has been looking for tarantula by-products...
Are you interested?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10990_PoisonExtraction NEXT_QUEST">"I will try"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Priest of the Earth Gerald:<br>
I heard about you from the Newbie Guide. You kicked out those rats from around the village. This is a token of my appreciation. Please take it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10989_DangerousPredators 30650-02.htm">Receive the item.</Button>
</body></html>

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