Browse Source

unstable: forgot init.py's

Aikimaniac 18 years ago
parent
commit
d784a26be9

+ 157 - 0
datapack_development/data/jscript/quests/621_EggDelivery/__init__.py

@@ -0,0 +1,157 @@
+# Made by disKret
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+#NPC
+JEREMY = 31521
+PULIN = 31543
+NAFF = 31544
+CROCUS = 31545
+KUBER = 31546
+BEORIN = 31547
+
+#QUEST ITEMS
+BOILED_EGGS = 7195
+FEE_OF_EGGS = 7196
+
+#REWARDS
+ADENA = 57
+HASTE_POTION = 734
+
+#Chance to get an S-grade random recipe instead of just adena and haste potion
+RPCHANCE=10
+#Change this value to 1 if you wish 100% recipes, default 70%
+ALT_RP100=0
+
+#MESSAGES
+default="<html><head><body>I have nothing to say you</body></html>"
+
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
+
+ def onEvent (self,event,st) :
+   htmltext = event
+   cond=st.getInt("cond")
+   if event == "31521-1.htm" :
+     if cond==0:
+       st.set("cond","1")
+       st.setState(STARTED)
+       st.giveItems(BOILED_EGGS,5)
+       st.playSound("ItemSound.quest_accept")
+     else:
+       htmltext=default
+   if event == "31543-1.htm" :
+     if st.getQuestItemsCount(BOILED_EGGS):
+       if cond==1:
+         st.takeItems(BOILED_EGGS,1)
+         st.giveItems(FEE_OF_EGGS,1)
+         st.set("cond","2")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31544-1.htm" :
+     if st.getQuestItemsCount(BOILED_EGGS):
+       if cond==2:
+         st.takeItems(BOILED_EGGS,1)
+         st.giveItems(FEE_OF_EGGS,1)
+         st.set("cond","3")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31545-1.htm" :
+     if st.getQuestItemsCount(BOILED_EGGS):
+       if cond==3:
+         st.takeItems(BOILED_EGGS,1)
+         st.giveItems(FEE_OF_EGGS,1)
+         st.set("cond","4")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31546-1.htm" :
+     if st.getQuestItemsCount(BOILED_EGGS):
+       if cond==4:
+         st.takeItems(BOILED_EGGS,1)
+         st.giveItems(FEE_OF_EGGS,1)
+         st.set("cond","5")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31547-1.htm" :
+     if st.getQuestItemsCount(BOILED_EGGS):
+       if cond==5:
+         st.takeItems(BOILED_EGGS,1)
+         st.giveItems(FEE_OF_EGGS,1)
+         st.set("cond","6")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31521-3.htm" :
+     if st.getQuestItemsCount(FEE_OF_EGGS) == 5:
+        st.takeItems(FEE_OF_EGGS,5)
+        if st.getRandom(100) < RPCHANCE :
+          st.giveItems(range(6847+ALT_RP100,6853,2)[st.getRandom(3)],1)
+        else:
+          st.giveItems(ADENA,18800)
+          st.giveItems(HASTE_POTION,1)
+        st.playSound("ItemSound.quest_finish")
+        st.exitQuest(1)
+     else:
+        htmltext=default
+   return htmltext
+
+ def onTalk (Self,npc,st):
+   htmltext = default
+   npcId = npc.getNpcId()
+   id = st.getState()
+   if id == CREATED :
+     st.set("cond","0")
+   cond = int(st.get("cond"))
+   if npcId == 31521 and cond == 0 :
+     if st.getPlayer().getLevel() >= 68 and st.getPlayer().getLevel() <= 73 :
+       htmltext = "31521-0.htm"
+     else :
+       st.exitQuest(1)
+   elif npcId == 31543 and cond == 1 and st.getQuestItemsCount(BOILED_EGGS) :
+     htmltext = "31543-0.htm"
+   elif npcId == 31544 and cond == 2 and st.getQuestItemsCount(BOILED_EGGS) :
+     htmltext = "31544-0.htm"
+   elif npcId == 31545 and cond == 3 and st.getQuestItemsCount(BOILED_EGGS) :
+     htmltext = "31545-0.htm"
+   elif npcId == 31546 and cond == 4 and st.getQuestItemsCount(BOILED_EGGS) :
+     htmltext = "31546-0.htm"
+   elif npcId == 31547 and cond == 5 and st.getQuestItemsCount(BOILED_EGGS) :
+     htmltext = "31547-0.htm"
+   elif npcId == 31521 and cond == 6 and st.getQuestItemsCount(FEE_OF_EGGS) == 5 :
+     htmltext = "31521-2.htm"
+   return htmltext
+
+QUEST       = Quest(621,"621_EggDelivery","Egg Delivery")
+CREATED     = State('Start', QUEST)
+STARTED     = State('Started', QUEST)
+
+QUEST.setInitialState(CREATED)
+QUEST.addStartNpc(31521)
+
+CREATED.addTalkId(31521)
+STARTED.addTalkId(31521)
+
+for i in range(31543,31548):
+    STARTED.addTalkId(i)
+
+STARTED.addQuestDrop(31521,BOILED_EGGS,1)
+STARTED.addQuestDrop(31521,FEE_OF_EGGS,1)
+
+print "importing quests: 621: Egg Delivery"

+ 157 - 0
datapack_development/data/jscript/quests/622_DeliveryOfSpecialLiquor/__init__.py

