Exemplo n.º 1
0
 def onKill(self, npc, player, isPet):
     npcId = npc.getNpcId()
     if npcId in BOSSES:
         playerList = InstanceManager.getInstance().getInstance(
             player.getInstanceId()).getPlayers()
         for member in playerList.toArray():
             member = L2World.getInstance().findPlayer(member)
             if member != None:
                 saveEntry(self, member)
         if player.getInstanceId() != 0:
             instance = InstanceManager.getInstance().getInstance(
                 npc.getInstanceId())
             if instance != None:
                 instance.setDuration(300000)
     else:
         if self.worlds.has_key(npc.getInstanceId()):
             world = self.worlds[npc.getInstanceId()]
             if world.status == 1:
                 if checkKillProgress(npc, world.room1):
                     startSecondRoom(self, world)
             elif world.status == 2:
                 if checkKillProgress(npc, world.room2):
                     startThirdRoom(self, world)
             elif world.status == 3:
                 if checkKillProgress(npc, world.room3):
                     startFourthRoom(self, world)
     return
Exemplo n.º 2
0
	def onKill(self,npc,player,isPet):
		npcId = npc.getNpcId()
		if npcId in BOSSES:
			playerList = InstanceManager.getInstance().getInstance(player.getInstanceId()).getPlayers()
			for member in playerList.toArray():
				member = L2World.getInstance().findPlayer(member)
				if member != None:
					saveEntry(self,member)
			if player.getInstanceId() != 0:
				instance = InstanceManager.getInstance().getInstance(npc.getInstanceId())
				if instance != None:
					instance.setDuration(300000)
		else:
			if self.worlds.has_key(npc.getInstanceId()):
				world = self.worlds[npc.getInstanceId()]
				if world.status == 1:
					if checkKillProgress(npc,world.room1):
						startSecondRoom(self,world)
				elif world.status == 2:
					if checkKillProgress(npc,world.room2):
						startThirdRoom(self,world)
				elif world.status == 3:
					if checkKillProgress(npc,world.room3):
						startFourthRoom(self,world)
		return
