Переглянути джерело

Retail-like quest Family Honor (355).

Adry_85 10 роки тому
батько
коміт
88555a0692
33 змінених файлів з 335 додано та 203 видалено
  1. 0 1
      L2J_DataPack/dist/game/data/scripts.cfg
  2. 0 6
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-0a.htm
  3. 0 7
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-2.htm
  4. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-2a.htm
  5. 0 7
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-3.htm
  6. 0 7
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-1.htm
  7. 0 6
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-3.htm
  8. 0 7
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-5.htm
  9. 0 8
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-6.htm
  10. 0 133
      L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/__init__.py
  11. 3 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00352_HelpRoodRaiseANewPet/Q00352_HelpRoodRaiseANewPet.java
  12. 1 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-01.htm
  13. 3 6
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-02.htm
  14. 6 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-03.htm
  15. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-04.html
  16. 7 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-05.html
  17. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-06.html
  18. 6 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-07.html
  19. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-08.html
  20. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-09.html
  21. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-10.html
  22. 8 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-11.html
  23. 2 4
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-01.html
  24. 6 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-02.html
  25. 8 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-03.html
  26. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-04.html
  27. 7 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-05.html
  28. 8 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-06.html
  29. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-07.html
  30. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-08.html
  31. 249 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/Q00355_FamilyHonor.java
  32. 2 0
      L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
  33. 1 0
      L2J_DataPack/dist/sql/game/updates/20141107update.sql

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

@@ -248,7 +248,6 @@ quests/343_UnderTheShadowOfTheIvoryTower/__init__.py
 quests/345_MethodToRaiseTheDead/__init__.py
 quests/348_ArrogantSearch/__init__.py
 quests/351_BlackSwan/__init__.py
-quests/355_FamilyHonor/__init__.py
 quests/371_ShriekOfGhosts/__init__.py
 quests/372_LegacyOfInsolence/__init__.py
 quests/373_SupplierOfReagents/__init__.py

+ 0 - 6
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-0a.htm

@@ -1,6 +0,0 @@
-<html><body>Trader Galibredo:<br>
-Although now I'm merely a merchant, at one time my family was prominent! Although I may not look it, the blood of kings courses through my veins!<br>
-Whenever I say this, people laugh at me and think I'm lying. It's so very frustrating! But at last, now I have a chance to prove my noble heritage! All I need is a bit of help from an adventurer like yourself! I will pay you generously for your work! No cost is too great when the honor of my family is at stake! Will you help this old man?<br>
-
-(Quest for characters level 36 or above)
-</body></html>

+ 0 - 7
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-2.htm

@@ -1,7 +0,0 @@
-<html><body>Trader Galibredo:<br>
-
-The thieves who stole my precious sculptures are the<font color="LEVEL"> Timak orc troop</font>. According to my nephew, the troop consists of<font color="LEVEL"> Timak orc troop archers, Timak orc troop warriors, Timak orc troop leaders and the Timak orc troop shaman</font>. I doubt that those brutes even know the value of what they have!<br>
-If you bring me<font color="LEVEL"> "Galfredo Romer's Busts"</font>, I will pay you handsomely. If you bring me 100 or more of them at one time, you will receive a bonus. Please try your best!<br>You can keep any other sculptures you recover. You can sell them to a store or give them to someone as a gift.<br>
-<font color="LEVEL">They move around in a group, so it is not a bad idea to go with a couple of friends, if they wish to.</font> Good luck! I'm counting on you.
-
-</body></html>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-2a.htm

@@ -1,5 +0,0 @@
-<html><body>Trader Galibredo:<br>
-I'm counting on you! Go punish those dastardly thieves and recover my precious antiques.<br>
-
-<a action="bypass -h Quest 355_FamilyHonor 30181-5.htm">Quit working for him.</a>
-</body></html>

+ 0 - 7
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-3.htm

@@ -1,7 +0,0 @@
-<html><body>Trader Galibredo:<br>
-Oh, at last! The proof of the prestigious heritage of my family! The dignity of my great ancestors is restored! Thank you very much young man! Let me see... how may busts did you bring me? Oh yes! Here is your reward!<br>
-
-<a action="bypass -h Quest 355_FamilyHonor 30181-4.htm">Continue working for him.</a><br>
-
-<a action="bypass -h Quest 355_FamilyHonor 30181-5.htm">Quit working for him.</a>
-</body></html>