@@ -0,0 +1,157 @@
+# Made by disKret
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+#NPC
+JEREMY = 31521
+PULIN = 31543
+NAFF = 31544
+CROCUS = 31545
+KUBER = 31546
+BEORIN = 31547
+
+#QUEST ITEMS
+SPECIAL_DRINK = 7197
+FEE_OF_DRINK = 7198
+
+#REWARDS
+ADENA = 57
+HASTE_POTION = 734
+
+#Chance to get an S-grade random recipe instead of just adena and haste potion
+RPCHANCE=10
+#Change this value to 1 if you wish 100% recipes, default 70%
+ALT_RP100=0
+
+#MESSAGES
+default="<html><head><body>I have nothing to say you</body></html>"
+
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
+
+ def onEvent (self,event,st) :
+   htmltext = event
+   cond=st.getInt("cond")
+   if event == "31521-1.htm" :
+     if cond==0:
+       st.set("cond","1")
+       st.setState(STARTED)
+       st.giveItems(SPECIAL_DRINK,5)
+       st.playSound("ItemSound.quest_accept")
+     else:
+       htmltext=default
+   if event == "31547-1.htm" :
+     if st.getQuestItemsCount(SPECIAL_DRINK):
+       if cond==1:
+         st.takeItems(SPECIAL_DRINK,1)
+         st.giveItems(FEE_OF_DRINK,1)
+         st.set("cond","2")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31546-1.htm" :
+     if st.getQuestItemsCount(SPECIAL_DRINK):
+       if cond==2:
+         st.takeItems(SPECIAL_DRINK,1)
+         st.giveItems(FEE_OF_DRINK,1)
+         st.set("cond","3")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31545-1.htm" :
+     if st.getQuestItemsCount(SPECIAL_DRINK):
+       if cond==3:
+         st.takeItems(SPECIAL_DRINK,1)
+         st.giveItems(FEE_OF_DRINK,1)
+         st.set("cond","4")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31544-1.htm" :
+     if st.getQuestItemsCount(SPECIAL_DRINK):
+       if cond==4:
+         st.takeItems(SPECIAL_DRINK,1)
+         st.giveItems(FEE_OF_DRINK,1)
+         st.set("cond","5")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31543-1.htm" :
+     if st.getQuestItemsCount(SPECIAL_DRINK):
+       if cond==5:
+         st.takeItems(SPECIAL_DRINK,1)
+         st.giveItems(FEE_OF_DRINK,1)
+         st.set("cond","6")
+       else:
+         htmltext=default
+     else:
+       htmltext="LMFAO!"
+       st.extiQuest(1)
+   if event == "31521-3.htm" :
+     if st.getQuestItemsCount(FEE_OF_DRINK) == 5:
+        st.takeItems(FEE_OF_DRINK,5)
+        if st.getRandom(100) < RPCHANCE :
+          st.giveItems(range(6847+ALT_RP100,6853,2)[st.getRandom(3)],1)
+        else:
+          st.giveItems(ADENA,18800)
+          st.giveItems(HASTE_POTION,1)
+        st.playSound("ItemSound.quest_finish")
+        st.exitQuest(1)
+     else:
+        htmltext=default
+   return htmltext
+
+ def onTalk (Self,npc,st):
+   htmltext = default
+   npcId = npc.getNpcId()
+   id = st.getState()
+   if id == CREATED :
+     st.set("cond","0")
+   cond = int(st.get("cond"))
+   if npcId == 31521 and cond == 0 :
+     if st.getPlayer().getLevel() >= 68 :
+       htmltext = "31521-0.htm"
+     else:
+       st.exitQuest(1)
+   elif npcId == 31547 and cond == 1 and st.getQuestItemsCount(SPECIAL_DRINK) :
+     htmltext = "31547-0.htm"
+   elif npcId == 31546 and cond == 2 and st.getQuestItemsCount(SPECIAL_DRINK) :
+     htmltext = "31546-0.htm"
+   elif npcId == 31545 and cond == 3 and st.getQuestItemsCount(SPECIAL_DRINK) :
+     htmltext = "31545-0.htm"
+   elif npcId == 31544 and cond == 4 and st.getQuestItemsCount(SPECIAL_DRINK) :
+     htmltext = "31544-0.htm"
+   elif npcId == 31543 and cond == 5 and st.getQuestItemsCount(SPECIAL_DRINK) :
+     htmltext = "31543-0.htm"
+   elif npcId == 31521 and cond == 6 and st.getQuestItemsCount(FEE_OF_DRINK) == 5 :
+     htmltext = "31521-2.htm"
+   return htmltext
+
+QUEST       = Quest(622,"622_DeliveryOfSpecialLiquor","Delivery of special liquor")
+CREATED     = State('Start', QUEST)
+STARTED     = State('Started', QUEST)
+
+QUEST.setInitialState(CREATED)
+QUEST.addStartNpc(31521)
+
+CREATED.addTalkId(31521)
+STARTED.addTalkId(31521)
+
+for i in range(31543,31548):
+    STARTED.addTalkId(i)
+
+STARTED.addQuestDrop(31521,SPECIAL_DRINK,1)
+STARTED.addQuestDrop(31521,FEE_OF_DRINK,1)
+
+print "importing quests: 622: Delivery of special liquor"

+ 77 - 0
datapack_development/data/jscript/quests/626_ADarkTwilight/__init__.py

