Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Instance Event by Bloodshed Party
- from com.l2jserver.gameserver.network.serverpackets import PlaySound
- from com.l2jserver.gameserver.instancemanager import InstanceManager
- from com.l2jserver.gameserver.model.items.instance import L2ItemInstance
- from com.l2jserver.gameserver.model.actor import L2Summon
- from com.l2jserver.gameserver.model.entity import Instance
- from com.l2jserver.gameserver.model.itemcontainer import PcInventory
- 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 CreatureSay
- from com.l2jserver.gameserver.network.serverpackets import InventoryUpdate
- from com.l2jserver.gameserver.network.serverpackets import MagicSkillUse
- from com.l2jserver.gameserver.network.serverpackets import SystemMessage
- from com.l2jserver.gameserver.network.serverpackets import ExShowScreenMessage
- from com.l2jserver.gameserver.network.serverpackets import Earthquake
- from com.l2jserver.gameserver.network import SystemMessageId
- from com.l2jserver.gameserver.util import Util
- from com.l2jserver.util import Rnd
- qn = "Bloodshedparty"
- #Items
- E_APIGA = 5575
- ADENA = 57
- STONE = 9576
- STONE82 = 10486
- STONE84 = 14169
- SCROLL = 6578
- SCROLLB = 6577
- GOLDDRAGON = 3483
- #NPCs
- ROSE = 18484
- ROSE2 = 39001
- CHEST = 39110
- #FIRST CHAMBER MOBS
- GUARD = 39101
- KEYKEEPER = 39113
- PROTECTOR = 39105
- BELETH = 39107
- BAYLOR = 39108
- TIAT = 39109
- #Doors
- DOOR = 20240001
- DOOR2 = 20240002
- DOOR3 = 20240003
- class PyObject:
- pass
- def openDoor(doorId,instanceId):
- for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
- if door.getDoorId() == doorId:
- door.openMe()
- def closeDoor(doorId,instanceId):
- for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
- if door.getDoorId() == doorId:
- door.closeMe()
- def checkConditions(player, new):
- party = player.isInParty()
- if not party:
- player.sendPacket(ExShowScreenMessage("You are not currently in a party, so you cannot enter.", 8000))
- return False
- if party and player.getParty().getMemberCount() < 6:
- player.sendPacket(ExShowScreenMessage("You cannot enter. Minimum is 6 people.", 8000))
- return False
- for partyMember in player.getParty().getMembers().toArray():
- if partyMember.getLevel() < 84:
- player.sendPacket(SystemMessage.sendString(partyMember.getName()+"s level is too low and cannot be entered."))
- return False
- if not Util.checkIfInRange(1000, player, partyMember, True) and new:
- player.sendPacket(SystemMessage.sendString(partyMember.getName()+" is too far away ask him to come here."))
- return False
- return True
- def teleportplayer(self,player,teleto):
- player.setInstanceId(teleto.instanceId)
- player.teleToLocation(teleto.x, teleto.y, teleto.z)
- pet = player.getSummon()
- if pet != None :
- pet.setInstanceId(teleto.instanceId)
- pet.teleToLocation(teleto.x, teleto.y, teleto.z)
- return
- def enterInstance(self,player,template,teleto):
- instanceId = 0
- party = player.getParty()
- if party :
- for partyMember in party.getMembers().toArray():
- st = partyMember.getQuestState(qn)
- if not st : st = self.newQuestState(partyMember)
- if partyMember.getInstanceId()!=0:
- instanceId = partyMember.getInstanceId()
- else :
- if player.getInstanceId()!=0:
- instanceId = player.getInstanceId()
- if instanceId != 0:
- if not checkConditions(player,False):
- player.sendPacket(PlaySound("ItemSound3.sys_shortage"))
- return 0
- foundworld = False
- for worldid in self.world_ids:
- if worldid == instanceId:
- foundworld = True
- if not foundworld:
- player.sendPacket(SystemMessage.sendString("You have entered another zone, therefore you cannot enter this one."))
- player.sendPacket(PlaySound("ItemSound3.sys_shortage"))
- return 0
- teleto.instanceId = instanceId
- teleportplayer(self,player,teleto)
- player.sendPacket(PlaySound("ItemSound.quest_middle"))
- return instanceId
- else:
- if not checkConditions(player,True):
- player.sendPacket(PlaySound("ItemSound3.sys_shortage"))
- return 0
- instanceId = InstanceManager.getInstance().createDynamicInstance(template)
- if not instanceId in self.world_ids:
- world = PyObject()
- world.rewarded=[]
- world.instanceId = instanceId
- self.worlds[instanceId]=world
- self.world_ids.append(instanceId)
- teleto.instanceId = instanceId
- for partyMember in party.getMembers().toArray():
- partyMember.sendPacket(PlaySound("ItemSound.quest_middle"))
- teleportplayer(self,partyMember,teleto)
- return instanceId
- return instanceId
- def exitInstance(player,tele):
- party = player.getParty()
- if party :
- for partyMember in party.getMembers().toArray():
- partyMember.setInstanceId(0)
- partyMember.teleToLocation(tele.x, tele.y, tele.z)
- pet = partyMember.getSummon()
- if pet != None :
- pet.setInstanceId(0)
- pet.teleToLocation(tele.x, tele.y, tele.z)
- else :
- player.setInstanceId(0)
- player.teleToLocation(tele.x, tele.y, tele.z)
- pet = player.getSummon()
- if pet != None :
- pet.setInstanceId(0)
- pet.teleToLocation(tele.x, tele.y, tele.z)
- InstanceManager.getInstance().destroyInstance(player.getInstanceId())
- class Bloodshedparty(JQuest):
- def __init__(self,id,name,descr):
- JQuest.__init__(self,id,name,descr)
- self.worlds = {}
- self.world_ids = []
- def onTalk (self,npc,player):
- st = player.getQuestState(qn)
- npcId = npc.getNpcId()
- if npcId == ROSE :
- tele = PyObject()
- tele.x = 16345
- tele.y = 209051
- tele.z = -9357
- enterInstance(self, player, "Bloodshedparty.xml", tele)
- elif npcId == ROSE2 :
- tele = PyObject()
- tele.x = 16345
- tele.y = 209051
- tele.z = -9357
- enterInstance(self, player, "Bloodshedparty.xml", tele)
- elif npcId == CHEST :
- tele = PyObject()
- tele.x = -46198
- tele.y = 245558
- tele.z = -9125
- if player.isInParty():
- count = int(player.getParty().getMemberCount())
- player.getParty().distributeItem(player, STONE84, count, npc)
- player.getParty().distributeItem(player, SCROLL, count, npc)
- for partyMember in player.getParty().getMembers().toArray():
- partyMember.sendPacket(PlaySound("ItemSound.quest_finish"))
- partyMember.sendPacket(ExShowScreenMessage("This world was destroied: Completed", 8000))
- partyMember.sendPacket(ExShowScreenMessage("Baylor: You fools, We will meet in your world soon.....Aha ha ha", 15000))
- exitInstance(partyMember,tele)
- else: exitInstance(player,tele)
- npc.decayMe()
- return
- def onKill(self,npc,player,isPet):
- st = player.getQuestState(qn)
- npcId = npc.getNpcId()
- if npcId == GUARD :
- if npc.getInstanceId() in self.worlds:
- world = self.worlds[npc.getInstanceId()]
- if player.isInParty():
- for partyMember in player.getParty().getMembers().toArray():
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me! I failed"))
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "You fools, here's your end"))
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ooo...It is a good day to die"))
- newNpc = self.addSpawn(PROTECTOR,16658,211498,-9357,0,False,0,False,npc.instanceId)
- openDoor(DOOR,npc.instanceId)
- elif npcId == PROTECTOR :
- if npc.getInstanceId() in self.worlds:
- world = self.worlds[npc.getInstanceId()]
- if player.isInParty():
- for partyMember in player.getParty().getMembers().toArray():
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "I failed, give me another chance to protect you"))
- partyMember.sendPacket(ExShowScreenMessage("Fools, here's your end!", 8000))
- partyMember.sendPacket(Earthquake(16344,213091,-9356,20,5))
- player.getParty().distributeItem(player, GOLDDRAGON, 50000, npc)
- newNpc = self.addSpawn(BELETH,16344,213091,-9356,0,False,0,False,npc.instanceId)
- elif npcId == BELETH :
- if npc.getInstanceId() in self.worlds:
- world = self.worlds[npc.getInstanceId()]
- if player.isInParty():
- for partyMember in player.getParty().getMembers().toArray():
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "My world....."))
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Baylorrrrr"))
- partyMember.sendPacket(Earthquake(16344,213091,-9356,20,5))
- partyMember.sendPacket(ExShowScreenMessage("Baylor: My Brother, I will avenge you!", 12000))
- player.getParty().distributeItem(player, E_APIGA, 1000000, npc)
- newNpc = self.addSpawn(BAYLOR,12472,215379,-9452,0,False,0,False,npc.instanceId)
- openDoor(DOOR2,npc.instanceId)
- openDoor(DOOR3,npc.instanceId)
- elif npcId == BAYLOR :
- if npc.getInstanceId() in self.worlds:
- world = self.worlds[npc.getInstanceId()]
- if player.isInParty():
- for partyMember in player.getParty().getMembers().toArray():
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "My death is nothing, your end is near"))
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "You fools ....Aha ha ha ha"))
- partyMember.sendPacket(Earthquake(16344,213091,-9356,80,5))
- player.getParty().distributeItem(player, E_APIGA, 1000000, npc)
- player.getParty().distributeItem(player, 20711 + Rnd.get(1,5), player.getParty().getMemberCount(), npc)
- newNpc = self.addSpawn(TIAT,16344,213091,-9356,0,False,0,False,npc.instanceId)
- elif npcId == TIAT :
- if npc.getInstanceId() in self.worlds:
- world = self.worlds[npc.getInstanceId()]
- if player.isInParty():
- for partyMember in player.getParty().getMembers().toArray():
- partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ugh.... Defeated.. How!?"))
- partyMember.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord.", 12000))
- partyMember.sendPacket(PlaySound("ItemSound.quest_finish"))
- player.getParty().distributeItem(player, E_APIGA, 2000000, npc)
- player.getParty().distributeItem(player, GOLDDRAGON, 300000, npc)
- newNpc = self.addSpawn(CHEST,16225,213040,-9357,0,False,0,False,npc.instanceId)
- return
- QUEST = Bloodshedparty(-1, qn, "Bloodshedparty")
- QUEST.addStartNpc(ROSE)
- QUEST.addTalkId(ROSE)
- QUEST.addTalkId(ROSE2)
- QUEST.addTalkId(CHEST)
- QUEST.addKillId(GUARD)
- QUEST.addKillId(PROTECTOR)
- QUEST.addKillId(BELETH)
- QUEST.addKillId(BAYLOR)
- QUEST.addKillId(TIAT)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement