X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fwizard2.c;h=27fa4b1a992bffab6dc49a4783a08a1c75056bfa;hb=d325f1529d9b8662add63886c586d86985ea7990;hp=22f040034b582022987c4576a21353c6074a7c75;hpb=24824505a56a73db0609c79be27e2c91d87f9ba0;p=hengband%2Fhengband.git diff --git a/src/wizard2.c b/src/wizard2.c index 22f040034..27fa4b1a9 100644 --- a/src/wizard2.c +++ b/src/wizard2.c @@ -108,17 +108,7 @@ static bool wiz_dimension_door(void) if (!tgt_pt(&x, &y)) return FALSE; - if (!cave_teleportable_bold(y, x, TELEPORT_ALLOW_DEEP | TELEPORT_ALLOW_OBJECT)) - { -#ifdef JP -msg_print("ÀºÎ¤«¤éʪ¼Á³¦¤ËÌá¤ë»þ¤¦¤Þ¤¯¤¤¤«¤Ê¤«¤Ã¤¿¡ª"); -#else - msg_print("You fail to exit the astral plane correctly!"); -#endif - - teleport_player(10); - } - else teleport_player_to(y, x, FALSE); + teleport_player_to(y, x, TELEPORT_NONMAGICAL); return (TRUE); } @@ -128,10 +118,21 @@ msg_print(" * Create the artifact of the specified number -- DAN * */ -static void wiz_create_named_art(int a_idx) +static void wiz_create_named_art(void) { + char tmp_val[10] = ""; + int a_idx; + + /* Query */ + if (!get_string("Artifact ID:", tmp_val, 3)) return; + + /* Extract */ + a_idx = atoi(tmp_val); + if(a_idx < 0) a_idx = 0; + if(a_idx >= max_a_idx) a_idx = 0; + /* Create the artifact */ - create_named_art(a_idx, py, px); + (void)create_named_art(a_idx, py, px); /* All done */ msg_print("Allocated."); @@ -161,7 +162,7 @@ static void do_cmd_summon_horde(void) while (--attempts) { scatter(&wy, &wx, py, px, 3, 0); - if (cave_naked_bold(wy, wx)) break; + if (cave_empty_bold(wy, wx)) break; } (void)alloc_horde(wy, wx); @@ -339,6 +340,39 @@ static void prt_alloc(byte tval, byte sval, int row, int col) prt(r, row, col); } +static void do_cmd_wiz_reset_class(void) +{ + int tmp_int; + char tmp_val[160]; + char ppp[80]; + + /* Prompt */ + sprintf(ppp, "Class (0-%d): ", MAX_CLASS - 1); + + /* Default */ + sprintf(tmp_val, "%d", p_ptr->pclass); + + /* Query */ + if (!get_string(ppp, tmp_val, 2)) return; + + /* Extract */ + tmp_int = atoi(tmp_val); + + /* Verify */ + if (tmp_int < 0 || tmp_int >= MAX_CLASS) return; + + /* Save it */ + p_ptr->pclass = tmp_int; + + /* Redraw inscription */ + p_ptr->window |= (PW_PLAYER); + + /* {.} and {$} effect p_ptr->warning and TRC_TELEPORT_SELF */ + p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS); + + update_stuff(); +} + /* * Hack -- Teleport to the target @@ -349,7 +383,7 @@ static void do_cmd_wiz_bamf(void) if (!target_who) return; /* Teleport to the target */ - teleport_player_to(target_row, target_col, FALSE); + teleport_player_to(target_row, target_col, TELEPORT_NONMAGICAL); } @@ -561,7 +595,7 @@ static void wiz_display_item(object_type *o_ptr) prt(buf, 2, j); prt(format("kind = %-5d level = %-4d tval = %-5d sval = %-5d", - o_ptr->k_idx, get_object_level(o_ptr), + 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", @@ -659,11 +693,12 @@ static tval_desc tvals[] = { TV_DEATH_BOOK, "Death Spellbook" }, { TV_TRUMP_BOOK, "Trump Spellbook" }, { TV_ARCANE_BOOK, "Arcane Spellbook" }, - { TV_ENCHANT_BOOK, "Craft Spellbook"}, + { TV_CRAFT_BOOK, "Craft Spellbook"}, { TV_DAEMON_BOOK, "Daemon Spellbook"}, { TV_CRUSADE_BOOK, "Crusade Spellbook"}, { TV_MUSIC_BOOK, "Music Spellbook" }, { TV_HISSATSU_BOOK, "Book of Kendo" }, + { TV_HEX_BOOK, "Hex Spellbook" }, { TV_PARCHMENT, "Parchment" }, { TV_WHISTLE, "Whistle" }, { TV_SPIKE, "Spikes" }, @@ -825,7 +860,7 @@ static void wiz_tweak_item(object_type *o_ptr) /* Hack -- leave artifacts alone */ - if (artifact_p(o_ptr) || o_ptr->art_name) return; + if (object_is_artifact(o_ptr)) return; p = "Enter new 'pval' setting: "; sprintf(tmp_val, "%d", o_ptr->pval); @@ -867,7 +902,7 @@ static void wiz_reroll_item(object_type *o_ptr) /* Hack -- leave artifacts alone */ - if (artifact_p(o_ptr) || o_ptr->art_name) return; + if (object_is_artifact(o_ptr)) return; /* Get local object */ @@ -887,7 +922,7 @@ static void wiz_reroll_item(object_type *o_ptr) if (!get_com("[a]ccept, [w]orthless, [c]ursed, [n]ormal, [g]ood, [e]xcellent, [s]pecial? ", &ch, FALSE)) { /* Preserve wizard-generated artifacts */ - if (artifact_p(q_ptr)) + if (object_is_fixed_artifact(q_ptr)) { a_info[q_ptr->name1].cur_num = 0; q_ptr->name1 = 0; @@ -905,7 +940,7 @@ static void wiz_reroll_item(object_type *o_ptr) } /* Preserve wizard-generated artifacts */ - if (artifact_p(q_ptr)) + if (object_is_fixed_artifact(q_ptr)) { a_info[q_ptr->name1].cur_num = 0; q_ptr->name1 = 0; @@ -955,7 +990,7 @@ static void wiz_reroll_item(object_type *o_ptr) apply_magic(q_ptr, dun_level, AM_GOOD | AM_GREAT | AM_SPECIAL); /* Failed to create artifact; make a random one */ - if (!artifact_p(q_ptr) && !q_ptr->art_name) create_artifact(q_ptr, FALSE); + if (!object_is_artifact(q_ptr)) create_artifact(q_ptr, FALSE); break; } } @@ -1015,7 +1050,7 @@ static void wiz_statistics(object_type *o_ptr) /* XXX XXX XXX Mega-Hack -- allow multiple artifacts */ - if (artifact_p(o_ptr)) a_info[o_ptr->name1].cur_num = 0; + if (object_is_fixed_artifact(o_ptr)) a_info[o_ptr->name1].cur_num = 0; /* Interact */ @@ -1049,7 +1084,7 @@ static void wiz_statistics(object_type *o_ptr) break; } - sprintf(tmp_val, "%ld", test_roll); + sprintf(tmp_val, "%ld", (long int)test_roll); if (get_string(p, tmp_val, 10)) test_roll = atol(tmp_val); test_roll = MAX(1, test_roll); @@ -1097,7 +1132,7 @@ static void wiz_statistics(object_type *o_ptr) /* XXX XXX XXX Mega-Hack -- allow multiple artifacts */ - if (artifact_p(q_ptr)) a_info[q_ptr->name1].cur_num = 0; + if (object_is_fixed_artifact(q_ptr)) a_info[q_ptr->name1].cur_num = 0; /* Test for the same tval and sval. */ @@ -1149,7 +1184,7 @@ static void wiz_statistics(object_type *o_ptr) /* Hack -- Normally only make a single artifact */ - if (artifact_p(o_ptr)) a_info[o_ptr->name1].cur_num = 1; + if (object_is_fixed_artifact(o_ptr)) a_info[o_ptr->name1].cur_num = 1; } @@ -1164,7 +1199,7 @@ static void wiz_quantity_item(object_type *o_ptr) /* Never duplicate artifacts */ - if (artifact_p(o_ptr) || o_ptr->art_name) return; + if (object_is_artifact(o_ptr)) return; /* Store old quantity. -LM- */ tmp_qnt = o_ptr->number; @@ -1400,7 +1435,7 @@ static void wiz_create_item(void) if (a_info[i].sval != k_info[k_idx].sval) continue; /* Create this artifact */ - create_named_art(i, py, px); + (void)create_named_art(i, py, px); /* All done */ msg_print("Allocated(INSTA_ART)."); @@ -1443,14 +1478,27 @@ static void do_cmd_wiz_cure_all(void) (void)restore_level(); /* Heal the player */ - p_ptr->chp = p_ptr->mhp; - p_ptr->chp_frac = 0; + if (p_ptr->chp < p_ptr->mhp) + { + p_ptr->chp = p_ptr->mhp; + p_ptr->chp_frac = 0; + + /* Redraw */ + p_ptr->redraw |= (PR_HP); + + /* Window stuff */ + p_ptr->window |= (PW_PLAYER); + } /* Restore mana */ if (p_ptr->csp < p_ptr->msp) { p_ptr->csp = p_ptr->msp; p_ptr->csp_frac = 0; + + p_ptr->redraw |= (PR_MANA); + p_ptr->window |= (PW_PLAYER); + p_ptr->window |= (PW_SPELL); } /* Cure stuff */ @@ -1466,9 +1514,6 @@ static void do_cmd_wiz_cure_all(void) /* No longer hungry */ (void)set_food(PY_FOOD_MAX - 1); - - /* Redraw everything */ - do_cmd_redraw(); } @@ -1637,14 +1682,20 @@ static void do_cmd_wiz_zap(void) /* Paranoia -- Skip dead monsters */ if (!m_ptr->r_idx) continue; + /* Skip the mount */ + if (i == p_ptr->riding) continue; + /* Delete nearby monsters */ if (m_ptr->cdis <= MAX_SIGHT) { - if (i == p_ptr->riding) + if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname) { - rakuba(-1, FALSE); - p_ptr->redraw |= (PR_EXTRA); + char m_name[80]; + + monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE); + do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name); } + delete_monster_idx(i); } } @@ -1666,10 +1717,15 @@ static void do_cmd_wiz_zap_all(void) /* Paranoia -- Skip dead monsters */ if (!m_ptr->r_idx) continue; - if (i == p_ptr->riding) + /* Skip the mount */ + if (i == p_ptr->riding) continue; + + if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname) { - rakuba(-1, FALSE); - p_ptr->redraw |= (PR_EXTRA); + char m_name[80]; + + monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE); + do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name); } /* Delete this monster */ @@ -1678,6 +1734,78 @@ static void do_cmd_wiz_zap_all(void) } +/* + * Create desired feature + */ +static void do_cmd_wiz_create_feature(void) +{ + static int prev_feat = 0; + static int prev_mimic = 0; + cave_type *c_ptr; + feature_type *f_ptr; + char tmp_val[160]; + int tmp_feat, tmp_mimic; + int y, x; + + if (!tgt_pt(&x, &y)) return; + + c_ptr = &cave[y][x]; + + /* Default */ + sprintf(tmp_val, "%d", prev_feat); + + /* Query */ +#ifdef JP + if (!get_string("ÃÏ·Á: ", tmp_val, 3)) return; +#else + if (!get_string("Feature: ", tmp_val, 3)) return; +#endif + + /* Extract */ + tmp_feat = atoi(tmp_val); + if (tmp_feat < 0) tmp_feat = 0; + else if (tmp_feat >= max_f_idx) tmp_feat = max_f_idx - 1; + + /* Default */ + sprintf(tmp_val, "%d", prev_mimic); + + /* Query */ +#ifdef JP + if (!get_string("ÃÏ·Á (mimic): ", tmp_val, 3)) return; +#else + if (!get_string("Feature (mimic): ", tmp_val, 3)) return; +#endif + + /* Extract */ + tmp_mimic = atoi(tmp_val); + if (tmp_mimic < 0) tmp_mimic = 0; + else if (tmp_mimic >= max_f_idx) tmp_mimic = max_f_idx - 1; + + cave_set_feat(y, x, tmp_feat); + c_ptr->mimic = tmp_mimic; + + f_ptr = &f_info[get_feat_mimic(c_ptr)]; + + if (have_flag(f_ptr->flags, FF_GLYPH) || + have_flag(f_ptr->flags, FF_MINOR_GLYPH)) + c_ptr->info |= (CAVE_OBJECT); + else if (have_flag(f_ptr->flags, FF_MIRROR)) + c_ptr->info |= (CAVE_GLOW | CAVE_OBJECT); + + /* Notice */ + note_spot(y, x); + + /* Redraw */ + lite_spot(y, x); + + /* Update some things */ + p_ptr->update |= (PU_FLOW); + + prev_feat = tmp_feat; + prev_mimic = tmp_mimic; +} + + #define NUM_O_SET 8 #define NUM_O_BIT 32 @@ -1720,7 +1848,7 @@ static void do_cmd_dump_options(void) /* Check for exist option bits */ for (i = 0; option_info[i].o_desc; i++) { - option_type *ot_ptr = &option_info[i]; + const option_type *ot_ptr = &option_info[i]; if (ot_ptr->o_var) exist[ot_ptr->o_set][ot_ptr->o_bit] = i + 1; } @@ -1736,7 +1864,7 @@ static void do_cmd_dump_options(void) { if (exist[i][j]) { - option_type *ot_ptr = &option_info[exist[i][j] - 1]; + const option_type *ot_ptr = &option_info[exist[i][j] - 1]; fprintf(fff, " %d - %02d (%4d) %s\n", i, j, ot_ptr->o_page, ot_ptr->o_text); } @@ -1844,12 +1972,12 @@ void do_cmd_debug(void) /* Create a named artifact */ case 'C': - wiz_create_named_art(command_arg); + wiz_create_named_art(); break; /* Detect everything */ case 'd': - detect_all(DETECT_RAD_ALL*3); + detect_all(DETECT_RAD_ALL * 3); break; /* Dimension_door */ @@ -1875,6 +2003,11 @@ void do_cmd_debug(void) identify_fully(FALSE); break; + /* Create desired feature */ + case 'F': + do_cmd_wiz_create_feature(); + break; + /* Good Objects */ case 'g': if (command_arg <= 0) command_arg = 1; @@ -1914,7 +2047,7 @@ void do_cmd_debug(void) /* Magic Mapping */ case 'm': - map_area(DETECT_RAD_ALL); + map_area(DETECT_RAD_ALL * 3); break; /* Mutation */ @@ -1922,6 +2055,11 @@ void do_cmd_debug(void) (void)gain_random_mutation(command_arg); break; + /* Reset Class */ + case 'R': + (void)do_cmd_wiz_reset_class(); + break; + /* Specific reward */ case 'r': (void)gain_level_reward(command_arg); @@ -1949,7 +2087,7 @@ void do_cmd_debug(void) /* Phase Door */ case 'p': - teleport_player(10); + teleport_player(10, 0L); break; #if 0 @@ -1993,7 +2131,7 @@ void do_cmd_debug(void) /* Teleport */ case 't': - teleport_player(100); + teleport_player(100, 0L); break; /* Very Good Objects */