@@ -0,0 +1,77 @@
+# Made by disKret
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+#NPC
+HIERARCH = 31517
+
+#ITEMS
+BLOOD_OF_SAINT = 7169
+
+#REWARDS
+ADENA = 57
+
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
+
+ def onEvent (self,event,st) :
+   htmltext = event
+   if event == "31517-1.htm" :
+     st.set("cond","1")
+     st.setState(STARTED)
+     st.playSound("ItemSound.quest_accept")
+   elif event == "31517-3.htm" :
+     st.takeItems(BLOOD_OF_SAINT,300)
+   else :
+     if event == "31517-4.htm" :
+       st.addExpAndSp(162773,12500)
+     elif event == "31517-5.htm" :
+       st.giveItems(ADENA,100000)
+     st.playSound("ItemSound.quest_finish")
+     st.exitQuest(1)
+   return htmltext
+
+ def onTalk (Self,npc,st):
+   htmltext = "<html><head><body>I have nothing to say you</body></html>"
+   npcId = npc.getNpcId()
+   id = st.getState()
+   cond = st.getInt("cond")
+   if cond == 0 :
+     if st.getPlayer().getLevel() >= 60 : # and st.getPlayer().getLevel() <= 71
+       htmltext = "31517-0.htm"
+     else:
+       htmltext = "31517-0a.htm"
+       st.exitQuest(1)
+   elif st.getQuestItemsCount(BLOOD_OF_SAINT) == 300 :
+     htmltext = "31517-2.htm"
+   return htmltext
+
+ def onKill (self,npc,st):
+  count = st.getQuestItemsCount(BLOOD_OF_SAINT)
+  if int(st.get("cond")) == 1 and count < 300 :
+     st.giveItems(BLOOD_OF_SAINT,1)
+     if count == 299 :
+       st.playSound("ItemSound.quest_middle")
+       st.set("cond","2")
+     else:
+       st.playSound("ItemSound.quest_itemget")	
+  return
+
+QUEST       = Quest(626,"626_ADarkTwilight","A Dark Twilight")
+CREATED     = State('Start', QUEST)
+STARTED     = State('Started', QUEST)
+
+QUEST.setInitialState(CREATED)
+QUEST.addStartNpc(31517)
+CREATED.addTalkId(31517)
+STARTED.addTalkId(31517)
+
+for mobs in range(21520,21541):
+  STARTED.addKillId(mobs)
+
+STARTED.addQuestDrop(21520,BLOOD_OF_SAINT,1)
+
+print "importing quests: 626: A Dark Twilight"

+ 101 - 0
datapack_development/data/jscript/quests/627_HeartInSearchOfPower/__init__.py

@@ -0,0 +1,101 @@
+# Made by disKret
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+#NPC
+M_NECROMANCER,ENFEUX = 31518,31519
+
+#ITEMS
+SEAL_OF_LIGHT,GEM_OF_SUBMISSION,GEM_OF_SAINTS = 7170,7171,7172
+
+#REWARDS
+ADENA = 57
+MOLD_HARDENER,ENRIA,ASOFE,THONS = 4041,4042,4043,4044
+
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
+
+ def onEvent (self,event,st) :
+   htmltext = event
+   if event == "31518-1.htm" :
+     st.set("cond","1")
+     st.setState(STARTED)
+     st.playSound("ItemSound.quest_accept")
+   elif event == "31518-3.htm" :
+     st.takeItems(GEM_OF_SUBMISSION,300)
+     st.giveItems(SEAL_OF_LIGHT,1)
+     st.set("cond","3")
+   elif event == "31519-1.htm" :
+     st.takeItems(SEAL_OF_LIGHT,1)
+     st.giveItems(GEM_OF_SAINTS,1)
+     st.set("cond","4")
+   elif event == "31518-5.htm" :
+     st.takeItems(GEM_OF_SAINTS,1)
+   else :
+     if event == "31518-6.htm" :
+       st.giveItems(ADENA,100000)
+     elif event == "31518-7.htm" :
+       st.giveItems(ASOFE,13)
+     elif event == "31518-8.htm" :
+       st.giveItems(THONS,13)
+     elif event == "31518-9.htm" :
+       st.giveItems(ENRIA,6)
+     elif event == "31518-10.htm" :
+       st.giveItems(MOLD_HARDENER,6)
+     st.playSound("ItemSound.quest_finish")
+     st.exitQuest(1)
+   return htmltext
+
+ def onTalk (Self,npc,st):
+   htmltext = "<html><head><body>I have nothing to say you</body></html>"
+   npcId = npc.getNpcId()
+   id = st.getState()
+   cond = st.getInt("cond")
+   if npcId == M_NECROMANCER :
+      if cond == 0 :
+        if st.getPlayer().getLevel() >= 60 : # and st.getPlayer().getLevel() <= 71
+          htmltext = "31518-0.htm"
+        else:
+          htmltext = "31518-0a.htm"
+          st.exitQuest(1)
+      elif cond == 1 :
+        htmltext = "31518-1a.htm"
+      elif st.getQuestItemsCount(GEM_OF_SUBMISSION) == 300 :
+        htmltext = "31518-2.htm"
+      elif st.getQuestItemsCount(GEM_OF_SAINTS) :
+        htmltext = "31518-4.htm"
+   elif npcId == ENFEUX and st.getQuestItemsCount(SEAL_OF_LIGHT) :
+     htmltext = "31519-0.htm"
+   return htmltext
+
+ def onKill (self,npc,st):
+  count = st.getQuestItemsCount(GEM_OF_SUBMISSION)
+  if int(st.get("cond")) == 1 and count < 300 :
+     st.giveItems(GEM_OF_SUBMISSION,1)
+     if count == 299 :
+       st.playSound("ItemSound.quest_middle")
+       st.set("cond","2")
+     else:
+       st.playSound("ItemSound.quest_itemget")	
+  return
+
+QUEST       = Quest(627,"627_HeartInSearchOfPower","Heart In Search Of Power")
+CREATED     = State('Start', QUEST)
+STARTED     = State('Started', QUEST)
+
+QUEST.setInitialState(CREATED)
+QUEST.addStartNpc(31518)
+
+CREATED.addTalkId(31518)
+STARTED.addTalkId(31518)
+STARTED.addTalkId(31519)
+
+for mobs in range(1520,1541):
+  STARTED.addKillId(mobs)
+
+STARTED.addQuestDrop(1520,GEM_OF_SUBMISSION,1)
+
+print "importing quests: 627: Heart In Search Of Power"

