Addition of quest Elven Botany (10851).

Contributed by gigilo1968.
This commit is contained in:
MobiusDevelopment
2019-06-11 20:11:19 +00:00
parent 1cd1c00b9c
commit 943e925f08
80 changed files with 1290 additions and 192 deletions

View File

@@ -85,7 +85,6 @@
10846 Bloody Battle - Meeting the Commander 10846 Bloody Battle - Meeting the Commander
10848 Trials before the Battle 10848 Trials before the Battle
10849 Trials for Adaptation 10849 Trials for Adaptation
10851 Elven Botany
10852 The Mother Tree Revival Project 10852 The Mother Tree Revival Project
10853 To Weaken the Giants 10853 To Weaken the Giants
10854 To Seize the Fortress 10854 To Seize the Fortress

View File

@@ -0,0 +1,197 @@
/*
* 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.Q10851_ElvenBotany;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
/**
* Elven Botany (10851)
* @URL https://l2wiki.com/Elven_Botany
* @author Gigi
* @date 2019-06-11 - [21:21:45]
*/
public class Q10851_ElvenBotany extends Quest
{
// NPCs
private static final int CELESTIEL = 34234;
private static final int IRENE = 34233;
// Misc
private static final int MIN_LEVEL = 102;
// Monsters
private static final int FLOWER_BUD = 19600;
private static final int APHERUS = 23581;
// Items
private static final int APHERUS_SAMPLE = 47200;
private static final int FLOWER_BUD_SAMPLE = 47201;
private static final int BASIC_SUPPLY_BOX = 47178;
public Q10851_ElvenBotany()
{
super(10851);
addStartNpc(CELESTIEL);
addTalkId(CELESTIEL, IRENE);
addKillId(FLOWER_BUD, APHERUS);
registerQuestItems(APHERUS_SAMPLE, FLOWER_BUD_SAMPLE);
addCondMinLevel(MIN_LEVEL, "guardian_follower_q10851_02.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 2, "guardian_follower_q10851_03.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = event;
switch (event)
{
case "guardian_follower_q10851_04.htm":
case "guardian_follower_q10851_05.htm":
{
htmltext = event;
break;
}
case "guardian_follower_q10851_06.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "guardian_leader_q10851_02.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "guardian_leader_q10851_05.html":
{
if (qs.isCond(3) && (player.getLevel() >= MIN_LEVEL))
{
giveItems(player, BASIC_SUPPLY_BOX, 1);
addExpAndSp(player, 44_442_855_900L, 44_442_720);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "guardian_follower_q10851_04.htm";
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case CELESTIEL:
{
if (qs.getCond() > 0)
{
htmltext = "guardian_follower_q10851_07.html";
}
break;
}
case IRENE:
{
if (qs.isCond(1))
{
htmltext = "guardian_leader_q10851_01.html";
}
else if (qs.isCond(2))
{
htmltext = "guardian_leader_q10851_03.html";
}
else
{
htmltext = "guardian_leader_q10851_04.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
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))
{
switch (npc.getId())
{
case FLOWER_BUD:
{
if (getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) < 50)
{
giveItems(killer, FLOWER_BUD_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
case APHERUS:
{
if (getQuestItemsCount(killer, APHERUS_SAMPLE) < 150)
{
giveItems(killer, APHERUS_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
}
if ((getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) >= 50) && (getQuestItemsCount(killer, APHERUS_SAMPLE) >= 150))
{
qs.setCond(3, true);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, if you could spare the time, could you help me out?<br>
I need help for something, and you could be the one I can trust.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_04.htm">"What is it?"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
I'm sorry, but this is a dangerous place. We cannot guarantee your safety. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters with Lv. 102 or higher whose faction level with the Mother Tree Guardian is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
I'm sorry, but I'm rather iffy about putting you on assignment.<br>
This is a dangerous place. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters whose faction level with the Mother Tree Guardians is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
I am Celestiel. I have come here with Irene in search of a way to save the Mother Tree.<br>
I know how to do bits and pieces of many things. I'm usually studying changes in the plants and the soil here, but I need more samples for my research. That's why I'm asking you for help.<br>
I've been searching for the samples firsthand until now, but it's been taking me so long that I've been falling behind on my research. I have no choice but to dedicate myself to research while having somebody else hunt around for samples.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_05.htm">"What samples do you need?"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
Oh! The samples I need are samples of a few particular species of plant that live here.<br>
Until now, Fairy Mimyu has been helping me collect enough Nymph Stamen, but it's too hard finding samples other than those.<br>
But I'm a bit hesitant about asking Fairy Mimyu to find me the other samples too.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_06.htm">"What samples do I need to find?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, so will you help me out?<br>
If that's the case, the samples I need are... oh, I guess you don't exactly how many of which samples I'll be needing, since Irene was the one who was managing the samples.<br>Would you go to Irene and ask which samples required for the research are?<br>
See, I've been bugging Irene with a bunch of questions, even just now... I think it would be better for you to go and ask instead of me.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
Please go to Irene and ask her which samples needed for the biological research are.<br>
If you ask her yourself, she's sure to give you a kind answer with a smile.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
What's going on?<br>
I thought you were speaking with Celestiel until just now.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_02.html">"So the samples..."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
I was wondering what Celestiel was talking so enthusiastically about. I guess you were talking about the samples.<br>
I swear she told me just a short while ago that she needed some kind of sample... Well, with her being as busy as she is nowadays with her research, her being so forgetful is understandable.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guardian Irene:<br>
You don't have enough samples.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Are you done collecting the samples?<br>
We need samples to conduct research, but it's the part collecting the samples that discourages everyone. It's not so easy finding samples, is it?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_05.html">"Yes, right."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Thank you. Using these samples, we will be able to investigate the growth and changes around here.<br>
If we discover what changes are going on right now in the Enchanted Valley, we might need to ask you to do some other work for us.<br>
If that happens, I hope you'll help us again.
</body></html>

View File

@@ -458,6 +458,7 @@ import quests.Q10839_BlackbirdsNameValue.Q10839_BlackbirdsNameValue;
import quests.Q10840_TimeToRecover.Q10840_TimeToRecover; import quests.Q10840_TimeToRecover.Q10840_TimeToRecover;
import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress; import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress;
import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley; import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley;
import quests.Q10851_ElvenBotany.Q10851_ElvenBotany;
import quests.not_done.Q00504_CompetitionForTheBanditStronghold; import quests.not_done.Q00504_CompetitionForTheBanditStronghold;
import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts; import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts;
import quests.not_done.Q00744_TheAlligatorHunterReturns; import quests.not_done.Q00744_TheAlligatorHunterReturns;
@@ -520,7 +521,6 @@ import quests.not_done.Q10845_BloodyBattleRescueTheSmiths;
import quests.not_done.Q10846_BloodyBattleMeetingTheCommander; import quests.not_done.Q10846_BloodyBattleMeetingTheCommander;
import quests.not_done.Q10848_TrialsBeforeTheBattle; import quests.not_done.Q10848_TrialsBeforeTheBattle;
import quests.not_done.Q10849_TrialsForAdaptation; import quests.not_done.Q10849_TrialsForAdaptation;
import quests.not_done.Q10851_ElvenBotany;
import quests.not_done.Q10852_TheMotherTreeRevivalProject; import quests.not_done.Q10852_TheMotherTreeRevivalProject;
import quests.not_done.Q10853_ToWeakenTheGiants; import quests.not_done.Q10853_ToWeakenTheGiants;
import quests.not_done.Q10854_ToSeizeTheFortress; import quests.not_done.Q10854_ToSeizeTheFortress;
@@ -1039,7 +1039,7 @@ public class QuestMasterHandler
Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done. Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done.
Q10848_TrialsBeforeTheBattle.class, // TODO: Not done. Q10848_TrialsBeforeTheBattle.class, // TODO: Not done.
Q10849_TrialsForAdaptation.class, // TODO: Not done. Q10849_TrialsForAdaptation.class, // TODO: Not done.
Q10851_ElvenBotany.class, // TODO: Not done. Q10851_ElvenBotany.class,
Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done. Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done.
Q10853_ToWeakenTheGiants.class, // TODO: Not done. Q10853_ToWeakenTheGiants.class, // TODO: Not done.
Q10854_ToSeizeTheFortress.class, // TODO: Not done. Q10854_ToSeizeTheFortress.class, // TODO: Not done.

View File

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

View File

@@ -154,7 +154,6 @@
10846 Bloody Battle - Meeting the Commander 10846 Bloody Battle - Meeting the Commander
10848 Trials before the Battle 10848 Trials before the Battle
10849 Trials for Adaptation 10849 Trials for Adaptation
10851 Elven Botany
10852 The Mother Tree Revival Project 10852 The Mother Tree Revival Project
10853 To Weaken the Giants 10853 To Weaken the Giants
10854 To Seize the Fortress 10854 To Seize the Fortress

View File

@@ -0,0 +1,197 @@
/*
* 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.Q10851_ElvenBotany;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
/**
* Elven Botany (10851)
* @URL https://l2wiki.com/Elven_Botany
* @author Gigi
* @date 2019-06-11 - [21:21:45]
*/
public class Q10851_ElvenBotany extends Quest
{
// NPCs
private static final int CELESTIEL = 34234;
private static final int IRENE = 34233;
// Misc
private static final int MIN_LEVEL = 102;
// Monsters
private static final int FLOWER_BUD = 19600;
private static final int APHERUS = 23581;
// Items
private static final int APHERUS_SAMPLE = 47200;
private static final int FLOWER_BUD_SAMPLE = 47201;
private static final int BASIC_SUPPLY_BOX = 47178;
public Q10851_ElvenBotany()
{
super(10851);
addStartNpc(CELESTIEL);
addTalkId(CELESTIEL, IRENE);
addKillId(FLOWER_BUD, APHERUS);
registerQuestItems(APHERUS_SAMPLE, FLOWER_BUD_SAMPLE);
addCondMinLevel(MIN_LEVEL, "guardian_follower_q10851_02.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 2, "guardian_follower_q10851_03.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = event;
switch (event)
{
case "guardian_follower_q10851_04.htm":
case "guardian_follower_q10851_05.htm":
{
htmltext = event;
break;
}
case "guardian_follower_q10851_06.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "guardian_leader_q10851_02.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "guardian_leader_q10851_05.html":
{
if (qs.isCond(3) && (player.getLevel() >= MIN_LEVEL))
{
giveItems(player, BASIC_SUPPLY_BOX, 1);
addExpAndSp(player, 44_442_855_900L, 44_442_720);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "guardian_follower_q10851_04.htm";
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case CELESTIEL:
{
if (qs.getCond() > 0)
{
htmltext = "guardian_follower_q10851_07.html";
}
break;
}
case IRENE:
{
if (qs.isCond(1))
{
htmltext = "guardian_leader_q10851_01.html";
}
else if (qs.isCond(2))
{
htmltext = "guardian_leader_q10851_03.html";
}
else
{
htmltext = "guardian_leader_q10851_04.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
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))
{
switch (npc.getId())
{
case FLOWER_BUD:
{
if (getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) < 50)
{
giveItems(killer, FLOWER_BUD_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
case APHERUS:
{
if (getQuestItemsCount(killer, APHERUS_SAMPLE) < 150)
{
giveItems(killer, APHERUS_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
}
if ((getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) >= 50) && (getQuestItemsCount(killer, APHERUS_SAMPLE) >= 150))
{
qs.setCond(3, true);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, if you could spare the time, could you help me out?<br>
I need help for something, and you could be the one I can trust.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_04.htm">"What is it?"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
I'm sorry, but this is a dangerous place. We cannot guarantee your safety. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters with Lv. 102 or higher whose faction level with the Mother Tree Guardian is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
I'm sorry, but I'm rather iffy about putting you on assignment.<br>
This is a dangerous place. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters whose faction level with the Mother Tree Guardians is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
I am Celestiel. I have come here with Irene in search of a way to save the Mother Tree.<br>
I know how to do bits and pieces of many things. I'm usually studying changes in the plants and the soil here, but I need more samples for my research. That's why I'm asking you for help.<br>
I've been searching for the samples firsthand until now, but it's been taking me so long that I've been falling behind on my research. I have no choice but to dedicate myself to research while having somebody else hunt around for samples.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_05.htm">"What samples do you need?"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
Oh! The samples I need are samples of a few particular species of plant that live here.<br>
Until now, Fairy Mimyu has been helping me collect enough Nymph Stamen, but it's too hard finding samples other than those.<br>
But I'm a bit hesitant about asking Fairy Mimyu to find me the other samples too.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_06.htm">"What samples do I need to find?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, so will you help me out?<br>
If that's the case, the samples I need are... oh, I guess you don't exactly how many of which samples I'll be needing, since Irene was the one who was managing the samples.<br>Would you go to Irene and ask which samples required for the research are?<br>
See, I've been bugging Irene with a bunch of questions, even just now... I think it would be better for you to go and ask instead of me.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
Please go to Irene and ask her which samples needed for the biological research are.<br>
If you ask her yourself, she's sure to give you a kind answer with a smile.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
What's going on?<br>
I thought you were speaking with Celestiel until just now.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_02.html">"So the samples..."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
I was wondering what Celestiel was talking so enthusiastically about. I guess you were talking about the samples.<br>
I swear she told me just a short while ago that she needed some kind of sample... Well, with her being as busy as she is nowadays with her research, her being so forgetful is understandable.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guardian Irene:<br>
You don't have enough samples.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Are you done collecting the samples?<br>
We need samples to conduct research, but it's the part collecting the samples that discourages everyone. It's not so easy finding samples, is it?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_05.html">"Yes, right."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Thank you. Using these samples, we will be able to investigate the growth and changes around here.<br>
If we discover what changes are going on right now in the Enchanted Valley, we might need to ask you to do some other work for us.<br>
If that happens, I hope you'll help us again.
</body></html>

View File

@@ -456,6 +456,7 @@ import quests.Q10839_BlackbirdsNameValue.Q10839_BlackbirdsNameValue;
import quests.Q10840_TimeToRecover.Q10840_TimeToRecover; import quests.Q10840_TimeToRecover.Q10840_TimeToRecover;
import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress; import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress;
import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley; import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley;
import quests.Q10851_ElvenBotany.Q10851_ElvenBotany;
import quests.not_done.Q00504_CompetitionForTheBanditStronghold; import quests.not_done.Q00504_CompetitionForTheBanditStronghold;
import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts; import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts;
import quests.not_done.Q00665_BasicTrainingForHunterGuildMember; import quests.not_done.Q00665_BasicTrainingForHunterGuildMember;
@@ -529,7 +530,6 @@ import quests.not_done.Q10845_BloodyBattleRescueTheSmiths;
import quests.not_done.Q10846_BloodyBattleMeetingTheCommander; import quests.not_done.Q10846_BloodyBattleMeetingTheCommander;
import quests.not_done.Q10848_TrialsBeforeTheBattle; import quests.not_done.Q10848_TrialsBeforeTheBattle;
import quests.not_done.Q10849_TrialsForAdaptation; import quests.not_done.Q10849_TrialsForAdaptation;
import quests.not_done.Q10851_ElvenBotany;
import quests.not_done.Q10852_TheMotherTreeRevivalProject; import quests.not_done.Q10852_TheMotherTreeRevivalProject;
import quests.not_done.Q10853_ToWeakenTheGiants; import quests.not_done.Q10853_ToWeakenTheGiants;
import quests.not_done.Q10854_ToSeizeTheFortress; import quests.not_done.Q10854_ToSeizeTheFortress;
@@ -1067,7 +1067,7 @@ public class QuestMasterHandler
Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done. Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done.
Q10848_TrialsBeforeTheBattle.class, // TODO: Not done. Q10848_TrialsBeforeTheBattle.class, // TODO: Not done.
Q10849_TrialsForAdaptation.class, // TODO: Not done. Q10849_TrialsForAdaptation.class, // TODO: Not done.
Q10851_ElvenBotany.class, // TODO: Not done. Q10851_ElvenBotany.class,
Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done. Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done.
Q10853_ToWeakenTheGiants.class, // TODO: Not done. Q10853_ToWeakenTheGiants.class, // TODO: Not done.
Q10854_ToSeizeTheFortress.class, // TODO: Not done. Q10854_ToSeizeTheFortress.class, // TODO: Not done.

View File

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

View File

@@ -200,7 +200,6 @@
10846 Bloody Battle - Meeting the Commander 10846 Bloody Battle - Meeting the Commander
10848 Trials before the Battle 10848 Trials before the Battle
10849 Trials for Adaptation 10849 Trials for Adaptation
10851 Elven Botany
10852 The Mother Tree Revival Project 10852 The Mother Tree Revival Project
10853 To Weaken the Giants 10853 To Weaken the Giants
10854 To Seize the Fortress 10854 To Seize the Fortress

View File

@@ -0,0 +1,197 @@
/*
* 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.Q10851_ElvenBotany;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
/**
* Elven Botany (10851)
* @URL https://l2wiki.com/Elven_Botany
* @author Gigi
* @date 2019-06-11 - [21:21:45]
*/
public class Q10851_ElvenBotany extends Quest
{
// NPCs
private static final int CELESTIEL = 34234;
private static final int IRENE = 34233;
// Misc
private static final int MIN_LEVEL = 102;
// Monsters
private static final int FLOWER_BUD = 19600;
private static final int APHERUS = 23581;
// Items
private static final int APHERUS_SAMPLE = 47200;
private static final int FLOWER_BUD_SAMPLE = 47201;
private static final int BASIC_SUPPLY_BOX = 47178;
public Q10851_ElvenBotany()
{
super(10851);
addStartNpc(CELESTIEL);
addTalkId(CELESTIEL, IRENE);
addKillId(FLOWER_BUD, APHERUS);
registerQuestItems(APHERUS_SAMPLE, FLOWER_BUD_SAMPLE);
addCondMinLevel(MIN_LEVEL, "guardian_follower_q10851_02.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 2, "guardian_follower_q10851_03.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = event;
switch (event)
{
case "guardian_follower_q10851_04.htm":
case "guardian_follower_q10851_05.htm":
{
htmltext = event;
break;
}
case "guardian_follower_q10851_06.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "guardian_leader_q10851_02.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "guardian_leader_q10851_05.html":
{
if (qs.isCond(3) && (player.getLevel() >= MIN_LEVEL))
{
giveItems(player, BASIC_SUPPLY_BOX, 1);
addExpAndSp(player, 44_442_855_900L, 44_442_720);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "guardian_follower_q10851_04.htm";
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case CELESTIEL:
{
if (qs.getCond() > 0)
{
htmltext = "guardian_follower_q10851_07.html";
}
break;
}
case IRENE:
{
if (qs.isCond(1))
{
htmltext = "guardian_leader_q10851_01.html";
}
else if (qs.isCond(2))
{
htmltext = "guardian_leader_q10851_03.html";
}
else
{
htmltext = "guardian_leader_q10851_04.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
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))
{
switch (npc.getId())
{
case FLOWER_BUD:
{
if (getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) < 50)
{
giveItems(killer, FLOWER_BUD_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
case APHERUS:
{
if (getQuestItemsCount(killer, APHERUS_SAMPLE) < 150)
{
giveItems(killer, APHERUS_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
}
if ((getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) >= 50) && (getQuestItemsCount(killer, APHERUS_SAMPLE) >= 150))
{
qs.setCond(3, true);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, if you could spare the time, could you help me out?<br>
I need help for something, and you could be the one I can trust.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_04.htm">"What is it?"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
I'm sorry, but this is a dangerous place. We cannot guarantee your safety. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters with Lv. 102 or higher whose faction level with the Mother Tree Guardian is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
I'm sorry, but I'm rather iffy about putting you on assignment.<br>
This is a dangerous place. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters whose faction level with the Mother Tree Guardians is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
I am Celestiel. I have come here with Irene in search of a way to save the Mother Tree.<br>
I know how to do bits and pieces of many things. I'm usually studying changes in the plants and the soil here, but I need more samples for my research. That's why I'm asking you for help.<br>
I've been searching for the samples firsthand until now, but it's been taking me so long that I've been falling behind on my research. I have no choice but to dedicate myself to research while having somebody else hunt around for samples.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_05.htm">"What samples do you need?"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
Oh! The samples I need are samples of a few particular species of plant that live here.<br>
Until now, Fairy Mimyu has been helping me collect enough Nymph Stamen, but it's too hard finding samples other than those.<br>
But I'm a bit hesitant about asking Fairy Mimyu to find me the other samples too.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_06.htm">"What samples do I need to find?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, so will you help me out?<br>
If that's the case, the samples I need are... oh, I guess you don't exactly how many of which samples I'll be needing, since Irene was the one who was managing the samples.<br>Would you go to Irene and ask which samples required for the research are?<br>
See, I've been bugging Irene with a bunch of questions, even just now... I think it would be better for you to go and ask instead of me.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
Please go to Irene and ask her which samples needed for the biological research are.<br>
If you ask her yourself, she's sure to give you a kind answer with a smile.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
What's going on?<br>
I thought you were speaking with Celestiel until just now.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_02.html">"So the samples..."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
I was wondering what Celestiel was talking so enthusiastically about. I guess you were talking about the samples.<br>
I swear she told me just a short while ago that she needed some kind of sample... Well, with her being as busy as she is nowadays with her research, her being so forgetful is understandable.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guardian Irene:<br>
You don't have enough samples.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Are you done collecting the samples?<br>
We need samples to conduct research, but it's the part collecting the samples that discourages everyone. It's not so easy finding samples, is it?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_05.html">"Yes, right."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Thank you. Using these samples, we will be able to investigate the growth and changes around here.<br>
If we discover what changes are going on right now in the Enchanted Valley, we might need to ask you to do some other work for us.<br>
If that happens, I hope you'll help us again.
</body></html>

View File

@@ -462,6 +462,7 @@ import quests.Q10839_BlackbirdsNameValue.Q10839_BlackbirdsNameValue;
import quests.Q10840_TimeToRecover.Q10840_TimeToRecover; import quests.Q10840_TimeToRecover.Q10840_TimeToRecover;
import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress; import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress;
import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley; import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley;
import quests.Q10851_ElvenBotany.Q10851_ElvenBotany;
import quests.not_done.*; import quests.not_done.*;
/** /**
@@ -1035,7 +1036,7 @@ public class QuestMasterHandler
Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done. Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done.
Q10848_TrialsBeforeTheBattle.class, // TODO: Not done. Q10848_TrialsBeforeTheBattle.class, // TODO: Not done.
Q10849_TrialsForAdaptation.class, // TODO: Not done. Q10849_TrialsForAdaptation.class, // TODO: Not done.
Q10851_ElvenBotany.class, // TODO: Not done. Q10851_ElvenBotany.class,
Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done. Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done.
Q10853_ToWeakenTheGiants.class, // TODO: Not done. Q10853_ToWeakenTheGiants.class, // TODO: Not done.
Q10854_ToSeizeTheFortress.class, // TODO: Not done. Q10854_ToSeizeTheFortress.class, // TODO: Not done.

View File

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

View File

@@ -212,7 +212,6 @@
10846 Bloody Battle - Meeting the Commander 10846 Bloody Battle - Meeting the Commander
10848 Trials before the Battle 10848 Trials before the Battle
10849 Trials for Adaptation 10849 Trials for Adaptation
10851 Elven Botany
10852 The Mother Tree Revival Project 10852 The Mother Tree Revival Project
10853 To Weaken the Giants 10853 To Weaken the Giants
10854 To Seize the Fortress 10854 To Seize the Fortress

View File

@@ -0,0 +1,197 @@
/*
* 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.Q10851_ElvenBotany;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
/**
* Elven Botany (10851)
* @URL https://l2wiki.com/Elven_Botany
* @author Gigi
* @date 2019-06-11 - [21:21:45]
*/
public class Q10851_ElvenBotany extends Quest
{
// NPCs
private static final int CELESTIEL = 34234;
private static final int IRENE = 34233;
// Misc
private static final int MIN_LEVEL = 102;
// Monsters
private static final int FLOWER_BUD = 19600;
private static final int APHERUS = 23581;
// Items
private static final int APHERUS_SAMPLE = 47200;
private static final int FLOWER_BUD_SAMPLE = 47201;
private static final int BASIC_SUPPLY_BOX = 47178;
public Q10851_ElvenBotany()
{
super(10851);
addStartNpc(CELESTIEL);
addTalkId(CELESTIEL, IRENE);
addKillId(FLOWER_BUD, APHERUS);
registerQuestItems(APHERUS_SAMPLE, FLOWER_BUD_SAMPLE);
addCondMinLevel(MIN_LEVEL, "guardian_follower_q10851_02.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 2, "guardian_follower_q10851_03.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = event;
switch (event)
{
case "guardian_follower_q10851_04.htm":
case "guardian_follower_q10851_05.htm":
{
htmltext = event;
break;
}
case "guardian_follower_q10851_06.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "guardian_leader_q10851_02.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "guardian_leader_q10851_05.html":
{
if (qs.isCond(3) && (player.getLevel() >= MIN_LEVEL))
{
giveItems(player, BASIC_SUPPLY_BOX, 1);
addExpAndSp(player, 44_442_855_900L, 44_442_720);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "guardian_follower_q10851_04.htm";
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case CELESTIEL:
{
if (qs.getCond() > 0)
{
htmltext = "guardian_follower_q10851_07.html";
}
break;
}
case IRENE:
{
if (qs.isCond(1))
{
htmltext = "guardian_leader_q10851_01.html";
}
else if (qs.isCond(2))
{
htmltext = "guardian_leader_q10851_03.html";
}
else
{
htmltext = "guardian_leader_q10851_04.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
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))
{
switch (npc.getId())
{
case FLOWER_BUD:
{
if (getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) < 50)
{
giveItems(killer, FLOWER_BUD_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
case APHERUS:
{
if (getQuestItemsCount(killer, APHERUS_SAMPLE) < 150)
{
giveItems(killer, APHERUS_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
}
if ((getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) >= 50) && (getQuestItemsCount(killer, APHERUS_SAMPLE) >= 150))
{
qs.setCond(3, true);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, if you could spare the time, could you help me out?<br>
I need help for something, and you could be the one I can trust.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_04.htm">"What is it?"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
I'm sorry, but this is a dangerous place. We cannot guarantee your safety. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters with Lv. 102 or higher whose faction level with the Mother Tree Guardian is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
I'm sorry, but I'm rather iffy about putting you on assignment.<br>
This is a dangerous place. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters whose faction level with the Mother Tree Guardians is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
I am Celestiel. I have come here with Irene in search of a way to save the Mother Tree.<br>
I know how to do bits and pieces of many things. I'm usually studying changes in the plants and the soil here, but I need more samples for my research. That's why I'm asking you for help.<br>
I've been searching for the samples firsthand until now, but it's been taking me so long that I've been falling behind on my research. I have no choice but to dedicate myself to research while having somebody else hunt around for samples.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_05.htm">"What samples do you need?"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
Oh! The samples I need are samples of a few particular species of plant that live here.<br>
Until now, Fairy Mimyu has been helping me collect enough Nymph Stamen, but it's too hard finding samples other than those.<br>
But I'm a bit hesitant about asking Fairy Mimyu to find me the other samples too.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_06.htm">"What samples do I need to find?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, so will you help me out?<br>
If that's the case, the samples I need are... oh, I guess you don't exactly how many of which samples I'll be needing, since Irene was the one who was managing the samples.<br>Would you go to Irene and ask which samples required for the research are?<br>
See, I've been bugging Irene with a bunch of questions, even just now... I think it would be better for you to go and ask instead of me.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
Please go to Irene and ask her which samples needed for the biological research are.<br>
If you ask her yourself, she's sure to give you a kind answer with a smile.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
What's going on?<br>
I thought you were speaking with Celestiel until just now.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_02.html">"So the samples..."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
I was wondering what Celestiel was talking so enthusiastically about. I guess you were talking about the samples.<br>
I swear she told me just a short while ago that she needed some kind of sample... Well, with her being as busy as she is nowadays with her research, her being so forgetful is understandable.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guardian Irene:<br>
You don't have enough samples.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Are you done collecting the samples?<br>
We need samples to conduct research, but it's the part collecting the samples that discourages everyone. It's not so easy finding samples, is it?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_05.html">"Yes, right."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Thank you. Using these samples, we will be able to investigate the growth and changes around here.<br>
If we discover what changes are going on right now in the Enchanted Valley, we might need to ask you to do some other work for us.<br>
If that happens, I hope you'll help us again.
</body></html>

View File

@@ -412,6 +412,7 @@ import quests.Q10839_BlackbirdsNameValue.Q10839_BlackbirdsNameValue;
import quests.Q10840_TimeToRecover.Q10840_TimeToRecover; import quests.Q10840_TimeToRecover.Q10840_TimeToRecover;
import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress; import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress;
import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley; import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley;
import quests.Q10851_ElvenBotany.Q10851_ElvenBotany;
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange; import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn; import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
import quests.not_done.*; import quests.not_done.*;
@@ -944,7 +945,7 @@ public class QuestMasterHandler
Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done. Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done.
Q10848_TrialsBeforeTheBattle.class, // TODO: Not done. Q10848_TrialsBeforeTheBattle.class, // TODO: Not done.
Q10849_TrialsForAdaptation.class, // TODO: Not done. Q10849_TrialsForAdaptation.class, // TODO: Not done.
Q10851_ElvenBotany.class, // TODO: Not done. Q10851_ElvenBotany.class,
Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done. Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done.
Q10853_ToWeakenTheGiants.class, // TODO: Not done. Q10853_ToWeakenTheGiants.class, // TODO: Not done.
Q10854_ToSeizeTheFortress.class, // TODO: Not done. Q10854_ToSeizeTheFortress.class, // TODO: Not done.

View File

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

View File

@@ -220,7 +220,6 @@
10846 Bloody Battle - Meeting the Commander 10846 Bloody Battle - Meeting the Commander
10848 Trials before the Battle 10848 Trials before the Battle
10849 Trials for Adaptation 10849 Trials for Adaptation
10851 Elven Botany
10852 The Mother Tree Revival Project 10852 The Mother Tree Revival Project
10853 To Weaken the Giants 10853 To Weaken the Giants
10854 To Seize the Fortress 10854 To Seize the Fortress

View File

@@ -0,0 +1,197 @@
/*
* 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.Q10851_ElvenBotany;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
/**
* Elven Botany (10851)
* @URL https://l2wiki.com/Elven_Botany
* @author Gigi
* @date 2019-06-11 - [21:21:45]
*/
public class Q10851_ElvenBotany extends Quest
{
// NPCs
private static final int CELESTIEL = 34234;
private static final int IRENE = 34233;
// Misc
private static final int MIN_LEVEL = 102;
// Monsters
private static final int FLOWER_BUD = 19600;
private static final int APHERUS = 23581;
// Items
private static final int APHERUS_SAMPLE = 47200;
private static final int FLOWER_BUD_SAMPLE = 47201;
private static final int BASIC_SUPPLY_BOX = 47178;
public Q10851_ElvenBotany()
{
super(10851);
addStartNpc(CELESTIEL);
addTalkId(CELESTIEL, IRENE);
addKillId(FLOWER_BUD, APHERUS);
registerQuestItems(APHERUS_SAMPLE, FLOWER_BUD_SAMPLE);
addCondMinLevel(MIN_LEVEL, "guardian_follower_q10851_02.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 2, "guardian_follower_q10851_03.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = event;
switch (event)
{
case "guardian_follower_q10851_04.htm":
case "guardian_follower_q10851_05.htm":
{
htmltext = event;
break;
}
case "guardian_follower_q10851_06.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "guardian_leader_q10851_02.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "guardian_leader_q10851_05.html":
{
if (qs.isCond(3) && (player.getLevel() >= MIN_LEVEL))
{
giveItems(player, BASIC_SUPPLY_BOX, 1);
addExpAndSp(player, 44_442_855_900L, 44_442_720);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "guardian_follower_q10851_04.htm";
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case CELESTIEL:
{
if (qs.getCond() > 0)
{
htmltext = "guardian_follower_q10851_07.html";
}
break;
}
case IRENE:
{
if (qs.isCond(1))
{
htmltext = "guardian_leader_q10851_01.html";
}
else if (qs.isCond(2))
{
htmltext = "guardian_leader_q10851_03.html";
}
else
{
htmltext = "guardian_leader_q10851_04.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
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))
{
switch (npc.getId())
{
case FLOWER_BUD:
{
if (getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) < 50)
{
giveItems(killer, FLOWER_BUD_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
case APHERUS:
{
if (getQuestItemsCount(killer, APHERUS_SAMPLE) < 150)
{
giveItems(killer, APHERUS_SAMPLE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
}
if ((getQuestItemsCount(killer, FLOWER_BUD_SAMPLE) >= 50) && (getQuestItemsCount(killer, APHERUS_SAMPLE) >= 150))
{
qs.setCond(3, true);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, if you could spare the time, could you help me out?<br>
I need help for something, and you could be the one I can trust.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_04.htm">"What is it?"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
I'm sorry, but this is a dangerous place. We cannot guarantee your safety. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters with Lv. 102 or higher whose faction level with the Mother Tree Guardian is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
I'm sorry, but I'm rather iffy about putting you on assignment.<br>
This is a dangerous place. Please take yourself some place safe.<br>
(This quest can only be undertaken by characters whose faction level with the Mother Tree Guardians is 2 or higher.)
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
I am Celestiel. I have come here with Irene in search of a way to save the Mother Tree.<br>
I know how to do bits and pieces of many things. I'm usually studying changes in the plants and the soil here, but I need more samples for my research. That's why I'm asking you for help.<br>
I've been searching for the samples firsthand until now, but it's been taking me so long that I've been falling behind on my research. I have no choice but to dedicate myself to research while having somebody else hunt around for samples.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_05.htm">"What samples do you need?"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Celestiel:<br>
Oh! The samples I need are samples of a few particular species of plant that live here.<br>
Until now, Fairy Mimyu has been helping me collect enough Nymph Stamen, but it's too hard finding samples other than those.<br>
But I'm a bit hesitant about asking Fairy Mimyu to find me the other samples too.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_follower_q10851_06.htm">"What samples do I need to find?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Celestiel:<br>
Ah, so will you help me out?<br>
If that's the case, the samples I need are... oh, I guess you don't exactly how many of which samples I'll be needing, since Irene was the one who was managing the samples.<br>Would you go to Irene and ask which samples required for the research are?<br>
See, I've been bugging Irene with a bunch of questions, even just now... I think it would be better for you to go and ask instead of me.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Celestiel:<br>
Please go to Irene and ask her which samples needed for the biological research are.<br>
If you ask her yourself, she's sure to give you a kind answer with a smile.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
What's going on?<br>
I thought you were speaking with Celestiel until just now.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_02.html">"So the samples..."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
I was wondering what Celestiel was talking so enthusiastically about. I guess you were talking about the samples.<br>
I swear she told me just a short while ago that she needed some kind of sample... Well, with her being as busy as she is nowadays with her research, her being so forgetful is understandable.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guardian Irene:<br>
You don't have enough samples.<br>
Samples needed are <font color="LEVEL">150 Apherus Samples, and 50 Flower Bud Samples</font>. Samples can be obtained from <font color="LEVEL">Apherus, and Flower Buds</font>.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Are you done collecting the samples?<br>
We need samples to conduct research, but it's the part collecting the samples that discourages everyone. It's not so easy finding samples, is it?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10851_ElvenBotany guardian_leader_q10851_05.html">"Yes, right."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guardian Irene:<br>
Thank you. Using these samples, we will be able to investigate the growth and changes around here.<br>
If we discover what changes are going on right now in the Enchanted Valley, we might need to ask you to do some other work for us.<br>
If that happens, I hope you'll help us again.
</body></html>

View File

@@ -410,6 +410,7 @@ import quests.Q10839_BlackbirdsNameValue.Q10839_BlackbirdsNameValue;
import quests.Q10840_TimeToRecover.Q10840_TimeToRecover; import quests.Q10840_TimeToRecover.Q10840_TimeToRecover;
import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress; import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress;
import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley; import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley;
import quests.Q10851_ElvenBotany.Q10851_ElvenBotany;
import quests.custom.Q00529_RegularBarrierMaintenance.Q00529_RegularBarrierMaintenance; import quests.custom.Q00529_RegularBarrierMaintenance.Q00529_RegularBarrierMaintenance;
import quests.custom.Q00560_HowToOvercomeFear.Q00560_HowToOvercomeFear; import quests.custom.Q00560_HowToOvercomeFear.Q00560_HowToOvercomeFear;
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange; import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
@@ -964,7 +965,7 @@ public class QuestMasterHandler
Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done. Q10846_BloodyBattleMeetingTheCommander.class, // TODO: Not done.
Q10848_TrialsBeforeTheBattle.class, // TODO: Not done. Q10848_TrialsBeforeTheBattle.class, // TODO: Not done.
Q10849_TrialsForAdaptation.class, // TODO: Not done. Q10849_TrialsForAdaptation.class, // TODO: Not done.
Q10851_ElvenBotany.class, // TODO: Not done. Q10851_ElvenBotany.class,
Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done. Q10852_TheMotherTreeRevivalProject.class, // TODO: Not done.
Q10853_ToWeakenTheGiants.class, // TODO: Not done. Q10853_ToWeakenTheGiants.class, // TODO: Not done.
Q10854_ToSeizeTheFortress.class, // TODO: Not done. Q10854_ToSeizeTheFortress.class, // TODO: Not done.

View File

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