diff --git a/L2J_DataPack_BETA/dist/game/data/scripts.cfg b/L2J_DataPack_BETA/dist/game/data/scripts.cfg
index 9263062bd9d811b87e1f4ec0bb2527d98c143c44..f1777299f1595573931d37343edb3abdd601fcf0 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts.cfg
+++ b/L2J_DataPack_BETA/dist/game/data/scripts.cfg
@@ -543,8 +543,8 @@ quests/372_LegacyOfInsolence/__init__.py
 quests/373_SupplierOfReagents/__init__.py
 quests/374_WhisperOfDreams1/__init__.py
 quests/375_WhisperOfDreams2/__init__.py
-quests/376_GiantsExploration1/__init__.py
-quests/377_GiantsExploration2/__init__.py
+quests/Q376_ExplorationOfTheGiantsCavePart1/Q376_ExplorationOfTheGiantsCavePart1.java
+quests/Q377_ExplorationOfTheGiantsCavePart2/Q377_ExplorationOfTheGiantsCavePart2.java
 quests/378_MagnificentFeast/__init__.py
 quests/379_FantasyWine/__init__.py
 quests/380_BringOutTheFlavorOfIngredients/__init__.py
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-04.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-04.htm
deleted file mode 100644
index 1e39dc544f463d61d270745f5dd63c137ab66063..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-04.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Expedition Captain Sobling:<br>
-Rewards appropriate for your effort are always prepared. If you make enough effort, you can take anything. But, what would you like?<br>
-<a action="bypass -h Quest 376_GiantsExploration1 31147-04a.htm">Receive S80 Weapon Recipe as a reward (Requires 10 sets of Knowledge of the Giants Anthology)</a><br>
-<a action="bypass -h Quest 376_GiantsExploration1 31147-04b.htm">Receive High Grade Materials (Requires 1 set of Knowledge of the Giants Anthology)</a>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/__init__.py b/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/__init__.py
deleted file mode 100644
index 9ee0d060dfcb6346176898b5d95fcc3ee6b1dfe9..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/__init__.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# Created by Gnacik
-# 2010-02-17 based on official Franz server
-
-import sys
-from com.l2jserver.gameserver.model.quest				import State
-from com.l2jserver.gameserver.model.quest				import QuestState
-from com.l2jserver.gameserver.model.quest.jython	import QuestJython as JQuest
-
-qn = "376_GiantsExploration1"
-
-# NPC
-SOBLING	= 31147
-
-# Items
-ANCIENT_PARCHMENT = 14841
-BOOK1,BOOK2,BOOK3,BOOK4,BOOK5 = [14836,14837,14838,14839,14840]
-
-# Drop Chance
-DROP_CHANCE = 20
-
-# Mobs
-MOBS = [22670,22671,22672,22673,22674,22675,22676,22677]
-
-
-class Quest (JQuest) :
-
-	def __init__(self,id,name,descr):
-		JQuest.__init__(self,id,name,descr)
-		self.questItemIds = [ANCIENT_PARCHMENT]
-
-	def onExchangeRequest(self,event,st,qty,rem) :
-		if st.getQuestItemsCount(BOOK1) >= rem and st.getQuestItemsCount(BOOK2) >= rem and st.getQuestItemsCount(BOOK3) >= rem and st.getQuestItemsCount(BOOK4) >= rem and st.getQuestItemsCount(BOOK5) >= rem :
-			st.takeItems(BOOK1,rem)
-			st.takeItems(BOOK2,rem)
-			st.takeItems(BOOK3,rem)
-			st.takeItems(BOOK4,rem)
-			st.takeItems(BOOK5,rem)
-			st.giveItems(int(event),qty)
-			st.playSound("ItemSound.quest_finish")
-			return "31147-ok.htm"
-		else:
-			return "31147-no.htm"
-
-	def onAdvEvent (self,event,npc,player) :
-		htmltext = event
-		st = player.getQuestState(qn)
-		if not st : return
-		if event == "31147-02.htm" :
-			st.set("cond","1")
-			st.setState(State.STARTED)
-			st.playSound("ItemSound.quest_accept")
-		elif event == "31147-quit.htm" :
-			st.unset("cond")
-			st.exitQuest(1)
-			st.playSound("ItemSound.quest_finish")
-		elif event.isdigit() :
-			if int(event) == 9967 :											# Recipe - Dynasty Sword (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9968 :										# Recipe - Dynasty Blade (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9969 :										# Recipe - Dynasty Phantom (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9970 :										# Recipe - Dynasty Bow (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9971 :										# Recipe - Dynasty Knife (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9972 :										# Recipe - Dynasty Halberd (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9973 :										# Recipe - Dynasty Cudgel (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9974 :										# Recipe - Dynasty Mace (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9975 :										# Recipe - Dynasty Bagh-Nakh (60%)
-				htmltext = self.onExchangeRequest(event,st,1,10)
-			elif int(event) == 9628 :										# Leonard
-				htmltext = self.onExchangeRequest(event,st,6,1)
-			elif int(event) == 9629 :										# Adamantine
-				htmltext = self.onExchangeRequest(event,st,3,1)
-			elif int(event) == 9630 :										# Orichalcum
-				htmltext = self.onExchangeRequest(event,st,4,1)
-
-		return htmltext
-
-	def onTalk (self,npc,player) :
-		htmltext = Quest.getNoQuestMsg(player)
-		st = player.getQuestState(qn)
-		if not st : return htmltext
-
-		npcId = npc.getNpcId()
-		cond = st.getInt("cond")
-
-		if npcId == SOBLING:
-			if st.getState() == State.STARTED :
-				if st.getQuestItemsCount(BOOK1) > 0 and st.getQuestItemsCount(BOOK2) > 0 and st.getQuestItemsCount(BOOK3) > 0 and st.getQuestItemsCount(BOOK4) > 0 and st.getQuestItemsCount(BOOK5) > 0 :
-					# To do
-					htmltext = "31147-03.htm"
-				else:
-					htmltext = "31147-02a.htm"
-			else:
-				if player.getLevel() >= 79 :
-					htmltext = "31147-01.htm"
-				else :
-					htmltext = "31147-00.htm"
-		return htmltext
-
-	def onKill(self,npc,player,isPet) :
-		st = player.getQuestState(qn)
-		if not st : return
-		if st.getState() != State.STARTED : return
-
-		npcId = npc.getNpcId()
-		cond = st.getInt("cond")
-		if cond == 1 and npcId in MOBS :
-			if st.getRandom(100) < DROP_CHANCE :
-				st.giveItems(ANCIENT_PARCHMENT,1)
-				st.playSound("ItemSound.quest_itemget")
-		return
-
-QUEST		= Quest(376,qn,"Exploration of the Giants Cave, Part I")
-
-QUEST.addStartNpc(SOBLING)
-QUEST.addTalkId(SOBLING)
-
-for i in MOBS :
-	QUEST.addKillId(i)
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-04.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-04.htm
deleted file mode 100644
index 588db384353ec64a1c3be7912d74fb6e96e5ad7a..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-04.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Expedition Captain Sobling:<br>
-Rewards appropriate for your effort are always prepared. If you make enough effort, you can take anything. But, what would you like?<br>
-<a action="bypass -h Quest 377_GiantsExploration2 31147-04a.htm">Receive Giant's Codex - Oblivion or Discipline (Requires 5 sets of Wisdom of the Giants Text)</a><br>
-<a action="bypass -h Quest 377_GiantsExploration2 31147-04b.htm">Receive High Grade Materials (Requires 1 set of Knowledge of the Giants Anthology)</a>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/__init__.py b/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/__init__.py
deleted file mode 100644
index 5163680caca17e12d9c17e69c637b5a394c3212b..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/__init__.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# Created by Gnacik
-# 2010-02-09 based on official Franz server
-import sys
-from com.l2jserver.gameserver.model.quest				import State
-from com.l2jserver.gameserver.model.quest				import QuestState
-from com.l2jserver.gameserver.model.quest.jython	import QuestJython as JQuest
-
-qn = "377_GiantsExploration2"
-
-# NPC
-SOBLING	= 31147
-
-# Items
-TITAN_ANCIENT_BOOK = 14847
-BOOK1,BOOK2,BOOK3,BOOK4,BOOK5 = [14842,14843,14844,14845,14846]
-
-# Drop Chance
-DROP_CHANCE = 50
-
-# Mobs
-MOBS = [22661,22662,22663,22664,22665,22666,22667,22668,22669]
-
-
-class Quest (JQuest) :
-
-	def __init__(self,id,name,descr):
-		JQuest.__init__(self,id,name,descr)
-		self.questItemIds = [TITAN_ANCIENT_BOOK]
-
-	def onExchangeRequest(self,event,st,qty,rem) :
-		if st.getQuestItemsCount(BOOK1) >= rem and st.getQuestItemsCount(BOOK2) >= rem and st.getQuestItemsCount(BOOK3) >= rem and st.getQuestItemsCount(BOOK4) >= rem and st.getQuestItemsCount(BOOK5) >= rem :
-			st.takeItems(BOOK1,rem)
-			st.takeItems(BOOK2,rem)
-			st.takeItems(BOOK3,rem)
-			st.takeItems(BOOK4,rem)
-			st.takeItems(BOOK5,rem)
-			st.giveItems(int(event),qty)
-			st.playSound("ItemSound.quest_finish")
-			return "31147-ok.htm"
-		else:
-			return "31147-no.htm"
-
-	def onAdvEvent (self,event,npc,player) :
-		htmltext = event
-		st = player.getQuestState(qn)
-		if not st : return
-		if event == "31147-02.htm" :
-			st.set("cond","1")
-			st.setState(State.STARTED)
-			st.playSound("ItemSound.quest_accept")
-		elif event == "31147-quit.htm" :
-			st.unset("cond")
-			st.exitQuest(1)
-			st.playSound("ItemSound.quest_finish")
-		elif event.isdigit() :
-			if int(event) == 9625 :											# Giant's Codex - Oblivion
-				htmltext = self.onExchangeRequest(event,st,1,5)
-			elif int(event) == 9626 :										# Giant's Codex - Discipline
-				htmltext = self.onExchangeRequest(event,st,1,5)
-			elif int(event) == 9628 :										# Leonard
-				htmltext = self.onExchangeRequest(event,st,6,1)
-			elif int(event) == 9629 :										# Adamantine
-				htmltext = self.onExchangeRequest(event,st,3,1)
-			elif int(event) == 9630 :										# Orichalcum
-				htmltext = self.onExchangeRequest(event,st,4,1)
-
-		return htmltext
-
-	def onTalk (self,npc,player) :
-		htmltext = Quest.getNoQuestMsg(player)
-		st = player.getQuestState(qn)
-		if not st : return htmltext
-
-		npcId = npc.getNpcId()
-		cond = st.getInt("cond")
-
-		if npcId == SOBLING:
-			if st.getState() == State.STARTED :
-				if st.getQuestItemsCount(BOOK1) > 0 and st.getQuestItemsCount(BOOK2) > 0 and st.getQuestItemsCount(BOOK3) > 0 and st.getQuestItemsCount(BOOK4) > 0 and st.getQuestItemsCount(BOOK5) > 0 :
-					htmltext = "31147-03.htm"
-				else:
-					htmltext = "31147-02a.htm"
-			else:
-				if player.getLevel() >= 79 :
-					htmltext = "31147-01.htm"
-				else :
-					htmltext = "31147-00.htm"
-		return htmltext
-
-	def onKill(self,npc,player,isPet) :
-		st = player.getQuestState(qn)
-		if not st : return
-		if st.getState() != State.STARTED : return
-
-		npcId = npc.getNpcId()
-		cond = st.getInt("cond")
-		if cond == 1 and npcId in MOBS :
-			if st.getRandom(100) < DROP_CHANCE :
-				st.giveItems(TITAN_ANCIENT_BOOK,1)
-				st.playSound("ItemSound.quest_itemget")
-		return
-
-QUEST		= Quest(377,qn,"Exploration of the Giants Cave, Part II")
-
-QUEST.addStartNpc(SOBLING)
-QUEST.addTalkId(SOBLING)
-
-for i in MOBS :
-	QUEST.addKillId(i)
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-00.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-00.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-00.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-00.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-01.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-01.htm
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-01.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-01.htm
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-02.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-02.htm
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-02.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-02.htm
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-02a.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-02a.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-02a.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-02a.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-03.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-03.htm
similarity index 69%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-03.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-03.htm
index 4aa74114c9b64fcc3ea94ca9ee88690c2019654e..1d665d281f70eecbae517f5e55a36b8e76ac1365 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-03.htm
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-03.htm
@@ -1,7 +1,7 @@
 <html><body>Expedition Captain Sobling:<br>
 This, this is definitely the Knowledge of the Giants Anthology...! You must have had a hard time to find this precious one. Thank you so much.<br>
 But, what can i help you with?<br>