+ 69 - 0
datapack_development/data/jscript/quests/634_InSearchofDimensionalFragments/__init__.py

@@ -0,0 +1,69 @@
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+DIMENSION_FRAGMENT_ID = 7079
+
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
+
+ def onEvent (self,event,st) :
+    htmltext = event
+    if event == "1" :
+      st.setState(STARTED)
+      st.playSound("ItemSound.quest_accept")
+      htmltext = "4.htm"
+      st.set("cond","1")
+    elif event == "2" :
+          htmltext = "5.htm"
+          st.playSound("ItemSound.quest_finish")
+          st.exitQuest(1)
+          
+    return htmltext
+
+
+ def onTalk (Self,npc,st):
+   npcId = npc.getNpcId()
+   htmltext = "<html><head><body>I have nothing to say to you</body></html>"
+   id = st.getState()
+   if id == CREATED :
+       st.set("cond","0")
+       htmltext = "4.htm"
+   elif id == STARTED :
+       st.set("cond","1")
+       htmltext = "4.htm"
+       
+   return htmltext
+
+
+ def onKill (self,npc,st):
+    npcId = npc.getNpcId()
+    if npcId in range(21208,21256) :
+         if st.getRandom(10)<6 :
+           st.giveItems(DIMENSION_FRAGMENT_ID,1)
+           st.playSound("ItemSound.quest_itemget")
+
+    return
+
+
+QUEST       = Quest(634, "634_InSearchofDimensionalFragments", "In Search of Dimensional Fragments")
+CREATED     = State('Start', QUEST)
+STARTED     = State('Started', QUEST)
+COMPLETED   = State('Completed', QUEST)
+
+
+QUEST.setInitialState(CREATED)
+
+for npcId in range(30494,30508):
+	CREATED.addTalkId(npcId)
+	STARTED.addTalkId(npcId)
+	QUEST.addStartNpc(npcId)
+
+for mobs in range(21208,21256):
+	STARTED.addKillId(mobs)
+	
+STARTED.addQuestDrop(7079,DIMENSION_FRAGMENT_ID,1)
+
+print "importing quests: 634: In Search of Dimensional Fragments"

+ 99 - 0
datapack_development/data/jscript/quests/6_StepIntoTheFuture/__init__.py

@@ -0,0 +1,99 @@
+# Created by CubicVirtuoso
+# Any problems feel free to drop by #l2j-datapack on irc.freenode.net
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+#NPCs 
+ROXXY      = 30006 
+BAULRO     = 30033 
+SIR_COLLIN = 30311 
+ 
+#ITEM 
+BAULRO_LETTER = 7571
+ 
+#REWARDS 
+SCROLL_OF_ESCAPE_GIRAN = 7559
+MARK_OF_TRAVELER       = 7570 
+
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
+
+ def onEvent (self,event,st) :
+   htmltext = event 
+   if event == "30006-03.htm" : 
+     st.set("cond","1") 
+     st.set("id","1") 
+     st.setState(STARTED) 
+     st.playSound("ItemSound.quest_accept") 
+   elif event == "30033-02.htm" : 
+     st.giveItems(BAULRO_LETTER,1) 
+     st.set("cond","2") 
+     st.set("id","2") 
+     st.playSound("ItemSound.quest_middle") 
+   elif event == "30311-03.htm" : 
+     st.takeItems(BAULRO_LETTER,-1) 
+     st.set("cond","3") 
+     st.set("id","3") 
+     st.playSound("ItemSound.quest_middle") 
+   elif event == "30006-06.htm" : 
+     st.giveItems(SCROLL_OF_ESCAPE_GIRAN,1) 
+     st.giveItems(MARK_OF_TRAVELER, 1) 
+     st.unset("cond") 
+     st.setState(COMPLETED) 
+     st.playSound("ItemSound.quest_finish") 
+   return htmltext 
+
+ def onTalk (Self,npc,st):
+   htmltext = "<html><head><body>I have nothing to say you</body></html>" 
+   npcId = npc.getNpcId()
+   cond  = st.getInt("cond") 
+   id    = st.getState() 
+ 
+   if id == CREATED :
+     st.set("cond","0")
+     st.set("id","0") 
+     if st.getPlayer().getRace().ordinal() == 0 :
+       if st.getPlayer().getLevel() >= 3 : 
+         htmltext = "30006-02.htm" 
+       else : 
+         htmltext = "<html><head><body>Quest for characters level 3 and above.</body></html>" 
+         st.exitQuest(1) 
+     else :
+       htmltext = "30006-01.htm"
+       st.exitQuest(1)
+   elif npcId == ROXXY and id == COMPLETED : 
+     htmltext = "<html><head><body>I can't supply you with another Giran Scroll of Escape. Sorry traveller.</body></html>" 
+   elif npcId == ROXXY and cond == 1 : 
+     htmltext = "30006-04.htm" 
+   elif npcId == BAULRO : 
+     if cond == 1: 
+       htmltext = "30033-01.htm" 
+     elif cond == 2 and st.getQuestItemsCount(BAULRO_LETTER): 
+       htmltext = "30033-03.htm" 
+   elif npcId == SIR_COLLIN and cond == 2 and st.getQuestItemsCount(BAULRO_LETTER) : 
+       htmltext = "30311-02.htm" 
+   elif npcId == ROXXY and cond == 3 : 
+     htmltext = "30006-05.htm" 
+   return htmltext
+
+QUEST     = Quest(6,"6_StepIntoTheFuture","Step into the Future") 
+CREATED   = State('Start',     QUEST) 
+STARTED   = State('Started',   QUEST) 
+COMPLETED = State('Completed', QUEST) 
+
+QUEST.setInitialState(CREATED)
+QUEST.addStartNpc(ROXXY) 
+
+CREATED.addTalkId(ROXXY) 
+COMPLETED.addTalkId(ROXXY) 
+
+STARTED.addTalkId(ROXXY) 
+STARTED.addTalkId(BAULRO) 
+STARTED.addTalkId(SIR_COLLIN) 
+
+STARTED.addQuestDrop(ROXXY,BAULRO_LETTER,1) 
+
+print "importing quests: 6: Step into the Future" 

