コード例 #1
0
ファイル: rage-mage.c プロジェクト: Alkalinear/poschengband
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;
        }
    }
}
コード例 #2
0
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;
    }
}