예제 #1
0
 def getRBInstance(self, bossid):
     bossid = int(bossid)
     rbsm = RaidBossSpawnManager.getInstance()
     bosses = rbsm.getBosses()
     for id in bosses:
         if id == bossid:
             return bosses[id]
     return None
예제 #2
0
 def respawn_all(self):
     rbsm = RaidBossSpawnManager.getInstance()
     for id, id_list in self.pages.items():
         for lv, ids in id_list:
             map(self.respawn, [
                 npc_id for npc_id in ids
                 if rbsm.getRaidBossStatusId(npc_id) == StatusEnum.DEAD
             ])
예제 #3
0
파일: RBTools.py 프로젝트: cass1984/s4L2J
	def getRBInstance(self, bossid):
		bossid = int(bossid)
		rbsm = RaidBossSpawnManager.getInstance()
		bosses = rbsm.getBosses()
		for id in bosses:
			if id == bossid:
				return bosses[id]
		return None
예제 #4
0
 def getRbSpawn(self, bossid):
     bossid = int(bossid)
     rbsm = RaidBossSpawnManager.getInstance()
     spawns = rbsm.getSpawns()
     for id in spawns:
         if id == bossid:
             return spawns[id]
     return None
예제 #5
0
파일: RBTools.py 프로젝트: cass1984/s4L2J
	def getRbSpawn(self, bossid):
		bossid = int(bossid)
		rbsm = RaidBossSpawnManager.getInstance()
		spawns = rbsm.getSpawns()
		for id in spawns:
			if id == bossid:
				return spawns[id]
		return None
예제 #6
0
파일: RBTools.py 프로젝트: cass1984/s4L2J
	def respawn(self, bossid):
		spawn = self.getRbSpawn(bossid)
		if spawn:
			npc_t = spawn.getTemplate()
			if not npc_t: return
			hp, mp = npc_t.getBaseHpMax(), npc_t.getBaseMpMax()
			boss = self.getRBInstance(bossid)
			if boss and L2World.getInstance().findObject(boss.getObjectId()): return
			spawn.stopRespawn()
			rbsm = RaidBossSpawnManager.getInstance()
			rbsm.deleteSpawn(spawn, True)
			rbsm.addNewSpawn(spawn, 0, hp, mp, True)
			if npc_t.getNpcId() in [25328]: #25328 "艾爾哈爾德 潘 哈曼"
				if GameTimeController.getInstance().isNowNight(): 
					spawn.startRespawn()
					spawn.respawnNpc(spawn.getLastSpawn())
					spawn.stopRespawn()
					# spawn.doSpawn()
			return
예제 #7
0
 def respawn(self, bossid):
     spawn = self.getRbSpawn(bossid)
     if spawn:
         npc_t = spawn.getTemplate()
         if not npc_t: return
         hp, mp = npc_t.getBaseHpMax(), npc_t.getBaseMpMax()
         boss = self.getRBInstance(bossid)
         if boss and L2World.getInstance().findObject(boss.getObjectId()):
             return
         spawn.stopRespawn()
         rbsm = RaidBossSpawnManager.getInstance()
         rbsm.deleteSpawn(spawn, True)
         rbsm.addNewSpawn(spawn, 0, hp, mp, True)
         if npc_t.getNpcId() in [25328]:  #25328 "艾爾哈爾德 潘 哈曼"
             if GameTimeController.getInstance().isNowNight():
                 spawn.startRespawn()
                 spawn.respawnNpc(spawn.getLastSpawn())
                 spawn.stopRespawn()
                 # spawn.doSpawn()
         return
예제 #8
0
    def getPageHtm(self, player, selected_tab="2x"):
        def getTabHtm():
            keys = self.pages.keys()
            keys.sort()
            r = "<table border=0 cellpadding=0 cellspacing=0><tr>"
            for key in keys:
                r += "<td><button width=30 height=20 fore=\"L2UI_CT1.Tab_DF_Tab"
                if selected_tab == key:
                    r += "_Selected"
                else:
                    r += "_Unselected"
                r += "\" value=\"" + key + "\" action=\"bypass -h Quest " + self.qn + " " + key + "\"></td>"
            r += "</tr></table>"
            return r

        rbsm = RaidBossSpawnManager.getInstance()
        l2world = L2World.getInstance()
        r = "<table border=0 cellpadding=0 cellspacing=0>"
        for id, id_list in self.pages.items():
            if id == selected_tab:
                for lv, ids in id_list:
                    for npc_id in ids:
                        if npc_id in self.backlist:
                            continue
                        status = rbsm.getRaidBossStatusId(npc_id)
                        if status == StatusEnum.UNDEFINED:
                            if not self.isNoDataShow:
                                continue
                        npc = self.getL2Npc(npc_id)
                        v = None
                        if npc:
                            v = l2world.findObject(npc.getObjectId())
                            isInCombat = npc.isInCombat()
                        r += "<tr>"
                        r += "<td width=30>"
                        showTele = False
                        if not status == StatusEnum.UNDEFINED:  # and v:
                            if not status == StatusEnum.DEAD or self.isAllowTeleDead:
                                showTele = True
                            if v:
                                if not isInCombat or self.isAllowTeleInCombat:
                                    showTele = True
                        if showTele:
                            r += "<a action=\"bypass -h Quest " + self.qn + " teleport_" + str(
                                npc_id) + "\">" + "傳送" + "</a>"
                        r += "</td>"
                        r += "<td>Lv" + str(
                            lv) + " " + self.npcNameTable.getName(
                                npc_id) + "(" + str(npc_id) + ")</td>"
                        if status == StatusEnum.ALIVE:
                            if v:
                                if isInCombat:
                                    r += "<td><font color=FF0000>挑戰中</font></td>"
                                else:
                                    r += "<td>可挑戰</td>"
                            else:
                                r += "<td>消失</td>"
                        elif status == StatusEnum.DEAD:
                            if v:
                                r += "<td>死亡</td>"
                            else:
                                if player.isGM():
                                    r += "<td><a action=\"bypass -h Quest " + self.qn + " respawn_" + str(
                                        npc_id) + "\">" + "GM重生" + "</a></td>"
                                else:
                                    r += "<td>待重生</td>"
                        else:
                            r += "<td><font color=666666>沒數據</font></td>"
                        r += "</tr>"
                break
        r += "</table>"
        return self.htm_header + getTabHtm() + r + self.htm_footer
예제 #9
0
파일: RBTools.py 프로젝트: cass1984/s4L2J
	def respawn_all(self):
		rbsm = RaidBossSpawnManager.getInstance()
		for id, id_list in self.pages.items():
			for lv, ids in id_list:
				map(self.respawn, [npc_id for npc_id in ids if rbsm.getRaidBossStatusId(npc_id) == StatusEnum.DEAD])
예제 #10
0
파일: RBTools.py 프로젝트: cass1984/s4L2J
	def getPageHtm(self, player, selected_tab="2x"):
		def getTabHtm():
			keys = self.pages.keys()
			keys.sort()
			r = "<table border=0 cellpadding=0 cellspacing=0><tr>"
			for key in keys:
				r += "<td><button width=30 height=20 fore=\"L2UI_CT1.Tab_DF_Tab"
				if selected_tab == key:
					r += "_Selected"
				else:
					r += "_Unselected"
				r += "\" value=\"" + key + "\" action=\"bypass -h Quest " + self.qn + " " + key + "\"></td>"
			r += "</tr></table>"
			return r
		rbsm = RaidBossSpawnManager.getInstance()
		l2world = L2World.getInstance()
		r = "<table border=0 cellpadding=0 cellspacing=0>"
		for id, id_list in self.pages.items():
			if id == selected_tab:
				for lv, ids in id_list:
					for npc_id in ids:
						if npc_id in self.backlist:
							continue
						status = rbsm.getRaidBossStatusId(npc_id)
						if status == StatusEnum.UNDEFINED:
							if not self.isNoDataShow:
								continue
						npc = self.getL2Npc(npc_id)
						v = None
						if npc:
							v = l2world.findObject(npc.getObjectId())
							isInCombat = npc.isInCombat()
						r += "<tr>"
						r += "<td width=30>"
						showTele = False
						if not status == StatusEnum.UNDEFINED:# and v:
							if not status == StatusEnum.DEAD or self.isAllowTeleDead:
								showTele = True
							if v:
								if not isInCombat or self.isAllowTeleInCombat:
									showTele = True
						if showTele:
							r += "<a action=\"bypass -h Quest " + self.qn + " teleport_" + str(npc_id) + "\">" + "傳送" + "</a>"
						r += "</td>"
						r += "<td>Lv" + str(lv) + " " + self.npcNameTable.getName(npc_id) + "(" + str(npc_id) + ")</td>"
						if status == StatusEnum.ALIVE:
							if v:
								if isInCombat:
									r += "<td><font color=FF0000>挑戰中</font></td>"
								else:
									r += "<td>可挑戰</td>"
							else:
								r += "<td>消失</td>"
						elif status == StatusEnum.DEAD:
							if v:
								r += "<td>死亡</td>"
							else:
								if player.isGM():
									r += "<td><a action=\"bypass -h Quest " + self.qn + " respawn_" + str(npc_id) + "\">" + "GM重生" + "</a></td>"
								else:
									r += "<td>待重生</td>"
						else:
							r+= "<td><font color=666666>沒數據</font></td>"
						r += "</tr>"
				break
		r += "</table>"
		return self.htm_header + getTabHtm() + r + self.htm_footer