+ 99 - 0
datapack_development/data/jscript/quests/7_ATripBegins/__init__.py

@@ -0,0 +1,99 @@
+# Created by CubicVirtuoso
+# Any problems feel free to drop by #l2j-datapack on irc.freenode.net
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+#NPCs 
+MIRABEL  = 30146 
+ARIEL    = 30148 
+ASTERIOS = 30154 
+
+#ITEM 
+ARIELS_RECOMMENDATION = 7572 
+ 
+#REWARDS 
+ADENA                  = 57 
+SCROLL_OF_ESCAPE_GIRAN = 7559 
+MARK_OF_TRAVELER       = 7570 
+ 
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) 
+
+ def onEvent (self,event,st) : 
+   htmltext = event 
+   if event == "30146-03.htm" : 
+     st.set("cond","1") 
+     st.setState(STARTED) 
+     st.playSound("ItemSound.quest_accept") 
+   elif event == "30148-02.htm" : 
+     st.giveItems(ARIELS_RECOMMENDATION,1) 
+     st.set("cond","2") 
+     st.set("id","2") 
+     st.playSound("ItemSound.quest_middle") 
+   elif event == "30154-02.htm" : 
+     st.takeItems(ARIELS_RECOMMENDATION,-1) 
+     st.set("cond","3") 
+     st.set("id","3") 
+     st.playSound("ItemSound.quest_middle") 
+   elif event == "30146-06.htm" : 
+     st.giveItems(SCROLL_OF_ESCAPE_GIRAN,1) 
+     st.giveItems(MARK_OF_TRAVELER, 1) 
+     st.set("cond","0") 
+     st.setState(COMPLETED) 
+     st.playSound("ItemSound.quest_finish") 
+   return htmltext 
+
+ def onTalk (Self,npc,st): 
+   htmltext = "<html><head><body>I have nothing to say you</body></html>" 
+   npcId = npc.getNpcId() 
+   cond  = st.getInt("cond") 
+   id    = st.getState() 
+
+   if id == CREATED : 
+     st.set("cond","0") 
+     if st.getPlayer().getRace().ordinal() == 1 : 
+       if st.getPlayer().getLevel() >= 3 : 
+         htmltext = "30146-02.htm" 
+       else : 
+         htmltext = "<html><head><body>Quest for characters level 3 above.</body></html>" 
+         st.exitQuest(1) 
+     else : 
+       htmltext = "30146-01.htm" 
+       st.exitQuest(1) 
+   elif npcId == MIRABEL and id == COMPLETED : 
+     htmltext = "<html><head><body>I can't supply you with another Giran Scroll of Escape. Sorry traveller.</body></html>" 
+   elif npcId == MIRABEL and cond == 1 : 
+     htmltext = "30146-04.htm" 
+   elif npcId == ARIEL and cond : 
+     if st.getQuestItemsCount(ARIELS_RECOMMENDATION) == 0 : 
+       htmltext = "30148-01.htm" 
+     else : 
+       htmltext = "30148-03.htm" 
+   elif npcId == ASTERIOS and cond == 2 and st.getQuestItemsCount(ARIELS_RECOMMENDATION) > 0 : 
+     htmltext = "30154-01.htm" 
+   elif npcId == MIRABEL and cond == 3 : 
+     htmltext = "30146-05.htm" 
+
+   return htmltext 
+
+QUEST     = Quest(7,"7_ATripBegins","A Trip Begins") 
+CREATED   = State('Start',     QUEST) 
+STARTED   = State('Started',   QUEST) 
+COMPLETED = State('Completed', QUEST) 
+ 
+QUEST.setInitialState(CREATED)
+QUEST.addStartNpc(MIRABEL) 
+
+CREATED.addTalkId(MIRABEL) 
+COMPLETED.addTalkId(MIRABEL) 
+
+STARTED.addTalkId(MIRABEL) 
+STARTED.addTalkId(ARIEL) 
+STARTED.addTalkId(ASTERIOS) 
+
+STARTED.addQuestDrop(MIRABEL,ARIELS_RECOMMENDATION,1) 
+
+print "importing quests: 7: A Trip Begins" 

+ 99 - 0
datapack_development/data/jscript/quests/8_AnAdventureBegins/__init__.py

