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
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
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
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