Addition of quest New Flame Of Orcs (10951).

Contributed by Elison.
This commit is contained in:
MobiusDevelopment 2022-03-30 23:50:49 +00:00
parent 5f027629b9
commit 4787447ab5
17 changed files with 343 additions and 0 deletions

View File

@ -0,0 +1,6 @@
<html><body>First Vanguard Rider Sabitus:<br>
Don't lose courage.<br>
You and your peers are the hope of all Orcs.<br>
Your spear and your beast are a proof of your strength.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -441,6 +441,12 @@ public class Q00255_Tutorial extends Quest
return;
}
// Vanguard.
if (CategoryData.getInstance().isInCategory(CategoryType.VANGUARD_ALL_CLASS, player.getClassId().getId()))
{
return;
}
final QuestState qs = getQuestState(player, true);
if ((qs != null) && (qs.getMemoState() < 4) && STARTING_VOICE_HTML.containsKey(player.getClassId().getId()))
{

View File

@ -0,0 +1,9 @@
<html><body>
Guardian Tanai:<br>
Have you completed your basic training?<br>
I see that you're really excited about joining the ranks of Orc Lancers.<br>
First of all, let me tell you about the <font color="LEVEL">Blazing Beast</font> skill. You can use it if you have <font color="LEVEL">500 or more Beast Points (BP)</font>. Activating the skill costs <font color="LEVEL">100 BP</font>.<br>
The effect is active while you have BP.<br>
All Orc Lancers must know it, so don't forget.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10951_NewFlameOfOrcs 30602-00.htm">"Nod"</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>
First Vanguard Rider Sabitus:<br>
There you are. You have a new path open before you. Will you become the Orc Lancer?<br>
Are you ready to become a beacon of hope for our people?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10951_NewFlameOfOrcs 34335-03.htm">"Nod"</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>
First Vanguard Rider Sabitus:<br>
Good! I see that you're striving for excellence. It will really help you on the Orc Lancer path.<br>
But I think you don't know yet what we have in store for you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10951_NewFlameOfOrcs 34335-04.htm">"Ask what the problem is"</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>
First Vanguard Rider Sabitus:<br>
The problem? Bah!<br>
You look like a very resourceful young Orc, so I'm sure you'll find a way out of any problem. Or you'll perish along the path you've chosen. Easy, isn't it?<br>
Well, no more idle chatter, let's get down to business. I'm going to teach you the combat basics.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10951_NewFlameOfOrcs 34335-05.htm">"Nod"</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>
First Vanguard Rider Sabitus:<br>
Excellent! So far, you're doing well.<br>
Well, any battle is the exchange of attacks.<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,8 @@
<html><body>
First Vanguard Rider Sabitus:<br>
Good! But you're lacking something.<br>
You've attacked without Soulshots equipped.<br>
They can make your blows even more powerful. Don't ever forget that!<br>
Always equip Soulshots if possible.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10951_NewFlameOfOrcs 34335-07.htm">"How do I use Soulshots?"</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
First Vanguard Rider Sabitus:<br>
The main thing about Soulshots is to have them always at your disposal.<br>
You don't have any in your inventory, right? Then I'll give you some.<br>
Soulshots are equipped automatically when you start using a weapon.<br>
Also, you can come across Spiritshots - these are like Soulshots but they increase your magic powers instead of fighting abilities.<br>
Well, why don't you test these Soulshots yourself? Use them to attack Training Dummies.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>First Vanguard Rider Sabitus:<br>
Have you memorized the combat basics?<br>
I can't stress enough how important it is.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10951_NewFlameOfOrcs 34335-09.htm">"Nod"</Button>
</body></html>

View File

@ -0,0 +1,10 @@
<html><body>First Vanguard Rider Sabitus:<br>
That's all I have to teach you.<br>
Oh, I've forgotten to tell you about <font color="LEVEL">Beast Points</font>! So, you will accumulate them with time.<br>
But let me show you how it looks in practice. See, I've recharged your BP reserves. Now open your <font color="LEVEL">skill window</font> and use the <font color="LEVEL">Blazing Beast</font> skill.<br>
When it is active, your moving skills become more efficient, and you can attack nearby enemies automatically.<br>
Beast Points are very important. Their bar is right below your HP, always keep an eye on it.<br>
And now go to <font color="LEVEL">Guardian Tanai</font><br>
.He has a lot to teach you.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Q10951_NewFlameOfOrcs TELEPORT_TO_TANAI">"Teleport to Tanai"</Button>
</body></html>

View File

@ -0,0 +1,248 @@
/*
* 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.Q10951_NewFlameOfOrcs;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.CategoryData;
import org.l2jmobius.gameserver.enums.CategoryType;
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;
/**
* New Flame Of Orcs (10951)
* @author A.Yurechko
*/
public class Q10951_NewFlameOfOrcs extends Quest
{
// NPCs
private static final int SABITUS = 34335;
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 = "Q10951_REWARD_1";
private static final String REWARD_CHECK_VAR2 = "Q10951_REWARD_2";
private static final int MIN_LEVEL = 1;
private static final int MAX_LEVEL = 2;
public Q10951_NewFlameOfOrcs()
{
super(10951);
addStartNpc(SABITUS);
addTalkId(SABITUS, TANAI);
addKillId(TRAINING_DUMMY);
addCondMinLevel(MIN_LEVEL, "no_lvl.html");
addCondMaxLevel(MAX_LEVEL, "no_lvl.html");
setQuestNameNpcStringId(NpcStringId.LV_1_2_NEW_FLAME_OF_ORCS);
}
@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 "34335-02.htm":
case "34335-03.htm":
case "34335-04.htm":
{
htmltext = event;
break;
}
case "34335-05.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "34335-07.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 "34335-09.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);
// TODO: Return Q10952 start htm
htmltext = event;
}
break;
}
case "TELEPORT_TO_TANAI":
{
player.teleToLocation(-45079, -113511, -208);
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, Player player)
{
if (!CategoryData.getInstance().isInCategory(CategoryType.VANGUARD_ALL_CLASS, player.getClassId().getId()))
{
return "no_race.html";
}
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34335-02.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "no_dummy-01.html";
break;
}
case 2:
{
htmltext = "34335-06.htm";
break;
}
case 3:
{
htmltext = "no_dummy-02.html";
break;
}
case 4:
{
htmltext = "34335-08.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 (!CategoryData.getInstance().isInCategory(CategoryType.VANGUARD_ALL_CLASS, player.getClassId().getId()))
{
return;
}
final QuestState qs = getQuestState(player, false);
if ((qs == null) || (player.getLevel() < 20))
{
showOnScreenMsg(player, NpcStringId.TALK_TO_FIRST_VANGUARD_RIDER_SABITUS, ExShowScreenMessage.TOP_CENTER, 10000, player.getName());
}
}
}

View File

@ -0,0 +1,4 @@
<html><body>First Vanguard Rider Sabitus:<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>First Vanguard Rider Sabitus:<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.Q10951_NewFlameOfOrcs.Q10951_NewFlameOfOrcs;
import quests.Q10954_SayhaChildren.Q10954_SayhaChildren;
import quests.Q10955_NewLifeLessons.Q10955_NewLifeLessons;
import quests.Q10956_WeSylphs.Q10956_WeSylphs;
@ -87,6 +88,7 @@ public class QuestMasterHandler
Q10299_GetIncrediblePower.class,
Q10300_ExploringTheCrumaTower.class,
Q10301_NotSoSilentValley.class,
Q10951_NewFlameOfOrcs.class,
Q10954_SayhaChildren.class,
Q10955_NewLifeLessons.class,
Q10956_WeSylphs.class,