}
else
{
- need_mana = mod_need_mana(s_ptr->smana, spell, use_realm);
+ need_mana = mod_need_mana(caster_ptr, s_ptr->smana, spell, use_realm);
}
/* Prompt */
}
/* Extract mana consumption rate */
- need_mana = mod_need_mana(s_ptr->smana, spell, realm);
+ need_mana = mod_need_mana(caster_ptr, s_ptr->smana, spell, realm);
/* Verify "dangerous" spells */
if (need_mana > caster_ptr->csp)
spell = SINGING_SONG_ID(caster_ptr);
s_ptr = &technic_info[REALM_MUSIC - MIN_TECHNIC][spell];
- need_mana = mod_need_mana(s_ptr->smana, spell, REALM_MUSIC);
+ need_mana = mod_need_mana(caster_ptr, s_ptr->smana, spell, REALM_MUSIC);
need_mana_frac = 0;
/* Divide by 2 */
/*!
* @brief 使用可能な青魔法を選択する /
* Allow user to choose a imitation.
+ * @param caster_ptr プレーヤーへの参照ポインタ
* @param sn 選択したモンスター攻撃ID、キャンセルの場合-1、不正な選択の場合-2を返す
* @return 発動可能な魔法を選択した場合TRUE、キャンセル処理か不正な選択が行われた場合FALSEを返す。
* @details
* when you run it. It's probably easy to fix but I haven't tried,\n
* sorry.\n
*/
-static bool get_learned_power(SPELL_IDX *sn)
+static bool get_learned_power(player_type *caster_ptr, SPELL_IDX *sn)
{
int i = 0;
int num = 0;
chance = mod_spell_chance_1(p_ptr, chance);
- need_mana = mod_need_mana(monster_powers[spellnum[i]].smana, 0, REALM_NONE);
+ need_mana = mod_need_mana(caster_ptr, monster_powers[spellnum[i]].smana, 0, REALM_NONE);
/* Not enough mana to cast */
if (need_mana > p_ptr->csp)
if (cmd_limit_confused(caster_ptr)) return FALSE;
- if (!get_learned_power(&n)) return FALSE;
+ if (!get_learned_power(caster_ptr, &n)) return FALSE;
spell = monster_powers[n];
- need_mana = mod_need_mana(spell.smana, 0, REALM_NONE);
+ need_mana = mod_need_mana(caster_ptr, spell.smana, 0, REALM_NONE);
/* Verify "dangerous" spells */
if (need_mana > caster_ptr->csp)
{
const magic_type *s_ptr;
s_ptr = &technic_info[REALM_HEX - MIN_TECHNIC][spell];
- need_mana += mod_need_mana(s_ptr->smana, spell, REALM_HEX);
+ need_mana += mod_need_mana(caster_ptr, s_ptr->smana, spell, REALM_HEX);
}
}
extern bool recharge(player_type *caster_ptr, int power);
extern void display_spell_list(player_type *caster_ptr);
extern EXP experience_of_spell(player_type *caster_ptr, SPELL_IDX spell, REALM_IDX use_realm);
-extern MANA_POINT mod_need_mana(MANA_POINT need_mana, SPELL_IDX spell, REALM_IDX realm);
+extern MANA_POINT mod_need_mana(player_type *caster_ptr, MANA_POINT need_mana, SPELL_IDX spell, REALM_IDX realm);
extern PERCENTAGE mod_spell_chance_1(player_type *caster_ptr, PERCENTAGE chance);
extern PERCENTAGE mod_spell_chance_2(player_type *caster_ptr, PERCENTAGE chance);
extern PERCENTAGE spell_chance(player_type *caster_ptr, SPELL_IDX spell, REALM_IDX realm);
* @param realm 魔法領域
* @return 消費MP
*/
-MANA_POINT mod_need_mana(MANA_POINT need_mana, SPELL_IDX spell, REALM_IDX realm)
+MANA_POINT mod_need_mana(player_type *caster_ptr, MANA_POINT need_mana, SPELL_IDX spell, REALM_IDX realm)
{
#define MANA_CONST 2400
#define MANA_DIV 4
if ((realm > REALM_NONE) && (realm <= MAX_REALM))
{
/*
- * need_mana defaults if spell exp equals SPELL_EXP_EXPERT and !p_ptr->dec_mana.
+ * need_mana defaults if spell exp equals SPELL_EXP_EXPERT and !caster_ptr->dec_mana.
* MANA_CONST is used to calculate need_mana effected from spell proficiency.
*/
- need_mana = need_mana * (MANA_CONST + SPELL_EXP_EXPERT - experience_of_spell(p_ptr, spell, realm)) + (MANA_CONST - 1);
- need_mana *= p_ptr->dec_mana ? DEC_MANA_DIV : MANA_DIV;
+ need_mana = need_mana * (MANA_CONST + SPELL_EXP_EXPERT - experience_of_spell(caster_ptr, spell, realm)) + (MANA_CONST - 1);
+ need_mana *= caster_ptr->dec_mana ? DEC_MANA_DIV : MANA_DIV;
need_mana /= MANA_CONST * MANA_DIV;
if (need_mana < 1) need_mana = 1;
}
/* Non-realm magic */
else
{
- if (p_ptr->dec_mana) need_mana = (need_mana + 1) * DEC_MANA_DIV / MANA_DIV;
+ if (caster_ptr->dec_mana) need_mana = (need_mana + 1) * DEC_MANA_DIV / MANA_DIV;
}
#undef DEC_MANA_DIV
chance += (MAX(r_info[caster_ptr->current_floor_ptr->m_list[caster_ptr->riding].r_idx].level - caster_ptr->skill_exp[GINOU_RIDING] / 100 - 10, 0));
/* Extract mana consumption rate */
- need_mana = mod_need_mana(s_ptr->smana, spell, use_realm);
+ need_mana = mod_need_mana(caster_ptr, s_ptr->smana, spell, use_realm);
/* Not enough mana to cast */
if (need_mana > caster_ptr->csp)
EXP exp = experience_of_spell(caster_ptr, spell, use_realm);
/* Extract mana consumption rate */
- need_mana = mod_need_mana(s_ptr->smana, spell, use_realm);
+ need_mana = mod_need_mana(caster_ptr, s_ptr->smana, spell, use_realm);
if ((increment == 64) || (s_ptr->slevel >= 99)) exp_level = EXP_LEVEL_UNSKILLED;
else exp_level = spell_exp_level(exp);