* @param tval 魔法書のtval
* @return 領域魔法の技能名称を保管した文字列ポインタ
*/
-cptr spell_category_name(OBJECT_TYPE_VALUE tval)
+concptr spell_category_name(OBJECT_TYPE_VALUE tval)
{
switch (tval)
{
}
}
-
-bool select_the_force = FALSE;
-
/*!
* @brief 領域魔法の閲覧、学習、使用選択するインターフェイス処理
* Allow user to choose a spell/prayer from the given book.
* The "known" should be TRUE for cast/pray, FALSE for study
* </pre>
*/
-static int get_spell(SPELL_IDX *sn, cptr prompt, OBJECT_SUBTYPE_VALUE sval, bool learned, REALM_IDX use_realm)
+static int get_spell(SPELL_IDX *sn, concptr prompt, OBJECT_SUBTYPE_VALUE sval, bool learned, REALM_IDX use_realm)
{
- int i;
+ int i;
SPELL_IDX spell = -1;
- int num = 0;
- int ask = TRUE;
- MANA_POINT need_mana;
- SPELL_IDX spells[64];
- bool flag, redraw, okay;
- char choice;
+ int num = 0;
+ int ask = TRUE;
+ MANA_POINT need_mana;
+ SPELL_IDX spells[64];
+ bool flag, redraw, okay;
+ char choice;
const magic_type *s_ptr;
- char out_val[160];
- cptr p;
+ char out_val[160];
+ concptr p;
COMMAND_CODE code;
#ifdef JP
char jverb_buf[128];
if (which == ESCAPE) break;
else if (which == 'w')
{
-
repeat_push(INVEN_FORCE);
-
break;
}
}
object_type *o_ptr;
- cptr q, s;
+ concptr q, s;
/* Warriors are illiterate */
if (!(p_ptr->realm1 || p_ptr->realm2) && (p_ptr->pclass != CLASS_SORCERER) && (p_ptr->pclass != CLASS_RED_MAGE))
confirm_use_force(TRUE);
return;
}
- select_the_force = TRUE;
}
/* Restrict choices to "useful" books */
q = _("どの本を読みますか? ", "Browse which book? ");
s = _("読める本がない。", "You have no books that you can read.");
- if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR)))
- {
- select_the_force = FALSE;
- return;
- }
- select_the_force = FALSE;
-
- if (item == INVEN_FORCE) /* the_force */
+ o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR | (p_ptr->pclass == CLASS_FORCETRAINER ? USE_FORCE : 0)));
+ if (!o_ptr)
{
- do_cmd_mind_browse();
+ if (item == INVEN_FORCE) /* the_force */
+ {
+ do_cmd_mind_browse();
+ return;
+ }
return;
}
- /* Get the item (in the pack) */
- else if (item >= 0)
- {
- o_ptr = &inventory[item];
- }
-
- /* Get the item (on the floor) */
- else
- {
- o_ptr = &o_list[0 - item];
- }
-
/* Access the item's sval */
sval = o_ptr->sval;
object_kind_track(o_ptr->k_idx);
handle_stuff();
-
/* Extract spells */
for (spell = 0; spell < 32; spell++)
{
}
screen_save();
-
- /* Clear the top line */
prt("", 0, 0);
/* Keep browsing spells. Exit browsing on cancel. */
p_ptr->old_realm |= 1 << (p_ptr->realm2-1);
p_ptr->realm2 = next_realm;
- p_ptr->notice |= (PN_REORDER);
+ p_ptr->update |= (PU_REORDER);
p_ptr->update |= (PU_SPELLS);
handle_stuff();
/* Spells of realm2 will have an increment of +32 */
SPELL_IDX spell = -1;
- cptr p = spell_category_name(mp_ptr->spell_book);
+ concptr p = spell_category_name(mp_ptr->spell_book);
object_type *o_ptr;
- cptr q, s;
+ concptr q, s;
if (!p_ptr->realm1)
{
q = _("どの本から学びますか? ", "Study which book? ");
s = _("読める本がない。", "You have no books that you can read.");
- if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;
-
- /* Get the item (in the pack) */
- if (item >= 0)
- {
- o_ptr = &inventory[item];
- }
-
- /* Get the item (on the floor) */
- else
- {
- o_ptr = &o_list[0 - item];
- }
+ o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR));
+ if (!o_ptr) return;
/* Access the item's sval */
sval = o_ptr->sval;
int max_exp = (spell < 32) ? SPELL_EXP_MASTER : SPELL_EXP_EXPERT;
int old_exp = p_ptr->spell_exp[spell];
int new_rank = EXP_LEVEL_UNSKILLED;
- cptr name = do_spell(increment ? p_ptr->realm2 : p_ptr->realm1, spell%32, SPELL_NAME);
+ concptr name = do_spell(increment ? p_ptr->realm2 : p_ptr->realm1, spell%32, SPELL_NAME);
if (old_exp >= max_exp)
{
/* One less spell available */
p_ptr->learned_spells++;
-#
+
/* Update Study */
p_ptr->update |= (PU_SPELLS);
- handle_stuff();
+ update_creature(p_ptr);
/* Redraw object recall */
p_ptr->window |= (PW_OBJECT);
REALM_IDX use_realm;
MANA_POINT need_mana;
- cptr prayer;
+ concptr prayer;
object_type *o_ptr;
const magic_type *s_ptr;
- cptr q, s;
+ concptr q, s;
bool over_exerted = FALSE;
confirm_use_force(FALSE);
return;
}
- select_the_force = TRUE;
}
prayer = spell_category_name(mp_ptr->spell_book);
q = _("どの呪文書を使いますか? ", "Use which book? ");
s = _("呪文書がない!", "You have no spell books!");
- if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR)))
- {
- select_the_force = FALSE;
- return;
- }
- select_the_force = FALSE;
-
- if (item == INVEN_FORCE) /* the_force */
+ o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR | (p_ptr->pclass == CLASS_FORCETRAINER ? USE_FORCE : 0)));
+ if (!o_ptr)
{
- do_cmd_mind();
+ if (item == INVEN_FORCE) /* the_force */
+ {
+ do_cmd_mind();
+ return;
+ }
return;
}
- /* Get the item (in the pack) */
- else if (item >= 0)
- {
- o_ptr = &inventory[item];
- }
-
- /* Get the item (on the floor) */
- else
- {
- o_ptr = &o_list[0 - item];
- }
-
/* Access the item's sval */
sval = o_ptr->sval;
if ((p_ptr->pclass != CLASS_SORCERER) && (p_ptr->pclass != CLASS_RED_MAGE) && (o_ptr->tval == REALM2_BOOK)) increment = 32;
-
/* Track the object kind */
object_kind_track(o_ptr->k_idx);
handle_stuff();