Forráskód Böngészése

Retail-like quest Grand Feast (378).

Adry_85 10 éve
szülő
commit
225d88745a
25 módosított fájl, 322 hozzáadás és 220 törlés
  1. 0 1
      L2J_DataPack/dist/game/data/scripts.cfg
  2. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-1.htm
  3. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-10.htm
  4. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-2.htm
  5. 0 7
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-3.htm
  6. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4.htm
  7. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4a.htm
  8. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4b.htm
  9. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4c.htm
  10. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4d.htm
  11. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-5.htm
  12. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-5a.htm
  13. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-6.htm
  14. 0 7
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-7.htm
  15. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8.htm
  16. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8a.htm
  17. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8b.htm
  18. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8c.htm
  19. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8d.htm
  20. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-9.htm
  21. 0 136
      L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/__init__.py
  22. 4 4
      L2J_DataPack/dist/game/data/scripts/quests/Q00378_GrandFeast/30594-01.htm
  23. 314 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00378_GrandFeast/Q00378_GrandFeast.java
  24. 2 0
      L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
  25. 2 1
      L2J_DataPack/dist/sql/game/updates/20141102update.sql

+ 0 - 1
L2J_DataPack/dist/game/data/scripts.cfg

@@ -254,7 +254,6 @@ quests/355_FamilyHonor/__init__.py
 quests/371_ShriekOfGhosts/__init__.py
 quests/372_LegacyOfInsolence/__init__.py
 quests/373_SupplierOfReagents/__init__.py
-quests/378_MagnificentFeast/__init__.py
 quests/379_FantasyWine/__init__.py
 quests/383_SearchingForTreasure/__init__.py
 quests/384_WarehouseKeepersPastime/__init__.py

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-1.htm

@@ -1,5 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-I've been a warehouse keeper in this very location for almost 40 years! I can honestly say that I built this place with my own hands. I sacrificed my youth and devoted all of my passion to it!<br>I received notice some time ago from the elder council of the guild union in Schuttgart. An inspector from the Iron Gate Guild will visit here soon. He is coming to observe my warehouse because the productivity in Dion has been so high this year. If everything goes well, I might be very well be promoted to the position of elder!<br>
-When the inspector is here, I must honor him with a great feast... But I don't know where to start! I'm so excited! I must have some help from an adventurer like yourself. Of course, you'll be well rewarded. What do you think? Will you help me?<br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-2.htm">"I'll help you."</a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-10.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Oh my! Yes, This is exactly what I wanted! Just looking at the ingredients makes my mouth water! So, now I just have to follow the recipe, right? I'm going to do everything I can to make this feast a success!<br>
-Thank you for your hard work. Thanks to you, now I can prepare a truly magnificent banquet! My promotion is guaranteed. Please accept this reward!
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-2.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Wonderful! The inspector is widely known to be a lover of fine food and drink. It is said that he joined a wine taster's guild as a hobby and ended up earning the title of Sommelier, the highest grade!<br>
-Anyway, at the feast, I must offer him first some elegant appetizers and top-quality wine. I know that the wine in this area is very well-regarded. Would you find a bottle and bring it to me? The older the better! Go visit<font color="LEVEL"> Guard Harlan</font> who works in the village.
-</body></html>

+ 0 - 7
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-3.htm

@@ -1,7 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Did you bring me the wine?<br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-4a.htm">"I brought you a 15-year-old bottle of wine."</a><br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-4b.htm">"I brought you a 30-year-old bottle of wine."</a><br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-4c.htm">"I brought you a 60-year-old bottle of wine."</a><br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-4d.htm">"Uh... where can I obtain the wine?"</a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Are you playing with me? Go get the wine!<br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-4d.htm">"Uh... where can I find the wine?"</a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4a.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Hmm... 15-year-old wine... I think you could've done better than that... Anyway, since I don't have much time left, I'll take it. Next I'll need...<br>
-A grand feast must be accompanied by entertainment! I heard that there is a skillful dwarf composer in this village. What was his name? Barmonkey... Barbado... something like that... Anyhow, please find this man and ask him to compose some festive music suitable for this occasion. I'll hire a musician myself. Just bring me a musical score.
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4b.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Hmm.. 30-year-old wine... Not bad... But I think you could've done better... But I'll take it. Let's see, what else was there...?<br>
-Ah, yes! A grand feast must be accompanied by entertainment! I've heard that there is a skillful dwarf composer in this village. What was his name? Barmonkey... Barbado... something like that... Anyhow, please find him and ask him to compose some festive music suitable for this occasion. I'll hire a musician myself. Just bring me a musical score.
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4c.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Oh, my! A 60-year-old wine! Such a rarity! Thank you so much! I'm glad I trusted you with this task. Now, let me see, what else was there...?<br>
-Ah, yes! A grand feast must be accompanied by entertainment! I've heard that there is a skillful dwarf composer in this village. What was his name? Barmonkey... Barbado... something like that... Anyhow, please find him and ask him to compose some festive music suitable for this occasion. I'll hire a musician myself. Just bring me a musical score.
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-4d.htm