Exemplo n.º 3
0
def enterInstance(self, player, template, teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    party = player.getParty()
    # Check for existing instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId() != 0:
            instanceId = partyMember.getInstanceId()
            if debug:
                print "Emerald/Steam: found party member in instance:" + str(
                    instanceId)
    # Existing instance
    if instanceId != 0:
        foundworld = False
        for worldid in self.world_ids:
            if worldid == instanceId:
                foundworld = True
        if not foundworld:
            player.sendPacket(
                SystemMessage.sendString(
                    "Your Party Members are in another Instance."))
            return 0
        teleto.instanceId = instanceId
        teleportplayer(self, player, teleto, True)
        return instanceId
    # New instance
    else:
        instanceId = InstanceManager.getInstance().createDynamicInstance(
            template)
        if not self.worlds.has_key(instanceId):
            world = PyObject()
            world.instanceId = instanceId
            world.bosses = 5
            self.worlds[instanceId] = world
            self.world_ids.append(instanceId)
            print "Emerald/Steam Instance: " + str(
                instanceId) + " created by player: " + str(player.getName())
            # Close all doors
            for door in InstanceManager.getInstance().getInstance(
                    instanceId).getDoors():
                door.closeMe()
            # Start the first room
            runEmeraldAndSteamFirstRoom(self, world)
        # Teleports player
        teleto.instanceId = instanceId
        teleportplayer(self, player, teleto, True)
        return instanceId
    return instanceId
Exemplo n.º 4
0
 def onTalk(self, npc, player):
     st = player.getQuestState(qn)
     npcId = npc.getNpcId()
     if not st:
         st.setState(State.STARTED)
     if npcId == BATHIS:
         htmltext = "start-bathis.htm"
     elif npcId == LUCAS:
         htmltext = "start-lucas.htm"
     elif npcId == GOSTA:
         htmltext = "start-gosta.htm"
     elif npcId == MOUEN:
         htmltext = "start-mouen.htm"
     elif npcId == VISHOTSKY:
         htmltext = "start-vishotsky.htm"
     elif npcId == MATHIAS:
         htmltext = "start-mathias.htm"
     elif npcId == DEVICE:
         returnLocation = InstanceManager.getInstance().getInstance(
             player.getInstanceId()).getReturnTeleport()
         KamaInfo = [
             0, 0, 0, 0, 0, 0,
             returnLocation.getX(),
             returnLocation.getY(),
             returnLocation.getZ()
         ]
         teleportplayer(self, player, KamaInfo, 0)
         return
     return htmltext
Exemplo n.º 5
0
def enterInstance(self,player,KamaInfo,level):
	instanceId = 0
	template = KamaInfo[0]
	reuse = KamaInfo[1]
	if checkDistance(player):
		return 0
	if not checkCondition(player,KamaInfo):
		return 0
	party = player.getParty()
	# Check for existing instances of party members
	for partyMember in party.getPartyMembers().toArray():
		if partyMember.getInstanceId() != 0:
			sm = SystemMessage(SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED)
			sm.addPcName(partyMember)
			player.sendPacket(sm)
			return 0
	# New instance
	instanceId = InstanceManager.getInstance().createDynamicInstance(template)
	world = PyObject()
	world.instanceId = instanceId
	self.worlds[instanceId]=world
	self.world_ids.append(instanceId)
	if level in [29,39,49,59,69,78,81]:
		world.level = level
		startFirstRoom(self,world)
	if debug:
		print "Kamaloka: started " + template + " Instance: " +str(instanceId) + " created by player: " + str(player.getName())
	# Teleport players
	for partyMember in party.getPartyMembers().toArray():
		partyMember.stopAllEffectsExceptThoseThatLastThroughDeath()
		partyMember.clearSouls()
		partyMember.clearCharges()
		teleportplayer(self,partyMember,KamaInfo,instanceId)
	return instanceId
Exemplo n.º 6
0
 def enterInstance(self,player,template,teleto):
     instanceId = 0
     if not self.checkCondition(player):
         return instanceId
     members = self.getMembers(player)
     # Check for existing instances of party members or channel members
     for member in members :
         if member.getInstanceId()!= 0 and member.getInstanceId() != player.getInstanceId():
             instanceId = member.getInstanceId()
     # Existing instance
     if instanceId != 0:
         foundworld = False
         for worldid in self.world_ids:
             if worldid == instanceId:
                 foundworld = True
         if not foundworld:
             self.sendString(player,self.MEMBERS_IN_OTHER_INSTANCE)
             return 0
         teleto.instanceId = instanceId
         self.teleportPlayer(player, teleto)
         return instanceId
     else:
         instanceId = InstanceManager.getInstance().createDynamicInstance(template)
         if not self.worlds.has_key(instanceId):
             # create new world
             world = self.setupWorld(instanceId)
             self.worlds[instanceId]=world
             self.world_ids.append(instanceId)
             self._log.info(self.name + " started, Template: " + template + " InstanceId: " +str(instanceId) + " created by: " + str(player.getName()))
         # Teleports player
         teleto.instanceId = instanceId
         self.teleportPlayer(player,teleto)
         return instanceId
     return instanceId
Exemplo n.º 7
0
 def onTalk (self,npc,player):
     npcId = npc.getNpcId()
     if npcId == KANAF :
         if HellboundManager.getInstance().getCurrentLevel() >= 10:
             instanceId = 0
             tele = PyObject()
             tele.x = 13881
             tele.y = 255491
             tele.z = -2025
             instanceId = enterInstance(self,player,"MarketTown.xml",tele)
             if instanceId == 0:
                 return
         else:
             htmltext = "You may not yet enter the Market Town..."
             return htmltext
     elif npcId == STELE:
         world = self.worlds[npc.getInstanceId()]
         if not world.instanceFinished:
             key = player.getInventory().getItemByItemId(KEY);
             if key != None:
                 world.instanceFinished = True
                 player.destroyItemByItemId("Moonlight Stone", KEY, 1, player, True);
                 instance = InstanceManager.getInstance().getInstance(npc.getInstanceId())
                 if instance != None:
                     instance.setDuration(330000)
                     self.startQuestTimer("finishInstance", 300000, npc, None)
     elif npcId == PRISONER:
         world = self.worlds[npc.getInstanceId()]
         npc.broadcastPacket(NpcSay(npc.getObjectId(),0,npc.getNpcId(),"Thank you, i hope Amaskari wont notice!"))
         self.startQuestTimer("decayNpc", 15000, npc, None)
         HellboundManager.getInstance().addTrustPoints(10)
         if not world.guardsSpawned:
             callGuards(self,npc,player,world)
             world.guardsSpawned = True
     return
Exemplo n.º 8
0
def enterInstance(self, player, template, teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    party = player.getParty()
    # Check for existing instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId() != 0:
            sm = SystemMessage(
                SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED)
            sm.addPcName(partyMember)
            player.sendPacket(sm)
            return 0
    instanceId = InstanceManager.getInstance().createDynamicInstance(template)
    world = PyObject()
    world.instanceId = instanceId
    world.instanceFinished = False
    world.guardsSpawned = False
    world.status = 0
    self.worlds[instanceId] = world
    self.world_ids.append(instanceId)
    spawnKeyMaster(self, world)
    # Teleports player
    teleto.instanceId = instanceId
    for partyMember in party.getPartyMembers().toArray():
        st = partyMember.getQuestState(qn)
        if not st:
            self.newQuestState(partyMember)
        teleportplayer(self, partyMember, teleto)
    return instanceId
Exemplo n.º 9
0
def enterInstance(self,player,template,teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    party = player.getParty()
    # Check for existing instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId()!=0:
            sm = SystemMessage(SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED)
            sm.addPcName(partyMember)
            player.sendPacket(sm)
            return 0
    instanceId = InstanceManager.getInstance().createDynamicInstance(template)
    world = PyObject()
    world.instanceId = instanceId
    world.instanceFinished = False
    world.guardsSpawned = False
    world.status = 0
    self.worlds[instanceId] = world
    self.world_ids.append(instanceId)
    spawnKeyMaster(self,world)
    # Teleports player
    teleto.instanceId = instanceId
    for partyMember in party.getPartyMembers().toArray():
        st = partyMember.getQuestState(qn)
        if not st:
            self.newQuestState(partyMember)
        teleportplayer(self,partyMember,teleto)
    return instanceId
Exemplo n.º 10
0
 def onSkillSee(self, npc, caster, skill, targets, isPet):
     npcId = npc.getNpcId()
     skillId = skill.getId()
     if npcId == TEARS:
         if not npc in targets:
             return
         nowHp = self.tears.getCurrentHp()
         percentage = nowHp / self.maxHp
         if percentage <= 0.1:
             if skillId == SCALESKILL:
                 if not self.getQuestTimer("ResetCasterList", npc, None):
                     self.startQuestTimer("ResetCasterList", 3200, npc,
                                          None)
                 currentTime = System.currentTimeMillis()
                 for player in self.activatedScaleList:
                     if player[0] == caster:
                         return
                 thisCasterInfo = [caster, currentTime]
                 self.activatedScaleList.append(thisCasterInfo)
                 activatedScalesCount = len(self.activatedScaleList)
                 playerList = InstanceManager.getInstance().getInstance(
                     self.instanceId).getPlayers().toArray()
                 playerCount = len(playerList)
                 if activatedScalesCount == playerCount:
                     for info in self.activatedScaleList:
                         if currentTime > info[1] + 3000:
                             self.activatedScaleList = []
                             return
                     self.tears.getEffects().stopEffects(5225)
                     self.activatedScaleList = []
Exemplo n.º 11
0
	def onSkillSee(self,npc,caster,skill,targets,isPet):
		npcId = npc.getNpcId()
		skillId = skill.getId()
		if npcId == TEARS:
			if not npc in targets:
				return
			nowHp = self.tears.getCurrentHp()
			percentage = nowHp / self.maxHp
			if percentage <= 0.1:
				if skillId == SCALESKILL:
					if not self.getQuestTimer("ResetCasterList",npc,None):
						self.startQuestTimer("ResetCasterList",3200,npc,None)
					currentTime = System.currentTimeMillis()
					for player in self.activatedScaleList:
						if player[0] == caster:
							return
					thisCasterInfo = [caster,currentTime]
					self.activatedScaleList.append(thisCasterInfo)
					activatedScalesCount = len(self.activatedScaleList)
					playerList = InstanceManager.getInstance().getInstance(self.instanceId).getPlayers().toArray()
					playerCount = len(playerList)
					if activatedScalesCount == playerCount:
						for info in self.activatedScaleList:
							if currentTime > info[1] + 3000:
								self.activatedScaleList = []
								return
						self.tears.getEffects().stopEffects(5225)
						self.activatedScaleList = []
Exemplo n.º 12
0
 def enterInstance(self,player,template,teleto):
     instanceId = 0
     if not self.checkCondition(player):
         return instanceId
     members = self.getMembers(player)
     # Check for existing instances of party members or channel members
     for member in members :
         if member.getInstanceId()!= 0 and member.getInstanceId() != player.getInstanceId():
             instanceId = member.getInstanceId()
     # Existing instance
     if instanceId != 0:
         foundworld = False
         for worldid in self.world_ids:
             if worldid == instanceId:
                 foundworld = True
         if not foundworld:
             self.sendString(player,self.MEMBERS_IN_OTHER_INSTANCE)
             return 0
         teleto.instanceId = instanceId
         self.teleportPlayer(player, teleto)
         return instanceId
     else:
         instanceId = InstanceManager.getInstance().createDynamicInstance(template)
         if not self.worlds.has_key(instanceId):
             # create new world
             world = self.setupWorld(instanceId)
             self.worlds[instanceId]=world
             self.world_ids.append(instanceId)
             self._log.info(self.name + " started, Template: " + template + " InstanceId: " +str(instanceId) + " created by: " + str(player.getName()))
         # Teleports player
         teleto.instanceId = instanceId
         self.teleportPlayer(player,teleto)
         return instanceId
     return instanceId
Exemplo n.º 13
0
def sendSlaves(self,player,world):
    playerList = InstanceManager.getInstance().getInstance(player.getInstanceId()).getPlayers().toArray()
    for slave in world.AmaskariSlaves.npclist:
        char = playerList[Rnd.get(len(playerList))]
        player = L2World.getInstance().findPlayer(char)
        slave.setRunning()
        slave.addDamageHate(player, 0, 999)
        slave.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player)
Exemplo n.º 14
0
def sendSlaves(self, player, world):
    playerList = InstanceManager.getInstance().getInstance(
        player.getInstanceId()).getPlayers().toArray()
    for slave in world.AmaskariSlaves.npclist:
        char = playerList[Rnd.get(len(playerList))]
        player = L2World.getInstance().findPlayer(char)
        slave.setRunning()
        slave.addDamageHate(player, 0, 999)
        slave.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player)
Exemplo n.º 15
0
def enterInstance(self,player,template,teleto):
	instanceId = 0
	if not checkCondition(player):
		return 0
	party = player.getParty()
	# Check for existing instances of party members
	for partyMember in party.getPartyMembers().toArray():
		if partyMember.getInstanceId()!=0:
			instanceId = partyMember.getInstanceId()
			if debug: print "Emerald/Steam: found party member in instance:"+str(instanceId)
	# Existing instance
	if instanceId != 0:
		foundworld = False
		for worldid in self.world_ids:
			if worldid == instanceId:
				foundworld = True
		if not foundworld:
			player.sendPacket(SystemMessage.sendString("Your Party Members are in another Instance."))
			return 0
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto,True)
		return instanceId
	# New instance
	else:
		instanceId = InstanceManager.getInstance().createDynamicInstance(template)
		if not self.worlds.has_key(instanceId):
			world = PyObject()
			world.instanceId = instanceId
			world.bosses = 5
			self.worlds[instanceId]=world
			self.world_ids.append(instanceId)
			print "Emerald/Steam Instance: " +str(instanceId) + " created by player: " + str(player.getName())
			# Close all doors
			for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
				door.closeMe()
			# Start the first room
			runEmeraldAndSteamFirstRoom(self,world)
		# Teleports player
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto,True)
		return instanceId
	return instanceId
