1 #include "blue-magic/learnt-info.h"
2 #include "cmd-action/cmd-spell.h"
3 #include "lore/lore-calculator.h" // todo 少し違和感.
4 #include "mspell/mspell-damage-calculator.h"
5 #include "mspell/mspell-type.h"
8 * @brief モンスター魔法をプレイヤーが使用する場合の換算レベル
9 * @param caster_ptr プレーヤーへの参照ポインタ
12 PLAYER_LEVEL get_pseudo_monstetr_level(player_type *caster_ptr)
14 PLAYER_LEVEL monster_level = caster_ptr->lev + 40;
15 return (monster_level * monster_level - 1550) / 130;
19 * @brief 文字列に青魔導師の呪文の攻撃力を加える
20 * @param SPELL_NUM 呪文番号
21 * @param plev プレイヤーレベル
23 * @param tmp 返すメッセージを格納する配列
26 static void set_bluemage_damage(player_type *learner_type, monster_spell_type ms_type, PLAYER_LEVEL plev, concptr msg, char *tmp)
28 int base_damage = monspell_bluemage_damage(learner_type, ms_type, plev, BASE_DAM);
29 int dice_num = monspell_bluemage_damage(learner_type, ms_type, plev, DICE_NUM);
30 int dice_side = monspell_bluemage_damage(learner_type, ms_type, plev, DICE_SIDE);
31 int dice_mult = monspell_bluemage_damage(learner_type, ms_type, plev, DICE_MULT);
32 int dice_div = monspell_bluemage_damage(learner_type, ms_type, plev, DICE_DIV);
34 dice_to_string(base_damage, dice_num, dice_side, dice_mult, dice_div, dmg_str);
35 sprintf(tmp, " %s %s", msg, dmg_str);
39 * @brief 受け取ったモンスター魔法のIDに応じて青魔法の効果情報をまとめたフォーマットを返す
40 * @param learner_ptr プレーヤーへの参照ポインタ
41 * @param p 情報を返す文字列参照ポインタ
42 * @param power モンスター魔法のID
45 void learnt_info(player_type *learner_ptr, char *p, int power)
47 PLAYER_LEVEL plev = get_pseudo_monstetr_level(learner_ptr);
91 set_bluemage_damage(learner_ptr, power, plev, KWD_DAM, p);
128 set_bluemage_damage(learner_ptr, power, plev, KWD_DAM, p);
131 set_bluemage_damage(learner_ptr, power, plev, KWD_HEAL, p);
148 case MS_MAGIC_MISSILE:
149 set_bluemage_damage(learner_ptr, power, plev, KWD_DAM, p);
152 sprintf(p, " %sd%d+%d", KWD_DURATION, 20 + plev, plev);
155 set_bluemage_damage(learner_ptr, power, plev, KWD_HEAL, p);
158 sprintf(p, " %sd7+7", KWD_DURATION);
161 sprintf(p, " %s10", KWD_SPHERE);
164 sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
167 set_bluemage_damage(learner_ptr, power, plev, KWD_DAM, p);
171 sprintf(p, " %s5", KWD_SPHERE);