void hedit_setup_existing(struct descriptor_data *d, int rhouse_num) { /* * Create a scratch house structure. */ CREATE(OLC_HOUSE(d), struct house_data, 1); copy_house(OLC_HOUSE(d), house_index + rhouse_num); hedit_disp_menu(d); }
static void hedit_setup_existing(struct descriptor_data *d, int rnum) { CREATE(OLC_HELP(d), struct help_index_element, 1); OLC_HELP(d)->keywords = str_udup(help_table[rnum].keywords); OLC_HELP(d)->entry = str_udup(help_table[rnum].entry); OLC_HELP(d)->duplicate = help_table[rnum].duplicate; OLC_HELP(d)->min_level = help_table[rnum].min_level; OLC_VAL(d) = 0; hedit_disp_menu(d); }
static void hedit_setup_new(struct descriptor_data *d) { CREATE(OLC_HELP(d), struct help_index_element, 1); OLC_HELP(d)->keywords = strdup(OLC_STORAGE(d)); OLC_HELP(d)->entry = strdup("KEYWORDS\r\n\r\nThis help file is unfinished.\r\n"); OLC_HELP(d)->min_level = 0; OLC_HELP(d)->duplicate = 0; OLC_VAL(d) = 0; hedit_disp_menu(d); }
void hedit_setup_new(struct descriptor_data *d) { struct house_data *house; /* * Allocate a scratch house structure. */ CREATE(house, struct house_data, 1); /* * Fill in some default values. */ H_OWNER(house) = NOBODY; H_ATRIUM(house) = NOWHERE; H_EXIT(house) = NOWHERE; H_MODE(house) = HOUSE_PRIVATE; H_PRUNE_SAFE(house) = FALSE; H_BUILT(house) = time(0); H_USED(house) = time(0); H_PAID(house) = 0; H_COST(house) = 0; H_MAX_SECURE(house) = 2; H_MAX_LOCKED(house) = 50; /* * Stir the lists lightly. */ CREATE(H_ROOMS(house), long, 1); H_ROOM(house, 0) = NOWHERE; CREATE(H_COWNERS(house), long, 1); H_COWNER(house, 0) = NOBODY; CREATE(H_GUESTS(house), long, 1); H_GUEST(house, 0) = NOBODY; /* * Presto! A house. */ OLC_HOUSE(d) = house; hedit_disp_menu(d); }
void hedit_parse(struct descriptor_data *d, char *arg) { int i, j; if (OLC_MODE(d) > HEDIT_NUMERICAL_RESPONSE) { if (!isdigit(arg[0]) && ((*arg == '-') && (!isdigit(arg[1])))) { write_to_output(d, TRUE, "Field must be numerical, try again : "); return; } } switch (OLC_MODE(d)) { /*-------------------------------------------------------------------*/ case SEDIT_CONFIRM_SAVESTRING: switch (*arg) { case 'y': case 'Y': write_to_output(d, TRUE, "Saving house to memory.\r\n"); hedit_save_internally(d); hedit_save_to_disk(); extended_mudlog(BRF, SYSL_OLC, TRUE, "%s edits house %d.", GET_NAME(d->character), OLC_NUM(d)); cleanup_olc(d, CLEANUP_STRUCTS); return; case 'n': case 'N': cleanup_olc(d, CLEANUP_ALL); return; default: write_to_output(d, TRUE, "Invalid choice!\r\nDo you wish to save the house? : "); return; } break; /*-------------------------------------------------------------------*/ case HEDIT_MAIN_MENU: i = 0; switch (*arg) { case 'q': case 'Q': if (OLC_VAL(d)) { /* Anything been changed? */ write_to_output(d, TRUE, "Do you wish to save the changes to the house? (y/n) : "); OLC_MODE(d) = HEDIT_CONFIRM_SAVESTRING; } else cleanup_olc(d, CLEANUP_ALL); return; case '0': OLC_MODE(d) = HEDIT_OWNER; write_to_output(d, TRUE, "Enter the name of the house owner : "); i--; return; case '1': OLC_MODE(d) = HEDIT_ATRIUM; write_to_output(d, TRUE, "Enter the room number of the atrium : "); i++; return; case '2': OLC_MODE(d) = HEDIT_EXIT; hedit_exits_menu(d); return; case '3': OLC_MODE(d) = HEDIT_MODE; hedit_modes_menu(d); return; case '4': OLC_MODE(d) = HEDIT_PRUNE_SAFE; hedit_prune_safe_menu(d); return; case '5': OLC_MODE(d) = HEDIT_COST; write_to_output(d, TRUE, "Enter the house cost : "); i++; return; case '6': OLC_MODE(d) = HEDIT_MAX_SECURE; write_to_output(d, TRUE, "Enter maximum number of secure containers : "); i++; return; case '7': OLC_MODE(d) = HEDIT_MAX_LOCKED; write_to_output(d, TRUE, "Enter maximum number of locked-down items : "); i++; return; case 'c': case 'C': hedit_owners_menu(d); return; case 'g': case 'G': hedit_guests_menu(d); return; case 'r': case 'R': hedit_rooms_menu(d); return; case 'd': case 'D': delete_house(d, OLC_NUM(d)); cleanup_olc(d, CLEANUP_ALL); return; default: hedit_disp_menu(d); return; } if (i == 0) break; else if (i == 1) write_to_output(d, TRUE, "\r\nEnter new value : "); else if (i == -1) write_to_output(d, TRUE, "\r\nEnter new text :\r\n] "); else write_to_output(d, TRUE, "Oops...\r\n"); return; /*-------------------------------------------------------------------*/ case HEDIT_ROOMS_MENU: switch (*arg) { case 'a': case 'A': write_to_output(d, TRUE, "\r\nEnter new room vnum number : "); OLC_MODE(d) = HEDIT_NEW_ROOM; return; case 'c': case 'C': hedit_compact_rooms_menu(d); return; case 'l': case 'L': hedit_rooms_menu(d); return; case 'd': case 'D': write_to_output(d, TRUE, "\r\nDelete which room? : "); OLC_MODE(d) = HEDIT_DELETE_ROOM; return; case 'q': case 'Q': break; } break; /*-------------------------------------------------------------------*/ case HEDIT_COWNERS_MENU: switch (*arg) { case 'a': case 'A': write_to_output(d, TRUE, "\r\nEnter player name : "); OLC_MODE(d) = HEDIT_NEW_COWNER; return; case 'l': case 'L': hedit_owners_menu(d); return; case 'd': case 'D': write_to_output(d, TRUE, "\r\nDelete which co-owner? : "); OLC_MODE(d) = HEDIT_DELETE_COWNER; return; case 'q': case 'Q': break; } break; /*-------------------------------------------------------------------*/ case HEDIT_GUESTS_MENU: switch (*arg) { case 'a': case 'A': write_to_output(d, TRUE, "\r\nEnter player name : "); OLC_MODE(d) = HEDIT_NEW_GUEST; return; case 'l': case 'L': hedit_guests_menu(d); return; case 'd': case 'D': write_to_output(d, TRUE, "\r\nDelete which guest? : "); OLC_MODE(d) = HEDIT_DELETE_GUEST; return; case 'q': case 'Q': break; } break; /*-------------------------------------------------------------------*/ /* * Numerical responses. */ /*-------------------------------------------------------------------*/ case HEDIT_OWNER: if ((i = get_id_by_name(arg)) == NOBODY) { write_to_output(d, TRUE, "No such player, try again : "); return; } H_OWNER(OLC_HOUSE(d)) = i; break; /*-------------------------------------------------------------------*/ case HEDIT_ATRIUM: if ((i = real_room(atoi(arg))) == NOWHERE) { write_to_output(d, TRUE, "No such room, try again : "); return; } if ((find_house(atoi(arg))) != NOWHERE) { write_to_output(d, TRUE, "That's a house room, try again : "); return; } H_ATRIUM(OLC_HOUSE(d)) = atoi(arg); break; /*-------------------------------------------------------------------*/ case HEDIT_EXIT: /* Check for a valid exit. */ if (atoi(arg) < 0 || atoi(arg) >= NUM_OF_DIRS) { write_to_output(d, TRUE, "\r\n&RThat's not a valid exit.&n\r\n\r\n"); hedit_exits_menu(d); return; } /* Make sure we have a start room (first in list). */ if ((i = real_room(H_ROOM(OLC_HOUSE(d), 0))) == NOWHERE) { write_to_output(d, TRUE, "\r\n&RYou have to define the starting room first.&n\r\n\r\n"); break; } /* Make sure we have an atrium. */ if ((j = real_room(H_ATRIUM(OLC_HOUSE(d)))) == NOWHERE) { write_to_output(d, TRUE, "\r\n&RYou have to define the atrium room first.&n\r\n\r\n"); break; } /* Check for a valid exit leading out from start room. */ if (TOROOM(i, atoi(arg)) == NOWHERE) { write_to_output(d, TRUE, "\r\n&RThere is no exit %s from room %d.&n\r\n\r\n", dirs[atoi(arg)], H_ROOM(OLC_HOUSE(d), 0)); hedit_exits_menu(d); return; } /* Check for a valid return exit from the atrium. */ if (TOROOM(j, rev_dir[atoi(arg)]) != i) { write_to_output(d, TRUE, "\r\n&RThe returning exit %s does not come from the atrium %d.&n\r\n\r\n", dirs[rev_dir[atoi(arg)]], H_ATRIUM(OLC_HOUSE(d))); hedit_exits_menu(d); return; } H_EXIT(OLC_HOUSE(d)) = atoi(arg); break; /*-------------------------------------------------------------------*/ case HEDIT_MODE: i = atoi(arg); if (i < 0 || i >= NUM_HOUSE_FLAGS) { write_to_output(d, TRUE, "\r\n&RThat's not a valid house type.&n\r\n\r\n"); hedit_modes_menu(d); return; } H_MODE(OLC_HOUSE(d)) = i; break; /*-------------------------------------------------------------------*/ case HEDIT_PRUNE_SAFE: i = atoi(arg); if (i < 0 || i > 1) { write_to_output(d, TRUE, "\r\n&RValid choices are 0 or 1.&n\r\n\r\n"); hedit_prune_safe_menu(d); return; } H_PRUNE_SAFE(OLC_HOUSE(d)) = i; break; /*-------------------------------------------------------------------*/ case HEDIT_COST: H_COST(OLC_HOUSE(d)) = atoi(arg); break; /*-------------------------------------------------------------------*/ case HEDIT_MAX_SECURE: if ((i = atoi(arg)) > HOUSE_MAX_SECURES) { write_to_output(d, TRUE, "Valid ranges are 0-%d : ", HOUSE_MAX_SECURES); return; } H_MAX_SECURE(OLC_HOUSE(d)) = i; break; /*-------------------------------------------------------------------*/ case HEDIT_MAX_LOCKED: if ((i = atoi(arg)) > HOUSE_MAX_LOCKS) { write_to_output(d, TRUE, "Valid ranges are 0-%d : ", HOUSE_MAX_LOCKS); return; } H_MAX_LOCKED(OLC_HOUSE(d)) = i; break; /*-------------------------------------------------------------------*/ case HEDIT_NEW_ROOM: if ((i = atoi(arg)) != -1) if ((i = real_room(i)) < 0) { write_to_output(d, TRUE, "That room does not exist, try again : "); return; } if (i >= 0) add_to_house_list(&(H_ROOMS(OLC_HOUSE(d))), atoi(arg)); hedit_rooms_menu(d); return; case HEDIT_DELETE_ROOM: remove_from_house_list(&(H_ROOMS(OLC_HOUSE(d))), atoi(arg)); hedit_rooms_menu(d); return; /*-------------------------------------------------------------------*/ case HEDIT_NEW_COWNER: if ((i = get_id_by_name(arg)) == NOBODY) { write_to_output(d, TRUE, "No such player, try again : "); return; } if (i == H_OWNER(OLC_HOUSE(d))) { write_to_output(d, TRUE, "That player already owns the house, try again : "); return; } for (j = 0; H_COWNER(OLC_HOUSE(d), j) != NOBODY; j++) { if (i == H_COWNER(OLC_HOUSE(d), j)) { write_to_output(d, TRUE, "That player has already been added, try again : "); return; } } for (j = 0; H_GUEST(OLC_HOUSE(d), j) != NOBODY; j++) { if (i == H_GUEST(OLC_HOUSE(d), j)) { write_to_output(d, TRUE, "That player is listed as a guest, try again : "); return; } } if (i >= 0) add_to_house_list(&(H_COWNERS(OLC_HOUSE(d))), i); hedit_owners_menu(d); return; case HEDIT_DELETE_COWNER: remove_from_house_list(&(H_COWNERS(OLC_HOUSE(d))), atoi(arg)); hedit_owners_menu(d); return; /*-------------------------------------------------------------------*/ case HEDIT_NEW_GUEST: if ((i = get_id_by_name(arg)) == NOBODY) { write_to_output(d, TRUE, "No such player, try again : "); return; } if (i == H_OWNER(OLC_HOUSE(d))) { write_to_output(d, TRUE, "That player already owns the house, try again : "); return; } for (j = 0; H_COWNER(OLC_HOUSE(d), j) != NOBODY; j++) { if (i == H_COWNER(OLC_HOUSE(d), j)) { write_to_output(d, TRUE, "That player is a co-owner, try again : "); return; } } for (j = 0; H_GUEST(OLC_HOUSE(d), j) != NOBODY; j++) { if (i == H_GUEST(OLC_HOUSE(d), j)) { write_to_output(d, TRUE, "That player has already been added, try again : "); return; } } if (i >= 0) add_to_house_list(&(H_GUESTS(OLC_HOUSE(d))), i); hedit_guests_menu(d); return; case HEDIT_DELETE_GUEST: remove_from_house_list(&(H_GUESTS(OLC_HOUSE(d))), atoi(arg)); hedit_guests_menu(d); return; /*-------------------------------------------------------------------*/ default: /* * We should never get here. */ cleanup_olc(d, CLEANUP_ALL); extended_mudlog(NRM, SYSL_BUGS, TRUE, "OLC: hedit_parse(): Reached default case!"); write_to_output(d, TRUE, "Oops...\r\n"); break; } /*-------------------------------------------------------------------*/ /* * END OF CASE * If we get here, we have probably changed something, and now want to * return to main menu. Use OLC_VAL as a 'has changed' flag. */ OLC_VAL(d) = 1; hedit_disp_menu(d); }