OSDN Git Service

add type casting for fprintf
[hengband/hengband.git] / src / wizard2.c
index 899724b..31a7b29 100644 (file)
@@ -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);
 }
@@ -131,7 +121,7 @@ msg_print("
 static void wiz_create_named_art(int a_idx)
 {
        /* 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 +151,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);
@@ -349,7 +339,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 +551,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 +649,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 +816,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 +858,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 +878,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 +896,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 +946,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 +1006,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 +1040,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 +1088,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 +1140,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 +1155,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 +1391,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 +1434,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 +1470,6 @@ static void do_cmd_wiz_cure_all(void)
 
        /* No longer hungry */
        (void)set_food(PY_FOOD_MAX - 1);
-
-       /* Redraw everything */
-       do_cmd_redraw();
 }
 
 
@@ -1643,6 +1644,14 @@ static void do_cmd_wiz_zap(void)
                /* Delete nearby monsters */
                if (m_ptr->cdis <= MAX_SIGHT)
                {
+                       if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
+                       {
+                               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);
                }
        }
@@ -1667,12 +1676,92 @@ static void do_cmd_wiz_zap_all(void)
                /* Skip the mount */
                if (i == p_ptr->riding) continue;
 
+               if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
+               {
+                       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 */
                delete_monster_idx(i);
        }
 }
 
 
+/*
+ * 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
 
@@ -1870,6 +1959,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;
@@ -1944,7 +2038,7 @@ void do_cmd_debug(void)
 
        /* Phase Door */
        case 'p':
-               teleport_player(10);
+               teleport_player(10, 0L);
                break;
 
 #if 0
@@ -1988,7 +2082,7 @@ void do_cmd_debug(void)
 
        /* Teleport */
        case 't':
-               teleport_player(100);
+               teleport_player(100, 0L);
                break;
 
        /* Very Good Objects */