All pastes #797788 Raw Edit

Something

public text v1 · immutable
#797788 ·published 2007-11-26 07:31 UTC
rendered paste body
# 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 =  """<html><body>Stone Statue of Shilen:<br>
<br>
Shilen's protection is not with you -- go away! You are not
 qualified to fight against Sailren...<br>
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.<br>
</body>
</html>
""" 

# 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 "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
    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 "<html><body>Shilen's Stone Statue:<br>Another party is fighting with Sailren. You must wait.</body></html>"
       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 "<html><body>Shilen's Stone Statue:<br>Please seal the sailren by your ability.</body></html>"
    

  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)