Addition of quest Fiercest Flame (Q10950).

Contributed by Elison.
This commit is contained in:
MobiusDevelopment
2022-03-31 00:13:03 +00:00
parent 29dd142760
commit d3018fad09
17 changed files with 323 additions and 12 deletions

View File

@@ -0,0 +1,6 @@
<html><body>Flame Guardian Vulkus:<br>
Tejakar Oroca! I am Flame Guardian Vulkus!<br>
It's my duty to light the fire of battle in the hearts of young Orcs. A fire as hot as the flame of Pa'agrio!<br>
Can you feel the fire burning in your chest?<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -61,7 +61,6 @@ public class Q00255_Tutorial extends Quest
NEWBIE_HELPERS.add(30019); // human mystic
NEWBIE_HELPERS.add(30400); // elf
NEWBIE_HELPERS.add(30131); // dark elf
NEWBIE_HELPERS.add(30575); // orc
NEWBIE_HELPERS.add(30530); // dwarf
NEWBIE_HELPERS.add(34108); // kamael
}
@@ -72,7 +71,6 @@ public class Q00255_Tutorial extends Quest
SUPERVISORS.add(30017); // human mystic
SUPERVISORS.add(30370); // elf
SUPERVISORS.add(30129); // dark elf
SUPERVISORS.add(30573); // orc
SUPERVISORS.add(30528); // dwarf
SUPERVISORS.add(34109); // kamael
}
@@ -98,8 +96,6 @@ public class Q00255_Tutorial extends Quest
STARTING_VOICE_HTML.put(25, new QuestSoundHtmlHolder("tutorial_voice_001d", "tutorial_elven_mage001.html"));
STARTING_VOICE_HTML.put(31, new QuestSoundHtmlHolder("tutorial_voice_001e", "tutorial_delf_fighter001.html"));
STARTING_VOICE_HTML.put(38, new QuestSoundHtmlHolder("tutorial_voice_001f", "tutorial_delf_mage001.html"));
STARTING_VOICE_HTML.put(44, new QuestSoundHtmlHolder("tutorial_voice_001g", "tutorial_orc_fighter001.html"));
STARTING_VOICE_HTML.put(49, new QuestSoundHtmlHolder("tutorial_voice_001h", "tutorial_orc_mage001.html"));
STARTING_VOICE_HTML.put(53, new QuestSoundHtmlHolder("tutorial_voice_001i", "tutorial_dwarven_fighter001.html"));
STARTING_VOICE_HTML.put(192, new QuestSoundHtmlHolder("tutorial_voice_001k", "tutorial_kamael_male001.html"));
}
@@ -277,10 +273,6 @@ public class Q00255_Tutorial extends Quest
{
return "tutorial_05_fighter.html";
}
else if (player.getRace() == Race.ORC)
{
return "tutorial_05_mystic_orc.html";
}
return "tutorial_05_mystic.html";
}
case 2:
@@ -289,10 +281,6 @@ public class Q00255_Tutorial extends Quest
{
return "tutorial_05_fighter_back.html";
}
else if (player.getRace() == Race.ORC)
{
return "tutorial_05_mystic_orc_back.html";
}
return "tutorial_05_mystic_back.html";
}
case 3:

View File

@@ -0,0 +1,5 @@
<html><body>Flame Guardian Vulkus:<br>
It's been a long time since I've met young Orcs...<br>
Are you ready to light up the Flame of Pa'agrio in your heart?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10950_FiercestFlame 30573-02.htm">"Yes."</Button>
</body></html>

View File

@@ -0,0 +1,8 @@
<html><body>Flame Guardian Vulkus:<br>
I like your attitude.<br>
I've been waiting for a young Orc like you.<br>
There was a time when all Orcs had the fighting spirit that burned as bright as the Flame of Pa'agrio.<br>
However, as time went on, our tribe grew soft and accustomed to a peaceful life.<br>
And now we must light up the inextinguishable flame in the hearts of Orcs once again.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10950_FiercestFlame 30573-03.htm">"What do you mean?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Flame Guardian Vulkus:<br>
Changes inside us will bring a new era of greatness for all Orcs, and soon everyone will be aware of that.<br>
I want to fill the hearts of young Orcs with the fighting spirit similar to the inextinguishable Flame of Pa'agrio!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10950_FiercestFlame 30573-04.htm">"Light this fire in my heart!"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>
Flame Guardian Vulkus:<br>
I definitely like your attitude!<br>
However, first I must check your combat abilities.<br>
Here we have some <font color="LEVEL">Training Dummies</font> set specifically for training young Orcs. Try attacking one of those, and I will watch you fight. After that we will talk again.
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Flame Guardian Vulkus:<br>
Excellent! You seem to know your basics.<br>
There is one more thing I must tell you about - <font color="LEVEL">Soulshots</font>.<br>
All Orcs are inherently powerful, but these Soulshots can make our attacks even more deadly. So always take some with you when going to a fight.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10950_FiercestFlame 30573-06.htm">"How do I use Soulshots?"</Button>
</body></html>

View File

@@ -0,0 +1,8 @@
<html><body>
Flame Guardian Vulkus:<br>
First of all, I will give you several Soulshots to try.<br>
They are used automatically when you have them in your inventory and have a weapon equipped.<br>
Also, you can come across Spiritshots - these are like Soulshots but they increase your magic powers instead of fighting abilities.<br>
Try using these Soulshots for yourself and see what they can do.<br>
Go ahead! Attack a Training Dummy once again, but this time use Soulshots.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Flame Guardian Vulkus:<br>
I can see that you know your basics full well.<br>
I cannot stress enough the importance of basic training. Do you agree?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10950_FiercestFlame 30573-08.htm">"Nod"</Button></body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Flame Guardian Vulkus:<br>
I'm afraid I have nothing more to tell you.<br>
Now you must speak with <font color="LEVEL">Guardian Tanai</font>.<br>
He has been entrusted with a very important mission to preserve our ancestors' souls and legacy.<br>
Tanai has a lot to tell you, so go to him as soon as possible.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Q10950_FiercestFlame TELEPORT_TO_TANAI">Teleport to Tanai</Button></body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Guardian Tanai:<br>
Have you completed your basic training?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10950_FiercestFlame 30602-00.htm">"Nod"</Button></body></html>

View File

