Пример #1
0
    def do_edig(self, session, line):
        c = C(session)
        if not line: session.push(tpl.EDIG_ERR1)
        else:
            self.splitarg = line.split(' ', 1)
            self.exists = Select.getExitsInRoom(session.is_in)

            try:
                self.flat = c.flatten(self.exists)
                if self.splitarg[1] in self.flat:
                    session.push(tpl.EDIG_ERR2)
                else:
                    self.count = Insert.addRoom(self.splitarg[0])
                    Insert.addLink(session.is_in, self.count, self.splitarg[1])
                    Insert.addLink(self.count, session.is_in, self.twoway[self.splitarg[1]])
                    session.push(tpl.EDIG % self.splitarg[1])
            except:
                session.push(tpl.EDIG_ERR1)
Пример #2
0
    def do_look(self, session, line):
        c = C(session)
        if not line: # Looking at the room itself
            self.descr = Select.getRoomDesc(session.is_in)
            session.push("%s \r\n" % (c.CYAN(self.descr[0]),))                  # short desc
            session.push("%s \r\n" % self.descr[1].replace('\\n', '\r\n'))      # long desc

            # Players in the room.
            self.look_com = Select.getPlayersInRoom(session.is_in)
            session.push("%s %s" % (session.BOLD, session.RED))
            for i in self.look_com:
                if str(i[0].capitalize()) == session.pname: pass
                else: session.push("%s \r\n" % str(i[0].capitalize()))
            session.push("%s" % session.RESET)

            #Get list of NPCs in the room.
            self.mobonfloor = Select.getNpcsInRoom(session.is_in)

            #Get list of objects in the room.
            self.objonfloor = Select.getItemsInRoom(session.is_in, session.p_id)

            if self.mobonfloor != []:
                for i in self.mobonfloor:
                    session.push("%s%s%s %s\r\n" % (session.BOLD, session.MAGENTA, str(i[0]), session.RESET))

            if self.objonfloor != []:
                comma = False
                for i in self.objonfloor:
                    if not i[0] or not i[1]: pass
                    elif i[2] > 1:
                        if comma:
                            session.push(", ")
                        session.push("%s%s%s%s (%s)" % (session.BOLD,session.GREEN,str(i[0]),session.RESET,str(i[2])))
                        comma = True
                    else:
                        if comma:
                            session.push(", ")
                        session.push("%s%s%s%s" % (session.BOLD,session.GREEN,str(i[0]),session.RESET))
                        comma = True
                session.push("\r\n")

            # List exits
            session.push("%s%s%s " % (session.BOLD,session.CYAN, tpl.EXITS))
            self.tmpgoto = Select.getExitsInRoom(session.is_in)
            for i in self.tmpgoto:
                session.push("%s " % i[0])
            session.push("%s\r\n" % session.RESET)

        else: # Looking at something specific
            #Check if looked-at player is there
            self.peeps = Select.getPlayerDesc(session.is_in, line.lower())

            #Get list of items possessed by player or in the room
            self.obj = Select.getItemsOnPlayer(session.p_id, line.lower())
            
            #Get list of items in the room
            self.obj2 = Select.getItemsInRoom(session.is_in, session.p_id, line.lower())

            #Get list of mobs in the room.
            self.mobonfloor = Select.getNpcsInRoom(session.is_in, line.lower())

            try:
                if self.peeps: #Looking at a player
                    session.push("%s \r\n" % self.peeps[1].replace('\\n', '\r\n'))
                    #Effects.RoomBroadcast(session, session.is_in,tpl.LOOKS_AT + line)

                elif self.obj: #An object in your inventory
                    session.push("%s \r\n" % self.obj[1].replace('\\n', '\r\n'))
                    
                elif self.obj2: #An object on the floor
                    session.push("%s \r\n" % self.obj2[1].replace('\\n', '\r\n'))

                elif self.mobonfloor: #A mob/NPC
                    self.mobinv = Select.getItemsOnNpc(self.mobonfloor[0])
                    
                    self.descri = self.mobonfloor[2].split('\\n') # Print the description
                    for i in self.descri:
                        session.push(str(i) + "\r\n")

                    if self.mobinv: # Print the mob's inventory
                        self.stuff = []
                        self.stufa = {}
                        session.push(c.B_WHITE(tpl.INVENTORY))

                        for i in self.mobinv:
                            self.item_name = i[2]
                            self.stuff.append(item_name)
                            self.stufa[self.item_name] = self.stuff.count(self.item_name)
                        for i in self.stufa:
                            if self.stufa[i] > 1:
                                session.push("%s (%s)\r\n" % (str(i), str(self.stufa[i])))
                            else:
                                session.push("%s \r\n" % str(i))
                    else: pass

                else: session.push(tpl.CANT_SEE)

            except: session.push(tpl.CANT_SEE)