示例#1
0
def setup_exits():
    for room in instance.rooms.values():
        if room.exit:
            for door, pexit in enumerate(room.exit):
                if pexit:
                    iexit = world_classes.Exit(pexit)
                    room.exit[door] = iexit
示例#2
0
def load_rooms(area, pArea):
    area, w = game_utils.read_word(area, False)
    w = w[1:]  # strip the pound
    while w != '0':
        room = handler_room.Room()
        room.vnum = int(w)
        if room.vnum in instance.room_templates:
            logger.critical('Dupicate room Vnum: %d', room.vnum)
            sys.exit(1)

        instance.room_templates[room.vnum] = room
        room.area = pArea
        area, room.name = game_utils.read_string(area)
        area, room.description = game_utils.read_string(area)
        area, number = game_utils.read_int(area)  # area number
        area, room.room_flags = game_utils.read_flags(area)
        area, room.sector_type = game_utils.read_int(area)
        while True:
            area, letter = game_utils.read_letter(area)

            if letter == 'S':
                break
            elif letter == 'H':  # Healing Room
                area, room.heal_rate = game_utils.read_int(area)
            elif letter == 'M':  # Mana Room
                area, room.mana_rate = game_utils.read_int(area)
            elif letter == 'C':  # Clan
                area, room.clan = game_utils.read_string(area)
            elif letter == 'D':  # exit
                nexit = world_classes.Exit()
                area, door = game_utils.read_int(area)
                area, nexit.description = game_utils.read_string(area)
                area, nexit.keyword = game_utils.read_string(area)
                area, locks = game_utils.read_int(area)
                area, nexit.key = game_utils.read_int(area)
                area, nexit.to_room = game_utils.read_int(area)
                room.exit[door] = nexit
            elif letter == 'E':
                ed = world_classes.ExtraDescrData()
                area, ed.keyword = game_utils.read_string(area)
                area, ed.description = game_utils.read_string(area)
                room.extra_descr.append(ed)
            elif letter == 'O':
                area, room.owner = game_utils.read_string(area)
            else:
                logger.critical("RoomIndexData(%d) has flag other than SHMCDEO: %s", (room.vnum, letter))
                sys.exit(1)
        area, w = game_utils.read_word(area, False)
        w = w[1:]  # strip the pound
        pArea.room_dict[room.vnum] = room
    return area
示例#3
0
def load_rooms(area, pArea):
    area, w = game_utils.read_word(area, False)
    w = w[1:]  # strip the pound
    while w != '0':
        room = handler_room.Room(None)
        room.vnum = int(w)
        if room.vnum in instance.room_templates:
            logger.critical('Dupicate room Vnum: %d', room.vnum)
            sys.exit(1)
        instance.room_templates[room.vnum] = room
        room.area = pArea.name
        area, room.name = game_utils.read_string(area)

        area, room.description = game_utils.read_string(area)
        room.description = miniboa.terminal.escape(room.description, 'pyom')

        area, number = game_utils.read_int(area)  # area number
        area, room.room_flags = game_utils.read_flags(area)
        area, room.sector_type = game_utils.read_int(area)
        while True:
            area, letter = game_utils.read_letter(area)

            if letter == 'S':
                break
            elif letter == 'H':  # Healing Room
                area, room.heal_rate = game_utils.read_int(area)
            elif letter == 'M':  # Mana Room
                area, room.mana_rate = game_utils.read_int(area)
            elif letter == 'C':  # Clan
                area, room.clan = game_utils.read_string(area)
            elif letter == 'D':  # exit
                nexit = world_classes.Exit(None)
                area, door = game_utils.read_int(area)
                area, nexit.description = game_utils.read_string(area)
                area, nexit.keyword = game_utils.read_string(area)
                #Replaced Locks code
                area = nexit.exit_info.read_bits(area)
                area, nexit.key = game_utils.read_int(area)
                area, nexit.to_room_vnum = game_utils.read_int(area)
                nexit.name = "Exit %s %d to %d" % \
                             (nexit.keyword,
                              room.vnum,
                              nexit.to_room_vnum)

                room.exit[door] = nexit
            elif letter == 'E':
                ed = world_classes.ExtraDescrData()
                area, ed.keyword = game_utils.read_string(area)
                area, ed.description = game_utils.read_string(area)
                room.extra_descr.append(ed)
            elif letter == 'O':
                area, room.owner = game_utils.read_string(area)
            else:
                logger.critical(
                    "RoomIndexData(%d) has flag other than SHMCDEO: %s",
                    (room.vnum, letter))
                sys.exit(1)
        area, w = game_utils.read_word(area, False)
        w = w[1:]  # strip the pound
        # Create our instances
        room_instance = object_creator.create_room(room)
        room_instance.environment = pArea.instance_id
    return area
示例#4
0
def load_rooms(area, parea):
    area, w = game_utils.read_word(area, False)
    w = w[1:]  # strip the pound
    while w != "0":
        vnum = int(w)
        if vnum in instance.room_templates:
            comm.notify("load_rooms: duplicate vnum {}".format(vnum),
                        merc.CONSOLE_CRITICAL)
            sys.exit(1)

        room = handler_room.Room(None)
        room.vnum = vnum
        instance.room_templates[room.vnum] = room
        room.area = parea.name
        area, room.name = game_utils.read_string(area)
        area, room.description = game_utils.read_string(area)
        room.description = miniboa.terminal.escape(room.description, "ANSI")

        area, dummy = game_utils.read_int(area)  # area number
        area, room_flags = game_utils.read_int(area)
        room.room_flags.bits = room_flags
        area, room.sector_type = game_utils.read_int(area)

        area, w = game_utils.read_word(area, None)
        while w in ["S", "D0", "D1", "D2", "D3", "D4", "D5", "E", "T"]:
            if w == "S":
                pass
            elif w in ["D0", "D1", "D2", "D3", "D4", "D5"]:  # exit
                door = int(w[1:])
                if door not in range(merc.MAX_DIR):
                    comm.notify(
                        "load_rooms: vnum {} has bad door number".format(vnum),
                        merc.CONSOLE_CRITICAL)
                    sys.exit(1)

                nexit = world_classes.Exit(None)
                area, nexit.description = game_utils.read_string(area)
                area, nexit.keyword = game_utils.read_string(area)
                area, exit_info = game_utils.read_int(area)
                nexit.exit_info.bits = exit_info
                area, nexit.key = game_utils.read_int(area)
                area, nexit.to_room_vnum = game_utils.read_int(area)
                room.exit[door] = nexit
            elif w == "E":
                edd = world_classes.ExtraDescrData()
                area, edd.keyword = game_utils.read_string(area)
                area, edd.description = game_utils.read_string(area)
                room.extra_descr.append(edd)
            elif w == "T":
                rt = handler_room.Roomtext()
                area, rt.input = game_utils.read_string(area)
                area, rt.output = game_utils.read_string(area)
                area, rt.choutput = game_utils.read_string(area)
                area, rt.name = game_utils.read_string(area)
                area, rt.type = game_utils.read_int(area)
                area, rt.power = game_utils.read_int(area)
                area, rt.mob = game_utils.read_int(area)
                room.roomtext.append(rt)
            else:
                comm.notify("load_rooms: bad flag DEST ({})".format(w),
                            merc.CONSOLE_CRITICAL)
                sys.exit(1)
            area, w = game_utils.read_word(area, False)

        w = w[1:]  # strip the pound

        # Create our instances
        room_instance = object_creator.create_room(room)
        room_instance.environment = parea.instance_id
    return area