-<a action="bypass -h Quest 376_GiantsExploration1 31147-04.htm">Submit completed text.</a><br>
-<a action="bypass -h Quest 376_GiantsExploration1 31147-cont.htm">Continue to search for more.</a><br>
-<a action="bypass -h Quest 376_GiantsExploration1 31147-quit.htm">Stop searching.</a>
+<a action="bypass -h Quest 376_GiantsExploration1 31147-04.html">Submit completed text.</a><br>
+<a action="bypass -h Quest 376_GiantsExploration1 31147-cont.html">Continue to search for more.</a><br>
+<a action="bypass -h Quest 376_GiantsExploration1 31147-quit.html">Stop searching.</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-04.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-04.html
new file mode 100644
index 0000000000000000000000000000000000000000..aa5e85179e82336f9759741e6a195ea6d4898c7c
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-04.html
@@ -0,0 +1,5 @@
+<html><body>Expedition Captain Sobling:<br>
+Rewards appropriate for your effort are always prepared. If you make enough effort, you can take anything. But, what would you like?<br>
+<a action="bypass -h Quest 376_GiantsExploration1 31147-04a.html">Receive S80 Weapon Recipe as a reward (Requires 10 sets of Knowledge of the Giants Anthology)</a><br>
+<a action="bypass -h Quest 376_GiantsExploration1 31147-04b.html">Receive High Grade Materials (Requires 1 set of Knowledge of the Giants Anthology)</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-04a.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-04a.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-04a.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-04a.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-04b.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-04b.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-04b.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-04b.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-cont.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-cont.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-cont.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-cont.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-no.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-no.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-no.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-no.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-ok.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-ok.html
similarity index 68%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-ok.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-ok.html
index 17812a6f77a28373bfac3993be82ca5fed38380e..da9a315ede9544b805955178846c6d43e205f847 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-ok.htm
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-ok.html
@@ -1,7 +1,7 @@
 <html><body>Expedition Leader Sobling:<br>
 Thank you! I think our expedition will be a success now thanks to you, adventurer.<br>
 Well, do you have any other business with me?<br>