+ 0 - 7
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-1.htm

@@ -1,7 +0,0 @@
-<html><body>Antique Dealer Patrin:<br>
-Why, you find the true value of the item! To the untrained eye, an antique like this may seem rather ordinary. But to an expert like myself, each subtle mark and worn surface tells a story. The materials and techniques used in its manufacture are revealed to me.<br>
-The different aspects will determine the true value of the statue. Statues that are appraised to be<font color="LEVEL"> prototypes</font> or<font color="LEVEL"> genuine</font> are the most valuable.<br>
-If the appraisal shows that the statue is an<font color="LEVEL"> imitation</font> or a<font color="LEVEL"> forgery</font>, its value will be minimal. Sometimes it is better to skip the appraisal altogether.<br>
-
-<a action="bypass -h Quest 355_FamilyHonor 30929-0.htm">Back</a>
-</body></html>

+ 0 - 6
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-3.htm

@@ -1,6 +0,0 @@
-<html><body>Antique Dealer Patrin:<br>
-Just a moment... Let me get my reading glasses...<br>
-Now, what have we here?Hmm...?!<br>
-Oh... Heh heh...!<br>
-This is no work of Berona. It is a very cleverly made<font color="LEVEL"> imitation</font>! An apprentice sculptor must have copied the work of Berona. It is not worth much.
-</body></html>

+ 0 - 7
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-5.htm

@@ -1,7 +0,0 @@
-<html><body>Antique Dealer Patrin:<br>
-Just a moment... Let me get my reading glasses...<br>
-Now, what have we here? Hmm...?!<br>
-Oh Oh...!<br>Hmm...?!<br>
-In... indeed...!<br>
-This is indeed a<font color="LEVEL"> forgery</font> statue. It was made from the prototype. Although not as valuable as its prototype, it is highly regarded among antique dealers. It will fetch a pretty good price at any store.
-</body></html>

+ 0 - 8
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-6.htm

@@ -1,8 +0,0 @@
-<html><body>Antique Dealer Patrin:<br>
-Just a moment... Let me get my reading glasses...<br>
-Now, what have we here? Hmm...?!<br>
-Oh Oh...!<br>
-Hmm...?!<br>
-In... indeed...!<br>
-This is indeed a<font color="LEVEL"> prototype</font> statue. It is highly regarded among antique dealers. It will fetch a pretty good price at any store.
-</body></html>

+ 0 - 133
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/__init__.py