@@ -0,0 +1,99 @@
+# Created by CubicVirtuoso
+# Any problems feel free to drop by #l2j-datapack on irc.freenode.net
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+#NPCs 
+JASMINE = 30134 
+ROSELYN = 30355 
+HARNE   = 30144 
+
+#ITEM 
+ROSELYNS_NOTE = 7573 
+ 
+#REWARDS 
+ADENA      = 57 
+SCROLL_OF_ESCAPE_GIRAN = 7559 
+MARK_OF_TRAVELER       = 7570 
+ 
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) 
+
+ def onEvent (self,event,st) : 
+   htmltext = event 
+   if event == "30134-03.htm" : 
+     st.set("cond","1") 
+     st.setState(STARTED) 
+     st.playSound("ItemSound.quest_accept") 
+   elif event == "30355-02.htm" : 
+     st.giveItems(ROSELYNS_NOTE,1) 
+     st.set("cond","2") 
+     st.set("id","2") 
+     st.playSound("ItemSound.quest_middle") 
+   elif event == "30144-02.htm" : 
+     st.takeItems(ROSELYNS_NOTE,-1) 
+     st.set("cond","3") 
+     st.set("id","3") 
+     st.playSound("ItemSound.quest_middle") 
+   elif event == "30134-06.htm" : 
+     st.giveItems(SCROLL_OF_ESCAPE_GIRAN,1) 
+     st.giveItems(MARK_OF_TRAVELER, 1) 
+     st.set("cond","0") 
+     st.setState(COMPLETED) 
+     st.playSound("ItemSound.quest_finish") 
+   return htmltext 
+
+ def onTalk (Self,npc,st): 
+   htmltext = "<html><head><body>I have nothing to say you</body></html>" 
+   npcId = npc.getNpcId() 
+   cond  = st.getInt("cond") 
+   id    = st.getState() 
+
+   if id == CREATED : 
+     st.set("cond","0") 
+     if st.getPlayer().getRace().ordinal() == 2 : 
+       if st.getPlayer().getLevel() >= 3 : 
+         htmltext = "30134-02.htm" 
+       else : 
+         htmltext = "<html><head><body>Quest for characters level 3 and above.</body></html>" 
+         st.exitQuest(1) 
+     else : 
+       htmltext = "30134-01.htm" 
+       st.exitQuest(1) 
+   elif npcId == JASMINE and id == COMPLETED : 
+     htmltext = "<html><head><body>I can't supply you with another Giran Scroll of Escape. Sorry traveller.</body></html>" 
+   elif npcId == JASMINE and cond == 1 : 
+     htmltext = "30134-04.htm" 
+   elif npcId == ROSELYN and cond : 
+     if st.getQuestItemsCount(ROSELYNS_NOTE) == 0 : 
+       htmltext = "30355-01.htm" 
+     else : 
+       htmltext = "30355-03.htm" 
+   elif npcId == HARNE and cond == 2 and st.getQuestItemsCount(ROSELYNS_NOTE) > 0 : 
+     htmltext = "30144-01.htm" 
+   elif npcId == JASMINE and cond == 3 : 
+     htmltext = "30134-05.htm" 
+
+   return htmltext 
+
+QUEST     = Quest(8,"8_AnAdventureBegins","An Adventure Begins") 
+CREATED   = State('Start',     QUEST) 
+STARTED   = State('Started',   QUEST) 
+COMPLETED = State('Completed', QUEST) 
+ 
+QUEST.setInitialState(CREATED)
+QUEST.addStartNpc(JASMINE) 
+
+CREATED.addTalkId(JASMINE) 
+COMPLETED.addTalkId(JASMINE) 
+
+STARTED.addTalkId(JASMINE) 
+STARTED.addTalkId(ROSELYN) 
+STARTED.addTalkId(HARNE) 
+
+STARTED.addQuestDrop(JASMINE,ROSELYNS_NOTE,1) 
+
+print "importing quests: 8: An Adventure Begins" 

+ 166 - 0
datapack_development/data/jscript/quests/999_C3Tutorial/__init__.py