@@ -1,3 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-What a blockhead you are! What's the matter with you? I'll explain it once more, so open your ears and listen! I must have top-quality wine! The older the better! Go and see<font color="LEVEL"> Guard Harlan</font> in the village.
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-5.htm

@@ -1,3 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Have you brought me the musical score? What have you been doing? Hurry to see that dwarf Barbado, or whatever his name is, and bring back the score! Make sure it's cheerful music, suitable for a banquet!
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-5a.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Is this the music Booboo, no, Barbado composed? Ha! I can't read music... but, I've heard that he's a good musician. I'm sure it's wonderful... I've hired an accordionist... Now, what else was there? Ah, yes! That's right...!<br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-6.htm">"What else do you need?"</a>
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-6.htm

@@ -1,3 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Appetizer, wine, cheerful music... all that's lacking is the main course... the heart and soul of the feast! We must prepare the courses! I know that the inspector would like to try some of Dion's regional foods. I have provided the young chef's apprentice with space and money to develop dishes... For some reason, it's taking him forever!<font color="LEVEL"> Jonas</font> is only interested in winning a prize in the culinary competition. He's not interested in treating the inspector with great dishes at all! He's saying that before he can complete the final dish, he won't tell his secret recipe to anyone! Would you talk to him and try to get his secret recipe?
-</body></html>

+ 0 - 7
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-7.htm

@@ -1,7 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Have you gotten the secret recipe from Jonas? I've invested so much time and money in that kid... If the recipe is mediocre.. I'll kick him out immediately!<br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-8a.htm">"I brought you Jonas's Salad Recipe."</a><br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-8b.htm">"I brought you Jonas's Sauce Recipe."</a><br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-8c.htm">"I brought you Jonas's Steak Recipe."</a><br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-8d.htm">"Uh... who is Jonas?"</a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-The inspector will be here in two days! We're running out of time! In fact, we've no time at all! Hurry back with a secret recipe from Jonas!<br>
-<a action="bypass -h Quest 378_MagnificentFeast 30594-8d.htm">"Uh... who is Jonas?"</a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8a.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-His recipe for what? Salad?! You can't really expect me to serve rabbit food to the inspector! Well, actually, it is a specialty of Dion... I suppose I could give it a try...<br>
-Well... my preparations for the feast are almost complete... I have just one last favor to ask you... Can you guess what it is? Yes, the dessert! What meal is complete without a delicious dessert? Go and see<font color="LEVEL"> Magister Rollant at the temple</font>, I've heard he has a secret recipe for a dessert made with local ingredients...
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8b.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-What am I supposed to do with a sauce? I suppose I could make steak... I could prepare it Dwarf-style, and use the sauce that Jonas developed. That should be enough to satisfy the inspector.<br>
-My preparations for the feast are almost complete... I have one last favor to ask you... Can you guess what it is? Yes, the dessert! What meal is complete without a delicious dessert? Go and see<font color="LEVEL"> Magister Rollant at the temple</font>, I've heard that he has a secret recipe for a dessert made with local ingredients...
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8c.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Monster Eye Steak? Oh my, that is unique! I like it! I'm sure the inspector will be very impressed!<br>
-My preparations for the feast are almost complete... I have one last favor to ask... Can you guess what it is? Yes, the dessert! What meal is complete without a delicious dessert? Go and see<font color="LEVEL"> Magister Rollant at the temple</font>, I've heard that he has a secret recipe for a dessert made with local ingredients...
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-8d.htm