@@ -1,133 +0,0 @@
-# Made by disKret
-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 = "355_FamilyHonor"
-
-#NPC
-GALIBREDO = 30181
-PATRIN = 30929
-
-#CHANCES
-CHANCE_FOR_GALFREDOS_BUST = 80
-CHANCE_FOR_GODDESS_BUST = 30
-
-#ITEMS
-GALFREDOS_BUST = 4252
-BUST_OF_ANCIENT_GODDESS = 4349
-WORK_OF_BERONA = 4350
-STATUE_PROTOTYPE = 4351
-STATUE_ORIGINAL = 4352
-STATUE_REPLICA = 4353
-STATUE_FORGERY = 4354
-
-
-class Quest (JQuest) :
-
- def __init__(self,id,name,descr):
-     JQuest.__init__(self,id,name,descr)
-     self.questItemIds = [GALFREDOS_BUST, BUST_OF_ANCIENT_GODDESS]
-
- def onEvent (self,event,st) :
-   htmltext = event
-   if event == "30181-1.htm" :
-     return htmltext
-   if event == "30181-2.htm" :
-     st.set("cond","1")
-     st.setState(State.STARTED)
-     st.playSound("ItemSound.quest_accept")
-   if event == "30181-4.htm" :
-     count = st.getQuestItemsCount(BUST_OF_ANCIENT_GODDESS)
-     st.takeItems(BUST_OF_ANCIENT_GODDESS,count)
-     st.giveItems(WORK_OF_BERONA,count)
-   if event == "30929-0.htm" :
-     return htmltext
-   if event == "30929-1.htm" :
-     return htmltext
-   if event == "appraise" :
-     appraising = self.getRandom(100)
-     if appraising in range(0,20) : 
-       htmltext = "30929-2.htm"       
-       st.takeItems(WORK_OF_BERONA,1)
-     elif appraising in range(20,40) : 
-       htmltext = "30929-3.htm"       
-       st.takeItems(WORK_OF_BERONA,1)
-       st.giveItems(STATUE_REPLICA,1)
-     elif appraising in range(40,60) : 
-       htmltext = "30929-4.htm"       
-       st.takeItems(WORK_OF_BERONA,1)
-       st.giveItems(STATUE_ORIGINAL,1)
-     elif appraising in range(60,80) : 
-       htmltext = "30929-5.htm"       # custom txt
-       st.takeItems(WORK_OF_BERONA,1)
-       st.giveItems(STATUE_FORGERY,1)
-     elif appraising in range(80,100) : 
-       htmltext = "30929-6.htm"       # custom txt
-       st.takeItems(WORK_OF_BERONA,1)
-       st.giveItems(STATUE_PROTOTYPE,1)
-   if event == "30181-5.htm" :
-     st.playSound("ItemSound.quest_finish")
-     st.exitQuest(1)
-   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()
-   if npcId != GALIBREDO and id != State.STARTED : return htmltext
-
-   cond = st.getInt("cond")
-   count = st.getQuestItemsCount(GALFREDOS_BUST)
-   if npcId == GALIBREDO :
-     if cond == 0 :
-       if player.getLevel() >= 36 : 
-         htmltext = "30181-0.htm"
-       else:
-         htmltext = "30181-0a.htm"
-         st.exitQuest(1)
-     elif cond == 1 :
-       if count :
-         reward = count * 232
-         if count >= 100 :
-           reward = reward + 5000   # custom - need more info
-         st.takeItems(GALFREDOS_BUST,count)
-         st.giveItems(57,reward)
-         htmltext = "30181-3.htm"
-       else :
-         htmltext = "30181-2a.htm"
-   elif npcId == PATRIN :
-     if st.getQuestItemsCount(WORK_OF_BERONA) :   
-       htmltext = "30929-0.htm"
-     else :
-       htmltext = "<html><body>You have nothing to appraise.</body></html>"
-   return htmltext
-
- def onKill(self,npc,player,isPet):
-   st = player.getQuestState(qn)
-   if not st : return 
-   if st.getState() != State.STARTED : return 
-   
-   if st.getInt("cond") == 1 :
-     chance_1 = self.getRandom(100)
-     chance_2 = self.getRandom(100)
-     if chance_1 < CHANCE_FOR_GALFREDOS_BUST :
-       st.giveItems(GALFREDOS_BUST,1)
-       st.playSound("ItemSound.quest_itemget")
-     if chance_2 < CHANCE_FOR_GODDESS_BUST :
-       st.giveItems(BUST_OF_ANCIENT_GODDESS,1)      
-   return
-
-QUEST       = Quest(355,qn,"Family Honor")
-
-QUEST.addStartNpc(GALIBREDO)
-QUEST.addTalkId(GALIBREDO)
-QUEST.addTalkId(PATRIN)
-
-#MOBS TIMAK ORC TROOPS
-for MOBS in range(20767,20771) :
-  QUEST.addKillId(MOBS)

+ 3 - 2
L2J_DataPack/dist/game/data/scripts/quests/Q00352_HelpRoodRaiseANewPet/Q00352_HelpRoodRaiseANewPet.java

@@ -128,12 +128,13 @@ public final class Q00352_HelpRoodRaiseANewPet extends Quest
 		}
 		
 		final DropInfo info = MOBS.get(npc.getId());
+		final int random = getRandom(100);
 		
-		if (getRandom(100) < info.getFirstChance())
+		if (random < info.getFirstChance())
 		{
 			qs.giveItemRandomly(npc, LIENRIK_EGG1, 1, 0, 1.0, true);
 		}
-		else if (getRandom(100) < info.getSecondChance())
+		else if (random < info.getSecondChance())
 		{
 			qs.giveItemRandomly(npc, LIENRIK_EGG2, 1, 0, 1.0, true);
 		}

+ 1 - 2
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-0.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-01.htm

@@ -1,6 +1,5 @@
 <html><body>Trader Galibredo:<br>
 Although now I'm merely a merchant, at one time my family was prominent! Although I may not look it, the blood of kings courses through my veins!<br>
 Whenever I say this, people laugh at me and think I'm lying. It's so very frustrating! But at last, now I have a chance to prove my noble heritage! All I need is a bit of help from an adventurer like yourself! I will pay you generously for your work! No cost is too great when the honor of my family is at stake! Will you help this old man?<br>