Exemplo n.º 16
0
	def onAdvEvent (self,event,npc,player):
		if event == "timer" or event =="timer2":
			if self.npcobject[npc.getObjectId()].correct == False:
				dx = npc.getX() - 142999
				dy = npc.getY() - 151671
				d = dx * dx + dy * dy
				if d < 10000:
					npc.broadcastPacket(MagicSkillUse(npc, npc, 5441, 1, 1, 0))
					self.npcobject[npc.getObjectId()].correct = True
					self.worlds[npc.getInstanceId()].correct = self.worlds[npc.getInstanceId()].correct +1

			if self.npcobject[npc.getObjectId()].correct == False:
				dx = npc.getX() - 139494
				dy = npc.getY() - 151668
				d = dx * dx + dy * dy
				if d < 10000:
					npc.broadcastPacket(MagicSkillUse(npc, npc, 5441, 1, 1, 0))
					self.npcobject[npc.getObjectId()].correct = True
					self.worlds[npc.getInstanceId()].correct = self.worlds[npc.getInstanceId()].correct +1

			if self.worlds[npc.getInstanceId()].correct>=2:
				for door in InstanceManager.getInstance().getInstance(npc.getInstanceId()).getDoors():
					if door.getDoorId() == 24220026:
						door.openMe()
				return

			if self.npcobject[npc.getObjectId()].lastitem:
				L2World.getInstance().removeVisibleObject(self.npcobject[npc.getObjectId()].lastitem, self.npcobject[npc.getObjectId()].lastitem.getWorldRegion())
				L2World.getInstance().removeObject(self.npcobject[npc.getObjectId()].lastitem)
				if len(self.npcobject[npc.getObjectId()].walklist_order)==0:
					return

			for item in self.npcobject[npc.getObjectId()].walklist_order:
				crystal = self.npcobject[npc.getObjectId()].walklist[item]
				newpos = L2CharPosition(crystal.getX(), crystal.getY(), crystal.getZ(), 0)
				npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, newpos)
				self.npcobject[npc.getObjectId()].lastitem = crystal
				self.npcobject[npc.getObjectId()].walklist_order.remove(item)
				break;

			if(len(self.npcobject[npc.getObjectId()].walklist_order))>0:
				if event == "timer":
					self.startQuestTimer("timer2",2000,npc,None)
				else:
					self.startQuestTimer("timer",2000,npc,None)
			else:
				if self.npcobject[npc.getObjectId()].last == False:
					self.npcobject[npc.getObjectId()].last = True
					if event == "timer":
						self.startQuestTimer("timer2",2000,npc,None)
					else:
						self.startQuestTimer("timer",2000,npc,None)
			return
