void rage_mage_gain_spell(void) { int item; if (p_ptr->blind || no_lite()) { msg_print("You cannot see!"); return; } if (p_ptr->confused) { msg_print("You are too confused!"); return; } if (!p_ptr->new_spells) { msg_print("You cannot learn any new techniques!"); return; } msg_format("You can learn %d new technique%s.", p_ptr->new_spells, (p_ptr->new_spells == 1 ? "" : "s")); msg_print(NULL); item_tester_tval = TV_RAGE_BOOK; if (get_item(&item, "Study which book?", "You have no books that you can read.", USE_INVEN)) { int book = inventory[item].sval; if (_gain_spell(book)) { char o_name[MAX_NLEN]; int old_amt = inventory[item].number; inventory[item].number = 1; object_desc(o_name, &inventory[item], 0); inventory[item].number = old_amt; msg_format("%^s is destroyed.", o_name); inven_item_increase(item, -1); inven_item_describe(item); inven_item_optimize(item); energy_use = 100; } } }
void rage_mage_gain_spell(void) { obj_prompt_t prompt = {0}; if (p_ptr->blind || no_lite()) { msg_print("You cannot see!"); return; } if (p_ptr->confused) { msg_print("You are too confused!"); return; } if (!p_ptr->new_spells) { msg_print("You cannot learn any new techniques!"); return; } prompt.prompt = "Study which book?"; prompt.error = "You have no books that you can read."; prompt.filter = _is_rage_book; prompt.where[0] = INV_PACK; prompt.where[1] = INV_FLOOR; obj_prompt(&prompt); if (!prompt.obj) return; if (_gain_spell(prompt.obj->sval)) { char o_name[MAX_NLEN]; object_desc(o_name, prompt.obj, OD_COLOR_CODED | OD_SINGULAR); msg_format("%^s is destroyed.", o_name); prompt.obj->number--; obj_release(prompt.obj, 0); energy_use = 100; } }