-
-<a action="bypass -h Quest 355_FamilyHonor 30181-1.htm">How can I help you?</a>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-02.htm">"How can I help you?"</a>
 </body></html>

+ 3 - 6
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-1.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-02.htm

@@ -1,10 +1,7 @@
 <html><body>Trader Galibredo:<br>
 Have you ever heard of Berona, a sculptor from the Elmoreden Empire? She is well-known among antique lovers...<br>
-
-A few months ago, hundreds of her works were excavated in Innadril. "Galfredo Romer's Bust" was one of them. He was one of my ancestors who was as an aid to the Emperor! It is recorded in my family's genealogy! If you don't belive me, I'll show it to you!<br>
-Anyway, I sent my nephew to Innadril to buy all the sculptures for me. But, while they were being delivered to me, they were stolen by orc bandits. I'm very upset with my nephew! I told him repeatedly to hire guards!<br>
-
+A few months ago, hundreds of her works were excavated in Innadril. "Galfredo Romer's Bust" was one of them. He was one of my ancestors who was as an aid to the Emperor! It is recorded in my family's genealogy! If you don't believe me, I'll show it to you!<br>
+Anyway, I sent my nephew to Innadril to buy all the sculptures for me. But, while they were being delivered to me, they were stolen by Orc bandits. I'm very upset with my nephew! I told him repeatedly to hire guards!<br>
 Ahem! So, here's the deal. Will you recover the sculptures for me?<br>
-
-<a action="bypass -h Quest 355_FamilyHonor 30181-2.htm">Yes I will!</a>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-03.htm">"Yes I will!"</a>
 </body></html>

+ 6 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-03.htm

@@ -0,0 +1,6 @@
+<html><body>Trader Galibredo:<br>
+The thieves who stole my precious sculptures are the <font color="LEVEL">Timak Orc troop</font>. According to my nephew, the troop consists of <font color="LEVEL">Timak Orc troop archers, timak Orc troop warriors, timak Orc troop leaders and the Timak Orc troop shaman</font>. I doubt that those brutes even know the value of what they have!<br>
+If you bring me <font color="LEVEL">"Galfredo Romer's Busts"</font>, I will pay you handsomely. If you bring me 100 or more of them at one time, you will receive a bonus. Please try your best!<br>
+You can keep any other sculptures you recover. You can sell them to a store or give them to someone as a gift.<br>
+<font color="LEVEL">They move around in a group, so it is not a bad idea to go with a couple of friends, if they wish to.</font> Good luck! I'm counting on you.
+</body></html>

+ 5 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-04.html

@@ -0,0 +1,5 @@
+<html><body>Trader Galibredo:<br>
+Although now I'm merely a merchant, at one time my family was prominent! Although I may not look it, the blood of kings courses through my veins!<br>
+What's with the expression? Does it mean you don't believe me? You must think I'm just a crazy old man! Get away from me!<br>
+(This quest can only be undertaken by a character of level 36 or higher.)
+</body></html>

+ 7 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-05.html

@@ -0,0 +1,7 @@
+<html><body>Trader Galibredo:<br>
+Come on in! I've been waiting for you. How did you do?<br>
+Let me say this to you again. The thieves who stole my precious antiques are the <font color="LEVEL">Timak Orc troop archers, timak Orc troop warriors, timak Orc troop leaders and the Timak Orc troop shaman</font>. I trust that you destroyed them and recovered my goods?<br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-06.html">Settle the account now.</a><br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-09.html">Settle the account later.</a><br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-10.html">Quit.</a>
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-4.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-06.html


+ 6 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-07.html

@@ -0,0 +1,6 @@
+<html><body>Trader Galibredo:<br>
+Oh, at last! The proof of the prestigious heritage of my family! The dignity of my great ancestors is restored!<br>
+Let me see... how may busts did you bring me?  70... 80... 90... Oh, wonderful! It's more than 100! Then, in addition to your regular pay, I'll add a <font color="LEVEL">bonus</font>... Here you go! Thank you for your hard work!<br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-09.html">Continue working for him.</a><br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-10.html">Quit working for him.</a>
+</body></html>

+ 5 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-08.html

@@ -0,0 +1,5 @@
+<html><body>Trader Galibredo:<br>
+Oh, at last! The proof of the prestigious heritage of my family! The dignity of my great ancestors is restored!  Thank you very much young man! Let me see... how may busts did you bring me? Oh yes! Here is your reward!<br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-09.html">Continue working for him.</a><br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-10.html">Quit working for him.</a>
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-09.html