Exemplo n.º 17
0
    def onTalk (self,npc,player):
        npcId = npc.getNpcId()
        if npcId == YIYEN :
            tele = PyObject()
            tele.x = 146534
            tele.y = 180464
            tele.z = -6117
            instanceId = enterInstance(self, player, "DarkCloudMansion.xml", tele)
            if not instanceId:
                return
            if instanceId == 0:
                return
        elif npcId == SOTruth :
            if npc.getInstanceId() == 0:
                return
            world = self.worlds[npc.getInstanceId()]
            item = player.getInventory().addItem("Quest", CC, 1, player, None)
            iu = InventoryUpdate()
            iu.addItem(item)
            player.sendPacket(iu)
            sm = SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2)
            sm.addItemName(item)
            sm.addNumber(1)
            player.sendPacket(sm)

            tele = PyObject()
            tele.x = 139968
            tele.y = 150367
            tele.z = -3111
            exitInstance(player,tele)
            if debug: print "DarkCloudMansion - id"+str(player.getObjectId())+" rewarded and gone out of instance"

            # Check if the instance is empty, as it should be destroyed directly if yes according to retail info.
            playerList = InstanceManager.getInstance().getInstance(world.instanceId).getPlayers().toArray()
            playerCount = len(playerList)
            if playerCount == 0:
                del self.worlds[npc.getInstanceId()]
                self.world_ids.remove(npc.getInstanceId())
                InstanceManager.getInstance().destroyInstance(npc.getInstanceId())
        return
