}
+#define K_MAX_DEPTH 110
+
/*
* Output a rarity graph for a type of object.
*/
static void prt_alloc(byte tval, byte sval, int row, int col)
{
int i, j;
- int lev;
int home = 0;
- u32b maxd = 1, maxr = 1, maxt = 1;
- u32b rarity[MAX_DEPTH];
- u32b total[MAX_DEPTH];
- u32b display[20];
+ u32b maxr = 1, maxt = 1, ratio;
+ u32b rarity[K_MAX_DEPTH];
+ u32b total[K_MAX_DEPTH];
+ s32b maxd = 1, display[22];
byte c = TERM_WHITE;
cptr r = "+--common--+";
object_kind *k_ptr;
alloc_entry *table = alloc_kind_table;
/* Wipe the tables */
- (void)C_WIPE(rarity, MAX_DEPTH, u32b);
- (void)C_WIPE(total, MAX_DEPTH, u32b);
- (void)C_WIPE(display, 20, u32b);
+ (void)C_WIPE(rarity, K_MAX_DEPTH, u32b);
+ (void)C_WIPE(total, K_MAX_DEPTH, u32b);
+ (void)C_WIPE(display, 22, s32b);
/* Scan all entries */
- for (i = 0; i < MAX_DEPTH; i++)
+ for (i = 0; i < K_MAX_DEPTH; i++)
{
- /* Base level */
- lev = ((i * (GREAT_OBJ - 1)) + (1 + i * 5433L / 1000)) / GREAT_OBJ;
-
+ int total_frac = 0;
for (j = 0; j < alloc_kind_size; j++)
{
- /* Objects are sorted by depth */
- if (table[j].level > lev) break;
+ int prob = 0;
+
+ if (table[j].level <= i)
+ {
+ prob = table[j].prob1 * GREAT_OBJ * K_MAX_DEPTH;
+ }
+ else if (table[j].level - 1 > 0)
+ {
+ prob = table[j].prob1 * i * K_MAX_DEPTH / (table[j].level - 1);
+ }
/* Acquire this kind */
k_ptr = &k_info[table[j].index];
/* Accumulate probabilities */
- total[i] += table[j].prob1;
+ total[i] += prob / (GREAT_OBJ * K_MAX_DEPTH);
+ total_frac += prob % (GREAT_OBJ * K_MAX_DEPTH);
/* Accumulate probabilities */
if ((k_ptr->tval == tval) && (k_ptr->sval == sval))
{
home = k_ptr->level;
- rarity[i] += table[j].prob1;
+ rarity[i] += prob;
}
}
+ total[i] += total_frac / (GREAT_OBJ * K_MAX_DEPTH);
}
/* Find maxima */
- for (i = 0; i < MAX_DEPTH; i++)
+ for (i = 0; i < K_MAX_DEPTH; i++)
{
if (rarity[i] > maxr) maxr = rarity[i];
if (total[i] > maxt) maxt = total[i];
}
+ if (maxr / (GREAT_OBJ * K_MAX_DEPTH) != 0)
+ ratio = maxt / (maxr / (GREAT_OBJ * K_MAX_DEPTH));
+ else
+ ratio = 99999L;
+
/* Simulate a log graph */
- if (maxt / maxr > 32)
+ if (ratio > 1000)
{
c = TERM_L_WHITE;
r = "+-uncommon-+";
}
- if (maxt / maxr > 1024)
+ if (ratio > 3000)
{
c = TERM_SLATE;
r = "+---rare---+";
}
- if (maxt / maxr > 32768L)
+ if (ratio > 32768L)
{
c = TERM_L_DARK;
- r = "+--unique--+";
+ r = "+-VeryRare-+";
}
/* Calculate probabilities for each range */
- for (i = 0; i < 20; i++)
+ for (i = 0; i < 22; i++)
{
/* Shift the values into view */
- for (j = i * MAX_DEPTH / 20; j < (i + 1) * MAX_DEPTH / 20; j++)
+
+ int possibility = 0;
+ for (j = i * K_MAX_DEPTH / 22; j < (i + 1) * K_MAX_DEPTH / 22; j++)
+ possibility += rarity[j] * (100 * maxt / total[j]);
+
+ possibility = possibility / maxr;
+
+ /* display[i] = log_{sqrt(2)}(possibility) */
+ display[i] = 0;
+ while (possibility)
{
- display[i] += rarity[j] * maxt * 10 / total[j];
+ display[i]++;
+ possibility = possibility * 1000 / 1414;
}
- /* Correct proportions */
- display[i] /= maxr;
-
/* Track maximum */
if (display[i] > maxd) maxd = display[i];
}
/* Normalize */
- for (i = 0; i < 20; i++)
+ if (maxd > 10) for (i = 0; i < 22; i++)
{
- display[i] = display[i] * 10 / maxd;
+ display[i] = display[i] - maxd + 10;
}
/* Graph the rarities */
- for (i = 0; i < 20; i++)
+ for (i = 0; i < 22; i++)
{
Term_putch(col, row + i + 1, TERM_WHITE, '|');
+ prt(format("%d", (i * K_MAX_DEPTH / 220) % 10), row + i + 1, col);
+
+ if (display[i] <= 0)
+ continue;
+
/* Note the level */
- if ((i * MAX_DEPTH / 20 <= home) && (home < (i + 1) * MAX_DEPTH / 20))
+ if ((i * K_MAX_DEPTH / 22 <= home) && (home < (i + 1) * K_MAX_DEPTH / 22))
{
c_prt(TERM_RED, format("%.*s", display[i], "**********"), row + i + 1, col + 1);
}
/* Make it look nice */
prt(r, row, col);
-
- Term_putch(col, row + 2, TERM_WHITE, '6');
-
- Term_putch(col, row + 8, TERM_WHITE, 'A');
- Term_putch(col, row + 9, TERM_WHITE, 'L');
- Term_putch(col, row + 10, TERM_WHITE, 'L');
- Term_putch(col, row + 11, TERM_WHITE, 'O');
- Term_putch(col, row + 12, TERM_WHITE, 'C');
-
- prt("+", row + 21, col);
}
/* Clear the screen */
for (i = 1; i <= 23; i++) prt("", i, j - 2);
- prt_alloc(o_ptr->tval, o_ptr->sval, 2, 0);
+ prt_alloc(o_ptr->tval, o_ptr->sval, 1, 0);
/* Describe fully */
object_desc_store(buf, o_ptr, TRUE, 3);
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",
- o_ptr->xtra3, o_ptr->xtra4, o_ptr->xtra5), 9, 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(" mr cvae xsqpaefc", 12, j);
- prt("siwdccsissidsahanvudotgddhuoclio", 13, j);
- prt("tnieohtrtrnipttmiinmrrnrrraiierl", 14, j);
- prt("rtsxnarylcfgdkcpmldncltggpksdced", 15, j);
+ prt(" mf cvae xsqpaefc", 12, j);
+ prt("siwdccsossidsahanvudotgddhuoclio", 13, j);
+ prt("tnieohtctrnipttmiinmrrnrrraiierl", 14, j);
+ prt("rtsxnarelcfgdkcpmldncltggpksdced", 15, j);
prt_binary(f1, 16, j);
prt("+------------FLAGS2------------+", 17, j);
prt("SUST....IMMUN.RESIST............", 18, j);
- prt(" aefctrpsaefcpfldbc sn ", 19, j);
- prt("siwdcc clioheatcliooeialoshtncd", 20, j);
- prt("tnieoh ierlrfraierliatrnnnrhehi", 21, j);
- prt("rtsxna..dcedwlatdcedsrekdfddrxss", 22, j);
+ prt(" r aefctrpsaefcpfldbc sn ", 19, j);
+ prt("siwdcci clioheatcliooeialoshtncd", 20, j);
+ prt("tnieohd ierlrfraierliatrnnnrhehi", 21, j);
+ prt("rtsxnae.dcedwlatdcedsrekdfddrxss", 22, j);
prt_binary(f2, 23, j);
prt("+------------FLAGS3------------+", 10, j+32);
- prt("fe cnn t i stdrmsiiii d abchp", 11, j+32);
- prt("aa aoomyehsnlleeieihgggg rtgluvr", 12, j+32);
- prt("uu utmacaihseielgggonnnnaaerercc", 13, j+32);
- prt("rr reanusdotvtieeehtrrrrcilassuu", 14, j+32);
- prt("aa algaryewaienpsntsaefctnevserr", 15, 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(f3, 16, j+32);
}
{ TV_ARCANE_BOOK, "Arcane Spellbook" },
{ TV_ENCHANT_BOOK, "Craft Spellbook"},
{ TV_DAEMON_BOOK, "Daemon Spellbook"},
+ { TV_HAJA_BOOK, "nanka Spellbook"},
{ TV_MUSIC_BOOK, "Music Spellbook" },
{ TV_HISSATSU_BOOK, "Book of Kendo" },
{ TV_PARCHEMENT, "Parchement" },
/* Create the item */
object_prep(q_ptr, k_idx);
- if (k_info[k_idx].flags3 & TR3_INSTA_ART)
+ if (k_info[k_idx].gen_flags & TRG_INSTA_ART)
{
int i;
static void do_cmd_wiz_cure_all(void)
{
/* Remove curses */
- (void)remove_all_curse();
+// (void)remove_all_curse();
/* Restore stats */
(void)res_stat(A_STR);
if (!dun_level) dungeon_type = 0;
p_ptr->inside_arena = FALSE;
- leaving_quest = p_ptr->inside_quest;
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- (quest[leaving_quest].flags & QUEST_FLAG_ONCE) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (record_fix_quest)
- do_cmd_write_nikki(NIKKI_FIX_QUEST_F, leaving_quest, NULL);
- }
+ leave_quest_check();
if (record_stair) do_cmd_write_nikki(NIKKI_WIZ_TELE,0,NULL);
for (i = 0; i < num; i++)
{
- (void)summon_specific(0, py, px, dun_level, 0, TRUE, FALSE, FALSE, TRUE, FALSE);
+ (void)summon_specific(0, py, px, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
}
}
*
* XXX XXX XXX This function is rather dangerous
*/
-static void do_cmd_wiz_named(int r_idx, bool slp)
+static void do_cmd_wiz_named(int r_idx)
{
int i, x, y;
if (!cave_empty_bold(y, x)) continue;
/* Place it (allow groups) */
- if (place_monster_aux(y, x, r_idx, slp, TRUE, FALSE, FALSE, FALSE, FALSE)) break;
+ if (place_monster_aux(0, y, x, r_idx, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP))) break;
}
}
*
* XXX XXX XXX This function is rather dangerous
*/
-static void do_cmd_wiz_named_friendly(int r_idx, bool slp)
+static void do_cmd_wiz_named_friendly(int r_idx)
{
- (void) summon_named_creature(py, px, r_idx, slp, TRUE, TRUE, TRUE);
+ (void) summon_named_creature(0, py, px, r_idx, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP | PM_FORCE_PET));
}
/* Summon _friendly_ named monster */
case 'N':
- do_cmd_wiz_named_friendly(command_arg, TRUE);
+ do_cmd_wiz_named_friendly(command_arg);
break;
/* Summon Named Monster */
case 'n':
- do_cmd_wiz_named(command_arg, TRUE);
+ do_cmd_wiz_named(command_arg);
break;
/* Object playing routines */