-<a action="bypass -h Quest 376_GiantsExploration1 31147-03.htm">Receive reward.</a><br>
-<a action="bypass -h Quest 376_GiantsExploration1 31147-cont.htm">Keep hunting.</a><br>
-<a action="bypass -h Quest 376_GiantsExploration1 31147-quit.htm">Say you want to quit.</a>
+<a action="bypass -h Quest 376_GiantsExploration1 31147-03.html">Receive reward.</a><br>
+<a action="bypass -h Quest 376_GiantsExploration1 31147-cont.html">Keep hunting.</a><br>
+<a action="bypass -h Quest 376_GiantsExploration1 31147-quit.html">Say you want to quit.</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-quit.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-quit.html
similarity index 98%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-quit.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-quit.html
index 7a85b02d3ac469fba9ed17b6bc7465c1be56e71e..277daa1d3566897e37866aa960e86935c4c960d6 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-quit.htm
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/31147-quit.html
@@ -1,3 +1,3 @@
-<html><body>Expedition Leader Sobling:<br>
-Too bad. I was hoping you could help us...
+<html><body>Expedition Leader Sobling:<br>
+Too bad. I was hoping you could help us...
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/Q376_ExplorationOfTheGiantsCavePart1.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/Q376_ExplorationOfTheGiantsCavePart1.java
new file mode 100644
index 0000000000000000000000000000000000000000..59a1b05614093da39257354ae84675a123f4f057
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q376_ExplorationOfTheGiantsCavePart1/Q376_ExplorationOfTheGiantsCavePart1.java
@@ -0,0 +1,220 @@
+/*
+ * 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.Q376_ExplorationOfTheGiantsCavePart1;
+
+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.model.quest.State;
+import com.l2jserver.gameserver.network.serverpackets.RadarControl;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Exploration of the Giants' Cave Part 1 (376)<br>
+ * 2010-02-17 based on official Franz server.<br>
+ * Jython script by Gnacik.
+ * @author nonom
+ */
+public class Q376_ExplorationOfTheGiantsCavePart1 extends Quest
+{
+	private static final String qn = "376_ExplorationOfTheGiantsCavePart1";
+	
+	// NPC's
+	private static final int SOBLING = 31147;
+	
+	// Items
+	private static final int ANCIENT_PARCHMENT = 14841;
+	private static final int BOOK1 = 14836;
+	private static final int BOOK2 = 14837;
+	private static final int BOOK3 = 14838;
+	private static final int BOOK4 = 14839;
+	private static final int BOOK5 = 14840;
+	
+	// Drop Chance
+	private static final int DROP_CHANCE = 20;
+	
+	// Mobs
+	private static final int[] _mobs =
+	{
+		22670,
+		22671,
+		22672,
+		22673,
+		22674,
+		22675,
+		22676,
+		22677
+	};
+	
+	// Rewards
+	private static final int RECIPE_DYNASTY_SWORD_60 = 9967;
+	private static final int RECIPE_DYNASTY_BLADE_60 = 9968;
+	private static final int RECIPE_DYNASTY_PHANTOM_60 = 9969;
+	private static final int RECIPE_DYNASTY_BOW_60 = 9970;
+	private static final int RECIPE_DYNASTY_KNIFE_60 = 9971;
+	private static final int RECIPE_DYNASTY_HALBERD_60 = 9972;
+	private static final int RECIPE_DYNASTY_CUDGEL_60 = 9973;
+	private static final int RECIPE_DYNASTY_MACE_60 = 9974;
+	private static final int RECIPE_DYNASTY_BAGHNAKH_60 = 9975;
+	private static final int LEONARD = 9628;
+	private static final int ADAMANTINE = 9629;
+	private static final int ORICHALCUM = 9630;
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		String htmltext = event;
+		final QuestState st = player.getQuestState(qn);
+		if (st == null)
+		{
+			return htmltext;
+		}
+		
+		if (event.equalsIgnoreCase("31147-02.htm"))
+		{
+			st.setState(State.STARTED);
+			st.set("cond", "1");
+			st.playSound("ItemSound.quest_accept");
+			player.sendPacket(new RadarControl(0, 2, 185712, 47414, -4350));
+		}
+		else if (event.equalsIgnoreCase("31147-quit.html"))
+		{
+			st.playSound("ItemSound.quest_finish");
+			st.exitQuest(true);
+		}
+		else if (Util.isDigit(event))
+		{
+			final int val = Integer.parseInt(event);
+			switch (val)
+			{
+				case RECIPE_DYNASTY_SWORD_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Sword (60%)
+					break;
+				case RECIPE_DYNASTY_BLADE_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Blade (60%)
+					break;
+				case RECIPE_DYNASTY_PHANTOM_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Phantom (60%)
+					break;
+				case RECIPE_DYNASTY_BOW_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Bow (60%)
+					break;
+				case RECIPE_DYNASTY_KNIFE_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Knife (60%)
+					break;
+				case RECIPE_DYNASTY_HALBERD_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Halberd (60%)
+					break;
+				case RECIPE_DYNASTY_CUDGEL_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Cudgel (60%)
+					break;
+				case RECIPE_DYNASTY_MACE_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Mace (60%)
+					break;
+				case RECIPE_DYNASTY_BAGHNAKH_60:
+					htmltext = onExchangeRequest(st, val, 1, 10); // Recipe Dynasty Bagh-Nakh (60%)
+					break;
+				case LEONARD:
+					htmltext = onExchangeRequest(st, val, 6, 1); // Leonard
+					break;
+				case ADAMANTINE:
+					htmltext = onExchangeRequest(st, val, 3, 1); // Adamantine
+					break;
+				case ORICHALCUM:
+					htmltext = onExchangeRequest(st, val, 4, 1); // Orichalcum
+					break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		String htmltext = getNoQuestMsg(player);
+		final QuestState st = player.getQuestState(qn);
+		if (st == null)
+		{
+			return htmltext;
+		}
+		
+		if (npc.getNpcId() == SOBLING)
+		{
+			switch (st.getState())
+			{
+				case State.COMPLETED:
+					htmltext = (player.getLevel() >= 79) ? "31147-01.htm" : "31147-00.html";
+					break;
+				case State.STARTED:
+					htmltext = (st.hasQuestItems(BOOK1) && st.hasQuestItems(BOOK2) && st.hasQuestItems(BOOK3) && st.hasQuestItems(BOOK4) && st.hasQuestItems(BOOK5)) ? "31147-03.html" : "31147-02a.html";
+					break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
+	{
+		final QuestState st = player.getQuestState(qn);
+		if (st == null)
+		{
+			return null;
+		}
+		
+		if ((st.getInt("cond") == 1) && (st.getRandom(100) < DROP_CHANCE))
+		{
+			st.giveItems(ANCIENT_PARCHMENT, 1);
+			st.playSound("ItemSound.quest_itemget");
+		}
+		return super.onKill(npc, player, isPet);
+	}
+	
+	private String onExchangeRequest(QuestState st, int giveid, int qty, int rem)
+	{
+		if ((st.getQuestItemsCount(BOOK1) >= rem) && (st.getQuestItemsCount(BOOK2) >= rem) && (st.getQuestItemsCount(BOOK3) >= rem) && (st.getQuestItemsCount(BOOK4) >= rem) && (st.getQuestItemsCount(BOOK5) >= rem))
+		{
+			st.takeItems(BOOK1, rem);
+			st.takeItems(BOOK2, rem);
+			st.takeItems(BOOK3, rem);
+			st.takeItems(BOOK4, rem);
+			st.takeItems(BOOK5, rem);
+			st.giveItems(giveid, qty);
+			st.playSound("ItemSound.quest_finish");
+			return "31147-ok.html";
+		}
+		return "31147-no.html";
+	}
+	
+	public Q376_ExplorationOfTheGiantsCavePart1(int id, String name, String descr)
+	{
+		super(id, name, descr);
+		
+		addStartNpc(SOBLING);
+		addTalkId(SOBLING);
+		addKillId(_mobs);
+		
+		questItemIds = new int[]
+		{
+			ANCIENT_PARCHMENT
+		};
+	}
+	
+	public static void main(String[] args)
+	{
+		new Q376_ExplorationOfTheGiantsCavePart1(376, qn, "Exploration of the Giants' Cave - Part 1");
+	}
+}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-00.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-00.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-00.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-00.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-01.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-01.htm
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-01.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-01.htm
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-02.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-02.htm
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-02.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-02.htm
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-02a.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-02a.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-02a.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-02a.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-03.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-03.html
similarity index 68%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-03.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-03.html
index 2304af33e4db0fd7e304ee465e5ec1145c85b402..1da206fff4477a73d1573ce1448a378259aef3cc 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-03.htm
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-03.html
@@ -1,7 +1,7 @@
 <html><body>Expedition Captain Sobling:<br>
 This, this is definitely the Wisdom of the Giants Text...! You must have had a hard time to find this precious one. Thank you so much.<br>
 But, what can i help you with?<br>
-<a action="bypass -h Quest 377_GiantsExploration2 31147-04.htm">Submit completed text.</a><br>
-<a action="bypass -h Quest 377_GiantsExploration2 31147-cont.htm">Continue to search for more.</a><br>
-<a action="bypass -h Quest 377_GiantsExploration2 31147-quit.htm">Stop searching.</a>
+<a action="bypass -h Quest 377_GiantsExploration2 31147-04.html">Submit completed text.</a><br>
+<a action="bypass -h Quest 377_GiantsExploration2 31147-cont.html">Continue to search for more.</a><br>
+<a action="bypass -h Quest 377_GiantsExploration2 31147-quit.html">Stop searching.</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-04.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-04.html
new file mode 100644
index 0000000000000000000000000000000000000000..8ea300250662a9829946ee4dc2c896dc0d7a9e01
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-04.html
@@ -0,0 +1,5 @@
+<html><body>Expedition Captain Sobling:<br>
+Rewards appropriate for your effort are always prepared. If you make enough effort, you can take anything. But, what would you like?<br>
+<a action="bypass -h Quest 377_GiantsExploration2 31147-04a.html">Receive Giant's Codex - Oblivion or Discipline (Requires 5 sets of Wisdom of the Giants Text)</a><br>
+<a action="bypass -h Quest 377_GiantsExploration2 31147-04b.html">Receive High Grade Materials (Requires 1 set of Knowledge of the Giants Anthology)</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-04a.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-04a.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-04a.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-04a.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-04b.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-04b.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-04b.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-04b.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-cont.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-cont.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-cont.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-cont.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-no.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-no.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-no.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-no.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-ok.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-ok.html
similarity index 68%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-ok.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-ok.html
index 298466acb9b7ce3f2c2608714129917beba87a8e..914c87f6a29f2808e172833d285be0162b734131 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/377_GiantsExploration2/31147-ok.htm
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-ok.html
@@ -1,7 +1,7 @@
 <html><body>Expedition Leader Sobling:<br>
 Thank you! I think our expedition will be a success now thanks to you, adventurer.<br>
 Well, do you have any other business with me?<br>
-<a action="bypass -h Quest 377_GiantsExploration2 31147-03.htm">Receive reward.</a><br>
-<a action="bypass -h Quest 377_GiantsExploration2 31147-cont.htm">Keep hunting.</a><br>
-<a action="bypass -h Quest 377_GiantsExploration2 31147-quit.htm">Say you want to quit.</a>
+<a action="bypass -h Quest 377_GiantsExploration2 31147-03.html">Receive reward.</a><br>
+<a action="bypass -h Quest 377_GiantsExploration2 31147-cont.html">Keep hunting.</a><br>
+<a action="bypass -h Quest 377_GiantsExploration2 31147-quit.html">Say you want to quit.</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-quit.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-quit.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/376_GiantsExploration1/31147-quit.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/31147-quit.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/Q377_ExplorationOfTheGiantsCavePart2.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/Q377_ExplorationOfTheGiantsCavePart2.java
new file mode 100644
index 0000000000000000000000000000000000000000..26fdefbcebf6d867ee92aaa7a6d2d066b4b0ecf4
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q377_ExplorationOfTheGiantsCavePart2/Q377_ExplorationOfTheGiantsCavePart2.java
@@ -0,0 +1,193 @@
+/*
+ * 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.Q377_ExplorationOfTheGiantsCavePart2;
+
+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.model.quest.State;
+import com.l2jserver.gameserver.network.serverpackets.RadarControl;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Exploration of the Giants' Cave Part 2 (377)<br>
+ * 2010-02-17 based on official Franz server.<br>
+ * Original Jython script by Gnacik.
+ * @author nonom
+ */
+public class Q377_ExplorationOfTheGiantsCavePart2 extends Quest
+{
+	private static final String qn = "377_ExplorationOfTheGiantsCavePart2";
+	
+	// NPC's
+	private static final int SOBLING = 31147;
+	
+	// Items
+	private static final int TITAN_ANCIENT_BOOK = 14847;
+	private static final int BOOK1 = 14842;
+	private static final int BOOK2 = 14843;
+	private static final int BOOK3 = 14844;
+	private static final int BOOK4 = 14845;
+	private static final int BOOK5 = 14846;
+	
+	// Drop Chance
+	private static final int DROP_CHANCE = 50;
+	
+	// Mobs
+	private static final int[] _mobs =
+	{
+		22661,
+		22662,
+		22663,
+		22664,
+		22665,
+		22666,
+		22667,
+		22668,
+		22669
+	};
+	
+	// Rewards
+	private static final int OBLIVION = 9625;
+	private static final int DISCIPLINE = 9626;
+	private static final int LEONARD = 9628;
+	private static final int ADAMANTINE = 9629;
+	private static final int ORICHALCUM = 9630;
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		String htmltext = event;
+		final QuestState st = player.getQuestState(qn);
+		if (st == null)
+		{
+			return htmltext;
+		}
+		
+		if (event.equalsIgnoreCase("31147-02.htm"))
+		{
+			st.setState(State.STARTED);
+			st.set("cond", "1");
+			st.playSound("ItemSound.quest_accept");
+			player.sendPacket(new RadarControl(0, 2, -113360, -244676, -15536));
+		}
+		else if (event.equalsIgnoreCase("31147-quit.html"))
+		{
+			st.playSound("ItemSound.quest_finish");
+			st.exitQuest(true);
+		}
+		else if (Util.isDigit(event))
+		{
+			final int val = Integer.parseInt(event);
+			switch (val)
+			{
+				case OBLIVION:
+					htmltext = onExchangeRequest(st, val, 1, 5); // Giant's Codex - Oblivion
+					break;
+				case DISCIPLINE:
+					htmltext = onExchangeRequest(st, val, 1, 5); // Giant's Codex - Discipline
+					break;
+				case LEONARD:
+					htmltext = onExchangeRequest(st, val, 6, 1); // Leonard
+					break;
+				case ADAMANTINE:
+					htmltext = onExchangeRequest(st, val, 3, 1); // Adamantine
+					break;
+				case ORICHALCUM:
+					htmltext = onExchangeRequest(st, val, 4, 1); // Orichalcum
+					break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		String htmltext = getNoQuestMsg(player);
+		final QuestState st = player.getQuestState(qn);
+		if (st == null)
+		{
+			return htmltext;
+		}
+		
+		if (npc.getNpcId() == SOBLING)
+		{
+			switch (st.getState())
+			{
+				case State.CREATED:
+					htmltext = (player.getLevel() >= 79) ? "31147-01.htm" : "31147-00.html";
+				case State.STARTED:
+					htmltext = (st.hasQuestItems(BOOK1) && st.hasQuestItems(BOOK2) && st.hasQuestItems(BOOK3) && st.hasQuestItems(BOOK4) && st.hasQuestItems(BOOK5)) ? "31147-03.html" : "31147-02a.html";
+					break;
+			}
+			
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
+	{
+		final QuestState st = player.getQuestState(qn);
+		if (st == null)
+		{
+			return null;
+		}
+		
+		if ((st.getInt("cond") == 1) && (st.getRandom(100) < DROP_CHANCE))
+		{
+			st.giveItems(TITAN_ANCIENT_BOOK, 1);
+			st.playSound("ItemSound.quest_itemget");
+		}
+		return super.onKill(npc, player, isPet);
+	}
+	
+	private String onExchangeRequest(QuestState st, int giveid, int qty, int rem)
+	{
+		if ((st.getQuestItemsCount(BOOK1) >= rem) && (st.getQuestItemsCount(BOOK2) >= rem) && (st.getQuestItemsCount(BOOK3) >= rem) && (st.getQuestItemsCount(BOOK4) >= rem) && (st.getQuestItemsCount(BOOK5) >= rem))
+		{
+			st.takeItems(BOOK1, rem);
+			st.takeItems(BOOK2, rem);
+			st.takeItems(BOOK3, rem);
+			st.takeItems(BOOK4, rem);
+			st.takeItems(BOOK5, rem);
+			st.giveItems(giveid, qty);
+			st.playSound("ItemSound.quest_finish");
+			return "31147-ok.html";
+		}
+		return "31147-no.html";
+	}
+	
+	public Q377_ExplorationOfTheGiantsCavePart2(int id, String name, String descr)
+	{
+		super(id, name, descr);
+		
+		addStartNpc(SOBLING);
+		addTalkId(SOBLING);
+		addKillId(_mobs);
+		
+		questItemIds = new int[]
+		{
+			TITAN_ANCIENT_BOOK
+		};
+	}
+	
+	public static void main(String[] args)
+	{
+		new Q377_ExplorationOfTheGiantsCavePart2(377, qn, "Exploration of the Giants' Cave - Part 2");
+	}
+}
diff --git a/L2J_DataPack_BETA/dist/sql/game/updates/20120206update.sql b/L2J_DataPack_BETA/dist/sql/game/updates/20120206update.sql
new file mode 100644
index 0000000000000000000000000000000000000000..d9b70115984066ef2d01cbcd9e139336942c2bae
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/sql/game/updates/20120206update.sql
@@ -0,0 +1,2 @@
+UPDATE `character_quests` SET `name` = '376_ExplorationOfTheGiantsCavePart1' WHERE `name` = '376_GiantsExploration1';
+UPDATE `character_quests` SET `name` = '377_ExplorationOfTheGiantsCavePart2' WHERE `name` = '377_GiantsExploration2';
\ No newline at end of file