Exemplo n.º 18
0
	def onKill (self,npc,player,isPet):
		instance = InstanceManager.getInstance().getInstance(npc.getInstanceId())
		npcId = npc.getNpcId()
		if npc.getNpcId() == GK1:
			dropItem(npc,9698,1)
		if npc.getNpcId() == GK2:
			dropItem(npc,9699,1)
		for nnpc in instance.getNpcs():
			if nnpc:
				if nnpc.getNpcId() == GK1 and nnpc.getNpcId() != npc.getNpcId():
					nnpc.decayMe()
				if nnpc.getNpcId() == GK2 and nnpc.getNpcId() != npc.getNpcId():
					nnpc.decayMe()
		return
Exemplo n.º 19
0
 def onAdvEvent(self,event,npc,player):
     if event == "teleportKeyMaster":
         world = self.worlds[npc.getInstanceId()]
         loc = LOCS[Rnd.get(len(LOCS))]
         world.keymaster.teleToLocation(loc[0], loc[1], loc[2])
     elif event == "decayNpc":
         npc.decayMe()
     elif event == "finishInstance":
         world = self.worlds[npc.getInstanceId()]
         playerList = InstanceManager.getInstance().getInstance(npc.getInstanceId()).getPlayers()
         for obj in playerList.toArray():
             member = L2World.getInstance().findPlayer(obj)
             member.setInstanceId(0)
             member.teleToLocation(13105, 282099, -9701)
     return
