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
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
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
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
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
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
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
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
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
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 = []
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 = []
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
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)
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
def openDoor(doorId, instanceId): for door in InstanceManager.getInstance().getInstance( instanceId).getDoors(): if door.getDoorId() == doorId: door.openMe()
def getAllPlayers(self, world): return InstanceManager.getInstance().getInstance( world.instanceId).getPlayers()
def closeAllDoors(self, world): for door in InstanceManager.getInstance().getInstance( world.instanceId).getDoors(): door.closeMe()
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
def closeDoor(self, doorId, world): for door in InstanceManager.getInstance().getInstance( world.instanceId).getDoors(): if door.getDoorId() == doorId: door.closeMe()
def openDoor(self,doorId,world): for door in InstanceManager.getInstance().getInstance(world.instanceId).getDoors(): if door.getDoorId() == doorId: door.openMe()
def closeAllDoors(self,world): for door in InstanceManager.getInstance().getInstance(world.instanceId).getDoors(): door.closeMe()
def openDoor(doorId,instanceId): for door in InstanceManager.getInstance().getInstance(instanceId).getDoors(): if door.getDoorId() == doorId: door.openMe()
def getAllPlayers(self,world): return InstanceManager.getInstance().getInstance(world.instanceId).getPlayers()
def closeDoor(doorId, instanceId): for door in InstanceManager.getInstance().getInstance( instanceId).getDoors(): if door.getDoorId() == doorId: door.closeMe()
def closeDoor(doorId,instanceId): for door in InstanceManager.getInstance().getInstance(instanceId).getDoors(): if door.getDoorId() == doorId: door.closeMe()
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