/********************************************************** *************** S U N D E R M U D *** 2 . 0 ************** ********************************************************** * The unique portions of the SunderMud code as well as * * the integration efforts for code from other sources is * * based primarily on the efforts of: * * * * Lotherius <aelfwyne@operamail.com> (Alvin W. Brinson) * * and many others, see "help sundermud" in the mud. * **********************************************************/ #include "everything.h" #include "convert.h" /* * Flag conversions in this file carefullly copy individual flags * rather than just changing the different ones. This is in case * a flag has been set on a file that is undefined, we don't copy * it by mistake. */ struct rom_rooms_a { int romflag; int sunderflag; }; const struct rom_rooms_a roma_tablea [] = { { ROMA_ROOM_DARK, ROOM_DARK }, { ROMA_ROOM_NO_MOB, ROOM_NO_MOB }, { ROMA_ROOM_INDOORS, ROOM_INDOORS }, { ROMA_ROOM_PRIVATE, ROOM_PRIVATE }, { ROMA_ROOM_SAFE, ROOM_SAFE }, { ROMA_ROOM_SOLITARY, ROOM_SOLITARY }, { ROMA_ROOM_PET_SHOP, ROOM_PET_SHOP }, { ROMA_ROOM_NO_RECALL, ROOM_NO_RECALL }, { ROMA_ROOM_IMP_ONLY, ROOM_IMP_ONLY }, { ROMA_ROOM_GODS_ONLY, ROOM_GODS_ONLY }, { ROMA_ROOM_HEROES_ONLY, ROOM_HEROES_ONLY }, { ROMA_ROOM_NEWBIES_ONLY, ROOM_NEWBIES_ONLY }, { ROMA_ROOM_LAW, ROOM_LAW }, { 0, 0 } }; /* Converts a ROM 2.3 room to Sunder 2.0 */ void cvt_rom_room_a ( ROOM_INDEX_DATA *room ) { int i = 0; int nflags = 0; int oflags = 0; /* Fix room flags */ oflags = room->room_flags; while ( 1 ) { if ( roma_tablea[i].sunderflag == 0 && roma_tablea[i].romflag == 0 ) break; if ( IS_SET ( oflags, roma_tablea[i].romflag ) ) { SET_BIT ( nflags, roma_tablea[i].sunderflag ); REMOVE_BIT ( oflags, roma_tablea[i].romflag ); } i++; } if ( oflags > 0 ) { char buf[MSL]; SNP ( buf, " Flags (%d) removed for no match.", oflags ); if ( IS_NULLSTR ( room->notes ) ) strcpy ( room->notes, buf ); else strcat ( room->notes, buf ); } room->room_flags = nflags; /* Check Sector */ if ( room->sector_type == ROMA_SECT_UNUSED || room->sector_type == ROMA_SECT_MAX ) room->sector_type = SECT_MAX; return; }