@@ -0,0 +1,3 @@
+<html><body>Trader Galibredo:<br>
+I'm counting on you! Go punish those dastardly thieves and recover my precious antiques.
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30181-5.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-10.html


+ 8 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30181-11.html

@@ -0,0 +1,8 @@
+<html><body>Trader Galibredo:<br>
+Welcome back! I've been waiting for you. Were you successful? I trust that you destroyed the Timak Orc troop and brought back my goods?<br>
+As I told you, all I want is "Galfredo Romer's Busts". You can keep the other <font color="LEVEL">works of sculptor Berona</font> for yourself. You should be able to sell them for a fairly good price.<br>
+Or... if you would like, you can also take them to the <font color="LEVEL">antique dealer Patrin</font> over there and get them appraised. Since we are close friends, I'll put in a good word for you. If the statues are prototypes or originals they are more valuable. If they are imitations or fakes, then they are worthless. It's a gamble.<br><br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-06.html">Settle the account.</a><br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-09.html">Settle the account later.</a><br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30181-10.html">Quit</a>
+</body></html>

+ 2 - 4
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-0.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-01.html

@@ -1,8 +1,6 @@
 <html><body>Antique Dealer Patrin:<br>
 Yes, Trader Galibredo told me about you. He said that you would be stopping by with some antique statues to be appraised...<br>
 Oh my! That statue... is that the "Lady of the Court" by Berona? Where did you find such a precious item...? Let me have a look!<br>
-
-<a action="bypass -h Quest 355_FamilyHonor 30929-1.htm">What happens after the appraisal?</a><br>
-
-<a action="bypass -h Quest 355_FamilyHonor appraise">Please appraise this statue!</a>
+<a action="bypass -h Quest Q00355_FamilyHonor 30929-02.html">"What happens after the appraisal?"</a><br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30929-03.html">"Please appraise this statue!"</a>
 </body></html>

+ 6 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-02.html

@@ -0,0 +1,6 @@
+<html><body>Antique Dealer Patrin:<br>
+Why, you find the true value of the item! To the untrained eye, an antique like this may seem rather ordinary. But to an expert like myself, each subtle mark and worn surface tells a story. The materials and techniques used in its manufacture are revealed to me.<br>
+The different aspects will determine the true value of the statue. Statues that are appraised to be <font color="LEVEL">prototypes</font> or <font color="LEVEL">genuine</font> are the most valuable.<br>
+If the appraisal shows that the statue is an  <font color="LEVEL">imitation</font> or a <font color="LEVEL">forgery</font>, its value will be minimal. Sometimes it is better to skip the appraisal altogether.<br>
+<a action="bypass -h Quest Q00355_FamilyHonor 30929-01.html">Back</a>
+</body></html>

+ 8 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-03.html

@@ -0,0 +1,8 @@
+<html><body>Antique Dealer Patrin:<br>
+Just a moment... Let me get my reading glasses...<br>
+Now, what have we here? Hmm...<br>
+Oh Oh...!<br>
+Hmm...?!<br>
+In... indeed...!<br>
+This is a <font color="LEVEL">prototype</font> made by the very hands of Berona! This was used to make molds from which many other statues were produced. You must understand that this is one of the most valuable antiques you will ever find. It will fetch a handsome price at any store.
+</body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-4.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-04.html

@@ -1,8 +1,8 @@
 <html><body>Antique Dealer Patrin:<br>
 Just a moment... Let me get my reading glasses...<br>
-Now, what have we here? Hmm...?!<br>
+Now, what have we here? Hmm...<br>
 Oh Oh...!<br>
 Hmm...?!<br>
 In... indeed...!<br>
-This is indeed a<font color="LEVEL"> genuine</font> statue. It was made from the prototype. Although not as valuable as its prototype, it is highly regarded among antique dealers. It will fetch a pretty good price at any store.
+This is indeed a <font color="LEVEL">genuine</font> statue. It was made from the prototype. Although not as valuable as its prototype, it is highly regarded among antique dealers. It will fetch a pretty good price at any store.
 </body></html>

+ 7 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-05.html

@@ -0,0 +1,7 @@
+<html><body>Antique Dealer Patrin:<br>
+Just a moment... Let me get my reading glasses...<br>
+Now, what have we here? <br>
+Hmm...?!<br>
+Oh... Heh heh...!<br>
+This is no work of Berona. It is a very cleverly made <font color="LEVEL">imitation</font>! An apprentice sculptor must have copied the work of Berona. It is not worth much.
+</body></html>

