Advertisement
vnevermore

edxced

Dec 15th, 2014
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.52 KB | None | 0 0
  1. #Instance Event by Bloodshed Party
  2. from com.l2jserver.gameserver.network.serverpackets  import PlaySound
  3. from com.l2jserver.gameserver.instancemanager        import InstanceManager
  4. from com.l2jserver.gameserver.model.items.instance    import L2ItemInstance
  5. from com.l2jserver.gameserver.model.actor            import L2Summon
  6. from com.l2jserver.gameserver.model.entity           import Instance
  7. from com.l2jserver.gameserver.model.itemcontainer    import PcInventory
  8. from com.l2jserver.gameserver.model.quest            import State
  9. from com.l2jserver.gameserver.model.quest            import QuestState
  10. from com.l2jserver.gameserver.model.quest.jython     import QuestJython as JQuest
  11. from com.l2jserver.gameserver.network.serverpackets  import CreatureSay
  12. from com.l2jserver.gameserver.network.serverpackets  import InventoryUpdate
  13. from com.l2jserver.gameserver.network.serverpackets  import MagicSkillUse
  14. from com.l2jserver.gameserver.network.serverpackets  import SystemMessage
  15. from com.l2jserver.gameserver.network.serverpackets  import ExShowScreenMessage
  16. from com.l2jserver.gameserver.network.serverpackets  import Earthquake
  17. from com.l2jserver.gameserver.network                import SystemMessageId
  18. from com.l2jserver.gameserver.util                   import Util
  19. from com.l2jserver.util                              import Rnd
  20.  
  21. qn = "Bloodshedparty"
  22.  
  23. #Items
  24. E_APIGA        = 5575
  25. ADENA        = 57
  26. STONE        = 9576
  27. STONE82        = 10486
  28. STONE84        = 14169
  29. SCROLL        = 6578
  30. SCROLLB        = 6577
  31. GOLDDRAGON     = 3483
  32.  
  33. #NPCs
  34. ROSE        = 18484
  35. ROSE2        = 39001
  36. CHEST        = 39110
  37.  
  38. #FIRST CHAMBER MOBS
  39. GUARD         = 39101
  40. KEYKEEPER     = 39113
  41. PROTECTOR     = 39105
  42.  
  43. BELETH         = 39107
  44. BAYLOR         = 39108
  45. TIAT         = 39109
  46.  
  47. #Doors
  48. DOOR         = 20240001
  49. DOOR2        = 20240002
  50. DOOR3        = 20240003
  51. class PyObject:
  52.     pass
  53.  
  54. def openDoor(doorId,instanceId):
  55.     for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
  56.         if door.getDoorId() == doorId:
  57.             door.openMe()
  58.            
  59. def closeDoor(doorId,instanceId):
  60.     for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
  61.         if door.getDoorId() == doorId:
  62.             door.closeMe()
  63.            
  64. def checkConditions(player, new):
  65.     party = player.isInParty()
  66.     if not party:
  67.         player.sendPacket(ExShowScreenMessage("You are not currently in a party, so you cannot enter.", 8000))
  68.         return False
  69.     if party and player.getParty().getMemberCount() < 6:
  70.         player.sendPacket(ExShowScreenMessage("You cannot enter. Minimum is 6 people.", 8000))
  71.         return False
  72.     for partyMember in player.getParty().getMembers().toArray():
  73.         if partyMember.getLevel() < 84:
  74.             player.sendPacket(SystemMessage.sendString(partyMember.getName()+"s level is too low and cannot be entered."))
  75.             return False
  76.         if not Util.checkIfInRange(1000, player, partyMember, True) and new:
  77.             player.sendPacket(SystemMessage.sendString(partyMember.getName()+" is too far away ask him to come here."))
  78.             return False
  79.     return True
  80.  
  81. def teleportplayer(self,player,teleto):
  82.     player.setInstanceId(teleto.instanceId)
  83.     player.teleToLocation(teleto.x, teleto.y, teleto.z)
  84.     pet = player.getSummon()
  85.     if pet != None :
  86.         pet.setInstanceId(teleto.instanceId)
  87.         pet.teleToLocation(teleto.x, teleto.y, teleto.z)
  88.     return
  89.  
  90. def enterInstance(self,player,template,teleto):
  91.     instanceId = 0
  92.     party = player.getParty()
  93.     if party :
  94.         for partyMember in party.getMembers().toArray():
  95.             st = partyMember.getQuestState(qn)
  96.             if not st : st = self.newQuestState(partyMember)
  97.             if partyMember.getInstanceId()!=0:
  98.                 instanceId = partyMember.getInstanceId()
  99.     else :
  100.         if player.getInstanceId()!=0:
  101.             instanceId = player.getInstanceId()
  102.     if instanceId != 0:
  103.         if not checkConditions(player,False):
  104.             player.sendPacket(PlaySound("ItemSound3.sys_shortage"))
  105.             return 0
  106.         foundworld = False
  107.         for worldid in self.world_ids:
  108.             if worldid == instanceId:
  109.                 foundworld = True
  110.         if not foundworld:
  111.             player.sendPacket(SystemMessage.sendString("You have entered another zone, therefore you cannot enter this one."))
  112.             player.sendPacket(PlaySound("ItemSound3.sys_shortage"))
  113.             return 0
  114.         teleto.instanceId = instanceId
  115.         teleportplayer(self,player,teleto)
  116.         player.sendPacket(PlaySound("ItemSound.quest_middle"))
  117.         return instanceId
  118.     else:
  119.         if not checkConditions(player,True):
  120.             player.sendPacket(PlaySound("ItemSound3.sys_shortage"))
  121.             return 0
  122.         instanceId = InstanceManager.getInstance().createDynamicInstance(template)
  123.         if not instanceId in self.world_ids:
  124.             world = PyObject()
  125.             world.rewarded=[]
  126.             world.instanceId = instanceId
  127.             self.worlds[instanceId]=world
  128.             self.world_ids.append(instanceId)
  129.         teleto.instanceId = instanceId
  130.         for partyMember in party.getMembers().toArray():
  131.             partyMember.sendPacket(PlaySound("ItemSound.quest_middle"))
  132.             teleportplayer(self,partyMember,teleto)
  133.         return instanceId
  134.     return instanceId
  135.  
  136. def exitInstance(player,tele):
  137.     party = player.getParty()
  138.     if party :
  139.         for partyMember in party.getMembers().toArray():
  140.             partyMember.setInstanceId(0)
  141.             partyMember.teleToLocation(tele.x, tele.y, tele.z)
  142.             pet = partyMember.getSummon()
  143.             if pet != None :
  144.                 pet.setInstanceId(0)
  145.                 pet.teleToLocation(tele.x, tele.y, tele.z)
  146.     else :
  147.         player.setInstanceId(0)
  148.         player.teleToLocation(tele.x, tele.y, tele.z)
  149.         pet = player.getSummon()
  150.         if pet != None :
  151.             pet.setInstanceId(0)
  152.             pet.teleToLocation(tele.x, tele.y, tele.z)
  153.     InstanceManager.getInstance().destroyInstance(player.getInstanceId())
  154.  
  155. class Bloodshedparty(JQuest):
  156.     def __init__(self,id,name,descr):
  157.         JQuest.__init__(self,id,name,descr)
  158.         self.worlds = {}
  159.         self.world_ids = []
  160.        
  161.     def onTalk (self,npc,player):
  162.         st = player.getQuestState(qn)
  163.         npcId = npc.getNpcId()
  164.         if npcId == ROSE :
  165.             tele = PyObject()
  166.             tele.x = 16345
  167.             tele.y = 209051
  168.             tele.z = -9357
  169.             enterInstance(self, player, "Bloodshedparty.xml", tele)
  170.         elif npcId == ROSE2 :
  171.             tele = PyObject()
  172.             tele.x = 16345
  173.             tele.y = 209051
  174.             tele.z = -9357
  175.             enterInstance(self, player, "Bloodshedparty.xml", tele)
  176.         elif npcId == CHEST :
  177.             tele = PyObject()
  178.             tele.x = -46198
  179.             tele.y = 245558
  180.             tele.z = -9125
  181.             if player.isInParty():
  182.                 count = int(player.getParty().getMemberCount())
  183.                 player.getParty().distributeItem(player, STONE84, count, npc)
  184.                 player.getParty().distributeItem(player, SCROLL, count, npc)
  185.                 for partyMember in player.getParty().getMembers().toArray():
  186.                     partyMember.sendPacket(PlaySound("ItemSound.quest_finish"))
  187.                     partyMember.sendPacket(ExShowScreenMessage("This world was destroied: Completed", 8000))
  188.                     partyMember.sendPacket(ExShowScreenMessage("Baylor: You fools, We will meet in your world soon.....Aha ha ha", 15000))
  189.                     exitInstance(partyMember,tele)
  190.             else: exitInstance(player,tele)
  191.             npc.decayMe()
  192.             return
  193.        
  194.     def onKill(self,npc,player,isPet):
  195.         st = player.getQuestState(qn)
  196.         npcId = npc.getNpcId()
  197.         if npcId == GUARD :
  198.             if npc.getInstanceId() in self.worlds:
  199.                 world = self.worlds[npc.getInstanceId()]
  200.                 if player.isInParty():  
  201.                     for partyMember in player.getParty().getMembers().toArray():
  202.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me! I failed"))
  203.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "You fools, here's your end"))
  204.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ooo...It is a good day to die"))
  205.                 newNpc = self.addSpawn(PROTECTOR,16658,211498,-9357,0,False,0,False,npc.instanceId)
  206.                 openDoor(DOOR,npc.instanceId)
  207.         elif npcId == PROTECTOR :
  208.             if npc.getInstanceId() in self.worlds:
  209.                 world = self.worlds[npc.getInstanceId()]
  210.                 if player.isInParty():  
  211.                     for partyMember in player.getParty().getMembers().toArray():
  212.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
  213.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "I failed, give me another chance to protect you"))
  214.                         partyMember.sendPacket(ExShowScreenMessage("Fools, here's your end!", 8000))
  215.                         partyMember.sendPacket(Earthquake(16344,213091,-9356,20,5))
  216.                     player.getParty().distributeItem(player, GOLDDRAGON, 50000, npc)
  217.                 newNpc = self.addSpawn(BELETH,16344,213091,-9356,0,False,0,False,npc.instanceId)
  218.         elif npcId == BELETH :
  219.             if npc.getInstanceId() in self.worlds:
  220.                 world = self.worlds[npc.getInstanceId()]
  221.                 if player.isInParty():  
  222.                     for partyMember in player.getParty().getMembers().toArray():
  223.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "My world....."))
  224.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Baylorrrrr"))
  225.                         partyMember.sendPacket(Earthquake(16344,213091,-9356,20,5))
  226.                         partyMember.sendPacket(ExShowScreenMessage("Baylor: My Brother, I will avenge you!", 12000))
  227.                     player.getParty().distributeItem(player, E_APIGA, 1000000, npc)
  228.                 newNpc = self.addSpawn(BAYLOR,12472,215379,-9452,0,False,0,False,npc.instanceId)
  229.                 openDoor(DOOR2,npc.instanceId)
  230.                 openDoor(DOOR3,npc.instanceId)
  231.                
  232.         elif npcId == BAYLOR :
  233.             if npc.getInstanceId() in self.worlds:
  234.                 world = self.worlds[npc.getInstanceId()]
  235.                 if player.isInParty():  
  236.                     for partyMember in player.getParty().getMembers().toArray():
  237.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "My death is nothing, your end is near"))
  238.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "You fools ....Aha ha ha ha"))
  239.                         partyMember.sendPacket(Earthquake(16344,213091,-9356,80,5))
  240.                     player.getParty().distributeItem(player, E_APIGA, 1000000, npc)
  241.                     player.getParty().distributeItem(player, 20711 + Rnd.get(1,5), player.getParty().getMemberCount(), npc)
  242.                 newNpc = self.addSpawn(TIAT,16344,213091,-9356,0,False,0,False,npc.instanceId)
  243.         elif npcId == TIAT :
  244.             if npc.getInstanceId() in self.worlds:
  245.                 world = self.worlds[npc.getInstanceId()]
  246.                 if player.isInParty():  
  247.                     for partyMember in player.getParty().getMembers().toArray():
  248.                         partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ugh.... Defeated.. How!?"))
  249.                         partyMember.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord.", 12000))
  250.                         partyMember.sendPacket(PlaySound("ItemSound.quest_finish"))
  251.                     player.getParty().distributeItem(player, E_APIGA, 2000000, npc)
  252.                     player.getParty().distributeItem(player, GOLDDRAGON, 300000, npc)
  253.                 newNpc = self.addSpawn(CHEST,16225,213040,-9357,0,False,0,False,npc.instanceId)
  254.         return
  255.  
  256. QUEST = Bloodshedparty(-1, qn, "Bloodshedparty")
  257. QUEST.addStartNpc(ROSE)
  258. QUEST.addTalkId(ROSE)
  259. QUEST.addTalkId(ROSE2)
  260. QUEST.addTalkId(CHEST)
  261.  
  262. QUEST.addKillId(GUARD)
  263. QUEST.addKillId(PROTECTOR)
  264. QUEST.addKillId(BELETH)
  265. QUEST.addKillId(BAYLOR)
  266. QUEST.addKillId(TIAT)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement