/* * Redraw the rarity graph with a different number of rolls * per level. This changes the sqrt(n) poisson error. * (Otherwise really rare items don't get very good graphs.) */ static void wiz_statistics(object_type *o_ptr) { u32b test_roll = 100000; cptr p = "Enter number of items to roll: "; char tmp_val[80]; sprintf(tmp_val, "%ld", (long) test_roll); if (get_string(p, tmp_val, 10)) test_roll = atol(tmp_val); test_roll = MAX(1, test_roll); /* Display the rarity graph */ prt_alloc(o_ptr, 2, 0, test_roll); }
/*! * @brief アイテムの詳細ステータスを表示する / * Change various "permanent" player variables. * @param o_ptr 詳細を表示するアイテム情報の参照ポインタ * @return なし * @details * Wizard routines for creating objects -RAK- * And for manipulating them! -Bernd- * * This has been rewritten to make the whole procedure * of debugging objects much easier and more comfortable. * * The following functions are meant to play with objects: * Create, modify, roll for them (for statistic purposes) and more. * The original functions were by RAK. * The function to show an item's debug information was written * by David Reeve Sward <*****@*****.**>. * Bernd ([email protected]) * * Here are the low-level functions * - wiz_display_item() * display an item's debug-info * - wiz_create_itemtype() * specify tval and sval (type and subtype of object) * - wiz_tweak_item() * specify pval, +AC, +tohit, +todam * Note that the wizard can leave this function anytime, * thus accepting the default-values for the remaining values. * pval comes first now, since it is most important. * - wiz_reroll_item() * apply some magic to the item or turn it into an artifact. * - wiz_roll_item() * Get some statistics about the rarity of an item: * We create a lot of fake items and see if they are of the * same type (tval and sval), then we compare pval and +AC. * If the fake-item is better or equal it is counted. * Note that cursed items that are better or equal (absolute values) * are counted, too. * HINT: This is *very* useful for balancing the game! * - wiz_quantity_item() * change the quantity of an item, but be sane about it. * * And now the high-level functions * - do_cmd_wiz_play() * play with an existing object * - wiz_create_item() * create a new object * * Note -- You do not have to specify "pval" and other item-properties * directly. Just apply magic until you are satisfied with the item. * * Note -- For some items (such as wands, staffs, some rings, etc), you * must apply magic, or you will get "broken" or "uncharged" objects. * * Note -- Redefining artifacts via "do_cmd_wiz_play()" may destroy * the artifact. Be careful. * * Hack -- this function will allow you to create multiple artifacts. * This "feature" may induce crashes or other nasty effects. * Just display an item's properties (debug-info) * Originally by David Reeve Sward <*****@*****.**> * Verbose item flags by -Bernd- */ static void wiz_display_item(object_type *o_ptr) { int i, j = 13; u32b flgs[TR_FLAG_SIZE]; char buf[256]; /* Extract the flags */ object_flags(o_ptr, flgs); /* Clear the screen */ for (i = 1; i <= 23; i++) prt("", i, j - 2); prt_alloc(o_ptr->tval, o_ptr->sval, 1, 0); /* Describe fully */ object_desc(buf, o_ptr, OD_STORE); prt(buf, 2, j); prt(format("kind = %-5d level = %-4d tval = %-5d sval = %-5d", o_ptr->k_idx, k_info[o_ptr->k_idx].level, o_ptr->tval, o_ptr->sval), 4, j); prt(format("number = %-3d wgt = %-6d ac = %-5d damage = %dd%d", o_ptr->number, o_ptr->weight, o_ptr->ac, o_ptr->dd, o_ptr->ds), 5, j); prt(format("pval = %-5d toac = %-5d tohit = %-4d todam = %-4d", o_ptr->pval, o_ptr->to_a, o_ptr->to_h, o_ptr->to_d), 6, j); prt(format("name1 = %-4d name2 = %-4d cost = %ld", o_ptr->name1, o_ptr->name2, (long)object_value_real(o_ptr)), 7, j); prt(format("ident = %04x xtra1 = %-4d xtra2 = %-4d timeout = %-d", o_ptr->ident, o_ptr->xtra1, o_ptr->xtra2, o_ptr->timeout), 8, j); prt(format("xtra3 = %-4d xtra4 = %-4d xtra5 = %-4d cursed = %-d", o_ptr->xtra3, o_ptr->xtra4, o_ptr->xtra5, o_ptr->curse_flags), 9, j); prt("+------------FLAGS1------------+", 10, j); prt("AFFECT........SLAY........BRAND.", 11, j); prt(" mf cvae xsqpaefc", 12, j); prt("siwdccsossidsahanvudotgddhuoclio", 13, j); prt("tnieohtctrnipttmiinmrrnrrraiierl", 14, j); prt("rtsxnarelcfgdkcpmldncltggpksdced", 15, j); prt_binary(flgs[0], 16, j); prt("+------------FLAGS2------------+", 17, j); prt("SUST....IMMUN.RESIST............", 18, j); prt(" reaefctrpsaefcpfldbc sn ", 19, j); prt("siwdcciaclioheatcliooeialoshtncd", 20, j); prt("tnieohdsierlrfraierliatrnnnrhehi", 21, j); prt("rtsxnaeydcedwlatdcedsrekdfddrxss", 22, j); prt_binary(flgs[1], 23, j); prt("+------------FLAGS3------------+", 10, j+32); prt("fe cnn t stdrmsiiii d ab ", 11, j+32); prt("aa aoomywhs lleeieihgggg rtgl ", 12, j+32); prt("uu utmacaih eielgggonnnnaaere ", 13, j+32); prt("rr reanurdo vtieeehtrrrrcilas ", 14, j+32); prt("aa algarnew ienpsntsaefctnevs ", 15, j+32); prt_binary(flgs[2], 16, j+32); prt("+------------FLAGS4------------+", 17, j+32); prt("KILL....ESP......... ", 18, j+32); prt("aeud tghaud tgdhegnu ", 19, j+32); prt("nvneoriunneoriruvoon ", 20, j+32); prt("iidmroamidmroagmionq ", 21, j+32); prt("mlenclnmmenclnnnldlu ", 22, j+32); prt_binary(flgs[3], 23, j+32); }