+ 8 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-06.html

@@ -0,0 +1,8 @@
+<html><body>Antique Dealer Patrin:<br>
+Just a moment... Let me get my reading glasses...<br>
+Now, shall I take a look at it? Hmm...<br>
+Oh Oh...!<br>
+Hmm...?!<br>
+Heh Heh...!<br>
+This is not Berona's work! It's a <font color="LEVEL">forgery</font>! It must have been made by a skillful counterfeiter! I am sorry. It is virtually worthless.
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/355_FamilyHonor/30929-2.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-07.html


+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/30929-08.html

@@ -0,0 +1,3 @@
+<html><body>Antique Dealer Patrin:<br>
+Why would you come to me empty-handed and ask for an appraisal? Are you kidding? What insolence!
+</body></html>

+ 249 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00355_FamilyHonor/Q00355_FamilyHonor.java

@@ -0,0 +1,249 @@
+/*
+ * 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.Q00355_FamilyHonor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+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;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Family Honor (355)
+ * @author Adry_85
+ */
+public final class Q00355_FamilyHonor extends Quest
+{
+	private static final class DropInfo
+	{
+		public final int _firstChance;
+		public final int _secondChance;
+		
+		public DropInfo(int firstChance, int secondChance)
+		{
+			_firstChance = firstChance;
+			_secondChance = secondChance;
+		}
+		
+		public int getFirstChance()
+		{
+			return _firstChance;
+		}
+		
+		public int getSecondChance()
+		{
+			return _secondChance;
+		}
+	}
+	
+	// NPCs
+	private static final int GALIBREDO = 30181;
+	private static final int PATRIN = 30929;
+	// Items
+	private static final int GALFREDO_ROMERS_BUST = 4252;
+	private static final int SCULPTOR_BERONA = 4350;
+	private static final int ANCIENT_STATUE_PROTOTYPE = 4351;
+	private static final int ANCIENT_STATUE_ORIGINAL = 4352;
+	private static final int ANCIENT_STATUE_REPLICA = 4353;
+	private static final int ANCIENT_STATUE_FORGERY = 4354;
+	// Misc
+	private static final int MIN_LEVEL = 36;
+	
+	private static final Map<Integer, DropInfo> MOBS = new HashMap<>();
+	static
+	{
+		MOBS.put(20767, new DropInfo(560, 684)); // timak_orc_troop_leader
+		MOBS.put(20768, new DropInfo(530, 650)); // timak_orc_troop_shaman
+		MOBS.put(20769, new DropInfo(420, 516)); // timak_orc_troop_warrior
+		MOBS.put(20770, new DropInfo(440, 560)); // timak_orc_troop_archer
+	}
+	
+	public Q00355_FamilyHonor()
+	{
+		super(355, Q00355_FamilyHonor.class.getSimpleName(), "Family Honor");
+		addStartNpc(GALIBREDO);
+		addTalkId(GALIBREDO, PATRIN);
+		addKillId(MOBS.keySet());
+		registerQuestItems(GALFREDO_ROMERS_BUST);
+	}
+	
+	@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 "30181-02.htm":
+			case "30181-09.html":
+			case "30929-01.html":
+			case "30929-02.html":
+			{
+				htmltext = event;
+				break;
+			}
+			case "30181-03.htm":
+			{
+				qs.startQuest();
+				htmltext = event;
+				break;
+			}
+			case "30181-06.html":
+			{
+				final long galfredoRomersBustCount = getQuestItemsCount(player, GALFREDO_ROMERS_BUST);
+				
+				if (galfredoRomersBustCount < 1)
+				{
+					htmltext = event;
+				}
+				else if (galfredoRomersBustCount >= 100)
+				{
+					giveAdena(player, (galfredoRomersBustCount * 120) + 7800, true);
+					takeItems(player, GALFREDO_ROMERS_BUST, -1);
+					htmltext = "30181-07.html";
+				}
+				else
+				{
+					giveAdena(player, (galfredoRomersBustCount * 120) + 2800, true);
+					takeItems(player, GALFREDO_ROMERS_BUST, -1);
+					htmltext = "30181-08.html";
+				}
+				break;
+			}
+			case "30181-10.html":
+			{
+				final long galfredoRomersBustCount = getQuestItemsCount(player, GALFREDO_ROMERS_BUST);
+				
+				if (galfredoRomersBustCount > 0)
+				{
+					giveAdena(player, galfredoRomersBustCount * 120, true);
+				}
+				
+				takeItems(player, GALFREDO_ROMERS_BUST, -1);
+				qs.exitQuest(true, true);
+				htmltext = event;
+				break;
+			}
+			case "30929-03.html":
+			{
+				final boolean hasSculptorBerona = hasQuestItems(player, SCULPTOR_BERONA);
+				final int random = getRandom(100);
+				
+				if (hasSculptorBerona)
+				{
+					if (random < 2)
+					{
+						giveItems(player, ANCIENT_STATUE_PROTOTYPE, 1);
+						htmltext = event;
+					}
+					else if (random < 32)
+					{
+						giveItems(player, ANCIENT_STATUE_ORIGINAL, 1);
+						htmltext = "30929-04.html";
+					}
+					else if (random < 62)
+					{
+						giveItems(player, ANCIENT_STATUE_REPLICA, 1);
+						htmltext = "30929-05.html";
+					}
+					else if (random < 77)
+					{
+						giveItems(player, ANCIENT_STATUE_FORGERY, 1);
+						htmltext = "30929-06.html";
+					}
+					else
+					{
+						htmltext = "30929-07.html";
+					}
+					
+					takeItems(player, SCULPTOR_BERONA, 1);
+				}
+				else
+				{
+					htmltext = "30929-08.html";
+				}
+				break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		final QuestState qs = getQuestState(killer, false);
+		
+		if ((qs == null) || !Util.checkIfInRange(1500, npc, killer, true))
+		{
+			return null;
+		}
+		
+		final DropInfo info = MOBS.get(npc.getId());
+		final int random = getRandom(1000);
+		
+		if (random < info.getFirstChance())
+		{
+			qs.giveItemRandomly(npc, GALFREDO_ROMERS_BUST, 1, 0, 1.0, true);
+		}
+		else if (random < info.getSecondChance())
+		{
+			qs.giveItemRandomly(npc, SCULPTOR_BERONA, 1, 0, 1.0, true);
+		}
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	@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) ? "30181-01.htm" : "30181-04.html";
+		}
+		else if (qs.isStarted())
+		{
+			if (npc.getId() == GALIBREDO)
+			{
+				final boolean hasSculptorBerona = hasQuestItems(player, SCULPTOR_BERONA);
+				if (hasSculptorBerona)
+				{
+					htmltext = "30181-11.html";
+				}
+				else
+				{
+					htmltext = "30181-05.html";
+				}
+			}
+			else
+			{
+				htmltext = "30929-01.html";
+			}
+		}
+		return htmltext;
+	}
+}

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

