# Made by Vice [L2JOneo]
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
from net.sf.l2j.gameserver.ai import CtrlIntention
from net.sf.l2j.gameserver.model import L2CharPosition
#NPC
STATUE = 32109
VELOCIRAPTOR = 22196
PTEROSAUR = 22199
TYRANNOSAURUS = 22217
SAILREN = 29065
#ITEM
GAZKH = 8784
#POSITIONS
STARTX = 27852
STARTY = -5536
STARTZ = -1983
STARTHDG = 44732
GOTOX = 27628
GOTOY = -6109
GOTOZ = -1982
GOTOHDG = 44732
#TIMERS
TIMER1 = 30000
TIMER2 = 3600000
#HTML
htmlerror = """
Stone Statue of Shilen:
Shilen's protection is not with you -- go away! You are not
qualified to fight against Sailren...
If you want to enter Sailren's nest, then you should find a
party leader who can fight against Sailren and join his
party. Or you can complete my quest to become a party
leader, form your own party, and then return here.
"""
# Boss: sailren
def spawnMob(self,idMob) :
self.vlk = self.addSpawn(idMob,STARTX,STARTY,STARTZ,STARTHDG,False,0)
updateKnownList(self)
self.vlk.setRunning()
self.vlk.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO,self.pos)
self.vlk.setSpawn(None);
#updateKnownList(self)
def updateKnownList(self) :
self.vlk.getKnownList().getKnownPlayers().clear()
party = self.partyLeader.getParty()
if party :
for partyMember in party.getPartyMembers().toArray() :
self.vlk.getKnownList().getKnownPlayers().put(partyMember.getObjectId(), partyMember);
class sailren (JQuest):
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.isRaidStarted = 0
self.pos = L2CharPosition(GOTOX,GOTOY,GOTOZ,GOTOHDG);
self.vlk = None
self.partyLeader = None
def onAdvEvent (self,event,npc,player):
objId=0
if event == "sailren_timer1" :
spawnMob(self,VELOCIRAPTOR)
self.startQuestTimer("sailren_timer2",TIMER2, self.vlk,player)
elif event == "sailren_timer2" :
if self.isRaidStarted == 1 :
self.vlk.reduceCurrentHp(16660000,self.vlk)
self.isRaidStarted = 0
self.vlk = None
self.partyLeader = None
if player :
if not player.isInParty() :
st = player.getQuestState("sailren")
if st : st.exitQuest(1)
return
party = player.getParty()
if party :
for partyMember in party.getPartyMembers().toArray() :
st = partyMember.getQuestState("sailren")
if st : st.exitQuest(1)
partyMember.teleToLocation(23677,-7673,-1241)
return
def onTalk (self,npc,player):
st = player.getQuestState("sailren")
if not st : return "You are either not carrying out your quest or don't meet the criteria."
npcId = npc.getNpcId()
if npcId == STATUE :
if st.getQuestItemsCount(GAZKH) < 1 :
st.exitQuest(1)
return htmlerror
if not player.isInParty() :
st.exitQuest(1)
return htmlerror
if player.getParty().getPartyLeaderOID() != player.getObjectId() :
st.exitQuest(1)
return htmlerror
if self.isRaidStarted == 1 :
st.exitQuest(1)
return "Shilen's Stone Statue:
Another party is fighting with Sailren. You must wait."
party = player.getParty()
if party :
for partyMember in party.getPartyMembers().toArray() :
partyMember.teleToLocation(27291,-6899,-1974)
if self.isRaidStarted == 0 :
self.startQuestTimer("sailren_timer1",TIMER1, npc, player)
self.isRaidStarted = 1
st.takeItems(GAZKH,1)
self.partyLeader = player
return "Shilen's Stone Statue:
Please seal the sailren by your ability."
def onKill (self,npc,player,isPet):
if not player.isInParty() :
return
if player.getParty().getPartyLeaderOID() != self.partyLeader.getObjectId() :
return
st = self.partyLeader.getQuestState("sailren")
if not st: return
st = player.getQuestState("sailren")
npcId = npc.getNpcId()
xx = int(player.getX())
yy = int(player.getY())
zz = int(player.getZ())
if xx >= 26095 and xx <= 28987 and yy >=-8084 and yy <= -5295 :
if npcId == VELOCIRAPTOR :
spawnMob(self,PTEROSAUR)
elif npcId == PTEROSAUR :
spawnMob(self,TYRANNOSAURUS)
elif npcId == TYRANNOSAURUS :
spawnMob(self,SAILREN)
elif npcId == SAILREN :
party = player.getParty()
if party :
for partyMember in party.getPartyMembers().toArray() :
partyMember.teleToLocation(23677,-7673,-1241)
self.isRaidStarted = 0
st.exitQuest(1)
self.vlk = None
self.partyLeader = None
return
# Quest class and state definition
QUEST = sailren(-1, "sailren", "ai")
CREATED = State('Start', QUEST)
# Quest initialization
QUEST.setInitialState(CREATED)
# Quest NPC starter initialization
QUEST.addStartNpc(STATUE)
QUEST.addTalkId(STATUE)
QUEST.addKillId(VELOCIRAPTOR)
QUEST.addKillId(PTEROSAUR)
QUEST.addKillId(TYRANNOSAURUS)
QUEST.addKillId(SAILREN)