Addition of quest Valiant Orcs (10953).

Contributed by Elison.
This commit is contained in:
MobiusDevelopment 2022-04-01 10:13:54 +00:00
parent e5dafca81c
commit 8602a5565f
12 changed files with 304 additions and 6 deletions

View File

@ -1,5 +1,5 @@
<html><body>Gantaki Zu Urutu:<br>
Lend an ear, young Orc, and I will tell you of the origin of our race. The great god Pa'agrio simmoned forth flame as white-hot as the sun, and from it he brought forth the father of the Orcs. His hair blazed red, his eyes shone white, smoke prured from his nostrils with every breath, and blood hotter than lava boiled through his veins!<br>
He was mightier than any other living being, but when he came down from the heavens, the water cooled his body, the earth hardened his lava blood, and the air dispersed his smoke. Our father mourned the loss of his great strength and asked Pa'agrio to slay him -- death was better than weakness. But the god told him that through constant, unrelenting discipline and combat, he could regain his former might. That is why we, his descendants, are as merciless toward ourselves as we are towards our enemies. Only through harship will we reach true strength!<br>
Listen! I will tell you the story of our people's origin. The ancestor of Orcs was created in the blazing flame of Pa'agrio. His hair flared like fire; his eyes glared with fury, and anyone who dared to look into them had to turn away in pain; his lungs erupted ashes; and blood in his veins was as hot as lava. There was nobody in the whole world whose strength could compare to his!<br>
Years were passing, and with time the Energy of Water chilled his body, the Energy of Earth cooled his blood, and winds scattered the ashes of his lungs. Having lost his strength, the ancestor of Orcs was miserable. Seeing this, Pa'agrio revealed the greatest seсret to him: fierce battles can make his blood boil, and hard trainings can bring back his former strength. Since then, Orcs have been renowned for their might, and our weapon mastery has become a legend!<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Gantaki Zu Urutu:<br>
The whole tribe is talking about your bravery, young adventurer.<br>
You and your peers are our hope. The time is near when you will <font color="LEVEL">change your class</font> and become even stronger.<br>
Are you ready?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10953_ValiantOrcs 30587-00.htm">Nod</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Guardian Tanai:<br>
All Orcs will speak about your glorious deeds.<br>
I've teached you the basics, and it will definitely help you in the future.<br>
Never forget my lessons, and you are certain to reach even greater heights.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10953_ValiantOrcs 30602-02.htm">Learn more</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Guardian Tanai:<br>
You can stick to basic attacks, it is surely the easiest way to fight.<br>
The more you grow, the stronger your attacks become, but you won't go far on those alone.<br>
Like this, you will never become that valiant Orc whose name goes down in history. So you must take note of other important things.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10953_ValiantOrcs 30602-03.htm">"What do you mean?"</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Guardian Tanai:<br>
Maybe you've already learnt something yourself.<br>
So you may already know what I'm going to tell you.<br>
We, Orcs, are inherently powerful, but our rigorous training and constant battles let us develop new techniques that made our bodies even stronger.<br>
We call those skills.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10953_ValiantOrcs 30602-04.htm">Learn more</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Guardian Tanai:<br>
You can open your <font color="LEVEL">skill UI</font> by pressing <font color="LEVEL">Alt+K</font>.<br>
The skills you've already learned can be dragged to the <font color="LEVEL">shortcut panel</font> or the <font color="LEVEL">auto-use slots</font>. The latter lets you use them while<font color="LEVEL">auto-hunting</font>.<br>
And now why don't you try putting this information into practice? Go to <font color="LEVEL">the northern part of the Immortal Plateau</font> and kill 30 monsters. There you will encounter <font color="LEVEL">Maraku Werewolf Chieftains, Evil Eye Patrols, Kasha Spiders and Kasha Blade Spiders</font>.<br>
And that concludes the last of my lessons. After dealing with monsters, go to <font color="LEVEL">Gantaki Zu Urutu</font><br>
He has traveled around the world for a long time and has accomplished many glorious feats to the glory of all Orcs. I think he has something useful to tell you.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest Q10953_ValiantOrcs TELEPORT_TO_THE_NORTH_OF_IMMORTAL_PLATEAU">Teleport to the north of the Immortal Plateau</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Guardian Tanai:<br>
All Orcs will speak about your glorious deeds.<br>
I've teached you the basics, and it will definitely help you in the future.<br>
Never forget my lessons, and you are certain to reach even greater heights.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h menu_select?ask=10953&reply=1">Learn more</Button>
</body></html>

View File

