/* * The main menu. */ void wedit_disp_menu(struct descriptor_data *d) { struct wild_data *wild; get_char_cols(d->character); wild = OLC_WILD(d); sprinttype(wild->color, colori, buf1); sprintbit((long)wild->room_flags, room_bits, buf2); sprintf(buf, #if defined(CLEAR_SCREEN) "[H[J" #endif "-- Wild Type number : [%s%d%s]\r\n" "%s1%s) Name : %s%s\r\n" "%s2%s) Description :\r\n%s%s" "%s3%s) Symbol : %s%c\r\n" "%s4%s) Color : %s%s\r\n" "%s5%s) Room flags : %s%s\r\n", cyn, OLC_NUM(d), nrm, grn, nrm, yel, wild->name, grn, nrm, yel, wild->description, grn, nrm, (wild->color > 1 ? color_from_color(d->character, wild->color) : nrm), wild->symbol, grn, nrm, (wild->color > 1 ? color_from_color(d->character, wild->color) : nrm), buf1, grn, nrm, cyn, buf2 ); send_to_char(buf, d->character); sprinttype(wild->sector_type, sector_types, buf1); sprintf(buf, "%s6%s) Sector type : %s%s\r\n" "%s7%s) Movement cost : %s%d\r\n" "%s8%s) Altitudine : %s%d\r\n" "%s9%s) Can enter into : %s%s\r\n" "%sA%s) Owner: : %s%d\r\n" "%sQ%s) Quit\r\n" "Enter choice : ", grn, nrm, cyn, buf1, grn, nrm, cyn, wild->move_cost, grn, nrm, cyn, wild->altitudine, grn, nrm, cyn, wild->can_enter ? "YES" : "NO", grn, nrm, cyn, wild->owner, grn, nrm ); send_to_char(buf, d->character); OLC_MODE(d) = WEDIT_MAIN_MENU; }
void assemblySaveAssemblies( void ) { char szType[ MAX_STRING_LENGTH ] = { '\0' }; long i = 0; long j = 0; ASSEMBLY *pAssembly = NULL; FILE *pFile = NULL; if( (pFile = fopen( ASSEMBLIES_FILE, "wt" )) == NULL ) { log( "SYSERR: assemblySaveAssemblies(): Couldn't open file '%s' for " "writing.", ASSEMBLIES_FILE ); return; } for( i = 0; i < g_lNumAssemblies; i++) { pAssembly = (g_pAssemblyTable + i); sprinttype(pAssembly->uchAssemblyType,AssemblyTypes,szType, sizeof(szType)); fprintf( pFile, "Vnum #%ld %s\n", pAssembly->lVnum, szType ); for( j = 0; j < pAssembly->lNumComponents; j++ ) { fprintf( pFile, "Component #%ld %d %d\n", pAssembly->pComponents[ j ].lVnum, (pAssembly->pComponents[ j ].bExtract ? 1 : 0), (pAssembly->pComponents[ j ].bInRoom ? 1 : 0) ); } if( i < g_lNumAssemblies - 1 ) fprintf( pFile, "\n" ); } fclose( pFile ); }
extern void sprintsym( SYMBOL sym, char s[], int sBufLen) { char ctype[80]; /* Flawfinder: ignore */ sprinttype( sym.type, ctype, 80); SafeSprintf(s, sBufLen, "%s =%4d", ctype, sym.value); return; }
extern void printsym( SYMBOL sym ) { char ctype[80]; /* Flawfinder: ignore */ sprinttype( sym.type, ctype, 80); printf("%s =%4d", ctype, sym.value); return; }
void assemblyListToChar( struct char_data *pCharacter ) { char szBuffer[ MAX_STRING_LENGTH ] = { '\0' }; char szAssmType[ MAX_INPUT_LENGTH ] = { '\0' }; long i = 0; // Outer iterator. long j = 0; // Inner iterator. long lRnum = 0; // Object rnum for obj_proto indexing. if( pCharacter == NULL ) { log( "SYSERR: assemblyListAssembliesToChar(): NULL 'pCharacter'." ); return; } else if( g_pAssemblyTable == NULL ) { send_to_char(pCharacter, "No assemblies exist.\r\n"); return; } /* Send out a "header" of sorts. */ send_to_char(pCharacter, "The following assemblies exists:\r\n"); for( i = 0; i < g_lNumAssemblies; i++ ) { if( (lRnum = real_object( g_pAssemblyTable[ i ].lVnum )) < 0 ) { send_to_char(pCharacter, "[-----] ***RESERVED***\r\n"); log( "SYSERR: assemblyListToChar(): Invalid vnum #%ld in assembly table.", g_pAssemblyTable[i].lVnum); } else { sprinttype(g_pAssemblyTable[ i ].uchAssemblyType, AssemblyTypes, szAssmType, sizeof(szAssmType)); sprintf( szBuffer, "[%5ld] %s (%s)\r\n", g_pAssemblyTable[ i ].lVnum, obj_proto[ lRnum ].short_description, szAssmType ); send_to_char(pCharacter, szBuffer); for( j = 0; j < g_pAssemblyTable[ i ].lNumComponents; j++ ) { if( (lRnum = real_object( g_pAssemblyTable[ i ].pComponents[ j ].lVnum )) < 0 ) { send_to_char(pCharacter, " -----: ***RESERVED***\r\n"); log( "SYSERR: assemblyListToChar(): Invalid component vnum #%ld in assembly for vnum #%ld.", g_pAssemblyTable[ i ].pComponents[ j ].lVnum, g_pAssemblyTable[ i ].lVnum ); } else { sprintf( szBuffer, " %5ld: %-20.20s Extract=%-3.3s InRoom=%-3.3s\r\n",+ g_pAssemblyTable[ i ].pComponents[ j ].lVnum, obj_proto[ lRnum ].short_description, (g_pAssemblyTable[ i ].pComponents[ j ].bExtract ? "Yes" : "No"), (g_pAssemblyTable[ i ].pComponents[ j ].bInRoom ? "Yes" : "No") ); send_to_char(pCharacter, szBuffer); } } } } }
void medit_disp_class_menu(struct descriptor_data *d) { int c; CLS(CH); for (c = 0; c < NUM_MOB_CLASSES; c++) { send_to_char(CH, "%2d) %-20s\r\n", c + 1, npc_classes[c]); } sprinttype(GET_RACE(MOB), npc_classes, buf1); send_to_char(CH, "Mob class: %s%s%s\r\n" "Enter mob class, 0 to quit: ", CCCYN(CH, C_CMP), buf1, CCNRM(CH, C_CMP)); }
/* * Ask for *which* apply to edit. */ void oedit_disp_prompt_apply_menu(struct descriptor_data *d) { char apply_buf[MAX_STRING_LENGTH]; int counter; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < MAX_OBJ_AFFECT; counter++) { if (OLC_OBJ(d)->affected[counter].modifier) { sprinttype(OLC_OBJ(d)->affected[counter].location, apply_types, apply_buf, sizeof(apply_buf)); write_to_output(d, " %s%d%s) %+d to %s\r\n", grn, counter + 1, nrm, OLC_OBJ(d)->affected[counter].modifier, apply_buf); } else { write_to_output(d, " %s%d%s) None.\r\n", grn, counter + 1, nrm); } } write_to_output(d, "\r\nEnter affection to modify (0 to quit) : "); OLC_MODE(d) = OEDIT_PROMPT_APPLY; }
void medit_disp_menu(struct descriptor_data *d) { int base = calc_karma(NULL, MOB); CLS(CH); send_to_char(CH, "Mob number: %s%d%s\r\n", CCCYN(CH, C_CMP), d->edit_number, CCNRM(CH, C_CMP)); send_to_char(CH, "1) Keywords: %s%s%s\r\n", CCCYN(CH, C_CMP), MOB->player.physical_text.keywords, CCNRM(CH, C_CMP)); send_to_char(CH, "2) Name: %s%s%s\r\n", CCCYN(CH, C_CMP), MOB->player.physical_text.name, CCNRM(CH, C_CMP)); send_to_char(CH, "3) Room description:\r\n%s%s%s\r\n", CCCYN(CH, C_CMP), MOB->player.physical_text.room_desc,CCNRM(CH, C_CMP)); send_to_char(CH, "4) Look description:\r\n%s\r\n", MOB->player.physical_text.look_desc); MOB_FLAGS(MOB).PrintBits(buf1, MAX_STRING_LENGTH, action_bits, MOB_MAX); send_to_char(CH, "5) Mob Flags: %s%s%s\r\n", CCCYN(CH, C_CMP), buf1, CCNRM(CH, C_CMP)); MOB->char_specials.saved.affected_by.PrintBits(buf1, MAX_STRING_LENGTH, affected_bits, AFF_MAX); send_to_char(CH, "6) Affected Flags: %s%s%s\r\n", CCCYN(CH, C_CMP), buf1, CCNRM(CH, C_CMP)); send_to_char(CH, "8) Avg. nuyen: %s%6d%s Avg. credstick value: %s%6d%s\r\n", CCCYN(CH, C_CMP), GET_NUYEN(MOB), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), GET_BANK(MOB), CCNRM(CH, C_CMP)); send_to_char(CH, "9) Bonus karma points: %s%d%s (Total karma points: %s%d%s)\r\n", CCCYN(CH, C_CMP), GET_KARMA(MOB), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), base, CCNRM(CH, C_CMP)); send_to_char(CH, "a) Attributes: B(%s%d%s), Q(%s%d%s), S(%s%d%s), C(%s%d%s), " "I(%s%d%s), W(%s%d%s), M(%s%d%s), R(%s%d%s)\r\n", CCCYN(CH, C_CMP), GET_REAL_BOD(MOB), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), GET_REAL_QUI(MOB), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), GET_REAL_STR(MOB), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), GET_REAL_CHA(MOB), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), GET_REAL_INT(MOB), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), GET_REAL_WIL(MOB), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), MOB->real_abils.mag / 100, CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), GET_REAL_REA(MOB), CCNRM(CH, C_CMP)); send_to_char(CH, "b) Level: %s%d%s\r\n", CCCYN(CH, C_CMP), GET_LEVEL(MOB), CCNRM(CH, C_CMP)); send_to_char(CH, "c) Ballistic: %s%d%s, ", CCCYN(CH, C_CMP), GET_BALLISTIC(MOB), CCNRM(CH, C_CMP)); send_to_char(CH, "d) Impact: %s%d%s\r\n", CCCYN(CH, C_CMP), GET_IMPACT(MOB), CCNRM(CH, C_CMP)); send_to_char(CH, "e) Max physical points: %s%d%s, f) Max mental points: %s%d%s\r\n", CCCYN(CH, C_CMP), (int)(GET_MAX_PHYSICAL(MOB) / 100), CCNRM(CH, C_CMP), CCCYN(CH, C_CMP), (int)(GET_MAX_MENTAL(MOB) / 100), CCNRM(CH, C_CMP)); sprinttype(GET_POS(MOB), position_types, buf1); send_to_char(CH, "g) Position: %s%s%s, ", CCCYN(CH, C_CMP), buf1, CCNRM(CH, C_CMP)); sprinttype(GET_DEFAULT_POS(MOB), position_types, buf1); send_to_char(CH, "h) Default Position: %s%s%s\r\n", CCCYN(CH, C_CMP), buf1, CCNRM(CH, C_CMP)); sprinttype(GET_SEX(MOB), genders, buf1); // strcpy(buf1, genders[GET_SEX(d->edit_mob)]); send_to_char(CH, "i) Gender: %s%s%s, ", CCCYN(CH, C_CMP), buf1, CCNRM(CH, C_CMP)); send_to_char(CH, "j) Weight: %s%d%s, ", CCCYN(CH, C_CMP), GET_WEIGHT(MOB), CCNRM(CH, C_CMP)); send_to_char(CH, "k) Height: %s%d%s\r\n", CCCYN(CH, C_CMP), GET_HEIGHT(MOB), CCNRM(CH, C_CMP)); sprinttype(GET_RACE(MOB), npc_classes, buf1); send_to_char(CH, "l) Mob class: %s%s%s\r\n", CCCYN(CH, C_CMP), buf1, CCNRM(CH, C_CMP)); // gotta subtract TYPE_HIT to make it work properly sprinttype(!(MOB->mob_specials.attack_type) ? 0 : (MOB->mob_specials.attack_type - TYPE_HIT), attack_types, buf1); send_to_char(CH, "m) Attack Type: %s%s%s\r\n", CCCYN(CH, C_CMP), buf1, CCNRM(CH, C_CMP)); send_to_char("n) Skill menu.\r\n", CH); send_to_char(CH, "o) Arrive text: ^c%s^n, p) Leave text: ^c%s^n\r\n", MOB->mob_specials.arrive, MOB->mob_specials.leave); send_to_char("q) Quit and save\r\n", CH); send_to_char("x) Exit and abort\r\n", CH); send_to_char("Enter your choice:\r\n", CH); d->edit_mode = MEDIT_MAIN_MENU; }
void do_obj_report (struct char_data *ch) { struct obj_data *obj, *key; int i=0, j=0, found=0; FILE *reportfile; if (!(reportfile = fopen("report.obj", "w"))) { mlog("SYSERR: Object report file unavailable."); send_to_char ("Report.obj could not be generated.\r\n",ch); return; } sprintf(buf, "OBJECTS\n-------\n"); for (i=0; i<top_of_objt;i++) { obj=read_object(i, REAL); sprintf(buf+strlen(buf), "[%5d] %s\nSpec Proc: ", GET_OBJ_VNUM(obj), obj->short_description); if (obj_index[GET_OBJ_RNUM(obj)].func!=NULL) get_spec_name(GET_OBJ_RNUM(obj), buf2,'o'); else sprintf(buf2, "none"); sprintf(buf+strlen(buf), "%s Aliases: %s\n", buf2, GET_OBJ_NAME(obj)); sprinttype(GET_OBJ_TYPE(obj), item_types, buf2, sizeof(buf2)); sprintf (buf+strlen(buf),"Type: %s Worn on: ",buf2); sprintbit(obj->obj_flags.wear_flags, wear_bits, buf2, sizeof(buf2)); sprintf(buf+strlen(buf), "%s\n", buf2); sprintf(buf+strlen(buf), "Weight: %d, Value: %d, Cost/day: %d, Timer: %d\n", GET_OBJ_WEIGHT(obj), GET_OBJ_COST(obj), GET_OBJ_RENT(obj), GET_OBJ_TIMER(obj)); sprintbit(obj->obj_flags.bitvector, affected_bits, buf2, sizeof(buf2)); sprintf(buf+strlen(buf), "Affects player: %s\n",buf2); sprintbit(obj->obj_flags.bitvector, affected_bits, buf2, sizeof(buf2)); sprintf(buf+strlen(buf), "Extra bits: %s\n",buf2); switch (GET_OBJ_TYPE(obj)) { case ITEM_LIGHT: if (GET_OBJ_VAL(obj, 2) == -1) strcpy(buf, "Hours left: Infinite\n"); else sprintf(buf+strlen(buf), "Hours left: [%d]\n", GET_OBJ_VAL(obj, 2)); break; case ITEM_SCROLL: case ITEM_POTION: sprintf(buf+strlen(buf), "Spells: (Level %d) %s, %s, %s\n", GET_OBJ_VAL(obj, 0), skill_name(GET_OBJ_VAL(obj, 1)), skill_name(GET_OBJ_VAL(obj, 2)), skill_name(GET_OBJ_VAL(obj, 3))); break; case ITEM_WAND: case ITEM_STAFF: sprintf(buf+strlen(buf), "Spell: %s at level %d, %d (of %d) charges remaining\n", skill_name(GET_OBJ_VAL(obj, 3)), GET_OBJ_VAL(obj, 0), GET_OBJ_VAL(obj, 2), GET_OBJ_VAL(obj, 1)); break; case ITEM_WEAPON: sprintf(buf+strlen(buf), "Ave. Dam: %d, Message type: %d\n", get_weapon_dam(obj), GET_OBJ_VAL(obj, 3)); break; case ITEM_ARMOR: sprintf(buf+strlen(buf), "Passive Defense: [%d]\n", GET_OBJ_VAL(obj, 0)); sprintf(buf+strlen(buf), "Damage Reduction: [%d]\n", GET_OBJ_VAL(obj, 1)); break; case ITEM_TRAP: sprintf(buf+strlen(buf), "Spell: %d, - Hitpoints: %d\n", GET_OBJ_VAL(obj, 0), GET_OBJ_VAL(obj, 1)); break; case ITEM_CONTAINER: sprintbit(GET_OBJ_VAL(obj, 1), container_bits, buf2, sizeof(buf2)); sprintf(buf+strlen(buf), "Weight capacity: %d, Lock Type: %s, Key Num: %d ", GET_OBJ_VAL(obj, 0), buf2, GET_OBJ_VAL(obj, 2)); if (GET_OBJ_VAL(obj, 2) > 0) { key=read_object(GET_OBJ_VAL(obj,2), VIRTUAL); if (key) { sprintf(buf+strlen(buf), "(%s)", GET_OBJ_NAME(key)); extract_obj(key); } else sprintf(buf+strlen(buf), "(Error: Key does not exist!)"); } sprintf(buf+strlen(buf), "\n"); break; case ITEM_DRINKCON: case ITEM_FOUNTAIN: sprinttype(GET_OBJ_VAL(obj, 2), drinks, buf2, sizeof(buf2)); sprintf(buf+strlen(buf), "Capacity: %d, Contains: %d, Poisoned: %s, Liquid: %s\n", GET_OBJ_VAL(obj, 0), GET_OBJ_VAL(obj, 1), YESNO(GET_OBJ_VAL(obj, 3)),buf2); break; case ITEM_FOOD: sprintf(buf+strlen(buf), "Makes full: %d, Poisoned: %s\n", GET_OBJ_VAL(obj, 0),YESNO(GET_OBJ_VAL(obj, 3))); break; case ITEM_MONEY: sprintf(buf, "Coins: %d\n", GET_OBJ_VAL(obj, 0)); break; case ITEM_PORTAL: sprintf(buf, "To room: %d\n", GET_OBJ_VAL(obj, 0)); break; default: sprintf(buf+strlen(buf), "Values 0-3: [%d] [%d] [%d] [%d]\n", GET_OBJ_VAL(obj, 0), GET_OBJ_VAL(obj, 1), GET_OBJ_VAL(obj, 2), GET_OBJ_VAL(obj, 3)); break; } found = 0; sprintf(buf+strlen(buf), "Affects on player stats:\n"); for (j = 0; j < MAX_OBJ_AFFECT; j++) if (obj->affected[j].modifier) { sprinttype(obj->affected[j].location, apply_types, buf2, sizeof(buf2)); sprintf(buf+strlen(buf), " %+d to %s\n",obj->affected[j].modifier, buf2); found=1; } if (!found) sprintf(buf+strlen(buf)," None\n"); sprintf(buf+strlen(buf), "\n--------\n"); extract_obj(obj); fprintf(reportfile, buf); buf[0]='\0'; }/*for i=0...*/ fclose (reportfile); send_to_char ("report.obj printed\r\n",ch); }
/* * Display main menu. */ void oedit_disp_menu(struct descriptor_data *d) { char buf1[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; struct obj_data *obj; obj = OLC_OBJ(d); get_char_colors(d->character); clear_screen(d); /* * Build buffers for first part of menu. */ sprinttype(GET_OBJ_TYPE(obj), item_types, buf1, sizeof(buf1)); sprintbit(GET_OBJ_EXTRA(obj), extra_bits, buf2, sizeof(buf2)); /* * Build first half of menu. */ write_to_output(d, "-- Item number : [%s%d%s]\r\n" "%s1%s) Namelist : %s%s\r\n" "%s2%s) S-Desc : %s%s\r\n" "%s3%s) L-Desc :-\r\n%s%s\r\n" "%s4%s) A-Desc :-\r\n%s%s" "%s5%s) Type : %s%s\r\n" "%s6%s) Extra flags : %s%s\r\n", cyn, OLC_NUM(d), nrm, grn, nrm, yel, (obj->name && *obj->name) ? obj->name : "undefined", grn, nrm, yel, (obj->short_description && *obj->short_description) ? obj->short_description : "undefined", grn, nrm, yel, (obj->description && *obj->description) ? obj->description : "undefined", grn, nrm, yel, (obj->action_description && *obj->action_description) ? obj->action_description : "<not set>\r\n", grn, nrm, cyn, buf1, grn, nrm, cyn, buf2 ); /* * Send first half. */ /* * Build second half of menu. */ sprintbit(GET_OBJ_WEAR(obj), wear_bits, buf1, sizeof(buf1)); sprintbit(GET_OBJ_PERM(obj), affected_bits, buf2, sizeof(buf2)); write_to_output(d, "%s7%s) Wear flags : %s%s\r\n" "%s8%s) Weight : %s%d\r\n" "%s9%s) Cost : %s%d\r\n" "%sA%s) Cost/Day : %s%d\r\n" "%sB%s) Timer : %s%d\r\n" "%sC%s) Values : %s%d %d %d %d\r\n" "%sD%s) Applies menu\r\n" "%sE%s) Extra descriptions menu\r\n" "%sM%s) Min Level : %s%d\r\n" "%sP%s) Perm Affects: %s%s\r\n" "%sS%s) Script : %s%s\r\n" "%sQ%s) Quit\r\n" "Enter choice : ", grn, nrm, cyn, buf1, grn, nrm, cyn, GET_OBJ_WEIGHT(obj), grn, nrm, cyn, GET_OBJ_COST(obj), grn, nrm, cyn, GET_OBJ_RENT(obj), grn, nrm, cyn, GET_OBJ_TIMER(obj), grn, nrm, cyn, GET_OBJ_VAL(obj, 0), GET_OBJ_VAL(obj, 1), GET_OBJ_VAL(obj, 2), GET_OBJ_VAL(obj, 3), grn, nrm, grn, nrm, grn, nrm, cyn, GET_OBJ_LEVEL(obj), grn, nrm, cyn, buf2, grn, nrm, cyn, OLC_SCRIPT(d) ? "Set." : "Not Set.", grn, nrm ); OLC_MODE(d) = OEDIT_MAIN_MENU; }