/* Display main menu. */ static void sedit_disp_menu(struct descriptor_data *d) { char buf1[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; struct shop_data *shop; shop = OLC_SHOP(d); get_char_colors(d->character); clear_screen(d); sprintbit(S_NOTRADE(shop), trade_letters, buf1, sizeof(buf1)); sprintbit(S_BITVECTOR(shop), shop_bits, buf2, sizeof(buf2)); write_to_output(d, "-- Shop Number : [%s%d%s]\r\n" "%s0%s) Keeper : [%s%d%s] %s%s\r\n" "%s1%s) Open 1 : %s%4d%s %s2%s) Close 1 : %s%4d\r\n" "%s3%s) Open 2 : %s%4d%s %s4%s) Close 2 : %s%4d\r\n" "%s5%s) Sell rate : %s%1.2f%s %s6%s) Buy rate : %s%1.2f\r\n" "%s7%s) Keeper no item : %s%s\r\n" "%s8%s) Player no item : %s%s\r\n" "%s9%s) Keeper no cash : %s%s\r\n" "%sA%s) Player no cash : %s%s\r\n" "%sB%s) Keeper no buy : %s%s\r\n" "%sC%s) Buy success : %s%s\r\n" "%sD%s) Sell success : %s%s\r\n" "%sE%s) No Trade With : %s%s\r\n" "%sF%s) Shop flags : %s%s\r\n" "%sR%s) Rooms Menu\r\n" "%sP%s) Products Menu\r\n" "%sT%s) Accept Types Menu\r\n" "%sW%s) Copy Shop\r\n" "%sQ%s) Quit\r\n" "Enter Choice : ", cyn, OLC_NUM(d), nrm, grn, nrm, cyn, S_KEEPER(shop) == NOBODY ? -1 : mob_index[S_KEEPER(shop)].vnum, nrm, yel, S_KEEPER(shop) == NOBODY ? "None" : mob_proto[S_KEEPER(shop)].player.short_descr, grn, nrm, cyn, S_OPEN1(shop), nrm, grn, nrm, cyn, S_CLOSE1(shop), grn, nrm, cyn, S_OPEN2(shop), nrm, grn, nrm, cyn, S_CLOSE2(shop), grn, nrm, cyn, S_BUYPROFIT(shop), nrm, grn, nrm, cyn, S_SELLPROFIT(shop), grn, nrm, yel, S_NOITEM1(shop), grn, nrm, yel, S_NOITEM2(shop), grn, nrm, yel, S_NOCASH1(shop), grn, nrm, yel, S_NOCASH2(shop), grn, nrm, yel, S_NOBUY(shop), grn, nrm, yel, S_BUY(shop), grn, nrm, yel, S_SELL(shop), grn, nrm, cyn, buf1, grn, nrm, cyn, buf2, grn, nrm, grn, nrm, grn, nrm, grn, nrm, grn, nrm ); OLC_MODE(d) = SEDIT_MAIN_MENU; }
void trigedit_disp_menu(struct descriptor_data *d) { struct trig_data *trig = OLC_TRIG(d); char *attach_type; char trgtypes[256]; get_char_colors(d->character); clear_screen(d); if (trig->attach_type==OBJ_TRIGGER) { attach_type = "Objects"; sprintbit(GET_TRIG_TYPE(trig), otrig_types, trgtypes, sizeof(trgtypes)); } else if (trig->attach_type==WLD_TRIGGER) { attach_type = "Rooms"; sprintbit(GET_TRIG_TYPE(trig), wtrig_types, trgtypes, sizeof(trgtypes)); } else { attach_type = "Mobiles"; sprintbit(GET_TRIG_TYPE(trig), trig_types, trgtypes, sizeof(trgtypes)); } write_to_output(d, TRUE, #if defined(CLEAR_SCREEN) "^[[H^[[J" #endif "Trigger Editor [%s%d%s]\r\n\r\n" "%s1)%s Name : %s%s\r\n" "%s2)%s Intended for : %s%s\r\n" "%s3)%s Trigger types: %s%s\r\n" "%s4)%s Numberic Arg : %s%d\r\n" "%s5)%s Arguments : %s%s\r\n" "%s6)%s Commands:\r\n%s", grn, OLC_NUM(d), nrm, /* vnum on the title line */ grn, nrm, yel, GET_TRIG_NAME(trig), /* name */ grn, nrm, yel, attach_type, /* attach type */ grn, nrm, yel, trgtypes, /* greet/drop/etc */ grn, nrm, yel, trig->narg, /* numeric arg */ grn, nrm, yel, trig->arglist?trig->arglist:"", /* strict arg */ grn, nrm, cyn ); write_to_output(d, FALSE, "%s\r\n", OLC_STORAGE(d) /* the command list */ ); write_to_output(d, TRUE, "%sQ)%s Quit\r\n" "Enter Choice :", grn, nrm /* quit colors */ ); OLC_MODE(d) = TRIGEDIT_MAIN_MENU; }
/* List code by Ronald Evers. */ static void list_triggers(struct char_data *ch, zone_rnum rnum, trig_vnum vmin, trig_vnum vmax) { int i, bottom, top, counter = 0; char trgtypes[256]; /* Expect a minimum / maximum number if the rnum for the zone is NOWHERE. */ if (rnum != NOWHERE) { bottom = zone_table[rnum].bot; top = zone_table[rnum].top; } else { bottom = vmin; top = vmax; } /* Store the header for the room listing. */ send_to_char (ch, "Index VNum Trigger Name Type\r\n" "----- ------- --------------------------------------------- ---------\r\n"); /* Loop through the world and find each room. */ for (i = 0; i < top_of_trigt; i++) { /** Check to see if this room is one of the ones needed to be listed. **/ if ((trig_index[i]->vnum >= bottom) && (trig_index[i]->vnum <= top)) { counter++; send_to_char(ch, "%4d) [%s%5d%s] %s%-45.45s%s ", counter, QGRN, trig_index[i]->vnum, QNRM, QCYN, trig_index[i]->proto->name, QNRM); if (trig_index[i]->proto->attach_type == OBJ_TRIGGER) { sprintbit(GET_TRIG_TYPE(trig_index[i]->proto), otrig_types, trgtypes, sizeof(trgtypes)); send_to_char(ch, "obj %s%s%s\r\n", QYEL, trgtypes, QNRM); } else if (trig_index[i]->proto->attach_type==WLD_TRIGGER) { sprintbit(GET_TRIG_TYPE(trig_index[i]->proto), wtrig_types, trgtypes, sizeof(trgtypes)); send_to_char(ch, "wld %s%s%s\r\n", QYEL, trgtypes, QNRM); } else { sprintbit(GET_TRIG_TYPE(trig_index[i]->proto), trig_types, trgtypes, sizeof(trgtypes)); send_to_char(ch, "mob %s%s%s\r\n", QYEL, trgtypes, QNRM); } } } if (counter == 0) { if (rnum == NOWHERE) send_to_char(ch, "No triggers found from %d to %d\r\n", vmin, vmax); else send_to_char(ch, "No triggers found for zone #%d\r\n", zone_table[rnum].number); } }
void trigedit_disp_types(struct descriptor_data *d) { int i, columns = 0; const char **types; char bitbuf[MAX_STRING_LENGTH]; switch(OLC_TRIG(d)->attach_type) { case WLD_TRIGGER: types = wtrig_types; break; case OBJ_TRIGGER: types = otrig_types; break; case MOB_TRIGGER: default: types = trig_types; break; } get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_TRIG_TYPE_FLAGS; i++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, types[i], !(++columns % 2) ? "\r\n" : ""); } sprintbit(GET_TRIG_TYPE(OLC_TRIG(d)), types, bitbuf, sizeof(bitbuf)); write_to_output(d, "\r\nCurrent types : %s%s%s\r\nEnter type (0 to quit) : ", cyn, bitbuf, nrm); }
void trigedit_disp_types(struct descriptor_data *d) { int i, columns = 0; const char **types; switch(OLC_TRIG(d)->attach_type) { case WLD_TRIGGER: types = wtrig_types; break; case OBJ_TRIGGER: types = otrig_types; break; case MOB_TRIGGER: default: types = trig_types; break; } get_char_cols(d->character); #if defined(CLEAR_SCREEN) send_to_char("[H[J", d->character); #endif for (i = 0; i < NUM_TRIG_TYPE_FLAGS; i++) { sprintf(buf, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, types[i], !(++columns % 2) ? "\r\n" : ""); send_to_char(buf, d->character); } sprintbit(GET_TRIG_TYPE(OLC_TRIG(d)), types, buf1); sprintf(buf, "\r\nCurrent types : %s%s%s\r\nEnter type (0 to quit) : ", cyn, buf1, nrm); send_to_char(buf, d->character); }
void do_mob_report (struct char_data *ch) { struct char_data *mob; FILE *reportfile; int i; if (!(reportfile = fopen("report.mob", "w"))) { mlog("SYSERR: Mob report file unavailable."); send_to_char ("Report.mob could not be generated.\r\n",ch); return; } sprintf(buf, "MOBS\n----\n"); for (i=0; i<top_of_mobt;i++) { mob=read_mobile(i, REAL); char_to_room(mob, 0); sprintf(buf+strlen(buf), "[%5d] %s Spec Proc: ", GET_MOB_VNUM(mob), GET_NAME(mob)); if (mob_index[GET_MOB_RNUM(mob)].func!=NULL) get_spec_name(GET_MOB_RNUM(mob), buf2,'m'); else sprintf(buf2, "none"); sprintf(buf+strlen(buf), "%s\n",buf2); sprintf(buf+strlen(buf),mob->player.description); sprintf(buf+strlen(buf),"Difficulty: %d XP: %d HP: %d Mana: %d Gold %d\n", GET_DIFFICULTY(mob), GET_EXP(mob), GET_MAX_HIT(mob), GET_MAX_MANA(mob), GET_GOLD(mob)); sprintf(buf+strlen(buf),"Passive Defense: %d Damage Reduction: %d ", GET_PD(mob), GET_REDUCTION(mob)); sprintf(buf+strlen(buf), "Attack Type: %s\n", attack_hit_text[mob->mob_specials.attack_type].singular); sprintbit(MOB_FLAGS(mob), action_bits, buf2, sizeof(buf2)); sprintf(buf+strlen(buf),"Flags: %s\n", buf2); sprintbit(AFF_FLAGS(mob), affected_bits, buf2, sizeof(buf2)); sprintf(buf+strlen(buf),"Affects: %s\n\n-------\n", buf2); extract_char(mob); fprintf(reportfile, buf); buf[0]='\0'; }/*for i=0...*/ fclose (reportfile); send_to_char ("report.mob printed\r\n",ch); }
void JeditDispOptionMenu( Descriptor *d ) { get_char_cols( d->character ); for(unsigned int i = 0;i < JS::NUMBER_OPTIONS;++i) { d->send("%s%2d%s) %-20.20s %s", grn,(i+1),nrm,JS::js_options[i], ( (i%2) ? ("\r\n") : ("") )); } sprintbit(d->olc->jsTrig->option_flags,(const char**)JS::js_options,buf,", ",cyn,nrm); d->send("\r\n\r\nCurrent options: %s\r\nEnter type(0 to quit) : ", buf); OLC_MODE(d) = JEDIT_OPTION_FLAGS; }
void JeditDispAllowMenu( Descriptor *d ) { get_char_cols( d->character ); for(unsigned int i = 0;i < JS::NUM_JS_ALLOWS;++i) { d->send("%s%2d%s) %-20.20s %s", grn,(i+1),nrm,JS::js_allow[i], ( (i%2) ? ("\r\n") : ("") )); } sprintbit(d->olc->jsTrig->allowed_flags,(const char**)JS::js_allow,buf,", ",cyn,nrm); d->send("\r\nCurrent types: %s\r\nEnter type(0 to quit) : ", buf); OLC_MODE(d) = JEDIT_ALLOW_FLAGS; }
void JeditDispTypesMenu( Descriptor *d ) { get_char_cols( d->character ); for(unsigned int i = 0;i < JS::NUM_JS_TRIG_TYPES;++i) { d->send("%s%2d%s) %-30.30s %s", grn,(i+1),nrm,JS::js_trig_types[i], ( (i%2) ? ("\r\n") : ("") )); } sprintbit(d->olc->jsTrig->trigger_flags,(const char**)JS::js_trig_types,buf,", ",cyn,nrm); d->send("\r\nCurrent allow flags: %s\r\nEnter type(0 to quit) : ", buf); OLC_MODE(d) = JEDIT_TRIGGER_TYPES; }
/* generic fn for modifying a bitvector */ void olc_bitvector(int *bv, const char **names, char *arg) { int newbv, flagnum, remove = 0; char *this_name; skip_spaces(&arg); if (!*arg) { send_to_char("Flag list or flag modifiers required.\r\n", olc_ch); return; } /* determine if this is 'absolute' or 'relative' mode */ if (*arg == '+' || *arg == '-') newbv = *bv; else newbv = 0; while (*arg) { arg = one_argument(arg, buf); /* get next argument */ /* change to upper-case */ for (this_name = buf; *this_name; this_name++) CAP(this_name); /* determine if this is an add or a subtract */ if (*buf == '+' || *buf == '-') { this_name = buf + 1; if (*buf == '-') remove = TRUE; else remove = FALSE; } else { this_name = buf; remove = FALSE; } /* figure out which one we're dealing with */ if ((flagnum = search_block(this_name, names, TRUE)) < 0) { sprintf(buf2, "Unknown flag: %s\r\n", this_name); send_to_char(buf2, olc_ch); } else { if (remove) REMOVE_BIT(newbv, (1 << flagnum)); else SET_BIT(newbv, (1 << flagnum)); } } *bv = newbv; sprintbit(newbv, names, buf); sprintf(buf2, "Flags now set to: %s\r\n", buf); send_to_char(buf2, olc_ch); }
void JeditDispMenu( Descriptor *d ) { JSTrigger *jsTrig = d->olc->jsTrig; std::stringstream sBuffer; get_char_cols(d->character); char buf3[MAX_STRING_LENGTH]; sprintbit(jsTrig->trigger_flags, (const char**)JS::js_trig_types, buf , (", "), (yel), (nrm)); sprintbit(jsTrig->allowed_flags, (const char**)JS::js_allow , buf2, (", "), (yel), (nrm)); sprintbit(jsTrig->option_flags , (const char**)JS::js_options , buf3, (", "), (yel), (nrm)); std::string scriptName; const char *fileName = NULL; Script *script = NULL; if(jsTrig->scriptId == -1) scriptName = std::string(red) + bld + "<No Script>" + nrm; else if( (script = JSManager::get()->getScript(jsTrig->scriptId)) == NULL) scriptName = std::string(red) + bld + "<Invalid Script>" + nrm; else { scriptName = std::string(grn) + script->getMethodName() + nrm; fileName = JSManager::get()->getFunctionFilename(script->getMethodName());//This may be NULL! } sBuffer << "JavaScript View - Trigger #" << jsTrig->vnum << std::endl; sBuffer << grn << "1" << nrm << " Name : " << yel << jsTrig->name << nrm << std::endl; sBuffer << grn << "2" << nrm << " Option Flags : " << yel << buf3 << nrm << std::endl; sBuffer << grn << "3" << nrm << " Trigger Types : " << yel << buf << nrm << std::endl; sBuffer << grn << "4" << nrm << " Allowed Flags : " << yel << buf2 << nrm << std::endl; sBuffer << grn << "5" << nrm << " Arguments : " << yel << jsTrig->args << nrm << std::endl; sBuffer << grn << "6" << nrm << " Numeric Argument: " << yel << jsTrig->narg << nrm << std::endl; sBuffer << grn << "7" << nrm << " Script ID : " << yel << jsTrig->scriptId << nrm << " - " << grn << scriptName << " : " << red << (fileName == NULL ? "" : fileName) << nrm << std::endl; sBuffer << grn << "D" << nrm << " Delete : " << (jsTrig->deleted ? red : grn) << StringUtil::allUpper(StringUtil::yesNo(jsTrig->deleted)).c_str() << nrm << std::endl; sBuffer << grn << "Q" << nrm << " Quit" << std::endl; d->sendRaw( sBuffer.str().c_str() ); OLC_MODE(d) = JEDIT_MAIN_MENU; }
/* * 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; }
/* * Object perm flags. */ void oedit_disp_perm_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_AFF_FLAGS; counter++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm, affected_bits[counter], !(++columns % 2) ? "\r\n" : ""); } sprintbit(GET_OBJ_PERM(OLC_OBJ(d)), affected_bits, bits, sizeof(bits)); write_to_output(d, "\r\nObject permanent flags: %s%s%s\r\n" "Enter object perm flag (0 to quit) : ", cyn, bits, nrm); }
void sedit_no_trade_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int i, count = 0; get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_TRADERS; i++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, trade_letters[i], !(++count % 2) ? "\r\n" : ""); } sprintbit(S_NOTRADE(OLC_SHOP(d)), trade_letters, bits, sizeof(bits)); write_to_output(d, "\r\nCurrently won't trade with: %s%s%s\r\n" "Enter choice : ", cyn, bits, nrm); OLC_MODE(d) = SEDIT_NOTRADE; }
/* * Object wear flags. */ void oedit_disp_wear_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int counter, columns = 0; get_char_colors(d->character); clear_screen(d); for (counter = 0; counter < NUM_ITEM_WEARS; counter++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm, wear_bits[counter], !(++columns % 2) ? "\r\n" : ""); } sprintbit(GET_OBJ_WEAR(OLC_OBJ(d)), wear_bits, bits, sizeof(bits)); write_to_output(d, "\r\nWear flags: %s%s%s\r\n" "Enter wear flag, 0 to quit : ", cyn, bits, nrm); }
/* * Display affection flags menu. */ void medit_disp_aff_flags(struct descriptor_data *d) { int i, columns = 0; get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_AFF_FLAGS; i++) { sprintf(buf, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, affected_bits[i], !(++columns % 2) ? "\r\n" : ""); SEND_TO_Q(buf, d); } sprintbit(AFF_FLAGS(OLC_MOB(d)), affected_bits, buf1); sprintf(buf, "\r\nCurrent flags : %s%s%s\r\nEnter aff flags (0 to quit) : ", cyn, buf1, nrm); SEND_TO_Q(buf, d); }
/* * For container flags. */ void oedit_disp_container_flags_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; get_char_colors(d->character); clear_screen(d); sprintbit(GET_OBJ_VAL(OLC_OBJ(d), 1), container_bits, bits, sizeof(bits)); write_to_output(d, "%s1%s) CLOSEABLE\r\n" "%s2%s) PICKPROOF\r\n" "%s3%s) CLOSED\r\n" "%s4%s) LOCKED\r\n" "Container flags: %s%s%s\r\n" "Enter flag, 0 to quit : ", grn, nrm, grn, nrm, grn, nrm, grn, nrm, cyn, bits, nrm); }
void sedit_shop_flags_menu(struct descriptor_data *d) { char bits[MAX_STRING_LENGTH]; int i, count = 0; get_char_colors(d->character); clear_screen(d); for (i = 0; i < NUM_SHOP_FLAGS; i++) { write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, shop_bits[i], !(++count % 2) ? "\r\n" : ""); } sprintbit(S_BITVECTOR(OLC_SHOP(d)), shop_bits, bits, sizeof(bits)); write_to_output(d, "\r\nCurrent Shop Flags : %s%s%s\r\nEnter choice : ", cyn, bits, nrm); OLC_MODE(d) = SEDIT_SHOP_FLAGS; }
/* * For room flags. */ void wedit_disp_flag_menu(struct descriptor_data *d) { int counter, columns = 0; get_char_cols(d->character); #if defined(CLEAR_SCREEN) send_to_char("[H[J", d->character); #endif for (counter = 0; counter < NUM_ROOM_FLAGS; counter++) { sprintf(buf, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm, room_bits[counter], !(++columns % 2) ? "\r\n" : ""); send_to_char(buf, d->character); } sprintbit(OLC_WILD(d)->room_flags, room_bits, buf1); sprintf(buf, "\r\nRoom flags: %s%s%s\r\n" "Enter room flags, 0 to quit : ", cyn, buf1, nrm); send_to_char(buf, d->character); OLC_MODE(d) = WEDIT_FLAGS; }
/** * For the .list command. * * @param char_data *mob The thing to list. * @param bool detail If TRUE, provide additional details * @return char* The line to show (without a CRLF). */ char *list_one_mobile(char_data *mob, bool detail) { static char output[MAX_STRING_LENGTH]; char flags[MAX_STRING_LENGTH]; bitvector_t show_flags = MOB_BRING_A_FRIEND | MOB_SENTINEL | MOB_AGGRESSIVE | MOB_MOUNTABLE | MOB_ANIMAL | MOB_AQUATIC | MOB_NO_ATTACK | MOB_SPAWNED | MOB_CHAMPION | MOB_FAMILIAR | MOB_EMPIRE | MOB_CITYGUARD | MOB_GROUP | MOB_HARD | MOB_DPS | MOB_TANK | MOB_CASTER | MOB_VAMPIRE | MOB_HUMAN; if (detail) { if (IS_SET(MOB_FLAGS(mob), show_flags)) { sprintbit(MOB_FLAGS(mob) & show_flags, action_bits, flags, TRUE); } else { *flags = '\0'; } snprintf(output, sizeof(output), "[%5d] %s (%s) %s", GET_MOB_VNUM(mob), GET_SHORT_DESC(mob), level_range_string(GET_MIN_SCALE_LEVEL(mob), GET_MAX_SCALE_LEVEL(mob), 0), flags); } else { snprintf(output, sizeof(output), "[%5d] %s", GET_MOB_VNUM(mob), GET_SHORT_DESC(mob)); } return output; }
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; }
void list_object_zone (struct char_data *ch, int whichzone) { int i=0; int j=0; obj_vnum first_z_obj=0; /*vnum of first obj in zone list*/ obj_vnum last_z_obj=0; /*vnum of last obj in zone list */ int char_zone = ((GET_ROOM_VNUM(IN_ROOM(ch)))/100); /*initialize to current zone */ char *obuf = get_buffer(MAX_STRING_LENGTH); obuf[0]='\0'; if (whichzone > (-1)) char_zone = whichzone; /*see if specific zone was passed as arg*/ while (j!= char_zone) { first_z_obj++; j=(GET_OBJ_VNUM(&obj_proto[i])/100); i++; /* * some zones have 100+ rooms but not 100+ items/objs. * To find the needed objs/objects, * search backwards for previous zones w/them. */ if (j>char_zone) { if (char_zone>0) { char_zone--; first_z_obj=0; i=0; j=0; } else { extended_mudlog(NRM, SYSL_BUGS, TRUE, "olist looked for a zone < 0"); release_buffer(obuf); return; } } } first_z_obj --; last_z_obj=first_z_obj; while (j == char_zone) { j=(GET_OBJ_VNUM(&obj_proto[i])/100); last_z_obj++; i++; } if (first_z_obj<0) first_z_obj ++; for (i=first_z_obj;i<last_z_obj;i++) { sprintf(obuf+strlen(obuf),"[%5d] %-32s", GET_OBJ_VNUM(&obj_proto[i]), obj_proto[i].short_description); j=obj_proto[i].obj_flags.type_flag; sprintf(obuf+strlen(obuf)," %s ", item_types[(int)obj_proto[i].obj_flags.type_flag]); if ((j == ITEM_WORN) || (j== ITEM_ARMOR)) { sprintf(obuf+strlen(obuf)," (-%d AC 1) ",GET_OBJ_VAL(&obj_proto[i],0)); j=get_armor_ac (&obj_proto[i]); if (j!=0) sprintf(obuf + strlen(obuf), "(-%d AC 2)",j); } if (j==ITEM_WEAPON) { sprintf(obuf+strlen(obuf),"(Ave dam: %.1f) ", (((GET_OBJ_VAL(&obj_proto[i], 2) + 1) /2.0) * GET_OBJ_VAL(&obj_proto[i], 1))); j = get_weapon_dam(&obj_proto[i]); if (j!=0) sprintf(buf+strlen(buf), " +%d DAM ",j); } sprintbit(GET_OBJ_WEAR(&obj_proto[i]), wear_bits, obuf+strlen(obuf), sizeof(obuf)); sprintf(obuf+strlen(obuf),"\r\n"); } if (strlen(obuf)<5) send_to_char ("There are no objects in the zone you requested.\r\n",ch); else page_string (ch->desc,obuf,1); release_buffer(obuf); return; }
void quest_stat(struct char_data *ch, char argument[MAX_STRING_LENGTH]) { qst_rnum rnum; mob_rnum qmrnum; char buf[MAX_STRING_LENGTH]; char targetname[MAX_STRING_LENGTH]; if (GET_ADMLEVEL(ch) < ADMLVL_IMMORT) send_to_char(ch, "Huh!?!\r\n"); else if (!*argument) send_to_char(ch, "%s\r\n", quest_imm_usage); else if ((rnum = real_quest(atoi(argument))) == NOTHING ) send_to_char(ch, "That quest does not exist.\r\n"); else { sprintbit(QST_FLAGS(rnum), aq_flags, buf, sizeof(buf)); switch (QST_TYPE(rnum)) { case AQ_OBJ_FIND: case AQ_OBJ_RETURN: snprintf(targetname, sizeof(targetname), "%s", real_object(QST_TARGET(rnum)) == NOTHING ? "An unknown object" : obj_proto[real_object(QST_TARGET(rnum))].short_description); break; case AQ_ROOM_FIND: case AQ_ROOM_CLEAR: snprintf(targetname, sizeof(targetname), "%s", real_room(QST_TARGET(rnum)) == NOWHERE ? "An unknown room" : world[real_room(QST_TARGET(rnum))].name); break; case AQ_MOB_FIND: case AQ_MOB_KILL: case AQ_MOB_SAVE: snprintf(targetname, sizeof(targetname), "%s", real_mobile(QST_TARGET(rnum)) == NOBODY ? "An unknown mobile" : GET_NAME(&mob_proto[real_mobile(QST_TARGET(rnum))])); break; default: snprintf(targetname, sizeof(targetname), "Unknown"); break; } qmrnum = real_mobile(QST_MASTER(rnum)); send_to_char(ch, "VNum : [\ty%5d\tn], RNum: [\ty%5d\tn] -- Questmaster: [\ty%5d\tn] \ty%s\tn\r\n" "Name : \ty%s\tn\r\n" "Desc : \ty%s\tn\r\n" "Accept Message:\r\n\tc%s\tn" "Completion Message:\r\n\tc%s\tn" "Quit Message:\r\n\tc%s\tn" "Type : \ty%s\tn\r\n" "Target: \ty%d\tn \ty%s\tn, Quantity: \ty%d\tn\r\n" "Value : \ty%d\tn, Penalty: \ty%d\tn, Min Level: \ty%2d\tn, Max Level: \ty%2d\tn\r\n" "Flags : \tc%s\tn\r\n", QST_NUM(rnum), rnum, QST_MASTER(rnum) == NOBODY ? -1 : QST_MASTER(rnum), (qmrnum == NOBODY) ? "(Invalid vnum)" : GET_NAME(&mob_proto[(qmrnum)]), QST_NAME(rnum), QST_DESC(rnum), QST_INFO(rnum), QST_DONE(rnum), (QST_QUIT(rnum) && (str_cmp(QST_QUIT(rnum), "undefined") != 0) ? QST_QUIT(rnum) : "Nothing\r\n"), quest_types[QST_TYPE(rnum)], QST_TARGET(rnum) == NOBODY ? -1 : QST_TARGET(rnum), targetname, QST_QUANTITY(rnum), QST_POINTS(rnum), QST_PENALTY(rnum), QST_MINLEVEL(rnum), QST_MAXLEVEL(rnum), buf); if (QST_PREREQ(rnum) != NOTHING) send_to_char(ch, "Preq : [\ty%5d\tn] \ty%s\tn\r\n", QST_PREREQ(rnum) == NOTHING ? -1 : QST_PREREQ(rnum), QST_PREREQ(rnum) == NOTHING ? "" : real_object(QST_PREREQ(rnum)) == NOTHING ? "an unknown object" : obj_proto[real_object(QST_PREREQ(rnum))].short_description); if (QST_TYPE(rnum) == AQ_OBJ_RETURN) send_to_char(ch, "Mob : [\ty%5d\tn] \ty%s\tn\r\n", QST_RETURNMOB(rnum), real_mobile(QST_RETURNMOB(rnum)) == NOBODY ? "an unknown mob" : mob_proto[real_mobile(QST_RETURNMOB(rnum))].player.short_descr); if (QST_TIME(rnum) != -1) send_to_char(ch, "Limit : There is a time limit of %d turn%s to complete.\r\n", QST_TIME(rnum), QST_TIME(rnum) == 1 ? "" : "s"); else send_to_char(ch, "Limit : There is no time limit on this quest.\r\n"); send_to_char(ch, "Prior :"); if (QST_PREV(rnum) == NOTHING) send_to_char(ch, " \tyNone.\tn\r\n"); else send_to_char(ch, " [\ty%5d\tn] \tc%s\tn\r\n", QST_PREV(rnum), QST_DESC(real_quest(QST_PREV(rnum)))); send_to_char(ch, "Next :"); if (QST_NEXT(rnum) == NOTHING) send_to_char(ch, " \tyNone.\tn\r\n"); else send_to_char(ch, " [\ty%5d\tn] \tc%s\tn\r\n", QST_NEXT(rnum), QST_DESC(real_quest(QST_NEXT(rnum)))); } }
/* * Display main menu. */ void medit_disp_menu(struct descriptor_data *d) { struct char_data *mob; mob = OLC_MOB(d); get_char_colors(d->character); clear_screen(d); sprintf(buf, "-- Mob Number: [%s%d%s]\r\n" "%s1%s) Sex: %s%-7.7s%s %s2%s) Alias: %s%s\r\n" "%s3%s) S-Desc: %s%s\r\n" "%s4%s) L-Desc:-\r\n%s%s" "%s5%s) D-Desc:-\r\n%s%s" "%s6%s) Level: [%s%4d%s], %s7%s) Alignment: [%s%4d%s]\r\n" "%s8%s) HR//SKY: [%s%4d%s], %s9%s) DR//FD: [%s%4d%s]\r\n" "%sA%s) NumDamDice: [%s%4d%s], %sB%s) SizeDamDice: [%s%4d%s]\r\n" "%sC%s) Num HP Dice: [%s%4d%s], %sD%s) Size HP Dice: [%s%4d%s], %sE%s) HP Bonus: [%s%5d%s]\r\n" "%sF%s) Armor Class: [%s%4d%s], %sG%s) Exp: [%s%9d%s], %sH%s) Gold: [%s%8d%s]\r\n", cyn, OLC_NUM(d), nrm, grn, nrm, yel, genders[(int)GET_SEX(mob)], nrm, grn, nrm, yel, GET_ALIAS(mob), grn, nrm, yel, GET_SDESC(mob), grn, nrm, yel, GET_LDESC(mob), grn, nrm, yel, GET_DDESC(mob), grn, nrm, cyn, GET_LEVEL(mob), nrm, grn, nrm, cyn, GET_ALIGNMENT(mob), nrm, grn, nrm, cyn, GET_HITROLL(mob), nrm, grn, nrm, cyn, GET_DAMROLL(mob), nrm, grn, nrm, cyn, GET_NDD(mob), nrm, grn, nrm, cyn, GET_SDD(mob), nrm, grn, nrm, cyn, GET_HIT(mob), nrm, grn, nrm, cyn, GET_MANA(mob), nrm, grn, nrm, cyn, GET_MOVE(mob), nrm, grn, nrm, cyn, GET_AC(mob), nrm, grn, nrm, cyn, GET_EXP(mob), nrm, grn, nrm, cyn, convert_all_to_copper(mob), nrm ); SEND_TO_Q(buf, d); sprintbit(MOB_FLAGS(mob), action_bits, buf1); sprintbit(AFF_FLAGS(mob), affected_bits, buf2); sprintf(buf, "%sI%s) Position : %s%s\r\n" "%sJ%s) Default : %s%s\r\n" "%sK%s) Attack : %s%s\r\n" "%sN%s) Class : %s%s\r\n" "%sR%s) Race : %s%s\r\n" "%sS%s) Size : %s%d\r\n" "%sW%s) Weight : %s%d\r\n" "%sL%s) NPC Flags : %s%s\r\n" "%sM%s) AFF Flags : %s%s\r\n" #if CONFIG_OASIS_MPROG "%sP%s) Mob Progs : %s%s\r\n" #endif "%sQ%s) Quit\r\n" "Enter choice : ", grn, nrm, yel, position_types[(int)GET_POS(mob)], grn, nrm, yel, position_types[(int)GET_DEFAULT_POS(mob)], grn, nrm, yel, attack_hit_text[GET_ATTACK(mob)].singular, grn, nrm, cyn, npc_class_types[(int)GET_CLASS(mob)], grn, nrm, cyn, npc_race_types[(int)GET_RACE(mob)], grn, nrm, cyn, GET_MOB_SIZE(mob), grn, nrm, cyn, GET_MOB_WEIGHT(mob), grn, nrm, cyn, buf1, grn, nrm, cyn, buf2, #if CONFIG_OASIS_MPROG grn, nrm, cyn, (OLC_MPROGL(d) ? "Set." : "Not Set."), #endif grn, nrm ); SEND_TO_Q(buf, d); OLC_MODE(d) = MEDIT_MAIN_MENU; }