@@ -280,6 +280,7 @@ import quests.Q00347_GoGetTheCalculator.Q00347_GoGetTheCalculator;
 import quests.Q00350_EnhanceYourWeapon.Q00350_EnhanceYourWeapon;
 import quests.Q00352_HelpRoodRaiseANewPet.Q00352_HelpRoodRaiseANewPet;
 import quests.Q00354_ConquestOfAlligatorIsland.Q00354_ConquestOfAlligatorIsland;
+import quests.Q00355_FamilyHonor.Q00355_FamilyHonor;
 import quests.Q00356_DigUpTheSeaOfSpores.Q00356_DigUpTheSeaOfSpores;
 import quests.Q00357_WarehouseKeepersAmbition.Q00357_WarehouseKeepersAmbition;
 import quests.Q00358_IllegitimateChildOfTheGoddess.Q00358_IllegitimateChildOfTheGoddess;
@@ -714,6 +715,7 @@ public class QuestMasterHandler
 		Q00350_EnhanceYourWeapon.class,
 		Q00352_HelpRoodRaiseANewPet.class,
 		Q00354_ConquestOfAlligatorIsland.class,
+		Q00355_FamilyHonor.class,
 		Q00356_DigUpTheSeaOfSpores.class,
 		Q00357_WarehouseKeepersAmbition.class,
 		Q00358_IllegitimateChildOfTheGoddess.class,

+ 1 - 0
L2J_DataPack/dist/sql/game/updates/20141107update.sql

@@ -0,0 +1 @@
+UPDATE character_quests SET name='Q00355_FamilyHonor' WHERE name='355_FamilyHonor';