@ -0,0 +1,224 @@
/*
* 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.Q10953_ValiantOrcs;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.CategoryData;
import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.QuestSound;
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.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.classchange.ExClassChangeSetAlarm;
/**
* Valiant Orcs (10953)
* @author Elison
* @Notee: Based on NA server on April, 1 2022
*/
public class Q10953_ValiantOrcs extends Quest
{
// NPCs
private static final int TANAI = 30602;
private static final int GANTAKI_ZU_URUTU = 30587;
// 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_GANTAKI_ZU_URUTU = new ItemHolder(97231, 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);
private static final ItemHolder XP_GROWTH_SCROLL = new ItemHolder(49674, 1);
// Misc
private static final int MIN_LEVEL = 15;
private static final int MAX_LEVEL = 20;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10953_ValiantOrcs()
{
super(10953);
addStartNpc(TANAI);
addTalkId(TANAI, GANTAKI_ZU_URUTU);
addKillId(KASHA_SPIDER, KASHA_BLADE_SPIDER, MARAKU_WEREVOLF_CHIEFTAIN, EVIL_EYE_PATROL);
addCondMinLevel(MIN_LEVEL, "no_lvl.htm");
addCondMaxLevel(MAX_LEVEL, "no_lvl.htm");
setQuestNameNpcStringId(NpcStringId.LV_15_20_VALIANT_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 "30602-01.htm":
case "30602-02.htm":
case "30602-03.htm":
{
htmltext = event;
break;
}
case "30602-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30587-00.htm":
{
if (qs.isStarted())
{
addExpAndSp(player, 600000, 13500);
giveItems(player, SOE_NOVICE);
giveItems(player, SPIRIT_ORE);
giveItems(player, HP_POTS);
giveItems(player, XP_GROWTH_SCROLL);
giveStoryBuffReward(npc, player);
if (CategoryData.getInstance().isInCategory(CategoryType.FIRST_CLASS_GROUP, player.getClassId().getId()))
{
showOnScreenMsg(player, NpcStringId.YOU_VE_FINISHED_THE_TUTORIAL_TAKE_YOUR_1ST_CLASS_TRANSFER_AND_COMPLETE_YOUR_TRAINING_WITH_BATHIS_TO_BECOME_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000);
player.sendPacket(ExClassChangeSetAlarm.STATIC_PACKET);
}
qs.exitQuest(false, true);
}
break;
}
case "TELEPORT_TO_THE_NORTH_OF_IMMORTAL_PLATEAU":
{
giveStoryBuffReward(npc, player);
player.teleToLocation(13138, -131638, -1312);
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, Player 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 TANAI:
{
if (qs.isCond(1))
{
htmltext = "30602-04.htm";
}
break;
}
case GANTAKI_ZU_URUTU:
{
if (qs.isCond(2))
{
htmltext = "30587-06.htm";
}
break;
}
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, Player 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);
giveItems(killer, SOE_TO_GANTAKI_ZU_URUTU);
showOnScreenMsg(killer, NpcStringId.THE_TRAINING_IN_OVER_USE_A_SCROLL_OF_ESCAPE_IN_YOUR_INVENTORY_TO_GO_BACK_TO_GANTAKI_ZU_URUTU, ExShowScreenMessage.TOP_CENTER, 10000);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(Player player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.SUBJUGATION_IN_THE_NORTHERN_AREA_OF_THE_IMMORTAL_PLATEAU.getId(), true, qs.getInt(KILL_COUNT_VAR)));
return holder;
}
return super.getNpcLogList(player);
}
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerLogin(OnPlayerLogin event)
{
final Player player = event.getPlayer();
if (player == null)
{
return;
}
if (!CategoryData.getInstance().isInCategory(CategoryType.FIRST_CLASS_GROUP, player.getClassId().getId()))
{
return;
}
final QuestState qs = getQuestState(player, false);
if (Config.DISABLE_TUTORIAL || ((qs != null) && qs.isCompleted()))
{
player.sendPacket(ExClassChangeSetAlarm.STATIC_PACKET);
}
}
}

View File

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

View File

@ -39,6 +39,7 @@ 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.Q10953_ValiantOrcs.Q10953_ValiantOrcs;
import quests.Q10954_SayhaChildren.Q10954_SayhaChildren;
import quests.Q10955_NewLifeLessons.Q10955_NewLifeLessons;
import quests.Q10956_WeSylphs.Q10956_WeSylphs;
@ -93,6 +94,7 @@ public class QuestMasterHandler
Q10950_FiercestFlame.class,
Q10951_NewFlameOfOrcs.class,
Q10952_ProtectAtAllCosts.class,
Q10953_ValiantOrcs.class,
Q10954_SayhaChildren.class,
Q10955_NewLifeLessons.class,
Q10956_WeSylphs.class,

View File

@ -326,11 +326,20 @@
<!-- A magic scroll that can teleport you to Gantaki Zu Urutu in the Orc Village. -->
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="immediate_effect" val="true" />
<set name="material" val="PAPER" />
<set name="weight" val="30" />
<set name="price" val="35000" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<cond addName="1" msgId="113">
<player flyMounted="false" />
</cond>
<skills>
<skill id="40413" level="1" /> <!-- Scroll of Escape: Gantaki Zu Urutu -->
</skills>
</item>
<item id="97232" name="Spellbook: Giant's Stomp" additionalName="Sealed" type="EtcItem">
<!-- A spellbook for learning the Giant's Stomp skill. <Class> Vanguard Rider <Skill effect> Knocks nearby enemies down. -->

View File

@ -87,9 +87,30 @@
</effects>
</skill>
<skill id="40413" toLevel="1" name="Scroll of Escape: Gantaki Zu Urutu">
<!-- AUTO GENERATED SKILL TODO: FIX IT -->
<icon>icon.skill0000</icon>
<!-- A magical scroll that relocates you to the Gantaki Zu Urutu in Orc Village. Cannot be exchanged, dropped, or sold. Can be stored in a private warehouse. -->
<operateType>A1</operateType>
<hitTime>500</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<itemConsumeCount>1</itemConsumeCount>
<itemConsumeId>97230</itemConsumeId> <!-- Scroll of Escape: Gantaki Zu Urutu -->
<magicLevel>1</magicLevel>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
<condition name="OpAlignment">
<affectType>CASTER</affectType>
<alignment>LAWFUL</alignment>
</condition>
<condition name="OpCanEscape" />
</conditions>
<effects>
<effect name="Teleport">
<x>-44718</x>
<y>-111969</y>
<z>-240</z>
</effect>
</effects>
</skill>
<skill id="40414" toLevel="1" name="Rare Accessory Challenge Points +50">
<!-- AUTO GENERATED SKILL TODO: FIX IT -->