@@ -1,3 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-Oh my! Where is Shilen when you need her? She should have taken you long ago! What were you doing when I explained this to you before? Are you deaf? OK, I'll tell you once more. Pay attention! The guy next to me is Jonas! He has a lot of secret recipes. Talk to him, obtain one of his secret recipes and bring it to me!
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-9.htm

@@ -1,3 +0,0 @@
-<html><body>Warehouse Chief Ranspo:<br>
-The inspector will be here the day after tomorrow! Even though you brought me the recipe, I'm not sure we can prepare the dish in time!<font color="LEVEL"> Quickly! Go to the temple and get the recipe for dessert from Magister Rollant!</font>
-</body></html>

+ 0 - 136
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/__init__.py

@@ -1,136 +0,0 @@
-# Magnificent Feast - v0.1 by DrLecter
-import sys
-from com.l2jserver.gameserver.model.quest import State
-from com.l2jserver.gameserver.model.quest import QuestState
-from com.l2jserver.gameserver.model.quest import Quest as JQuest
-
-qn = "378_MagnificentFeast"
-
-#NPC
-RANSPO = 30594
-
-#ITEMS
-WINE_15,WINE_30,WINE_60 = range(5956,5959)
-SCORE = 4421
-RP_SALAD,RP_SAUCE,RP_STEAK = range(1455,1458)
-RP_DESSERT = 5959
-#REWARDS
-REWARDS={
-9:[847,1,5700],
-10:[846,2,0],
-12:[909,1,25400],
-17:[846,2,1200],
-18:[879,1,6900],
-20:[890,2,8500],
-33:[879,1,8100],
-34:[910,1,0],
-36:[848,1,2200],
-}
-
-class Quest (JQuest) :
-
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
-
- def onEvent (self,event,st) :
-   htmltext = event
-   score = st.getInt("score")
-   cond = st.getInt("cond")
-   if event == "30594-2.htm" and cond == 0 :
-     st.set("cond","1")
-     st.setState(State.STARTED)
-     st.playSound("ItemSound.quest_accept")
-   elif event == "30594-4a.htm" :
-     if st.getQuestItemsCount(WINE_15) and cond == 1 :
-        st.takeItems(WINE_15,1)
-        st.set("cond","2")
-        st.set("score",str(score+1))
-     else :
-        htmltext = "30594-4.htm"
-   elif event == "30594-4b.htm" :
-     if st.getQuestItemsCount(WINE_30) and cond == 1 :
-        st.takeItems(WINE_30,1)
-        st.set("cond","2")
-        st.set("score",str(score+2))
-     else :
-        htmltext = "30594-4.htm"
-   elif event == "30594-4c.htm" :
-     if st.getQuestItemsCount(WINE_60) and cond == 1 :
-        st.takeItems(WINE_60,1)
-        st.set("cond","2")
-        st.set("score",str(score+4))
-     else :
-        htmltext = "30594-4.htm"
-   elif event == "30594-6.htm" :
-     if st.getQuestItemsCount(SCORE) and cond == 2  :
-        st.takeItems(SCORE,1)
-        st.set("cond","3")
-     else :
-        htmltext = "30594-5.htm"
-   elif event == "30594-8a.htm" :
-     if st.getQuestItemsCount(RP_SALAD) and cond == 3 :
-        st.takeItems(RP_SALAD,1)
-        st.set("cond","4")
-        st.set("score",str(score+8))
-     else :
-        htmltext = "30594-8.htm"
-   elif event == "30594-8b.htm" :
-     if st.getQuestItemsCount(RP_SAUCE) and cond == 3 :
-        st.takeItems(RP_SAUCE,1)
-        st.set("cond","4")
-        st.set("score",str(score+16))
-     else :
-        htmltext = "30594-8.htm"
-   elif event == "30594-8c.htm" :
-     if st.getQuestItemsCount(RP_STEAK) and cond == 3 :
-        st.takeItems(RP_STEAK,1)
-        st.set("cond","4")
-        st.set("score",str(score+32))
-     else :
-        htmltext = "30594-8.htm"
-
-   return htmltext
-
- def onTalk (self,npc,player):
-   htmltext = Quest.getNoQuestMsg(player)
-   st = player.getQuestState(qn)
-   if not st : return htmltext
-
-   npcId = npc.getId()
-   id = st.getState()
-   cond=st.getInt("cond")
-   if cond == 0 :
-     if player.getLevel() >= 20 :
-       htmltext = "30594-1.htm"
-     else:
-       htmltext = "30594-0.htm"
-       st.exitQuest(1)
-   elif cond == 1 :
-     htmltext = "30594-3.htm"
-   elif cond == 2 :
-     if st.getQuestItemsCount(SCORE) :
-        htmltext = "30594-5a.htm"
-     else :
-        htmltext = "30594-5.htm"
-   elif cond == 3 :
-     htmltext = "30594-7.htm"
-   elif cond == 4 :
-     score = st.getInt("score")
-     if st.getQuestItemsCount(RP_DESSERT) and score in REWARDS.keys() :
-        item,qty,adena=REWARDS[score]
-        st.giveItems(item,qty)
-        if adena :
-           st.giveItems(57,adena)
-        st.takeItems(RP_DESSERT,1)
-        st.playSound("ItemSound.quest_finish")
-        htmltext = "30594-10.htm"
-        st.exitQuest(1)
-     else :
-        htmltext = "30594-9.htm"
-   return htmltext
-
-QUEST       = Quest(378,qn,"Magnificent Feast")
-
-
-QUEST.addStartNpc(RANSPO)
-
-QUEST.addTalkId(RANSPO)