Exemplo n.º 20
0
def enterInstance(self,player,template,teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    # Create instance
    instanceId = InstanceManager.getInstance().createDynamicInstance(template)
    world = PyObject()
    world.instanceId = instanceId
    self.worlds[instanceId]=world
    self.world_ids.append(instanceId)
    print "INFO Devil's Legacy (Lvl 61-67): " +str(instanceId) + " created by player: " + str(player.getName())
    # Teleports player
    teleto.instanceId = instanceId
    teleportplayer(self,player,teleto)
    return instanceId
Exemplo n.º 21
0
 def onAdvEvent(self, event, npc, player):
     if event == "teleportKeyMaster":
         world = self.worlds[npc.getInstanceId()]
         loc = LOCS[Rnd.get(len(LOCS))]
         world.keymaster.teleToLocation(loc[0], loc[1], loc[2])
     elif event == "decayNpc":
         npc.decayMe()
     elif event == "finishInstance":
         world = self.worlds[npc.getInstanceId()]
         playerList = InstanceManager.getInstance().getInstance(
             npc.getInstanceId()).getPlayers()
         for obj in playerList.toArray():
             member = L2World.getInstance().findPlayer(obj)
             member.setInstanceId(0)
             member.teleToLocation(13105, 282099, -9701)
     return
Exemplo n.º 22
0
	def onTalk (self,npc,player):
		npcId = npc.getNpcId()
		instanceId=0
		if npcId == ORACLE_GUIDE:
			tele = PyObject()
			tele.x = 140486
			tele.y = 148895
			tele.z = -11817
			instanceId = enterInstance(self, player, "coral.xml", tele)
		if instanceId == 0:
			return
		try:
			for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
				if door.getDoorId() == CORALGARDENGATEWAY:
					door.openMe()
		except:
			pass
		return
Exemplo n.º 23
0
def enterInstance(self, player, template, teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    party = player.getParty()
    # Check for exising instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId() != 0:
            instanceId = partyMember.getInstanceId()
            if debug:
                print "DarkCloudMansion: found party member in instance:" + str(
                    instanceId)
    # Existing instance
    if instanceId != 0:
        foundworld = False
        for worldid in self.world_ids:
            if worldid == instanceId:
                foundworld = True
        if not foundworld:
            player.sendPacket(
                SystemMessage.sendString(
                    "Your Party Members are in another Instance."))
            return 0
        teleto.instanceId = instanceId
        teleportplayer(self, player, teleto)
        return instanceId
    # New instance
    else:
        instanceId = InstanceManager.getInstance().createDynamicInstance(
            template)
        if not self.worlds.has_key(instanceId):
            world = PyObject()
            world.rewarded = []
            world.instanceId = instanceId
            self.worlds[instanceId] = world
            self.world_ids.append(instanceId)
            print "DarkCloudMansion: started " + template + " Instance: " + str(
                instanceId) + " created by player: " + str(player.getName())
            runStartRoom(self, world)
        # teleports player
        teleto.instanceId = instanceId
        teleportplayer(self, player, teleto)
        return instanceId
    return instanceId
Exemplo n.º 24
0
 def onTalk(self, npc, player):
     npcId = npc.getNpcId()
     instanceId = 0
     if npcId == ORACLE_GUIDE:
         tele = PyObject()
         tele.x = 140486
         tele.y = 148895
         tele.z = -11817
         instanceId = enterInstance(self, player, "coral.xml", tele)
     if instanceId == 0:
         return
     try:
         for door in InstanceManager.getInstance().getInstance(
                 instanceId).getDoors():
             if door.getDoorId() == CORALGARDENGATEWAY:
                 door.openMe()
     except:
         pass
     return
Exemplo n.º 25
0
 def onTalk(self, npc, player):
     npcId = npc.getNpcId()
     if npcId == KANAF:
         if HellboundManager.getInstance().getCurrentLevel() >= 10:
             instanceId = 0
             tele = PyObject()
             tele.x = 13881
             tele.y = 255491
             tele.z = -2025
             instanceId = enterInstance(self, player, "MarketTown.xml",
                                        tele)
             if instanceId == 0:
                 return
         else:
             htmltext = "You may not yet enter the Market Town..."
             return htmltext
     elif npcId == STELE:
         world = self.worlds[npc.getInstanceId()]
         if not world.instanceFinished:
             key = player.getInventory().getItemByItemId(KEY)
             if key != None:
                 world.instanceFinished = True
                 player.destroyItemByItemId("Moonlight Stone", KEY, 1,
                                            player, True)
                 instance = InstanceManager.getInstance().getInstance(
                     npc.getInstanceId())
                 if instance != None:
                     instance.setDuration(330000)
                     self.startQuestTimer("finishInstance", 300000, npc,
                                          None)
     elif npcId == PRISONER:
         world = self.worlds[npc.getInstanceId()]
         npc.broadcastPacket(
             NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                    "Thank you, i hope Amaskari wont notice!"))
         self.startQuestTimer("decayNpc", 15000, npc, None)
         HellboundManager.getInstance().addTrustPoints(10)
         if not world.guardsSpawned:
             callGuards(self, npc, player, world)
             world.guardsSpawned = True
     return
Exemplo n.º 26
0
def enterInstance(self,player,template,teleto):
	instanceId = 0
	if not checkCondition(player):
		return 0
	party = player.getParty()
	# Check for exising instances of party members
	for partyMember in party.getPartyMembers().toArray():
		if partyMember.getInstanceId()!=0:
			instanceId = partyMember.getInstanceId()
			if debug: print "DarkCloudMansion: found party member in instance:"+str(instanceId)
	# Existing instance
	if instanceId != 0:
		foundworld = False
		for worldid in self.world_ids:
			if worldid == instanceId:
				foundworld = True
		if not foundworld:
			player.sendPacket(SystemMessage.sendString("Your Party Members are in another Instance."))
			return 0
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto)
		return instanceId
	# New instance
	else:
		instanceId = InstanceManager.getInstance().createDynamicInstance(template)
		if not self.worlds.has_key(instanceId):
			world = PyObject()
			world.rewarded=[]
			world.instanceId = instanceId
			self.worlds[instanceId]=world
			self.world_ids.append(instanceId)
			print "DarkCloudMansion: started " + template + " Instance: " +str(instanceId) + " created by player: " + str(player.getName())
			runStartRoom(self,world)
		# teleports player
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto)
		return instanceId
	return instanceId