@@ -0,0 +1,249 @@
/*
* 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.Q10950_FiercestFlame;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.CategoryData;
import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Fiercest Flame (Q10950)
* @author A.Yurechko
* @Notee: Based on NA server on March, 31 2022
*/
public class Q10950_FiercestFlame extends Quest
{
// NPCs
private static final int VULKUS = 30573;
private static final int TANAI = 30602;
// Monsters
private static final int TRAINING_DUMMY = 22183;
// Items
private static final ItemHolder SOULSHOT_REWARD = new ItemHolder(91927, 400);
private static final ItemHolder SOE_REWARD = new ItemHolder(10650, 5);
private static final ItemHolder WW_POTION_REWARD = new ItemHolder(49036, 5);
private static final ItemHolder HP_POTION_REWARD = new ItemHolder(91912, 50);
// Misc
private static final String REWARD_CHECK_VAR1 = "Q10950_REWARD_1";
private static final String REWARD_CHECK_VAR2 = "Q10950_REWARD_2";
private static final int MIN_LEVEL = 1;
private static final int MAX_LEVEL = 2;
public Q10950_FiercestFlame()
{
super(10950);
addStartNpc(VULKUS);
addTalkId(VULKUS, TANAI);
addKillId(TRAINING_DUMMY);
addCondMinLevel(MIN_LEVEL, "no_lvl.html");
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_1_2_FIERCEST_FLAME);
}
@Override
public String onAdvEvent(String event, Npc npc, Player player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "30573-01.htm":
case "30573-02.htm":
case "30573-03.htm":
{
htmltext = event;
break;
}
case "30573-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30573-06.htm":
{
if (qs.isCond(2))
{
qs.setCond(3);
if (!player.getVariables().getBoolean(REWARD_CHECK_VAR1, false))
{
player.getVariables().set(REWARD_CHECK_VAR1, true);
giveItems(player, SOULSHOT_REWARD);
}
}
htmltext = event;
break;
}
case "30573-08.htm":
{
if (qs.isCond(4))
{
qs.setCond(5);
}
htmltext = event;
break;
}
case "30602-00.htm":
{
if (qs.isCond(5))
{
player.getVariables().set(REWARD_CHECK_VAR2, true);
giveItems(player, SOE_REWARD);
giveItems(player, WW_POTION_REWARD);
giveItems(player, HP_POTION_REWARD);
giveItems(player, SOULSHOT_REWARD);
addExpAndSp(player, 224, 4);
giveStoryBuffReward(npc, player);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "TELEPORT_TO_TANAI":
{
player.teleToLocation(-45079, -113511, -208);
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, Player player)
{
if (player.getRace() != Race.ORC)
{
return "no_race.html";
}
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "30573-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "no_dummy-01.html";
break;
}
case 2:
{
htmltext = "30573-05.htm";
break;
}
case 3:
{
htmltext = "no_dummy-02.html";
break;
}
case 4:
{
htmltext = "30573-07.htm";
break;
}
case 5:
{
htmltext = "30602-10.htm";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if (qs != null)
{
if (qs.isCond(1))
{
qs.setCond(2, true);
}
else if (qs.isCond(3))
{
qs.setCond(4, true);
}
}
return super.onKill(npc, killer, isSummon);
}
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerLogin(OnPlayerLogin event)
{
if (Config.DISABLE_TUTORIAL)
{
return;
}
final Player player = event.getPlayer();
if (player == null)
{
return;
}
if ((player.getRace() != Race.ORC) || CategoryData.getInstance().isInCategory(CategoryType.VANGUARD_ALL_CLASS, player.getClassId().getId()))
{
return;
}
final QuestState qs = getQuestState(player, false);
if ((qs == null) || (player.getLevel() < 3))
{
showOnScreenMsg(player, NpcStringId.TALK_TO_FLAME_GUARDIAN_VULKUS, ExShowScreenMessage.TOP_CENTER, 10000, player.getName());
}
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Flame Guardian Vulkus:<br>
Forgot how to attack? Doesn't look like it. You know how to do it, right? We must go through the basics even if it seems dull to you.<br>
Look around you. Do you see those<font color="LEVEL">Training Dummies</font>? They are here to help you with your training.<br>Try attacking them first.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Flame Guardian Vulkus:<br>
It's time to test these Soulshots.<br>
Use them to attack Training Dummies.
</body></html>

View File

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

View File

@@ -0,0 +1,4 @@
<html><body>First Vanguard Rider Sabitus:<br>
I bear the title of the First Vanguard Rider. My duty is to show young Orcs the new path of Orc Lancers.<br>
I'd be happy to teach you something, but you are not Orc Lancer, so I have nothing to say to you.<br>
Why don't you go to Flame Guardian Vulkus? I'm sure he'll be happy to help you.</body></html>

View File

@@ -36,6 +36,7 @@ import quests.Q10299_GetIncrediblePower.Q10299_GetIncrediblePower;
import quests.Q10300_ExploringTheCrumaTower.Q10300_ExploringTheCrumaTower;
import quests.Q10301_NotSoSilentValley.Q10301_NotSoSilentValley;
import quests.Q10673_SagaOfLegend.Q10673_SagaOfLegend;
import quests.Q10950_FiercestFlame.Q10950_FiercestFlame;
import quests.Q10951_NewFlameOfOrcs.Q10951_NewFlameOfOrcs;
import quests.Q10952_ProtectAtAllCosts.Q10952_ProtectAtAllCosts;
import quests.Q10954_SayhaChildren.Q10954_SayhaChildren;
@@ -89,6 +90,7 @@ public class QuestMasterHandler
Q10299_GetIncrediblePower.class,
Q10300_ExploringTheCrumaTower.class,
Q10301_NotSoSilentValley.class,
Q10950_FiercestFlame.class,
Q10951_NewFlameOfOrcs.class,
Q10952_ProtectAtAllCosts.class,
Q10954_SayhaChildren.class,