+ 4 - 4
L2J_DataPack/dist/game/data/scripts/quests/378_MagnificentFeast/30594-0.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00378_GrandFeast/30594-01.htm

@@ -1,6 +1,6 @@
 <html><body>Warehouse Chief Ranspo:<br>
-I've been a warehouse keeper in this very location for almost 40 years! I can honestly say that I built this place with my own hands! I sacrificed my youth and devoted all of my passion to it!<br>
-I received notice some time ago from the elder council of the guild union in Schuttgart. An inspector from the Iron Gate Guild will visit here soon. He is coming to observe my warehouse because the productivity in Dion has been so high this year. If everything goes well, I might very well be promoted to the position of elder!<br>
-When the inspector is here, I must honor him with a great feast... But I don't know where to start! I'm so excited! I must have some help from an adventurer like yourself, but... now that I get a closer look at you, I can tell that you're still lacking experience! Why don't you come back and see me later?<br>
-(This quest may only be undertaken by a character of level 20 or above.)
+I've been a warehouse keeper in this very location for almost 40 years! I can honestly say that I built this place with my own hands. I sacrificed my youth and devoted all of my passion to it!<br>
+I received notice some time ago from the elder council of the guild union in Schuttgart. An inspector from the Iron Gate Guild will visit here soon. He is coming to observe my warehouse because the productivity in Dion has been so high this year. If everything goes well, I might be very well be promoted to the position of elder!<br>
+When the inspector is here, I must honor him with a great feast... But I don't know where to start! I'm so excited! I must have some help from an adventurer like yourself. Of course, you'll be well rewarded. What do you think? Will you help me?<br>
+<a action="bypass -h Quest Q00378_GrandFeast 30594-02.htm">"I'll help you."</a>
 </body></html>

+ 314 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00378_GrandFeast/Q00378_GrandFeast.java