@@ -0,0 +1,166 @@
+# Made by Mr. Have fun! Version 0.2
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+RECOMMENDATION_01 = 1067
+RECOMMENDATION_02 = 1068
+LEAF_OF_MOTHERTREE = 1069
+BLOOD_OF_JUNDIN = 1070
+LICENSE_OF_MINER = 1498
+VOUCHER_OF_FLAME = 1496
+SOULSHOT_NOVICE = 5789
+SPIRITSHOT_NOVICE = 5790
+BLUE_GEM=6353
+
+# event:[htmlfile,radarX,radarY,radarZ,item,classId1,gift1,count1,classId2,gift2,count2]
+EVENTS={
+"30008_02":["30008-03.htm",-84058,243239,-3730,RECOMMENDATION_01,0x00,SOULSHOT_NOVICE,200,0,0,0],
+"30017_02":["30017-03.htm",-84058,243239,-3730,RECOMMENDATION_02,0x0a,SPIRITSHOT_NOVICE,100,0,0,0],
+"30370_02":["30370-03.htm",45491,48359,-3086,LEAF_OF_MOTHERTREE,0x19,SPIRITSHOT_NOVICE,100,0x12,SOULSHOT_NOVICE,200],
+"30129_02":["30129-03.htm",12116,16666,-4610,BLOOD_OF_JUNDIN,0x26,SPIRITSHOT_NOVICE,100,0x1f,SOULSHOT_NOVICE,200],
+"30528_02":["30528-03.htm",115642,-178046,-941,LICENSE_OF_MINER,0x35,SOULSHOT_NOVICE,200,0,0,0],
+"30573_02":["30573-03.htm",-45067,-113549,-235,VOUCHER_OF_FLAME,0x31,SPIRITSHOT_NOVICE,100,0x2c,SOULSHOT_NOVICE,200]
+}
+
+# npcId:[raceId,[htmlfiles],npcTyp,item]
+TALKS={
+30017:[0,["30017-01.htm","30017-02.htm","30017-04.htm"],0,0],
+30008:[0,["30008-01.htm","30008-02.htm","30008-04.htm"],0,0],
+30370:[1,["30370-01.htm","30370-02.htm","30370-04.htm"],0,0],
+30129:[2,["30129-01.htm","30129-02.htm","30129-04.htm"],0,0],
+30573:[3,["30573-01.htm","30573-02.htm","30573-04.htm"],0,0],
+30528:[4,["30528-01.htm","30528-02.htm","30528-04.htm"],0,0],
+30018:[0,["30131-01.htm",0,"30019-03a.htm","30019-04.htm",],1,RECOMMENDATION_02],
+30019:[0,["30131-01.htm",0,"30019-03a.htm","30019-04.htm",],1,RECOMMENDATION_02],
+30020:[0,["30131-01.htm",0,"30019-03a.htm","30019-04.htm",],1,RECOMMENDATION_02],
+30021:[0,["30131-01.htm",0,"30019-03a.htm","30019-04.htm",],1,RECOMMENDATION_02],
+30009:[0,["30530-01.htm","30009-03.htm",0,"30009-04.htm",],1,RECOMMENDATION_01],
+30011:[0,["30530-01.htm","30009-03.htm",0,"30009-04.htm",],1,RECOMMENDATION_01],
+30012:[0,["30530-01.htm","30009-03.htm",0,"30009-04.htm",],1,RECOMMENDATION_01],
+30056:[0,["30530-01.htm","30009-03.htm",0,"30009-04.htm",],1,RECOMMENDATION_01],
+30400:[1,["30131-01.htm","30400-03.htm","30400-03a.htm","30400-04.htm",],1,LEAF_OF_MOTHERTREE],
+30401:[1,["30131-01.htm","30400-03.htm","30400-03a.htm","30400-04.htm",],1,LEAF_OF_MOTHERTREE],
+30402:[1,["30131-01.htm","30400-03.htm","30400-03a.htm","30400-04.htm",],1,LEAF_OF_MOTHERTREE],
+30403:[1,["30131-01.htm","30400-03.htm","30400-03a.htm","30400-04.htm",],1,LEAF_OF_MOTHERTREE],
+30131:[2,["30131-01.htm","30131-03.htm","30131-03a.htm","30131-04.htm",],1,BLOOD_OF_JUNDIN],
+30404:[2,["30131-01.htm","30131-03.htm","30131-03a.htm","30131-04.htm",],1,BLOOD_OF_JUNDIN],
+30574:[3,["30575-01.htm","30575-03.htm","30575-03a.htm","30575-04.htm",],1,VOUCHER_OF_FLAME],
+30575:[3,["30575-01.htm","30575-03.htm","30575-03a.htm","30575-04.htm",],1,VOUCHER_OF_FLAME],
+30530:[4,["30530-01.htm","30530-03.htm",0,"30530-04.htm",],1,LICENSE_OF_MINER]
+}    
+
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
+
+ def onEvent (self,event,st) :
+    htmltext = event
+    htmlfile,radarX,radarY,radarZ,item,classId1,gift1,count1,classId2,gift2,count2 = EVENTS[event]
+    st.addRadar(radarX,radarY,radarZ);
+    htmltext=htmlfile
+    if st.getQuestItemsCount(item) and int(st.get("onlyone")) == 0:
+         if st.getPlayer().getClassId().getId() == classId1 :
+          st.addExpAndSp(0,50)
+          st.takeItems(item,1)
+          st.giveItems(gift1,count1)
+          st.set("cond","0")
+          st.set("onlyone","1")
+          st.setState(COMPLETED)
+          st.playSound("ItemSound.quest_finish")
+         elif st.getPlayer().getClassId().getId() == classId2 :
+          st.addExpAndSp(0,50)
+          st.takeItems(item,1)
+          if gift2:
+           st.giveItems(gift2,count2)
+          st.set("cond","0")
+          st.set("onlyone","1")
+          st.setState(COMPLETED)
+          st.playSound("ItemSound.quest_finish")
+    return htmltext
+
+ def onTalk (Self,npc,st):
+   npcId = npc.getNpcId()
+   htmltext = "<html><head><body>I have no tasks for you right now.</body></html>"
+   raceId,htmlfiles,npcTyp,item = TALKS[npcId]
+   id = st.getState()
+   if id == CREATED :
+     st.setState(STARTING)
+     st.set("cond","0")
+     st.set("onlyone","0")
+     st.set("id","0")
+   if (st.getPlayer().getLevel() >= 10 or int(st.get("onlyone"))) and npcTyp == 1:
+       htmltext = "30575-05.htm"
+   elif int(st.get("onlyone")) == 0 and st.getPlayer().getLevel() < 10 :
+    if st.getPlayer().getRace().ordinal() == raceId :
+      htmltext=htmlfiles[0]
+      if npcTyp==1:
+       if int(st.get("cond"))==0 :
+        if st.getPlayer().getClassId().isMage() :
+         st.set("cond","1")
+         st.setState(STARTED)
+         st.playSound("ItemSound.quest_tutorial")
+        else:
+         htmltext="30530-01.htm"
+         st.set("cond","1")
+         st.setState(STARTED)
+         st.playSound("ItemSound.quest_tutorial")
+       elif int(st.get("cond"))==1 and st.getQuestItemsCount(item)==0 :
+         if st.getQuestItemsCount(BLUE_GEM) :
+           st.takeItems(BLUE_GEM,st.getQuestItemsCount(BLUE_GEM))
+           st.giveItems(item,1)
+           st.set("cond","2")
+           st.playSound("ItemSound.quest_middle")
+           if st.getPlayer().getClassId().isMage() :
+             st.giveItems(SPIRITSHOT_NOVICE,100)
+             htmltext = htmlfiles[2]
+           else:
+             st.giveItems(SOULSHOT_NOVICE,200)
+             htmltext = htmlfiles[1]
+         else:
+           if st.getPlayer().getClassId().isMage() :
+             htmltext = "30131-02.htm"
+             if st.getPlayer().getRace().ordinal() == 3 :
+              htmltext = "30575-02.htm"
+           else:
+             htmltext = "30530-02.htm"
+       elif int(st.get("cond"))==2 :
+        htmltext = htmlfiles[3]
+      elif npcTyp == 0 :
+        if int(st.get("cond"))==1 :
+          htmltext = htmlfiles[0]
+        elif int(st.get("cond"))==2 :
+          htmltext = htmlfiles[1]
+        elif int(st.get("cond"))==3 :
+          htmltext = htmlfiles[2] 
+   else:
+       htmltext = "<html><head><body>You are too experienced now.</body></html>"
+   return htmltext
+
+ def onKill (self,npc,st):
+   if int(st.get("cond"))==1 and st.getRandom(100) < 25 and st.getQuestItemsCount(BLUE_GEM) == 0 :
+      st.giveItems(BLUE_GEM,1)
+      st.playSound("ItemSound.quest_itemget")
+      st.playSound("ItemSound.quest_tutorial")
+   return
+
+QUEST       = Quest(999,"999_C3Tutorial","C3 Tutorial")
+CREATED     = State('Start', QUEST)
+STARTING     = State('Starting', QUEST)
+STARTED     = State('Started', QUEST)
+COMPLETED   = State('Completed', QUEST)
+
+
+QUEST.setInitialState(CREATED)
+
+for startNpc in [30008,30009,30017,30019,30129,30131,30404,30056,30011,30012,30401,30403,30402,30018,30021,30020,30574,30370,30400,30528,30530,30573,30575]:
+  QUEST.addStartNpc(startNpc)
+  STARTING.addTalkId(startNpc)
+  STARTED.addTalkId(startNpc)
+
+
+STARTED.addKillId(20001)
+STARTED.addKillId(27198)
+
+print "importing quests: 999: C3 Tutorial"

