Newbie Helper:
+Welcome to Cedric's Training Hall. I will be teaching you the basics of combat.
+Please click on Quest, in your Chat window.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/html/default/30010.htm b/L2J_Mobius_Classic/dist/game/data/html/default/30010.htm
deleted file mode 100644
index ac49c06a31..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/html/default/30010.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Master Auron:
-Welcome, young traveler, to the Warrior Guild of Gludin Village! I am Master Auron. How may I serve you?
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/html/default/30019.htm b/L2J_Mobius_Classic/dist/game/data/html/default/30019.htm
new file mode 100644
index 0000000000..ce6f6269dd
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/html/default/30019.htm
@@ -0,0 +1,5 @@
+Newbie Helper:
+Welcome to Einhovant's School of Wizardry. I will be teaching you the basics of combat.
+Please click on Quest, in your Chat window.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/html/default/30131.htm b/L2J_Mobius_Classic/dist/game/data/html/default/30131.htm
new file mode 100644
index 0000000000..8574bed355
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/html/default/30131.htm
@@ -0,0 +1,5 @@
+Newbie Helper:
+Welcome, young seeker. In this temple are all Dark Elves born, and here we worship the goddess of darkness, the first goddess of water, Shilen. I will be teaching you the basics of combat.
+Please click on Quest, in your Chat window.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/html/default/30400.htm b/L2J_Mobius_Classic/dist/game/data/html/default/30400.htm
new file mode 100644
index 0000000000..d74cad8b8d
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/html/default/30400.htm
@@ -0,0 +1,5 @@
+Newbie Helper:
+I bid you welcome, young one. I am a guardian of the Mother Tree Glade, and serve the Mother of all Elves. I will be teaching you the basics of combat.
+To begin, click on Quest in the Chat window.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/html/default/30530.htm b/L2J_Mobius_Classic/dist/game/data/html/default/30530.htm
new file mode 100644
index 0000000000..42ef10896d
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/html/default/30530.htm
@@ -0,0 +1,5 @@
+Newbie Helper:
+Welcome, young Dwarf. Do you know where you are? This place is the strip mine, and here young Dwarves like you are trained. Every Dwarf must learn the skills required for self-sufficiency! I will teach you those basics.
+To begin, click on Quest, in the Chat window.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/html/default/30575.htm b/L2J_Mobius_Classic/dist/game/data/html/default/30575.htm
new file mode 100644
index 0000000000..2dd9d91a0a
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/html/default/30575.htm
@@ -0,0 +1,5 @@
+Newbie Helper:
+Welcome, young Orc. Stripling Orcs take their first steps toward becoming fighters in the Temple of Paagrio, where we worship Paagrio, god of fire and creator of all Orcs. I will teach you the basics of combat.
+To begin, click on Quest, in the Chat window.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30598.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30598.html
new file mode 100644
index 0000000000..2b9dfe8e55
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30598.html
@@ -0,0 +1,7 @@
+Newbie Guide:
+If you need advice, please do not hesitate to ask me! I'll try my very best to help you.
+
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30599.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30599.html
new file mode 100644
index 0000000000..bd070c2af8
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30599.html
@@ -0,0 +1,7 @@
+Newbie Guide:
+Don't hesitate to tell me if you require assistance. I can teach you about a number of useful things.
+
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30600.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30600.html
new file mode 100644
index 0000000000..2a000b19bd
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30600.html
@@ -0,0 +1,7 @@
+Newbie Guide:
+If you need advice, do not hesitate to ask me! I will do my very best to help you.
+
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30601.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30601.html
new file mode 100644
index 0000000000..3be24f4e6a
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30601.html
@@ -0,0 +1,7 @@
+Newbie Guide:
+Can I help you with anything? Eh? Well, then, what would you like to know?
+
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30602.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30602.html
new file mode 100644
index 0000000000..72d2440f38
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/30602.html
@@ -0,0 +1,7 @@
+Newbie Guide:
+You wish to grow strong and powerful, Eh? Then listen carefully; I will advice you!
+
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/Q00255_Tutorial.java b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/Q00255_Tutorial.java
new file mode 100644
index 0000000000..3944ad08fb
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/Q00255_Tutorial.java
@@ -0,0 +1,333 @@
+/*
+ * 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 .
+ */
+package quests.Q00255_Tutorial;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.l2jmobius.Config;
+import com.l2jmobius.gameserver.model.L2World;
+import com.l2jmobius.gameserver.model.Location;
+import com.l2jmobius.gameserver.model.actor.L2Npc;
+import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jmobius.gameserver.model.events.EventType;
+import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
+import com.l2jmobius.gameserver.model.events.annotations.Id;
+import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
+import com.l2jmobius.gameserver.model.events.annotations.RegisterType;
+import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerBypass;
+import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerItemPickup;
+import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLogin;
+import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerPressTutorialMark;
+import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
+import com.l2jmobius.gameserver.model.quest.Quest;
+import com.l2jmobius.gameserver.model.quest.QuestState;
+import com.l2jmobius.gameserver.network.serverpackets.PlaySound;
+import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
+import com.l2jmobius.gameserver.network.serverpackets.TutorialShowQuestionMark;
+
+/**
+ * Tutorial Quest
+ * @author Mobius
+ */
+public class Q00255_Tutorial extends Quest
+{
+ // NPCs
+ private final static int STARTING_HELPER_HF = 30009;
+ private final static int STARTING_HELPER_HM = 30019;
+ private final static int STARTING_HELPER_EL = 30400;
+ private final static int STARTING_HELPER_DE = 30131;
+ private final static int STARTING_HELPER_OR = 30575;
+ private final static int STARTING_HELPER_DW = 30530;
+ private final static int NEWBIE_BUFFER_HU = 30598;
+ private final static int NEWBIE_BUFFER_EL = 30599;
+ private final static int NEWBIE_BUFFER_DE = 30600;
+ private final static int NEWBIE_BUFFER_OR = 30602;
+ private final static int NEWBIE_BUFFER_DW = 30601;
+ // Monsters
+ private final static int[] GREMLINS =
+ {
+ 18342, // this is used for now
+ 20001
+ };
+ // Items
+ private final static int BLUE_GEM = 6353;
+ // Others
+ private static final Map STARTING_VOICE_HTML = new HashMap<>();
+ {
+ STARTING_VOICE_HTML.put(0, new QuestSoundHtmlHolder("tutorial_voice_001a", "tutorial_human_fighter001.html"));
+ STARTING_VOICE_HTML.put(10, new QuestSoundHtmlHolder("tutorial_voice_001b", "tutorial_human_mage001.html"));
+ STARTING_VOICE_HTML.put(18, new QuestSoundHtmlHolder("tutorial_voice_001c", "tutorial_elven_fighter001.html"));
+ 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"));
+ }
+ private static final Map HELPER_LOCATION = new HashMap<>();
+ {
+ HELPER_LOCATION.put(0, new Location(-71424, 258336, -3109));
+ HELPER_LOCATION.put(10, new Location(-91036, 248044, -3568));
+ HELPER_LOCATION.put(18, new Location(46112, 41200, -3504));
+ HELPER_LOCATION.put(25, new Location(46112, 41200, -3504));
+ HELPER_LOCATION.put(31, new Location(28384, 11056, -4233));
+ HELPER_LOCATION.put(38, new Location(28384, 11056, -4233));
+ HELPER_LOCATION.put(44, new Location(-56736, -113680, -672));
+ HELPER_LOCATION.put(49, new Location(-56736, -113680, -672));
+ HELPER_LOCATION.put(53, new Location(108567, -173994, -406));
+ }
+ private static final Map COMPLETE_LOCATION = new HashMap<>();
+ {
+ COMPLETE_LOCATION.put(0, new Location(-84081, 243227, -3723));
+ COMPLETE_LOCATION.put(10, new Location(-84081, 243227, -3723));
+ COMPLETE_LOCATION.put(18, new Location(45475, 48359, -3060));
+ COMPLETE_LOCATION.put(25, new Location(45475, 48359, -3060));
+ COMPLETE_LOCATION.put(31, new Location(12111, 16686, -4582));
+ COMPLETE_LOCATION.put(38, new Location(12111, 16686, -4582));
+ COMPLETE_LOCATION.put(44, new Location(-45032, -113598, -192));
+ COMPLETE_LOCATION.put(49, new Location(-45032, -113598, -192));
+ COMPLETE_LOCATION.put(53, new Location(115632, -177996, -905));
+ }
+ private static final String TUTORIAL_BUYPASS = "Quest Q00255_Tutorial ";
+
+ public Q00255_Tutorial()
+ {
+ super(255);
+ addTalkId(STARTING_HELPER_HF, STARTING_HELPER_HM, STARTING_HELPER_EL, STARTING_HELPER_DE, STARTING_HELPER_OR, STARTING_HELPER_DW);
+ addFirstTalkId(NEWBIE_BUFFER_HU, NEWBIE_BUFFER_EL, NEWBIE_BUFFER_DE, NEWBIE_BUFFER_OR, NEWBIE_BUFFER_DW);
+ addKillId(GREMLINS);
+ registerQuestItems(BLUE_GEM);
+ }
+
+ @Override
+ public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return null;
+ }
+
+ String htmltext = null;
+ switch (event)
+ {
+ case "tutorial_02.html":
+ {
+ playTutorialVoice(player, "tutorial_voice_003");
+ htmltext = event;
+ break;
+ }
+ case "user_connected":
+ {
+ // start the newbie tutorial
+ if (!qs.isCompleted() && STARTING_VOICE_HTML.containsKey(player.getClassId().getId()))
+ {
+ startQuestTimer("start_newbie_tutorial", 5000, null, player);
+ }
+ break;
+ }
+ case "start_newbie_tutorial":
+ {
+ qs.startQuest();
+ qs.setMemoState(1);
+ playTutorialVoice(player, STARTING_VOICE_HTML.get(player.getClassId().getId()).getSound());
+ htmltext = STARTING_VOICE_HTML.get(player.getClassId().getId()).getHtml();
+ break;
+ }
+ case "newbie_pick_up_items":
+ {
+ if (qs.getMemoState() <= 1)
+ {
+ playTutorialVoice(player, "tutorial_voice_011");
+ playSound(player, "ItemSound.quest_tutorial");
+ htmltext = "tutorial_09.html";
+ }
+ break;
+ }
+ case "goto_newbie_guide":
+ {
+ if (qs.getMemoState() == 2)
+ {
+ qs.setMemoState(3);
+ final int classId = player.getClassId().getId();
+ addRadar(player, HELPER_LOCATION.get(classId).getX(), HELPER_LOCATION.get(classId).getY(), HELPER_LOCATION.get(classId).getZ());
+ playSound(player, "ItemSound.quest_tutorial");
+ htmltext = "tutorial_11.html";
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onTalk(L2Npc npc, L2PcInstance player)
+ {
+ final QuestState qs = getQuestState(player, true);
+ String htmltext = getNoQuestMsg(player);
+
+ switch (npc.getId())
+ {
+ case STARTING_HELPER_HF:
+ case STARTING_HELPER_HM:
+ case STARTING_HELPER_EL:
+ case STARTING_HELPER_DE:
+ case STARTING_HELPER_OR:
+ case STARTING_HELPER_DW:
+ {
+ if ((qs.getMemoState() > 2) || hasQuestItems(player, BLUE_GEM))
+ {
+ takeItems(player, BLUE_GEM, -1);
+ final int classId = player.getClassId().getId();
+ qs.setMemoState(4);
+ addRadar(player, COMPLETE_LOCATION.get(classId).getX(), COMPLETE_LOCATION.get(classId).getY(), COMPLETE_LOCATION.get(classId).getZ());
+ playSound(player, "ItemSound.quest_tutorial");
+ htmltext = "tutorial_15.html";
+ }
+ else if (!hasQuestItems(player, BLUE_GEM))
+ {
+ htmltext = "tutorial_09.html";
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onFirstTalk(L2Npc npc, L2PcInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && (qs.getMemoState() == 4))
+ {
+ qs.exitQuest(false, false);
+ }
+ return npc.getId() + ".html";
+ }
+
+ @Override
+ public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(killer, false);
+ if ((qs != null) && (qs.getMemoState() < 2) && !hasQuestItems(killer, BLUE_GEM))
+ {
+ // check for too many gems on ground
+ int counter = 0;
+ for (L2ItemInstance item : L2World.getInstance().getVisibleObjects(killer, L2ItemInstance.class, 1500))
+ {
+ if (item.getId() == BLUE_GEM)
+ {
+ counter++;
+ }
+ }
+ if (counter < 10) // do not drop if more than 10
+ {
+ startQuestTimer("newbie_pick_up_items", 100, null, killer);
+ npc.dropItem(killer, BLUE_GEM, 1);
+ }
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @RegisterEvent(EventType.ON_PLAYER_ITEM_PICKUP)
+ @RegisterType(ListenerRegisterType.ITEM)
+ @Id(BLUE_GEM)
+ public void OnPlayerItemPickup(OnPlayerItemPickup event)
+ {
+ final L2PcInstance player = event.getActiveChar();
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && (qs.getMemoState() == 1))
+ {
+ player.sendPacket(TutorialCloseHtml.STATIC_PACKET); // FIXME: close does not work?
+ qs.setMemoState(2);
+ playTutorialVoice(player, "tutorial_voice_013");
+ playSound(player, "ItemSound.quest_tutorial");
+ player.sendPacket(new TutorialShowQuestionMark(0, 1));
+ }
+ }
+
+ @RegisterEvent(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK)
+ @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
+ public void onPlayerPressTutorialMark(OnPlayerPressTutorialMark event)
+ {
+ if (event.getMarkId() == 1) // tutorial mark
+ {
+ startQuestTimer("goto_newbie_guide", 100, null, event.getActiveChar());
+ }
+ }
+
+ @RegisterEvent(EventType.ON_PLAYER_BYPASS)
+ @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
+ public void OnPlayerBypass(OnPlayerBypass event)
+ {
+ final L2PcInstance player = event.getActiveChar();
+ if (event.getCommand().startsWith(TUTORIAL_BUYPASS))
+ {
+ notifyEvent(event.getCommand().replace(TUTORIAL_BUYPASS, ""), null, player);
+ }
+ }
+
+ @RegisterEvent(EventType.ON_PLAYER_LOGIN)
+ @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
+ public void OnPlayerLogin(OnPlayerLogin event)
+ {
+ if (Config.DISABLE_TUTORIAL)
+ {
+ return;
+ }
+
+ final L2PcInstance player = event.getActiveChar();
+ if (player.getLevel() > 6)
+ {
+ return;
+ }
+
+ QuestState qs = getQuestState(player, true);
+ if (qs != null)
+ {
+ notifyEvent("user_connected", null, player);
+ }
+ }
+
+ public void playTutorialVoice(L2PcInstance player, String voice)
+ {
+ player.sendPacket(new PlaySound(2, voice, 0, 0, player.getX(), player.getY(), player.getZ()));
+ }
+
+ private class QuestSoundHtmlHolder
+ {
+ private final String _sound;
+ private final String _html;
+
+ QuestSoundHtmlHolder(String sound, String html)
+ {
+ _sound = sound;
+ _html = html;
+ }
+
+ String getSound()
+ {
+ return _sound;
+ }
+
+ String getHtml()
+ {
+ return _html;
+ }
+ }
+}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_02.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_02.html
new file mode 100644
index 0000000000..2e5eae19a7
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_02.html
@@ -0,0 +1,5 @@
+
+
[Movement]
+Move your mouse cursor to the spot to which you want to move and left-click. Then, you will be moved to that location.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_09.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_09.html
new file mode 100644
index 0000000000..df62ce305a
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_09.html
@@ -0,0 +1,5 @@
+
+
[Picking Up Items]
When you defeat monsters, they drop their items on the ground. Move your cursor over to the dropped item, and the cursor will change its shape to a hand-shaped icon, indicating that the item may be picked up. Left-click on the item to pick it up.
+ There is another way to pick up an item. Press the F4 key and you can automatically pick up nearby items. Currently, the fourth slot on the shortcut bar is registered with the pickup action and therefore, when you press the F4 key, that action is activated.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_11.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_11.html
new file mode 100644
index 0000000000..3b20e47054
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_11.html
@@ -0,0 +1,5 @@
+
+Oh, you found the Blue Gemstone. Good job!
+Now, return and have a conversation with the newbie helper.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_15.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_15.html
new file mode 100644
index 0000000000..5cf0b0930d
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_15.html
@@ -0,0 +1,6 @@
+
+
[View Map]
+To see the map during the game, click on the map-shaped icon on the bottom right screen.
+ When viewing the map, the newbie guide's location is marked with a red flag.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_delf_fighter001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_delf_fighter001.html
new file mode 100644
index 0000000000..40bd8f6999
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_delf_fighter001.html
@@ -0,0 +1,8 @@
+
+Welcome to Lineage II!
+This is the Temple of Shilen, where Shilen, the goddess of darkness is worshipped. This is the place where young dark elves are trained to grow their skills and strength.
+Now, you are taking your first step to becoming a Dark Fighter. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_delf_mage001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_delf_mage001.html
new file mode 100644
index 0000000000..432416bfb9
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_delf_mage001.html
@@ -0,0 +1,7 @@
+
+Welcome to Lineage II!
+This is the Temple of Shilen, where Shilen, the goddess of darkness is worshipped. This is the place where young dark elves are trained to grow their skills and strength. Now, you are taking your first step to becoming a Dark Mystic. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_dwarven_fighter001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_dwarven_fighter001.html
new file mode 100644
index 0000000000..2661c1d90e
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_dwarven_fighter001.html
@@ -0,0 +1,8 @@
+
+Welcome to Lineage II!
+This is the strip mine of the Dwarves. All new dwarves start their basic training in this place.
+Now, you are taking your first step to becoming a Dwarven Fighter. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_elven_fighter001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_elven_fighter001.html
new file mode 100644
index 0000000000..fcd1ea2b27
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_elven_fighter001.html
@@ -0,0 +1,8 @@
+
+Welcome to Lineage II!
+This is the sacred spring where the Mother Tree, the mother of all Elves, is worshipped. Before journeying forth to the outside world, young elves begin their training in this place.
+Now, you are taking your first step to becoming an Elven Fighter. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_elven_mage001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_elven_mage001.html
new file mode 100644
index 0000000000..c3bbc8ba2d
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_elven_mage001.html
@@ -0,0 +1,8 @@
+
+Welcome to Lineage II!
+This is the sacred spring where the Mother Tree, the mother of all Elves, is worshipped. Before journeying forth to the outside world, young elves begin their training in this place.
+Now, you are taking your first step to becoming an Elven Mystic. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_human_fighter001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_human_fighter001.html
new file mode 100644
index 0000000000..929d35ec7b
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_human_fighter001.html
@@ -0,0 +1,8 @@
+
+Welcome to Lineage II!
+This is Sedrick's Training Hall. This place is famous for producing many noted Fighters.
+Now, you are taking your first step to becoming a Human Fighter. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_human_mage001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_human_mage001.html
new file mode 100644
index 0000000000..648115fcfd
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_human_mage001.html
@@ -0,0 +1,8 @@
+
+Welcome to Lineage II!
+This is Einhovant's School of Wizardry. This school is famous for producing many excellent mystics.
+Now, you are taking your first step to becoming a Human Mystic. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_orc_fighter001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_orc_fighter001.html
new file mode 100644
index 0000000000..070f5e3fa9
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_orc_fighter001.html
@@ -0,0 +1,8 @@
+
+Welcome to Lineage II!
+This is the Temple of Paagrio, the sacred place where we worship Paagrio, the god of flame. It is here that young Orcs begin their training.
+Now you are taking your first step to becoming an Orc Fighter. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_orc_mage001.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_orc_mage001.html
new file mode 100644
index 0000000000..c8ca620c40
--- /dev/null
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00255_Tutorial/tutorial_orc_mage001.html
@@ -0,0 +1,8 @@
+
+Welcome to Lineage II!
+This is the Temple of Paagrio, the sacred place where we worship Paagrio, the god of flame. It is here that young Orcs begin their training.
+Now, you are taking your first step to becoming an Orc Mystic. First, I will explain the basic operation of the game.
+
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_Classic/dist/game/data/scripts/quests/QuestMasterHandler.java
index 8e8952d94b..6d015b8bb0 100644
--- a/L2J_Mobius_Classic/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -19,6 +19,8 @@ package quests;
import java.util.logging.Level;
import java.util.logging.Logger;
+import quests.Q00255_Tutorial.Q00255_Tutorial;
+
/**
* @author NosBit
*/
@@ -28,7 +30,7 @@ public class QuestMasterHandler
private static final Class>[] QUESTS =
{
- // Q00013_ParcelDelivery.class,
+ Q00255_Tutorial.class,
};
public static void main(String[] args)
diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java
index 0aaadf6724..c0e7928991 100644
--- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java
+++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java
@@ -21,11 +21,19 @@ import com.l2jmobius.gameserver.network.OutgoingPackets;
public final class TutorialShowQuestionMark implements IClientOutgoingPacket
{
- private final int _markId;
+ private final int _number1; // cond?
+ private final int _number2; // quest id?
- public TutorialShowQuestionMark(int blink)
+ public TutorialShowQuestionMark(int number1)
{
- _markId = blink;
+ _number1 = number1;
+ _number2 = 0;
+ }
+
+ public TutorialShowQuestionMark(int number1, int number2)
+ {
+ _number1 = number1;
+ _number2 = number2;
}
@Override
@@ -33,8 +41,8 @@ public final class TutorialShowQuestionMark implements IClientOutgoingPacket
{
OutgoingPackets.TUTORIAL_SHOW_QUESTION_MARK.writeId(packet);
- packet.writeC(0x01); // Number of mark, most likely ?
- packet.writeD(_markId);
+ packet.writeC(_number1);
+ packet.writeD(_number2);
return true;
}
}
\ No newline at end of file