@@ -0,0 +1,314 @@
+/*
+ * Copyright (C) 2004-2014 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack 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.
+ * 
+ * L2J DataPack 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.Q00378_GrandFeast;
+
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.quest.Quest;
+import com.l2jserver.gameserver.model.quest.QuestState;
+
+/**
+ * Grand Feast (378)
+ * @author Adry_85
+ */
+public final class Q00378_GrandFeast extends Quest
+{
+	// NPC
+	private static final int RANSPO = 30594;
+	// Items
+	private static final int JONAS_SALAD_RECIPE = 1455;
+	private static final int JONAS_SAUCE_RECIPE = 1456;
+	private static final int JONAS_STEAK_RECIPE = 1457;
+	private static final int THEME_OF_THE_FEAST = 4421;
+	private static final int OLD_WINE_15_YEAR = 5956;
+	private static final int OLD_WINE_30_YEAR = 5957;
+	private static final int OLD_WINE_60_YEAR = 5958;
+	private static final int RITRONS_DESSERT_RECIPE = 5959;
+	// Rewards
+	private static final int CORAL_EARRING = 846;
+	private static final int RED_CRESCENT_EARRING = 847;
+	private static final int ENCHANTED_EARRING = 848;
+	private static final int ENCHANTED_RING = 879;
+	private static final int RING_OF_DEVOTION = 890;
+	private static final int BLUE_DIAMOND_NECKLACE = 909;
+	private static final int NECKLACE_OF_DEVOTION = 910;
+	// Misc
+	private static final int MIN_LEVEL = 20;
+	
+	public Q00378_GrandFeast()
+	{
+		super(378, Q00378_GrandFeast.class.getSimpleName(), "Grand Feast");
+		addStartNpc(RANSPO);
+		addTalkId(RANSPO);
+	}
+	
+	@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 "30594-02.htm":
+			{
+				qs.setMemoStateEx(1, 0);
+				qs.startQuest();
+				htmltext = event;
+				break;
+			}
+			case "30594-05.html":
+			{
+				final int i0 = qs.getMemoStateEx(1);
+				if (hasQuestItems(player, OLD_WINE_15_YEAR))
+				{
+					takeItems(player, OLD_WINE_15_YEAR, 1);
+					qs.setMemoStateEx(1, i0 + 10);
+					qs.setCond(2, true);
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30594-08.html";
+				}
+				break;
+			}
+			case "30594-06.html":
+			{
+				final int i0 = qs.getMemoStateEx(1);
+				if (hasQuestItems(player, OLD_WINE_30_YEAR))
+				{
+					takeItems(player, OLD_WINE_30_YEAR, 1);
+					qs.setMemoStateEx(1, i0 + 20);
+					qs.setCond(2, true);
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30594-08.html";
+				}
+				break;
+			}
+			case "30594-07.html":
+			{
+				final int i0 = qs.getMemoStateEx(1);
+				if (hasQuestItems(player, OLD_WINE_60_YEAR))
+				{
+					takeItems(player, OLD_WINE_60_YEAR, 1);
+					qs.setMemoStateEx(1, i0 + 30);
+					qs.setCond(2, true);
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30594-08.html";
+				}
+				break;
+			}
+			case "30594-09.html":
+			case "30594-18.html":
+			{
+				htmltext = event;
+				break;
+			}
+			case "30594-12.html":
+			{
+				if (hasQuestItems(player, THEME_OF_THE_FEAST))
+				{
+					takeItems(player, THEME_OF_THE_FEAST, 1);
+					qs.setCond(3, true);
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30594-08.html";
+				}
+				break;
+			}
+			case "30594-14.html":
+			{
+				final int i0 = qs.getMemoStateEx(1);
+				if (hasQuestItems(player, JONAS_SALAD_RECIPE))
+				{
+					takeItems(player, JONAS_SALAD_RECIPE, 1);
+					qs.setMemoStateEx(1, i0 + 1);
+					qs.setCond(4, true);
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30594-17.html";
+				}
+				break;
+			}
+			case "30594-15.html":
+			{
+				final int i0 = qs.getMemoStateEx(1);
+				if (hasQuestItems(player, JONAS_SAUCE_RECIPE))
+				{
+					takeItems(player, JONAS_SAUCE_RECIPE, 1);
+					qs.setMemoStateEx(1, i0 + 2);
+					qs.setCond(4, true);
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30594-17.html";
+				}
+				break;
+			}
+			case "30594-16.html":
+			{
+				final int i0 = qs.getMemoStateEx(1);
+				if (hasQuestItems(player, JONAS_STEAK_RECIPE))
+				{
+					takeItems(player, JONAS_STEAK_RECIPE, 1);
+					qs.setMemoStateEx(1, i0 + 3);
+					qs.setCond(4, true);
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30594-17.html";
+				}
+				break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		QuestState qs = getQuestState(player, true);
+		String htmltext = getNoQuestMsg(player);
+		if (qs.isCreated())
+		{
+			htmltext = (player.getLevel() >= MIN_LEVEL) ? "30594-01.htm" : "30594-03.html";
+		}
+		else if (qs.isStarted())
+		{
+			switch (qs.getCond())
+			{
+				case 1:
+				{
+					htmltext = "30594-04.html";
+					break;
+				}
+				case 2:
+				{
+					htmltext = (hasQuestItems(player, THEME_OF_THE_FEAST)) ? "30594-11.html" : "30594-10.html";
+					break;
+				}
+				case 3:
+				{
+					htmltext = "30594-13.html";
+					break;
+				}
+				case 4:
+				{
+					if (hasQuestItems(player, RITRONS_DESSERT_RECIPE))
+					{
+						takeItems(player, RITRONS_DESSERT_RECIPE, 1);
+						int item = 0, adena = 0;
+						long quantity = 0;
+						switch (qs.getMemoStateEx(1))
+						{
+							case 11:
+							{
+								item = RED_CRESCENT_EARRING;
+								quantity = 1;
+								adena = 5700;
+								break;
+							}
+							case 12:
+							{
+								item = CORAL_EARRING;
+								quantity = 2;
+								adena = 1200;
+								break;
+							}
+							case 13:
+							{
+								item = ENCHANTED_RING;
+								quantity = 1;
+								adena = 8100;
+								break;
+							}
+							case 21:
+							{
+								item = CORAL_EARRING;
+								quantity = 2;
+								break;
+							}
+							case 22:
+							{
+								item = ENCHANTED_RING;
+								quantity = 1;
+								adena = 6900;
+								break;
+							}
+							case 23:
+							{
+								item = NECKLACE_OF_DEVOTION;
+								quantity = 1;
+								break;
+							}
+							case 31:
+							{
+								item = BLUE_DIAMOND_NECKLACE;
+								quantity = 1;
+								adena = 25400;
+								break;
+							}
+							case 32:
+							{
+								item = RING_OF_DEVOTION;
+								quantity = 2;
+								adena = 8500;
+								break;
+							}
+							case 33:
+							{
+								item = ENCHANTED_EARRING;
+								quantity = 1;
+								adena = 2200;
+								break;
+							}
+						}
+						giveItems(player, item, quantity);
+						giveAdena(player, adena, true);
+						qs.exitQuest(true, true);
+						htmltext = "30594-20.html";
+					}
+					else
+					{
+						htmltext = "30594-19.html";
+					}
+					break;
+				}
+			}
+		}
+		return htmltext;
+	}
+}