+ 84 - 0
datapack_development/data/jscript/quests/9_IntoTheCityOfHumans/__init__.py

@@ -0,0 +1,84 @@
+# Created by CubicVirtuoso
+# Any problems feel free to drop by #l2j-datapack on irc.freenode.net
+import sys
+from net.sf.l2j.gameserver.model.quest import State
+from net.sf.l2j.gameserver.model.quest import QuestState
+from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
+
+#NPCs 
+PETUKAI = 30583 
+TANAPI  = 30571 
+TAMIL   = 30576 
+
+#REWARDS 
+ADENA = 57 
+SCROLL_OF_ESCAPE_GIRAN = 7559 
+MARK_OF_TRAVELER = 7570 
+ 
+class Quest (JQuest) :
+
+ def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) 
+
+ def onEvent (self,event,st) : 
+   htmltext = event 
+   if event == "30583-03.htm" : 
+     st.set("cond","1") 
+     st.set("id","1") 
+     st.setState(STARTED) 
+     st.playSound("ItemSound.quest_accept") 
+   elif event == "30571-02.htm" : 
+     st.set("cond","2") 
+     st.set("id","2") 
+     st.playSound("ItemSound.quest_middle") 
+   elif event == "30576-02.htm" : 
+     st.giveItems(SCROLL_OF_ESCAPE_GIRAN,1) 
+     st.giveItems(MARK_OF_TRAVELER, 1) 
+     st.set("cond","0") 
+     st.setState(COMPLETED) 
+     st.playSound("ItemSound.quest_finish") 
+   return htmltext 
+
+ def onTalk (Self,npc,st): 
+   htmltext = "<html><head><body>I have nothing to say you</body></html>" 
+   npcId = npc.getNpcId() 
+   cond  = st.getInt("cond") 
+   id    = st.getState() 
+
+   if id == CREATED : 
+     st.set("cond","0") 
+     if st.getPlayer().getRace().ordinal() == 3 : 
+       if st.getPlayer().getLevel() >= 3 : 
+         htmltext = "30583-02.htm" 
+       else: 
+         htmltext = "<html><head><body>Quest for characters level 3 and above.</body></html>" 
+         st.exitQuest(1) 
+     else : 
+       htmltext = "30583-01.htm" 
+       st.exitQuest(1) 
+   elif npc == PETUKAI and id == COMPLETED : 
+     htmltext = "<html><head><body>I can't supply you with another Giran Scroll of Escape. Sorry traveller.</body></html>" 
+   elif npc == PETUKAI and cond == 1 : 
+     htmltext = "30583-04.htm" 
+   elif npcId == TANAPI and cond : 
+     htmltext = "30571-01.htm" 
+   elif npcId == TAMIL and cond == 2 : 
+     htmltext = "30576-01.htm" 
+
+   return htmltext 
+
+QUEST     = Quest(9,"9_IntoTheCityOfHumans","Into the City of Humans") 
+CREATED   = State('Start',     QUEST) 
+STARTED   = State('Started',   QUEST) 
+COMPLETED = State('Completed', QUEST) 
+ 
+QUEST.setInitialState(CREATED)
+QUEST.addStartNpc(PETUKAI) 
+
+CREATED.addTalkId(PETUKAI) 
+COMPLETED.addTalkId(PETUKAI) 
+
+STARTED.addTalkId(PETUKAI) 
+STARTED.addTalkId(TANAPI) 
+STARTED.addTalkId(TAMIL) 
+
+print "importing quests: 9: Into the City of Humans"