actual freya branch

This commit is contained in:
2026-09-12 15:39:57 +00:00
parent 9fa534b20e
commit 8049e0a882
18540 changed files with 1228200 additions and 0 deletions
@@ -0,0 +1,7 @@
<html><body>Gracia Survivor:<br>
There is a place at the western end of Aden, on the shores of the Sea of Gludio, where airships depart for Gracia. It's a wharf created through ancient Giant technology and the best Aden engineers.<br>
Since it floats in mid-air, however, there's no way to go there directly. The only way is to teleport there directly. A gatekeeper from Talking Island or Gludio Castle Village can send you there.<br>
We are desperate for help. If you are willing, I can send you up to Gludio Airship Wharf myself. But because some items are consumed, I must charge you something. I feel almost ashamed to ask.<br>
I only hope you will see it as a donation to Gracia. If you can't afford it, the Gatekeeper in Gludio Castle Village or Talking Island can also send you there. What would you like to do?<br>
<a action="bypass -h Quest 1003_Survivor 32632-2.htm">Move to Gludio Airship Wharf (150,000 Adena).</a>
</body></html>
@@ -0,0 +1,4 @@
<html><body>Gracia Survivor:<br>
I understand. But as I told you earlier, if you're short of money, you can still get to Gracia through another route.<br>
Visit the gatekeeper in Gludio Castle Village or Talking Island, and they can send you to the Airship Wharf. I hope you will do so. We can use everyone we can!
</body></html>
@@ -0,0 +1,5 @@
<html><body>Gracia Survivor:<br>
I understand. But Gracia is not a place to be taken lightly. Given your inexperience, even if you go there you would only be a liability to the effort.<br>
Aden also has many monsters and the need for adventurers to fight them. Build skills here, then go to Gracia.<br>
(It is recommended that only characters who are level 75 or higher travel to Gracia.)
</body></html>
@@ -0,0 +1,33 @@
#made by Kerberos
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 = "1003_Survivor"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onAdvEvent (self,event,npc,player):
st = player.getQuestState(qn)
if not st: return
if event:
if player.getLevel() < 75:
return "32632-3.htm"
if st.getQuestItemsCount(57) >= 150000 :
st.takeItems(57,150000)
player.teleToLocation(-149406, 255247, -80)
return
return event
def onTalk (self,npc,player):
st = player.getQuestState(qn)
if not st :
return ""
return "32632-1.htm"
QUEST = Quest(-1,qn,"Teleports")
QUEST.addStartNpc(32632)
QUEST.addTalkId(32632)
@@ -0,0 +1,2 @@
<html><body>Gatekeeper Wirphy:<br>
My sensory apparatus tells me that you don't have the Gatekeeper token. If you will go out and acquire starstones for me, I'll give you the Gatekeeper token.</body></html>
@@ -0,0 +1,2 @@
<html><body>Gatekeeper Tamil:<br>
You Cannot teleport without the Gatekeeper Charm. I will give it to you if you complete my quest.</body></html>
@@ -0,0 +1,48 @@
#
# Created by DraX on 2005.07.20
#
import sys
from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
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 = "1100_teleport_with_charm"
ORC_GATEKEEPER_CHARM = 1658
DWARF_GATEKEEPER_TOKEN = 1659
WHIRPY = 30540
TAMIL = 30576
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (Self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
# ORC_VILLAGE
if npcId == TAMIL:
if st.getQuestItemsCount(ORC_GATEKEEPER_CHARM) >= 1:
st.takeItems(ORC_GATEKEEPER_CHARM,1)
st.getPlayer().teleToLocation(-80826,149775,-3043)
st.exitQuest(1)
return
else:
st.exitQuest(1)
return "30576-01.htm"
# DWARVEN_VILLAGE
elif npcId == WHIRPY:
if st.getQuestItemsCount(DWARF_GATEKEEPER_TOKEN) >= 1:
st.takeItems(DWARF_GATEKEEPER_TOKEN,1)
st.getPlayer().teleToLocation(-80826,149775,-3043)
st.exitQuest(1)
return
else:
st.exitQuest(1)
return "30540-01.htm"
QUEST = Quest(-1,qn,"Teleports")
for i in [ WHIRPY, TAMIL ] :
QUEST.addStartNpc(i)
QUEST.addTalkId(i)
@@ -0,0 +1,74 @@
#
# Created by DraX on 2005.07.27. updated by DrLecter.
#
import sys
from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
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
from com.l2jserver.gameserver.network.serverpackets import NpcSay
qn = "1101_teleport_to_race_track"
RACE_MANAGER = 30995
TELEPORTERS = {
30059:3, # TRISHA
30080:4, # CLARISSA
30177:6, # VALENTIA
30233:8, # ESMERALDA
30256:2, # BELLA
30320:1, # RICHLIN
30848:7, # ELISA
30899:5, # FLAUEN
31320:9, # ILYANA
31275:10, # TATIANA
31964:11, # BILIA
31210:12 # RACE TRACK GK
}
RETURN_LOCS = [[-80826,149775,-3043],[-12672,122776,-3116],[15670,142983,-2705],[83400,147943,-3404], \
[111409,219364,-3545],[82956,53162,-1495],[146331,25762,-2018],[116819,76994,-2714], \
[43835,-47749,-792],[147930,-55281,-2728],[87386,-143246,-1293],[12882,181053,-3560]]
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if not st: return
###################
# Start Locations #
###################
if TELEPORTERS.has_key(npcId) :
st.getPlayer().teleToLocation(12661,181687,-3560)
st.setState(State.STARTED)
st.set("id",str(TELEPORTERS[npcId]))
############################
# Monster Derby Race Track #
############################
elif npcId == RACE_MANAGER:
if st.getState() == State.STARTED and st.getInt("id") :
# back to start location
return_id = st.getInt("id") - 1
if return_id < 13:
st.getPlayer().teleToLocation(RETURN_LOCS[return_id][0],RETURN_LOCS[return_id][1],RETURN_LOCS[return_id][2])
st.unset("id")
else:
# no base location
player.sendPacket(NpcSay(npc.getObjectId(),0,npc.getNpcId(),"You've arrived here from a different way. I'll send you to Dion Castle Town which is the nearest town."))
st.getPlayer().teleToLocation(15670,142983,-2700)
st.exitQuest(1)
return
QUEST = Quest(-1,qn,"Teleports")
for npcId in TELEPORTERS.keys() :
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
QUEST.addStartNpc(RACE_MANAGER)
QUEST.addTalkId(RACE_MANAGER)
@@ -0,0 +1,2 @@
<html><body>Dimensional Vortex:<br>
You do not have the proper stones needed for teleport.</body></html>
@@ -0,0 +1,33 @@
import sys
from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
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 = "1102_toivortex_blue"
BLUE_DIMENSION_STONE = 4402
DIMENSION_VORTEX_1 = 30952
DIMENSION_VORTEX_3 = 30954
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (Self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if npcId in [ DIMENSION_VORTEX_1,DIMENSION_VORTEX_3 ] :
if st.getQuestItemsCount(BLUE_DIMENSION_STONE) >= 1 :
st.takeItems(BLUE_DIMENSION_STONE,1)
st.getPlayer().teleToLocation(114097,19935,935)
st.exitQuest(1)
return
else :
st.exitQuest(1)
return "1.htm"
QUEST = Quest(-1,qn,"Teleports")
for i in [DIMENSION_VORTEX_1,DIMENSION_VORTEX_3] :
QUEST.addStartNpc(i)
QUEST.addTalkId(i)
@@ -0,0 +1,2 @@
<html><body>Dimensional Vortex:<br>
You do not have the proper stones needed for teleport.</body></html>
@@ -0,0 +1,33 @@
import sys
from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
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 = "1102_toivortex_green"
GREEN_DIMENSION_STONE = 4401
DIMENSION_VORTEX_2 = 30953
DIMENSION_VORTEX_3 = 30954
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (Self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if npcId in [ DIMENSION_VORTEX_2, DIMENSION_VORTEX_3 ] :
if st.getQuestItemsCount(GREEN_DIMENSION_STONE) >= 1:
st.takeItems(GREEN_DIMENSION_STONE,1)
st.getPlayer().teleToLocation(110930,15963,-4378)
st.exitQuest(1)
return
else:
st.exitQuest(1)
return "1.htm"
QUEST = Quest(-1,qn,"Teleports")
for i in [DIMENSION_VORTEX_2,DIMENSION_VORTEX_3] :
QUEST.addStartNpc(i)
QUEST.addTalkId(i)
@@ -0,0 +1,2 @@
<html><body>Dimensional Vortex:<br>
You do not have the proper stones needed for teleport.</body></html>
@@ -0,0 +1,33 @@
import sys
from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
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 = "1102_toivortex_red"
RED_DIMENSION_STONE = 4403
DIMENSION_VORTEX_1 = 30952
DIMENSION_VORTEX_2 = 30953
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (Self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if npcId in [ DIMENSION_VORTEX_1, DIMENSION_VORTEX_2 ] :
if st.getQuestItemsCount(RED_DIMENSION_STONE) >= 1:
st.takeItems(RED_DIMENSION_STONE,1)
st.getPlayer().teleToLocation(118558,16659,5987)
st.exitQuest(1)
return
else:
st.exitQuest(1)
return "1.htm"
QUEST = Quest(-1,qn,"Teleports")
for i in [DIMENSION_VORTEX_1,DIMENSION_VORTEX_2] :
QUEST.addStartNpc(i)
QUEST.addTalkId(i)
@@ -0,0 +1,4 @@
<html><body>Newbie Guide:<br>
Characters of level 20 or above may not use the Newbie Travel Token to teleport.<br>
Newbie Travel Token were designed to help newcomers to this world get started.
</body></html>
@@ -0,0 +1,7 @@
<html><body>&$556;<br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30600">Dark Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30601">Dwarven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30599">Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30602">Orc Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 32135">Kamael Village - 1 Newbie Travel Token</a><br>
</body></html>
@@ -0,0 +1,7 @@
<html><body>&$556;<br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30600">Dark Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30601">Dwarven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30598">Talking Island - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30602">Orc Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 32135">Kamael Village - 1 Newbie Travel Token</a><br>
</body></html>
@@ -0,0 +1,7 @@
<html><body>&$556;<br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30601">Dwarven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30598">Talking Island - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30599">Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30602">Orc Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 32135">Kamael Village - 1 Newbie Travel Token</a><br>
</body></html>
@@ -0,0 +1,7 @@
<html><body>&$556;<br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30600">Dark Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30598">Talking Island - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30599">Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30602">Orc Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 32135">Kamael Village - 1 Newbie Travel Token</a><br>
</body></html>
@@ -0,0 +1,7 @@
<html><body>&$556;<br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30600">Dark Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30601">Dwarven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30598">Talking Island - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30599">Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 32135">Kamael Village - 1 Newbie Travel Token</a><br>
</body></html>
@@ -0,0 +1,7 @@
<html><body>&$556;<br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30600">Dark Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30601">Dwarven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30598">Talking Island - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30599">Elven Village - 1 Newbie Travel Token</a><br>
<a action="bypass -h Quest 1104_NewbieTravelToken 30602">Orc Village - 1 Newbie Travel Token</a><br>
</body></html>
@@ -0,0 +1,56 @@
# Newbie Travel Token Teleport - by DrLecter
import sys
from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
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 = "1104_NewbieTravelToken"
TOKEN = 8542
DATA={
30600:[ 12160, 16554,-4583],#DE
30601:[115594,-177993, -912],#DW
30599:[ 45470, 48328,-3059],#EV
30602:[-45067,-113563, -199],#OV
30598:[-84053, 243343,-3729],#TI
32135:[-119712, 44519,368]#SI
}
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onAdvEvent (self,event,npc, player) :
htmltext = event
st = player.getQuestState(qn)
if not st : return
if event.isdigit():
dest=int(event)
if dest in DATA.keys():
x,y,z=DATA[dest]
if x and y and z:
if st.getQuestItemsCount(TOKEN):
st.takeItems(TOKEN,1)
st.getPlayer().teleToLocation(x,y,z)
else:
st.exitQuest(1)
return "Incorrect item count"
st.exitQuest(1)
return
def onTalk (Self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if player.getLevel() >= 20:
htmltext="1.htm"
st.exitQuest(1)
else:
htmltext=str(npcId)+".htm"
return htmltext
QUEST = Quest(-1,qn,"Teleports")
for i in DATA.keys() :
QUEST.addStartNpc(i)
QUEST.addTalkId(i)
@@ -0,0 +1,10 @@
<html><body>Gatekeeper Ragara:<br>
Ages ago, the Kamael were barred from using teleportation magic. Needless to say, this has put us at a distinct disadvantage. Finally, we learned how to borrow other races' power.<br>
The Wizards of the Ivory Tower sympathized with us, so they created the Staff of Transferring and built strongholds everywhere. Beginning adventurers may move freely to strongholds as a result.<br>
<a action="bypass -h npc_%objectId%_Chat 1">Teleport</a><br>
<a action="bypass -h npc_%objectId%_Chat 4">Move to a stronghold (free).</a><br>
<a action="bypass -h npc_%objectId%_multisell 002">Exchange Dimension Diamonds.</a><br>
<a action="bypass -h npc_%objectId%_Quest 2000_NoblesseTeleport">Noblesse Exclusive Teleport</a><br>
<a action="bypass -h npc_%objectId%_Quest CharacterBirthday">Receive your Birthday Gift!</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>
@@ -0,0 +1,10 @@
<html><body>Gatekeeper Ragara:<br>
Ages ago, the Kamael were barred from using teleportation magic. Needless to say, this has put us at a distinct disadvantage. Finally, we learned how to borrow other races' power.<br>
The Wizards of the Ivory Tower sympathized with us, so they created the Staff of Transferring and built strongholds everywhere. Beginning adventurers may move freely to strongholds as a result.<br>
<a action="bypass -h npc_%objectId%_Chat 1">Teleport</a><br>
<a action="bypass -h npc_%objectId%_Chat 5">Move to a stronghold (free).</a><br>
<a action="bypass -h npc_%objectId%_multisell 002">Exchange Dimension Diamonds.</a><br>
<a action="bypass -h npc_%objectId%_Quest 2000_NoblesseTeleport">Noblesse Exclusive Teleport</a><br>
<a action="bypass -h npc_%objectId%_Quest CharacterBirthday">Receive your Birthday Gift!</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>Gatekeeper Mellon:<br>
Welcome to the heart of the Kamael homeland.<br>
From here, you may only go directly to Kamael Village if you are an adventurer lower than level 20. What would you like to do? Will you go back?<br>
<a action="bypass -h npc_%objectId%_Chat 2">Go to the village.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>Gatekeeper Mellon:<br>
Welcome to the heart of the Kamael homeland.<br>
From here, you may only go directly to Kamael Village if you are an adventurer lower than level 20. What would you like to do? Will you go back?<br>
<a action="bypass -h npc_%objectId%_Chat 1">Go to the village.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
</body></html>
@@ -0,0 +1,7 @@
<html><body>Gatekeeper Yinir:<br>
Hello! How is your training progressing?<br>
Let me know if you wish to return to the town; I can send you back at any time.<br>
Ah, you must be lower than level 20, though!<br>
<a action="bypass -h npc_%objectId%_Chat 2"> Move to the village. </a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
</body></html>
@@ -0,0 +1,7 @@
<html><body>Gatekeeper Yinir:<br>
Hello! How is your training progressing?<br>
Let me know if you wish to return to the town; I can send you back at any time.<br>
Ah, you must be lower than level 20, though!<br>
<a action="bypass -h npc_%objectId%_Chat 1"> Move to the village. </a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>Gatekeeper Yung:<br>
We provide teleportion services back to the town only for adventurers lower than level 20.<br>
Let me know if you're thinking about going back.<br>
<a action="bypass -h npc_%objectId%_Chat 2">Move to the village.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>Gatekeeper Yung:<br>
We provide teleportion services back to the town only for adventurers lower than level 20.<br>
Let me know if you're thinking about going back.<br>
<a action="bypass -h npc_%objectId%_Chat 1">Move to the village.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
</body></html>
@@ -0,0 +1,31 @@
# Made by Kerberos
# this script is part of the Official L2J Datapack Project.
# Visit http://www.l2jdp.com/forum/ for more details.
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 = "1105_StrongholdsTeleports"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onFirstTalk (self,npc,player):
htmltext = None
st = player.getQuestState(qn)
if not st :
st = self.newQuestState(player)
if st.getPlayer().getLevel() < 20 :
htmltext = str(npc.getNpcId()) + ".htm"
else:
htmltext = str(npc.getNpcId()) + "-no.htm"
if htmltext == None:
npc.showChatWindow(player)
return htmltext
QUEST = Quest(-1, qn, "Teleports")
for i in [32163,32181,32184,32186]:
QUEST.addFirstTalkId(i)
@@ -0,0 +1,73 @@
#
# Created by Kerberos
#
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
from com.l2jserver.gameserver.network.serverpackets import NpcSay
qn = "1106_teleport_to_fantasy_isle"
PADDIES = 32378
TELEPORTERS = {
30059:3, # TRISHA
30080:4, # CLARISSA
30177:6, # VALENTIA
30233:8, # ESMERALDA
30256:2, # BELLA
30320:1, # RICHLIN
30848:7, # ELISA
30899:5, # FLAUEN
31320:9, # ILYANA
31275:10, # TATIANA
31964:11 # BILIA
}
RETURN_LOCS = [[-80826,149775,-3043],[-12672,122776,-3116],[15670,142983,-2705],[83400,147943,-3404], \
[111409,219364,-3545],[82956,53162,-1495],[146331,25762,-2018],[116819,76994,-2714], \
[43835,-47749,-792],[147930,-55281,-2728],[87386,-143246,-1293]]
ISLE_LOCS = [[-58752,-56898,-2032],[-59716,-57868,-2032],[-60691,-56893,-2032],[-59720,-55921,-2032]]
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if not st: return
###################
# Start Locations #
###################
if TELEPORTERS.has_key(npcId) :
random_id = st.getRandom(len(ISLE_LOCS))
x,y,z = ISLE_LOCS[random_id][0],ISLE_LOCS[random_id][1],ISLE_LOCS[random_id][2]
st.getPlayer().teleToLocation(x,y,z)
st.setState(State.STARTED)
st.set("id",str(TELEPORTERS[npcId]))
################
# Fantasy Isle #
################
elif npcId == PADDIES:
if st.getState() == State.STARTED and st.getInt("id") :
# back to start location
return_id = st.getInt("id") - 1
st.getPlayer().teleToLocation(RETURN_LOCS[return_id][0],RETURN_LOCS[return_id][1],RETURN_LOCS[return_id][2])
st.unset("id")
else:
# no base location founded (player swimmed)
player.sendPacket(NpcSay(npc.getObjectId(),0,npc.getNpcId(),"You've arrived here from a different way. I'll send you to Rune Township which is the nearest town."))
st.getPlayer().teleToLocation(43835,-47749,-792)
st.exitQuest(1)
return
QUEST = Quest(-1,qn,"Teleports")
for npcId in TELEPORTERS.keys() :
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
QUEST.addStartNpc(PADDIES)
QUEST.addTalkId(PADDIES)
@@ -0,0 +1,4 @@
<html><body>Gatekeeper Mozella:<br>
Ah! You are too strong for the Gate of Time and Space to open. You seem to have exceeded the limits of the tower's magnetic field.<br>
(Characters who are level 56 and above cannot enter the Cruma Tower.)
</body></html>
@@ -0,0 +1,21 @@
import sys
from com.l2jserver.gameserver.model.quest.jython import QuestJython
class Quest (QuestJython) :
def __init__(self,id,name,descr): QuestJython.__init__(self,id,name,descr)
def onTalk (self,npc,player):
st = player.getQuestState("1107_CrumaTower")
htmltext = ""
if player.getLevel() > 55 :
htmltext = "30483.htm"
else :
player.teleToLocation(17724,114004,-11672)
st.exitQuest(1)
return htmltext
QUEST = Quest(-1,"1107_CrumaTower","Teleports")
QUEST.addStartNpc(30483)
QUEST.addTalkId(30483)
@@ -0,0 +1,3 @@
<html><body>The Temple Gatekeeper:<br>
The moment the mark touches the hole, the door swings open with a mechanical whir.
</body></html>
@@ -0,0 +1,73 @@
# Script for Pagan Temple Teleporters
# Needed for Quests 636 and 637
# v1.1 Done by BiTi
import sys
from com.l2jserver.gameserver.datatables import DoorTable
from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
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 = "1630_PaganTeleporters"
NPCS=[32034,32035,32036,32037,32039,32040]
# Main Quest Code
class Quest (JQuest):
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onAdvEvent (self,event,npc,pc) :
if event == "Close_Door1" :
DoorTable.getInstance().getDoor(19160001).closeMe()
elif event == "Close_Door2" :
DoorTable.getInstance().getDoor(19160010).closeMe()
DoorTable.getInstance().getDoor(19160011).closeMe()
return
def onFirstTalk (self,npc,player):
npcId = npc.getNpcId()
if npcId == 32039 :
player.teleToLocation(-12766,-35840,-10856)
elif npcId == 32040 :
player.teleToLocation(36640,-51218,718)
return ""
def onTalk (self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
htmltext = None
if npcId == 32034 :
if st.getQuestItemsCount(8064) == 0 and st.getQuestItemsCount(8065) == 0 and st.getQuestItemsCount(8067) == 0:
return "<html><body>The Temple Gatekeeper:<br>You have nothing that would cover the holes.<br>(You must have a Visitor's Mark, a Faded Visitor's Mark, or a Pagan's Mark in order to open this door.)</body></html>"
htmltext = "FadedMark.htm"
DoorTable.getInstance().getDoor(19160001).openMe()
self.startQuestTimer("Close_Door1",10000,None,None)
elif npcId == 32035:
DoorTable.getInstance().getDoor(19160001).openMe()
self.startQuestTimer("Close_Door1",10000,None,None)
htmltext = "FadedMark.htm"
elif npcId == 32036:
if not st.getQuestItemsCount(8067) :
htmltext = "<html><body>The Temple Gatekeeper:<br>Show your Mark or be gone from my sight!<br>Only those who possess the Pagan's Mark may pass through this gate!</body></html>"
else:
htmltext = "<html><body>The Temple Gatekeeper:<br>On seeing the Pagan's Mark, the statue's probing eyes go blank.<br>With the quiet whir of an engine, the gate swings open...</body></html>"
self.startQuestTimer("Close_Door2",10000,None,None)
DoorTable.getInstance().getDoor(19160010).openMe()
DoorTable.getInstance().getDoor(19160011).openMe()
elif npcId == 32037:
DoorTable.getInstance().getDoor(19160010).openMe()
DoorTable.getInstance().getDoor(19160011).openMe()
self.startQuestTimer("Close_Door2",10000,None,None)
htmltext = "FadedMark.htm"
st.exitQuest(1)
return htmltext
# Quest class and state definition
QUEST = Quest(-1, qn, "Teleports")
# Quest NPC starter initialization
for npc in NPCS :
QUEST.addStartNpc(npc)
QUEST.addTalkId(npc)
QUEST.addFirstTalkId(32039)
QUEST.addFirstTalkId(32040)
@@ -0,0 +1,36 @@
# Created by Ham Wong on 2007.02.28
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 = "2000_NoblesseTeleport"
NPC=[30006,30059,30080,30134,30146,30177,30233,30256,30320,30540,30576,30836,30848,30878,30899,31275,31320,31964,32163]
html = '<html><body><br>Ah, you\'re a Noblesse! I can offer you a special service then.<br><br>You may use this Olympiad Token.<br>\
<a action="bypass -h %bypass%">Teleport to Hunting Grounds</a><br><br>Don\'t use Olympiad Token.<br>\
<a action="bypass -h npc_%objectId%_Chat 2">Teleport to Hunting Grounds</a><br><a action="bypass -h npc_%objectId%_Chat 0">Back</a></body></html>'
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onAdvEvent (self,event,npc, player) :
return event
def onTalk (self,npc,player):
st = player.getQuestState(qn)
if player.isNoble() == 1 :
bypass = 'Quest 2000_NoblesseTeleport noble-nopass.htm'
if st.getQuestItemsCount(13722):
bypass = 'npc_%objectId%_Chat 3'
htmltext=html.replace("%bypass%",str(bypass)).replace("%objectId%",str(npc.getObjectId()))
else :
htmltext="nobleteleporter-no.htm"
return htmltext
QUEST = Quest(-1,qn,"Teleports")
for item in NPC:
QUEST.addStartNpc(item)
QUEST.addTalkId(item)
@@ -0,0 +1,4 @@
<html><body><br>
You do not have any Olympiad Tokens. If you wish to continue, you must pay using Adena.<br>
<a action="bypass -h npc_%objectId%_Chat 0">Return</a>
</body></html>
@@ -0,0 +1,4 @@
<html><body><br>
Only a Noblesse can use the Noblesse Only Teleport.<br>
<a action="bypass -h npc_%objectId%_Chat 0">Return</a>
</body></html>
@@ -0,0 +1,38 @@
# Created by Ham Wong on 2007.02.28
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 = "2400_toivortex_exit"
NPC=[29055]
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (Self,npc,player):
st = player.getQuestState(qn)
chance = st.getRandom(3)
if chance == 0:
x=108784+st.getRandom(100)
y=16000+st.getRandom(100)
z=-4928
elif chance == 1:
x=113824+st.getRandom(100)
y=10448+st.getRandom(100)
z=-5164
else:
x=115488+st.getRandom(100)
y=22096+st.getRandom(100)
z=-5168
player.teleToLocation(x,y,z)
st.exitQuest(1)
return
QUEST = Quest(-1,qn,"Teleports")
for item in NPC:
QUEST.addStartNpc(item)
QUEST.addTalkId(item)
@@ -0,0 +1,3 @@
<html><body>A voice whispers in your ear:<br>
<font color="LEVEL">You may not confront Antharas now.
Step back.</font></body></html>
@@ -0,0 +1,3 @@
<html><body>A voice whispers in your ear:<br>
<font color="LEVEL">Some have already entered the Lair of Antharas.
You may not enter until they are finished.</font></body></html>
@@ -0,0 +1,3 @@
<html><body>A voice whispers in your ear:<br>
<font color="LEVEL">Only those with a Portal Stone may meet Antharas.
Step back.</font></body></html>
@@ -0,0 +1,3 @@
<HTML><BODY>[Whispering]<BR>
<FONT color="LEVEL">You can't confront Valakas yet. Away with you!</FONT>
</BODY></HTML>
@@ -0,0 +1,3 @@
<HTML><BODY>[Whispering]<BR>
<FONT color="LEVEL">The nest is full, you must wait.</FONT>
</BODY></HTML>
@@ -0,0 +1,3 @@
<HTML><BODY>[Whispering]<BR>
<FONT color="LEVEL">Too many have entered, I can't let you go in.</FONT>
</BODY></HTML>
@@ -0,0 +1,3 @@
<html><body>[Whispering]<br>
You cannot enter.
</body></html>
@@ -0,0 +1,4 @@
<HTML><BODY>Watcher of Valakas Klein:<BR>
Until now, less than 50 people have attempted the Hall of Flames. Are you sure you want to enter it?<BR>
<a action="bypass -h Quest 6000_GrandBossTeleporters 31540">Enter</A>
</BODY></HTML>
@@ -0,0 +1,4 @@
<HTML><BODY>Watcher of Valakas Klein:<BR>
So far, between 50 and 100 people have entered the Hall of Flames. Do you wish to enter?<BR>
<a action="bypass -h Quest 6000_GrandBossTeleporters 31540">Enter</A>
</BODY></HTML>
@@ -0,0 +1,4 @@
<HTML><BODY>Watcher of Valakas Klein:<BR>
So far, between 100 and 150 people have entered the Hall of Flames. Do you wish to enter?<BR>
<a action="bypass -h Quest 6000_GrandBossTeleporters 31540">Enter</A>
</BODY></HTML>
@@ -0,0 +1,4 @@
<HTML><BODY>Watcher of Valakas Klein:<BR>
So far, between 150 and 200 people have entered the Hall of Flames. Do you wish to enter?<BR>
<a action="bypass -h Quest 6000_GrandBossTeleporters 31540">Enter</A>
</BODY></HTML>
@@ -0,0 +1,4 @@
<HTML><BODY>Watcher of Valakas Klein:<BR>
So far, over 200 people have entered the Hall of Flames. Do you wish to enter?<BR>
<a action="bypass -h Quest 6000_GrandBossTeleporters 31540">Enter</A>
</BODY></HTML>
@@ -0,0 +1,3 @@
<HTML><BODY>Watcher of Valakas Klein:<BR>
In order to enter the Hall of Flames, you'll need a Floating Stone. To obtain one, you must do a small favor for me. Agreed?
</BODY></HTML>
@@ -0,0 +1,144 @@
#Made by Emperorc
import sys
from com.l2jserver import Config
from com.l2jserver.gameserver.datatables import DoorTable
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
from com.l2jserver.gameserver.datatables import SpawnTable
from com.l2jserver.util import Rnd
from com.l2jserver.gameserver.instancemanager import QuestManager
from com.l2jserver.gameserver.instancemanager import GrandBossManager
qn = "6000_GrandBossTeleporters"
NPCs = [
13001, #Heart of Warding : Teleport into Lair of Antharas
31859, #Teleportation Cubic : Teleport out of Lair of Antharas
31384, #Gatekeeper of Fire Dragon : Opening some doors
31385, #Heart of Volcano : Teleport into Lair of Valakas
31540, #Watcher of Valakas Klein : Teleport into Hall of Flames
31686, #Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
31687, #Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
31759, #Teleportation Cubic : Teleport out of Lair of Valakas
]
class Quest (JQuest) :
def __init__(self,id,name,descr):
self.antharasAI = QuestManager.getInstance().getQuest("antharas")
self.valakasAI = QuestManager.getInstance().getQuest("valakas")
self.count = 0
self.count2 = 0
JQuest.__init__(self,id,name,descr)
def onAdvEvent (self,event,npc,player):
st = player.getQuestState(qn)
if not st:
st = self.newQuestState(player)
if event == "31540":
if st.getQuestItemsCount(7267) > 0 :
st.takeItems(7267,1)
player.teleToLocation(183813,-115157,-3303)
st.set("allowEnter","1")
return
else :
htmltext = "31540-06.htm"
return htmltext
def onTalk (self,npc,player):
npcId = npc.getNpcId()
htmltext = ""
if npcId == 13001 : #heart of warding
if self.antharasAI :
status = GrandBossManager.getInstance().getBossStatus(29019)
statusW = GrandBossManager.getInstance().getBossStatus(29066)
statusN = GrandBossManager.getInstance().getBossStatus(29067)
statusS = GrandBossManager.getInstance().getBossStatus(29068)
if status == 2 or statusW == 2 or statusN == 2 or statusS == 2:
htmltext = "13001-02.htm"
elif status == 3 or statusW == 3 or statusN == 3 or statusS == 3:
htmltext = "13001-01.htm"
elif status == 0 or status == 1 : #If entrance to see Antharas is unlocked (he is Dormant or Waiting)
st = player.getQuestState(qn)
if st.getQuestItemsCount(3865) > 0 :
st.takeItems(3865,1)
zone = GrandBossManager.getInstance().getZone(179700,113800,-7709)
if zone :
zone.allowPlayerEntry(player,30)
x = 179700 + Rnd.get(700)
y = 113800 + Rnd.get(2100)
player.teleToLocation(x,y,-7709)
if status == 0 :
self.antharasAI.setAntharasSpawnTask()
return
else :
htmltext = "13001-03.htm"
elif npcId == 31859 : #antharas teleport cube
x = 79800 + Rnd.get(600)
y = 151200 + Rnd.get(1100)
player.teleToLocation(x,y,-3534)
return
elif npcId == 31385 : #heart of volcano
htmltext = "31385-01.htm"
if self.valakasAI :
status = GrandBossManager.getInstance().getBossStatus(29028)
if status == 0 or status == 1 : #If entrance to see Valakas is unlocked (he is Dormant or Waiting)
st = player.getQuestState(qn)
if self.count >= 200 :
htmltext = "31385-03.htm"
elif st.getInt("allowEnter") == 1:
st.unset("allowEnter")
zone = GrandBossManager.getInstance().getZone(212852,-114842,-1632)
if zone :
zone.allowPlayerEntry(player,30)
x = 204328 + Rnd.get(600)
y = -111874 + Rnd.get(600)
player.teleToLocation(x,y,70)
self.count = self.count+1
if status == 0 :
valakas = GrandBossManager.getInstance().getBoss(29028)
self.valakasAI.startQuestTimer("1001",Config.Valakas_Wait_Time, valakas, None)
GrandBossManager.getInstance().setBossStatus(29028,1)
return
else: #player cheated, wasn't ported via npc Klein
htmltext = "31385-04.htm"
elif status == 2 :
htmltext = "31385-02.htm"
else :
htmltext = "31385-01.htm"
else :
htmltext = "31385-01.htm"
elif npcId == 31384 : #Gatekeeper of Fire Dragon
DoorTable.getInstance().getDoor(24210004).openMe()
return
elif npcId == 31686 : #Gatekeeper of Fire Dragon
DoorTable.getInstance().getDoor(24210006).openMe()
return
elif npcId == 31687 : #Gatekeeper of Fire Dragon
DoorTable.getInstance().getDoor(24210005).openMe()
return
elif npcId == 31540 : #Watcher of Valakas Klein
st = player.getQuestState(qn)
if self.count < 50 :
htmltext = "31540-01.htm"
elif self.count < 100 :
htmltext = "31540-02.htm"
elif self.count < 150 :
htmltext = "31540-03.htm"
elif self.count < 200 :
htmltext = "31540-04.htm"
else:
htmltext = "31540-05.htm"
elif npcId == 31759 : #valakas teleport cube
x = 150037 + Rnd.get(500)
y = -57720 + Rnd.get(500)
player.teleToLocation(x,y,-2976)
return
return htmltext
QUEST = Quest(-1, qn, "Teleports")
for npcid in NPCs :
QUEST.addStartNpc(npcid)
QUEST.addTalkId(npcid)
@@ -0,0 +1,3 @@
<html><body>Orahochin<br>
Oh ho -- you have sought me out while battling the dinosaurs, have you? And now you ask me to teleport you to that place? That island was created as a sancturary; it is my duty to protect its inhabitants from external harm. I certainly have no intention of making that place a refuge for reckless adventurers! It is my policy to not teleport any who are engaged in battle, so return after the battle has ended.
</body></html>
@@ -0,0 +1,30 @@
# contributed by kerberos_20 to the Official L2J Datapack Project.
# Visit http://www.l2jdp.com/forum/ for more details.
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 = "6111_ElrokiTeleporters"
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
def onTalk (self,npc,player):
npcId = npc.getNpcId()
if npcId == 32111 :
if player.isInCombat() :
return "32111-no.htm"
player.teleToLocation(4990,-1879,-3178)
if npcId == 32112 :
player.teleToLocation(7557,-5513,-3221)
return
QUEST = Quest(-1, qn, "Teleports")
QUEST.addStartNpc(32111)
QUEST.addTalkId(32111)
QUEST.addStartNpc(32112)
QUEST.addTalkId(32112)
@@ -0,0 +1,118 @@
/*
* 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 teleports.GatekeeperSpirit;
import com.l2jserver.gameserver.SevenSigns;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
public class GatekeeperSpirit extends Quest
{
private final static int ENTER_GK = 31111;
private final static int EXIT_GK = 31112;
private final static int Lilith = 25283;
private final static int Anakim = 25286;
public GatekeeperSpirit(int questId, String name, String descr)
{
super(questId, name, descr);
addStartNpc(ENTER_GK);
addFirstTalkId(ENTER_GK);
addTalkId(ENTER_GK);
addStartNpc(EXIT_GK);
addFirstTalkId(EXIT_GK);
addTalkId(EXIT_GK);
this.addEventId(Lilith, Quest.QuestEventType.ON_KILL);
this.addEventId(Anakim, Quest.QuestEventType.ON_KILL);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
if (event.equalsIgnoreCase("enter"))
{
int playerCabal = SevenSigns.getInstance().getPlayerCabal(player.getObjectId());
int sealAvariceOwner = SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_AVARICE);
int compWinner = SevenSigns.getInstance().getCabalHighestScore();
boolean validation = SevenSigns.getInstance().isSealValidationPeriod();
if (validation && playerCabal == sealAvariceOwner && playerCabal == compWinner)
{
switch (sealAvariceOwner)
{
case SevenSigns.CABAL_DAWN:
player.teleToLocation(184448, -10112, -5504, false);
break;
case SevenSigns.CABAL_DUSK:
player.teleToLocation(184464, -13104, -5504, false);
break;
}
return null;
}
else
htmltext = "spirit_gate_q0506_01.htm";
}
else if (event.equalsIgnoreCase("exit"))
{
player.teleToLocation(182960, -11904, -4897, true);
return null;
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = "";
switch (npc.getNpcId())
{
case ENTER_GK:
htmltext = "spirit_gate001.htm";
break;
case EXIT_GK:
htmltext = "spirit_gate002.htm";
break;
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isPet)
{
int npcId = npc.getNpcId();
if (npcId == Lilith)
{
addSpawn(EXIT_GK, 184410, -10111, -5488, 0, false, 900000);
}
else if (npcId == Anakim)
{
addSpawn(EXIT_GK, 184410, -13102, -5488, 0, false, 900000);
}
return super.onKill(npc, killer, isPet);
}
public static void main(String[] args)
{
new GatekeeperSpirit(-1, "GatekeeperSpirit", "teleports");
}
}
@@ -0,0 +1,5 @@
<html><head><body>Gatekeeper Spirit:<br>
Behold, the sphere speaks...<br>
You have entered the Forbidden Sanctum, resting place of <font color="LEVEL">Lilith</font> and <font color="LEVEL">Anakim</font>. I guard the path to the Sanctum. The Seal of Avarice may only be breached when the eye is open.<br>
<a action="bypass -h Quest GatekeeperSpirit enter">Teleport.</a><br>
</body></html>
@@ -0,0 +1,4 @@
<html><head><body>Gatekeeper Spirit:<br>Behold, the sphere speaks...<br>
You must leave this place!<br>
<a action="bypass -h Quest GatekeeperSpirit exit">Teleport.</a><br>
</body></html>
@@ -0,0 +1,3 @@
<html><head><body>Gatekeeper Spirit:<br>
The Seal of Avarice is sleeping. You may not pass.<br>
</body></html>
@@ -0,0 +1,151 @@
/*
* 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 teleports.HuntingGroundsTeleport;
import com.l2jserver.gameserver.SevenSigns;
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;
public class HuntingGroundsTeleport extends Quest
{
private final static int[] PRIESTs =
{
31078,31079,31080,31081,31082,31083,31084,31085,31086,31087,31088,
31089,31090,31091,31168,31169,31692,31693,31694,31695,31997,31998
};
private static final int[] DAWN_NPCs =
{
31078,31079,31080,31081,31082,31083,31084,31168,31692,31694,31997
};
public HuntingGroundsTeleport(int questId, String name, String descr)
{
super(questId, name, descr);
for (int id : PRIESTs)
{
addStartNpc(id);
addTalkId(id);
}
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(getName());
int npcId = npc.getNpcId();
int playerCabal = SevenSigns.getInstance().getPlayerCabal(player.getObjectId());
int playerSeal = SevenSigns.getInstance().getPlayerSeal(player.getObjectId());
int sealOwnerGnosis = SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_GNOSIS);
boolean periodValidate = SevenSigns.getInstance().isSealValidationPeriod();
if (playerCabal == SevenSigns.CABAL_NULL)
{
if (Util.contains(DAWN_NPCs, npcId))
htmltext = "dawn_tele-no.htm";
else
htmltext = "dusk_tele-no.htm";
}
else if (npcId == 31078 || npcId == 31085)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_gludin.htm";
else
htmltext = "hg_gludin.htm";
}
else if (npcId == 31079 || npcId == 31086)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_gludio.htm";
else
htmltext = "hg_gludio.htm";
}
else if (npcId == 31080 || npcId == 31087)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_dion.htm";
else
htmltext = "hg_dion.htm";
}
else if (npcId == 31081 || npcId == 31088)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_giran.htm";
else
htmltext = "hg_giran.htm";
}
else if (npcId == 31082 || npcId == 31089)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_heine.htm";
else
htmltext = "hg_heine.htm";
}
else if (npcId == 31083 || npcId == 31090)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_oren.htm";
else
htmltext = "hg_oren.htm";
}
else if (npcId == 31084 || npcId == 31091)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_aden.htm";
else
htmltext = "hg_aden.htm";
}
else if (npcId == 31168 || npcId == 31169)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_hw.htm";
else
htmltext = "hg_hw.htm";
}
else if (npcId == 31692 || npcId == 31693)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_goddard.htm";
else
htmltext = "hg_goddard.htm";
}
else if (npcId == 31694 || npcId == 31695)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_rune.htm";
else
htmltext = "hg_rune.htm";
}
else if (npcId == 31997 || npcId == 31998)
{
if (periodValidate && playerCabal == sealOwnerGnosis && playerSeal == SevenSigns.SEAL_GNOSIS)
htmltext = "low_schuttgart.htm";
else
htmltext = "hg_schuttgart.htm";
}
st.exitQuest(true);
return htmltext;
}
public static void main(String[] args)
{
new HuntingGroundsTeleport(-1, "HuntingGroundsTeleport", "teleports");
}
}
@@ -0,0 +1,4 @@
<html><body>Priest of Dawn:<br>
Lords of Dawn. We will not open the Door of Dimension for non-members!<br>
<a action="bypass -h npc_%objectId%_Chat 0">Return</a>
</body></html>
@@ -0,0 +1,4 @@
<html><body>Dusk Priestess:<br>
We will not open the Door of Dimension to non-members!<br>
<a action="bypass -h npc_%objectId%_Chat 0">Return</a>
</body></html>
@@ -0,0 +1,5 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 168560 -17968 -3168 14000">Disciple's Necropolis - 14000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 136672 79328 -3696 12000">Catacomb of the Witch - 12000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 110912 84912 -4808 18000">Catacomb of the Forbidden Path - 18000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 45600 126944 -3680 3900">The Pilgrim's Necropolis - 3900 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 39232 143568 -3648 2600">The Catacomb of the Heretic - 2600 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 43200 170688 -3248 5900">Catacomb of the Branded - 5900 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 107514 174329 -3704 11000">Necropolis of Worship - 11000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,3 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 114496 132416 -3096 8600">Necropolis of Martyrdom - 8600 Ancient Adena</a>
</body></html>
@@ -0,0 +1,3 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -41184 206752 -3352 5500">Necropolis of Sacrifice - 5500 Ancient Adena</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -25472 77728 -3440 9200">The Patriot's Necropolis - 9200 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -56064 78720 -3008 14000">Necropolis of Devotion - 14000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -41184 206752 -3352 7000">Necropolis of Sacrifice - 7000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -22480 13872 -3168 30000">Catacomb of Dark Omens - 30000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 168560 -17968 -3168 11000">The Disciple's Necropolis - 11000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 110912 84912 -4808 40000">Catacomb of the Forbidden Path - 40000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -22480 13872 -3168 51000">Catacomb of Dark Omens - 51000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 79296 209584 -3704 76000">The Saint's Necropolis - 76000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,7 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 107514 174329 -3704 5500">Necropolis of Worship - 5500 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 45600 126944 -3680 13000">The Pilgrim's Necropolis - 13000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 39232 143568 -3648 12000">The Catacomb of the Heretic - 12000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 43200 170688 -3248 13000">Catacomb of the Branded - 13000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 79296 209584 -3704 9600">The Saint's Necropolis - 9600 Ancient Adena</a>
</body></html>
@@ -0,0 +1,4 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 136672 79328 -3696 5000">Catacomb of the Witch - 5000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 110912 84912 -4808 2800">Catacomb of the Forbidden Path - 2800 Ancient Adena</a>
</body></html>
@@ -0,0 +1,3 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 74672 78032 -3392 5000">Catacomb of the Apostate - 5000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,10 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 114496 132416 -3096 46000">Necropolis of Martyrdom - 46000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 136672 79328 -3696 37000">Catacomb of the Witch - 37000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -25472 77728 -3440 29000">The Patriot's Necropolis - 29000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -56064 78720 -3008 39000">Necropolis of Devotion - 39000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 168560 -17968 -3168 35000">The Disciple's Necropolis - 35000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 110912 84912 -4808 41000">Catacomb of the Forbidden Path - 41000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -22480 13872 -3168 25000">Catacomb of Dark Omens - 25000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 79296 209584 -3704 73000">The Saint's Necropolis - 73000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,9 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -41184 206752 -3352 29000">Necropolis of Sacrifice - 29000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 45600 126944 -3680 32000">The Pilgrim's Necropolis - 32000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 39232 143568 -3648 34000">The Catacomb of the Heretic - 34000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 43200 170688 -3248 50000">Catacomb of the Branded - 50000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 107514 174329 -3704 38000">Necropolis of Worship - 38000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 74672 78032 -3392 44000">Catacomb of the Apostate - 44000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -25472 77728 -3440 49000">The Patriot's Necropolis - 49000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,3 @@
<html><body>Teleporter:<br>
Something wrong...
</body></html>
@@ -0,0 +1,5 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 168560 -17968 -3168 8400">Disciple's Necropolis - 8400 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 136672 79328 -3696 7500">Catacomb of the Witch - 7500 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 110912 84912 -4808 11000">Catacomb of the Forbidden Path - 11000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 45600 126944 -3680 2300">The Pilgrim's Necropolis - 2300 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 39232 143568 -3648 1500">The Catacomb of the Heretic - 1500 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 43200 170688 -3248 3500">Catacomb of the Branded - 3500 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 107514 174329 -3704 6800">Necropolis of Worship - 6800 Ancient Adena</a>
</body></html>
@@ -0,0 +1,3 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 114496 132416 -3096 5100">Necropolis of Martyrdom - 5100 Ancient Adena</a>
</body></html>
@@ -0,0 +1,3 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -41184 206752 -3352 3300">Necropolis of Sacrifice - 3300 Ancient Adena</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -25472 77728 -3440 5500">The Patriot's Necropolis - 5500 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -56064 78720 -3008 8700">Necropolis of Devotion - 8700 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -41184 206752 -3352 4200">Necropolis of Sacrifice - 4200 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -22480 13872 -3168 18000">Catacomb of Dark Omens - 18000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 168560 -17968 -3168 7100">The Disciple's Necropolis - 7100 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 110912 84912 -4808 24000">Catacomb of the Forbidden Path - 24000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -22480 13872 -3168 31000">Catacomb of Dark Omens - 31000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 79296 209584 -3704 46000">The Saint's Necropolis - 46000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,7 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 107514 174329 -3704 3300">Necropolis of Worship - 3300 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 45600 126944 -3680 8200">The Pilgrim's Necropolis - 8200 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 39232 143568 -3648 7600">The Catacomb of the Heretic - 7600 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 43200 170688 -3248 8100">Catacomb of the Branded - 8100 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 79296 209584 -3704 5700">The Saint's Necropolis - 5700 Ancient Adena</a>
</body></html>
@@ -0,0 +1,4 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 136672 79328 -3696 3000">Catacomb of the Witch - 3000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 110912 84912 -4808 1700">Catacomb of the Forbidden Path - 1700 Ancient Adena</a>
</body></html>
@@ -0,0 +1,3 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 74672 78032 -3392 3000">Catacomb of the Apostate - 3000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,10 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 114496 132416 -3096 28000">Necropolis of Martyrdom - 28000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 136672 79328 -3696 22000">Catacomb of the Witch - 22000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -25472 77728 -3440 17000">The Patriot's Necropolis - 17000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -56064 78720 -3008 23000">Necropolis of Devotion - 23000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 168560 -17968 -3168 21000">The Disciple's Necropolis - 21000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 110912 84912 -4808 25000">Catacomb of the Forbidden Path - 25000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -22480 13872 -3168 15000">Catacomb of Dark Omens - 15000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 79296 209584 -3704 43000">The Saint's Necropolis - 43000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,9 @@
<html><body>&$556;<br><br>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -41184 206752 -3352 17000">Necropolis of Sacrifice - 17000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 45600 126944 -3680 19000">The Pilgrim's Necropolis - 19000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 39232 143568 -3648 20000">The Catacomb of the Heretic - 20000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 43200 170688 -3248 30000">Catacomb of the Branded - 30000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 107514 174329 -3704 22000">Necropolis of Worship - 22000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 74672 78032 -3392 26000">Catacomb of the Apostate - 26000 Ancient Adena</a><br1>
<a action="bypass -h npc_%objectId%_SevenSigns 11 -25472 77728 -3440 29000">The Patriot's Necropolis - 29000 Ancient Adena</a>
</body></html>
@@ -0,0 +1,5 @@
<html><body>Teleportation Crystal:<br>
There are Teleportation Crystals created by Dwarves. It is said that they allow you to instantaneously move to a specific place inside the Mines.<br>
<a action="bypass -h Quest MithrilMines 1">Leave the Mines.</a><br>
<a action="bypass -h Quest MithrilMines 2">Enter the Mines.</a>
</body></html>
@@ -0,0 +1,5 @@
<html><body>Teleportation Crystal:<br>
There are Teleportation Crystals created by Dwarves. It is said that they allow you to instantaneously move to a specific place inside the Mines.<br>
<a action="bypass -h Quest MithrilMines 3">Go to the Western Entrance of the Mines.</a><br>
<a action="bypass -h Quest MithrilMines 4">Go to the Northern Entrance of the Mines.</a>
</body></html>
@@ -0,0 +1,5 @@
<html><body>Teleportation Crystal:<br>
There are Teleportation Crystals created by Dwarves. It is said that they allow you to instantaneously move to a specific place inside the Mines.<br>
<a action="bypass -h Quest MithrilMines 5">Leave the Mines.</a><br>
<a action="bypass -h Quest MithrilMines 6">Enter the Mines.</a>
</body></html>
@@ -0,0 +1,86 @@
/*
* 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 teleports.MithrilMines;
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;
public class MithrilMines extends Quest
{
private static final int[][] data =
{
{171946, -173352, 3440},
{175499, -181586, -904},
{173462, -174011, 3480},
{179299, -182831, -224},
{178591, -184615, 360},
{175499, -181586, -904}
};
private final static int npcId = 32652;
public MithrilMines(int questId, String name, String descr)
{
super(questId, name, descr);
addStartNpc(npcId);
addFirstTalkId(npcId);
addTalkId(npcId);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(getName());
int loc = Integer.parseInt(event) - 1;
if (data.length > loc)
{
int x = data[loc][0];
int y = data[loc][1];
int z = data[loc][2];
player.teleToLocation(x, y, z);
st.exitQuest(true);
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(getName());
if (st == null)
st = newQuestState(player);
if (npc.isInsideRadius(173147, -173762, L2Npc.INTERACTION_DISTANCE, true))
htmltext = "32652-01.htm";
else if (npc.isInsideRadius(181941, -174614, L2Npc.INTERACTION_DISTANCE, true))
htmltext = "32652-02.htm";
else if (npc.isInsideRadius(179560, -182956, L2Npc.INTERACTION_DISTANCE, true))
htmltext = "32652-03.htm";
return htmltext;
}
public static void main(String[] args)
{
new MithrilMines(-1, "MithrilMines", "teleports");
}
}
@@ -0,0 +1,5 @@
<html><body>Dimension Keeper:<br>
I respect your burning desire for justice, however, the devils of purgatory who are trying to slip in through the dimension gap are wily foes!<br>
You're obviously committed to our cause, but you're not yet ready for the fight! Why don't you come back when you've improved your skills a bit?<br>
(Only characters of level 20 or above may undertake this quest.)
</body></html>
@@ -0,0 +1,4 @@
<html><body>Dimension Keeper:<br>
Dimension gaps are unstable places, where time and space are not what they seem. You may find yourself thrown out of one before you even realize you're there! If you expect to stay for any period of time there, you'll need to sign a Contract which allows us to constantly monitor your situation. Otherwise, you could be lost in the gap for eternity, never to see the light of this world again!<br>
Oh, I see that you have too many prior commitments to enter into a Contract with us at this time.
</body></html>
@@ -0,0 +1,4 @@
<html><body>Dimension Keeper:<br>
Your sense of justice and fair play are commendable, but the dimension gap is no place for the unprepared! Because the place has time and space twisted, I cannot let you in without the<font color="LEVEL"> dimension fragment</font>.<br>
<a action="bypass -h Quest OracleTeleport 6.htm">"Where can I find a dimension fragment?"</a>
</body></html>
@@ -0,0 +1,6 @@
<html><body>Dimension Keeper:<br>
You have a dimension fragment, don't you? Well, that's not the only thing you're going to need! The space warp is completely unpredictable! If you expect to defeat the devils, you'll have to release your preconceptions of what time and space are!<br>
I'll try to make this as simple as I can... Will you fight as hard as you can against those damn invading devils that are slipping through the dimension gap? If you are truly resolved to this battle, I'll let you enter immediately! But remember! If you break the Contract without my prior consent, I can keep you from ever leaving the dimension gap! If you intend to quit, you'd better speak up now! Got it?<br>
Now, tell me! Will you help?<br>
<a action="bypass -h Quest OracleTeleport 5.htm">"I'll do it!"</a>
</body></html>
@@ -0,0 +1,5 @@
<html><body>Dimension Keeper:<br>
First, I'll send you to the waiting room, a safe space we created. While there, speak with the<font color="LEVEL"> Keeper of the Gap</font>. He'll allow you to enter the dimension gap.<br>
However, they are classified based on the place that they manage.<br>
<font color="LEVEL">Level 30's are managed by Recruits, Level 40's by Privates, Level 50's by Officers, Level 60's by Captains, Level 70's by Commanders, and the higher levels by Heroes</font>. Don't forget this, and visit a keeper of the gap appropriate for your level. Well, good luck to you.
</body></html>
@@ -0,0 +1,5 @@
<html><body>Dimension Keeper:<br>
As you may already know, first I'll send you to a safe waiting place. Speak with the<font color="LEVEL"> Rift Post</font> there, they'll let you inside.<br>
They're classified depending on where their responsibilities lie.<br>
<font color="LEVEL">The level 30 force is managed by Recruits, level 40 by Privates, level 50 by Officers, level 60 by Generals, level 70 by Commanders and higher-force Heroes</font>. Take heed and visit the manager most suitable for you. Good luck!
</body></html>
@@ -0,0 +1,4 @@
<html><body>Dimension Keeper:<br>
At one time, these catacombs and necropolises existed in another dimension, before the seals that bound them were broken. The moment the seal was broken, it shattered into thousands of pieces and scattered throughout the area. The pieces of the seal are called<font color="LEVEL"> dimension fragments</font>. If you want one, you'll need to enter into another Contract with me.<br>
Based on our investigation, others are currently collecting dimension fragments. They are the<font color="LEVEL"> guardians of ancient magic</font>. I'll tell you more when we sign the Contract.
</body></html>
@@ -0,0 +1,3 @@
<html><body>Rift Post:<br>
I'll send you to your fate. I hope to see you again.
</body></html>
@@ -0,0 +1,326 @@
/*
* 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 teleports.OracleTeleport;
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.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.util.Util;
public class OracleTeleport extends Quest
{
private final static int[] TOWN_DAWN =
{
31078,31079,31080,31081,31083,31084,31082,31692,31694,31997,31168
};
private final static int[] TOWN_DUSK =
{
31085,31086,31087,31088,31090,31091,31089,31693,31695,31998,31169
};
private final static int[] TEMPLE_PRIEST =
{
31127,31128,31129,31130,31131,31137,31138,31139,31140,31141
};
private final static int[] RIFT_POSTERS =
{
31488,31489,31490,31491,31492,31493
};
private final static int[] TELEPORTERS =
{
31078,31079,31080,31081,31082,31083,31084,31692,31694,31997,31168,
31085,31086,31087,31088,31089,31090,31091,31693,31695,31998,31169,
31494,31495,31496,31497,31498,31499,31500,31501,31502,31503,31504,
31505,31506,31507,31095,31096,31097,31098,31099,31100,31101,31102,
31103,31104,31105,31106,31107,31108,31109,31110,31114,31115,31116,
31117,31118,31119,31120,31121,31122,31123,31124,31125
};
private final static int[][] RETURN_LOCS =
{
{-80555,150337,-3040},{-13953,121404,-2984},{16354,142820,-2696},{83369,149253,-3400},
{111386,220858,-3544},{83106,53965,-1488},{146983,26595,-2200},{148256,-55454,-2779},
{45664,-50318,-800},{86795,-143078,-1341},{115136,74717,-2608},{-82368,151568,-3120},
{-14748,123995,-3112},{18482,144576,-3056},{81623,148556,-3464},{112486,220123,-3592},
{82819,54607,-1520},{147570,28877,-2264},{149888,-56574,-2979},{44528,-48370,-800},
{85129,-142103,-1542},{116642,77510,-2688},{-41572,209731,-5087},{-52872,-250283,-7908},
{45256,123906,-5411},{46192,170290,-4981},{111273,174015,-5437},{-20604,-250789,-8165},
{-21726, 77385,-5171},{140405, 79679,-5427},{-52366, 79097,-4741},{118311,132797,-4829},
{172185,-17602,-4901},{ 83000,209213,-5439},{-19500, 13508,-4901},{12525, -248496,-9580},
{-41561,209225,-5087},{45242,124466,-5413},{110711,174010,-5439},{-22341,77375,-5173},
{-52889,79098,-4741},{117760,132794,-4831},{171792,-17609,-4901},{82564,209207,-5439},
{-41565,210048,-5085},{45278,123608,-5411},{111510,174013,-5437},{-21489,77372,-5171},
{-52016,79103,-4739},{118557,132804,-4829},{172570,-17605,-4899},{83347,209215,-5437},
{42495,143944,-5381},{45666,170300,-4981},{77138,78389,-5125},{139903,79674,-5429},
{-20021,13499,-4901},{113418,84535,-6541},{-52940,-250272,-7907},{46499,170301,-4979},
{-20280,-250785,-8163},{140673,79680,-5437},{-19182,13503,-4899},{12837,-248483,-9579}
};
public OracleTeleport(int questId, String name, String descr)
{
super(questId, name, descr);
for (int posters : RIFT_POSTERS)
{
addStartNpc(posters);
addTalkId(posters);
}
for (int teleporters : TELEPORTERS)
{
addStartNpc(teleporters);
addTalkId(teleporters);
}
for (int priests : TEMPLE_PRIEST)
{
addStartNpc(priests);
addTalkId(priests);
}
for (int dawn : TOWN_DAWN)
{
addStartNpc(dawn);
addTalkId(dawn);
}
for (int dusk : TOWN_DUSK)
{
addStartNpc(dusk);
addTalkId(dusk);
}
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(getName());
int npcId = npc.getNpcId();
if (event.equalsIgnoreCase("Return"))
{
if (Util.contains(TEMPLE_PRIEST, npcId) && st.getState() == State.STARTED)
{
int x = RETURN_LOCS[st.getInt("id")][0];
int y = RETURN_LOCS[st.getInt("id")][1];
int z = RETURN_LOCS[st.getInt("id")][2];
player.teleToLocation(x, y, z);
player.setIsIn7sDungeon(false);
st.exitQuest(true);
}
else if (Util.contains(RIFT_POSTERS, npcId) && st.getState() == State.STARTED)
{
int x = RETURN_LOCS[st.getInt("id")][0];
int y = RETURN_LOCS[st.getInt("id")][1];
int z = RETURN_LOCS[st.getInt("id")][2];
player.teleToLocation(x, y, z);
htmltext = "rift_back.htm";
st.exitQuest(true);
}
}
else if (event.equalsIgnoreCase("Festival"))
{
int id = st.getInt("id");
if (Util.contains(TOWN_DAWN, id))
{
player.teleToLocation(-80157, 111344, -4901);
player.setIsIn7sDungeon(true);
}
else if (Util.contains(TOWN_DUSK, id))
{
player.teleToLocation(-81261, 86531, -5157);
player.setIsIn7sDungeon(true);
}
else
htmltext = "oracle1.htm";
}
else if (event.equalsIgnoreCase("Dimensional"))
{
htmltext = "oracle.htm";
player.teleToLocation(-114755, -179466, -6752);
}
else if (event.equalsIgnoreCase("5.htm"))
{
int id = st.getInt("id");
if (id > -1)
htmltext = "5a.htm";
int i = 0;
for (int id1 : TELEPORTERS)
{
if (id1 == npcId)
break;
i++;
}
st.set("id", Integer.toString(i));
st.setState(State.STARTED);
player.teleToLocation(-114755, -179466, -6752);
}
else if (event.equalsIgnoreCase("6.htm"))
{
htmltext = "6.htm";
st.exitQuest(true);
}
else if (event.equalsIgnoreCase("zigurratDimensional"))
{
int playerLevel = player.getLevel();
if (playerLevel >= 20 && playerLevel < 30)
st.takeItems(57, 2000);
else if (playerLevel >= 30 && playerLevel < 40)
st.takeItems(57, 4500);
else if (playerLevel >= 40 && playerLevel < 50)
st.takeItems(57, 8000);
else if (playerLevel >= 50 && playerLevel < 60)
st.takeItems(57, 12500);
else if (playerLevel >= 60 && playerLevel < 70)
st.takeItems(57, 18000);
else if (playerLevel >= 70)
st.takeItems(57, 24500);
int i = 0;
for (int zigurrat : TELEPORTERS)
{
if (zigurrat == npcId)
break;
i++;
}
st.set("id", Integer.toString(i));
st.setState(State.STARTED);
st.playSound("ItemSound.quest_accept");
htmltext = "ziggurat_rift.htm";
player.teleToLocation(-114755, -179466, -6752);
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(getName());
int npcId = npc.getNpcId();
if (Util.contains(TOWN_DAWN, npcId))
{
st.setState(State.STARTED);
int i = 0;
for (int dawn : TELEPORTERS)
{
if (dawn == npcId)
break;
i++;
}
st.set("id", Integer.toString(i));
st.playSound("ItemSound.quest_accept");
player.teleToLocation(-80157, 111344, -4901);
player.setIsIn7sDungeon(true);
}
if (Util.contains(TOWN_DUSK, npcId))
{
st.setState(State.STARTED);
int i = 0;
for (int dusk : TELEPORTERS)
{
if (dusk == npcId)
break;
i++;
}
st.set("id", Integer.toString(i));
st.playSound("ItemSound.quest_accept");
player.teleToLocation(-81261, 86531, -5157);
player.setIsIn7sDungeon(true);
}
else if (npcId >= 31494 && npcId <= 31507)
{
if (player.getLevel() < 20)
{
htmltext = "1.htm";
st.exitQuest(true);
}
else if (player.getAllActiveQuests().length > 23)
{
htmltext = "1a.htm";
st.exitQuest(true);
}
else if (st.getQuestItemsCount(7079) < 1)
htmltext = "3.htm";
else
{
st.setState(State.CREATED);
htmltext = "4.htm";
}
}
else if ((npcId >= 31095 && npcId <= 31111) || (npcId >= 31114 && npcId <= 31126))
{
int playerLevel = player.getLevel();
if (playerLevel < 20)
{
htmltext = "ziggurat_lowlevel.htm";
st.exitQuest(true);
}
else if (player.getAllActiveQuests().length > 40)
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.TOO_MANY_QUESTS));
st.exitQuest(true);
}
else if (st.getQuestItemsCount(7079) < 1)
{
htmltext = "ziggurat_nofrag.htm";
st.exitQuest(true);
}
else if (playerLevel >= 20 && playerLevel < 30 && st.getQuestItemsCount(57) < 2000)
{
htmltext = "ziggurat_noadena.htm";
st.exitQuest(true);
}
else if (playerLevel >= 30 && playerLevel < 40 && st.getQuestItemsCount(57) < 4500)
{
htmltext = "ziggurat_noadena.htm";
st.exitQuest(true);
}
else if (playerLevel >= 40 && playerLevel < 50 && st.getQuestItemsCount(57) < 8000)
{
htmltext = "ziggurat_noadena.htm";
st.exitQuest(true);
}
else if (playerLevel >= 50 && playerLevel < 60 && st.getQuestItemsCount(57) < 12500)
{
htmltext = "ziggurat_noadena.htm";
st.exitQuest(true);
}
else if (playerLevel >= 60 && playerLevel < 70 && st.getQuestItemsCount(57) < 18000)
{
htmltext = "ziggurat_noadena.htm";
st.exitQuest(true);
}
else if (playerLevel >= 70 && st.getQuestItemsCount(57) < 24500)
{
htmltext = "ziggurat_noadena.htm";
st.exitQuest(true);
}
else
htmltext = "ziggurat.htm";
}
return htmltext;
}
public static void main(String[] args)
{
new OracleTeleport(-1, "OracleTeleport", "teleports");
}
}
@@ -0,0 +1,3 @@
<html><body>Festival Guide:<br>
You won't regret it! Be confident! You're fighting for peace in our time! You can find out more from the Rift Post. Good luck!
</body></html>

Some files were not shown because too many files have changed in this diff Show More