Exemplo n.º 27
0
def enterInstance(self,player,template,teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    party = player.getParty()
    # Check for existing instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId()!=0:
            instanceId = partyMember.getInstanceId()
            if debug: print "DarkCloudMansion: found party member in instance:"+str(instanceId)
            return 0
    instanceId = InstanceManager.getInstance().createDynamicInstance(template)
    world = PyObject()
    world.instanceId = instanceId
    self.worlds[instanceId]=world
    self.world_ids.append(instanceId)
    print "DarkCloudMansion: started " + template + " Instance: " +str(instanceId) + " created by player: " + str(player.getName())
    runStartRoom(self,world)
    # Teleports player
    teleto.instanceId = instanceId
    for partyMember in party.getPartyMembers().toArray():
        teleportplayer(self,partyMember,teleto)
    return instanceId
Exemplo n.º 28
0
	def onTalk (self,npc,player):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if not st:
			st.setState(State.STARTED)
		if npcId == BATHIS:
			htmltext = "start-bathis.htm"
		elif npcId == LUCAS:
			htmltext = "start-lucas.htm"
		elif npcId == GOSTA:
			htmltext = "start-gosta.htm"
		elif npcId == MOUEN:
			htmltext = "start-mouen.htm"
		elif npcId == VISHOTSKY:
			htmltext = "start-vishotsky.htm"
		elif npcId == MATHIAS:
			htmltext = "start-mathias.htm"
		elif npcId == DEVICE:
			returnLocation = InstanceManager.getInstance().getInstance(player.getInstanceId()).getReturnTeleport()
			KamaInfo = [0,0,0,0,0,0,returnLocation.getX(),returnLocation.getY(),returnLocation.getZ()]
			teleportplayer(self,player,KamaInfo,0)
			return
		return htmltext
Exemplo n.º 29
0
def enterInstance(self, player, KamaInfo, level):
    instanceId = 0
    template = KamaInfo[0]
    reuse = KamaInfo[1]
    if checkDistance(player):
        return 0
    if not checkCondition(player, KamaInfo):
        return 0
    party = player.getParty()
    # Check for existing instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId() != 0:
            sm = SystemMessage(
                SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED)
            sm.addPcName(partyMember)
            player.sendPacket(sm)
            return 0
    # New instance
    instanceId = InstanceManager.getInstance().createDynamicInstance(template)
    world = PyObject()
    world.instanceId = instanceId
    self.worlds[instanceId] = world
    self.world_ids.append(instanceId)
    if level in [29, 39, 49, 59, 69, 78, 81]:
        world.level = level
        startFirstRoom(self, world)
    if debug:
        print "Kamaloka: started " + template + " Instance: " + str(
            instanceId) + " created by player: " + str(player.getName())
    # Teleport players
    for partyMember in party.getPartyMembers().toArray():
        partyMember.stopAllEffectsExceptThoseThatLastThroughDeath()
        partyMember.clearSouls()
        partyMember.clearCharges()
        teleportplayer(self, partyMember, KamaInfo, instanceId)
    return instanceId
Exemplo n.º 30
0
def openDoor(doorId, instanceId):
    for door in InstanceManager.getInstance().getInstance(
            instanceId).getDoors():
        if door.getDoorId() == doorId:
            door.openMe()
Exemplo n.º 31
0
 def getAllPlayers(self, world):
     return InstanceManager.getInstance().getInstance(
         world.instanceId).getPlayers()
Exemplo n.º 32
0
 def closeAllDoors(self, world):
     for door in InstanceManager.getInstance().getInstance(
             world.instanceId).getDoors():
         door.closeMe()
Exemplo n.º 33
0
 def onAdvEvent(self, event, npc, player):
     htmltext = event
     st = player.getQuestState(qn)
     if not st: return
     npcId = npc.getNpcId()
     if event == "TimeOver":
         teleto = PyObject()
         teleto.x = -52855
         teleto.y = 188199
         teleto.z = -4700
         teleto.instanceId = 0
         teleportplayer(teleto)
         player.setPailaka(False)
         st.exitQuest(True)
     if npcId == ADLER and event == "accept":
         tele = PyObject()
         tele.x = -52855
         tele.y = 188199
         tele.z = -4700
         instanceId = enterInstance(self, player, "SongOfIceAndFire.xml",
                                    tele)
         if instanceId == 0:
             return
         st.set("cond", "1")
         st.setState(State.STARTED)
         st.playSound("ItemSound.quest_accept")
         htmltext = ""
     if event == "32497-02.htm":
         if player.getLevel() < 36 or player.getLevel() > 42:
             htmltext = "32497-04.htm"
     elif event == "32500-05.htm":
         st.set("cond", "2")
         st.playSound("ItemSound.quest_itemget")
         st.giveItems(SWORD, 1)
         st.giveItems(BOOK1, 1)
     elif event == "32507-03.htm":
         st.set("cond", "4")
         st.playSound("ItemSound.quest_middle")
         st.giveItems(ENHENCED_SWORD, 1)
         st.takeItems(SWORD, -1)
         st.takeItems(WATER_ENHENCER, -1)
     elif event == "32507-07.htm":
         st.set("cond", "7")
         st.playSound("ItemSound.quest_itemget")
         st.takeItems(ENHENCED_SWORD, -1)
         st.takeItems(FIRE_ENHENCER, -1)
         st.takeItems(BOOK5, -1)
         st.giveItems(ENHENCED_SWORD_2, 1)
         st.giveItems(BOOK6, 1)
     elif event == "32510-01.htm":
         st.playSound("ItemSound.quest_finish")
         st.setState(State.COMPLETED)
         st.giveItems(PSOE, 1)
         st.giveItems(PAILAKA_RING, 1)
         st.giveItems(PAILAKA_EARRING, 1)
         player.setVitalityPoints(20000.0, True)
         st.addExpAndSp(810000, 50000)
         st.exitQuest(False)
         if player.getInstanceId() != 0:
             instance = InstanceManager.getInstance().getInstance(
                 player.getInstanceId())
             if instance != None:
                 instance.setDuration(300000)
     return htmltext
Exemplo n.º 34
0
 def closeDoor(self, doorId, world):
     for door in InstanceManager.getInstance().getInstance(
             world.instanceId).getDoors():
         if door.getDoorId() == doorId:
             door.closeMe()
Exemplo n.º 35
0
 def openDoor(self,doorId,world):
     for door in InstanceManager.getInstance().getInstance(world.instanceId).getDoors():
         if door.getDoorId() == doorId:
             door.openMe()
Exemplo n.º 36
0
 def closeAllDoors(self,world):
     for door in InstanceManager.getInstance().getInstance(world.instanceId).getDoors():
             door.closeMe()
Exemplo n.º 37
0
def openDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.openMe()
Exemplo n.º 38
0
 def getAllPlayers(self,world):
     return InstanceManager.getInstance().getInstance(world.instanceId).getPlayers()
Exemplo n.º 39
0
def closeDoor(doorId, instanceId):
    for door in InstanceManager.getInstance().getInstance(
            instanceId).getDoors():
        if door.getDoorId() == doorId:
            door.closeMe()
Exemplo n.º 40
0
def closeDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.closeMe()
Exemplo n.º 41
0
 def onAdvEvent(self,event,npc,player):
     htmltext = event
     st = player.getQuestState(qn)
     if not st: return
     npcId = npc.getNpcId()
     if event == "TimeOver":
         teleto = PyObject()
         teleto.x = -52855
         teleto.y = 188199
         teleto.z = -4700
         teleto.instanceId = 0
         teleportplayer(teleto)
         player.setPailaka(False)
         st.exitQuest(True)
     if npcId == ADLER and event == "accept":
         tele = PyObject()
         tele.x = -52855
         tele.y = 188199
         tele.z = -4700
         instanceId = enterInstance(self, player, "SongOfIceAndFire.xml", tele)
         if instanceId == 0:
             return
         st.set("cond","1")
         st.setState(State.STARTED)
         st.playSound("ItemSound.quest_accept")
         htmltext = ""
     if event == "32497-02.htm":
         if player.getLevel() < 36 or player.getLevel() > 42:
             htmltext = "32497-04.htm"
     elif event == "32500-05.htm":
         st.set("cond","2")
         st.playSound("ItemSound.quest_itemget")
         st.giveItems(SWORD, 1)
         st.giveItems(BOOK1, 1)
     elif event == "32507-03.htm":
         st.set("cond","4")
         st.playSound("ItemSound.quest_middle")
         st.giveItems(ENHENCED_SWORD, 1)
         st.takeItems(SWORD, -1)
         st.takeItems(WATER_ENHENCER, -1)
     elif event == "32507-07.htm":
         st.set("cond","7")
         st.playSound("ItemSound.quest_itemget")
         st.takeItems(ENHENCED_SWORD, -1)
         st.takeItems(FIRE_ENHENCER, -1)
         st.takeItems(BOOK5, -1)
         st.giveItems(ENHENCED_SWORD_2, 1)
         st.giveItems(BOOK6, 1)
     elif event == "32510-01.htm":
         st.playSound("ItemSound.quest_finish")
         st.setState(State.COMPLETED)
         st.giveItems(PSOE, 1)
         st.giveItems(PAILAKA_RING, 1)
         st.giveItems(PAILAKA_EARRING, 1)
         player.setVitalityPoints(20000.0, True)
         st.addExpAndSp(810000, 50000)
         st.exitQuest(False)
         if player.getInstanceId() != 0:
             instance = InstanceManager.getInstance().getInstance(player.getInstanceId())
             if instance != None:
                 instance.setDuration(300000)
     return htmltext