+ 2 - 0
L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java

@@ -261,6 +261,7 @@ import quests.Q00369_CollectorOfJewels.Q00369_CollectorOfJewels;
 import quests.Q00370_AnElderSowsSeeds.Q00370_AnElderSowsSeeds;
 import quests.Q00376_ExplorationOfTheGiantsCavePart1.Q00376_ExplorationOfTheGiantsCavePart1;
 import quests.Q00377_ExplorationOfTheGiantsCavePart2.Q00377_ExplorationOfTheGiantsCavePart2;
+import quests.Q00378_GrandFeast.Q00378_GrandFeast;
 import quests.Q00380_BringOutTheFlavorOfIngredients.Q00380_BringOutTheFlavorOfIngredients;
 import quests.Q00381_LetsBecomeARoyalMember.Q00381_LetsBecomeARoyalMember;
 import quests.Q00382_KailsMagicCoin.Q00382_KailsMagicCoin;
@@ -659,6 +660,7 @@ public class QuestMasterHandler
 		Q00370_AnElderSowsSeeds.class,
 		Q00376_ExplorationOfTheGiantsCavePart1.class,
 		Q00377_ExplorationOfTheGiantsCavePart2.class,
+		Q00378_GrandFeast.class,
 		Q00380_BringOutTheFlavorOfIngredients.class,
 		Q00381_LetsBecomeARoyalMember.class,
 		Q00382_KailsMagicCoin.class,

+ 2 - 1
L2J_DataPack/dist/sql/game/updates/20141102update.sql

@@ -1 +1,2 @@
-UPDATE character_quests SET name='Q00061_LawEnforcement' WHERE name='61_LawEnforcement'; 
+UPDATE character_quests SET name='Q00061_LawEnforcement' WHERE name='61_LawEnforcement';
+UPDATE character_quests SET name='Q00378_GrandFeast' WHERE name='378_MagnificentFeast';