1 #include "mind/mind-info.h"
2 #include "cmd-action/cmd-spell.h"
3 #include "mind/mind-force-trainer.h"
4 #include "mind/mind-types.h"
6 static void switch_mind_mindcrafter(player_type *caster_ptr, const PLAYER_LEVEL plev, const int power, char *p)
12 sprintf(p, " %s%dd%d", KWD_DAM, 3 + ((plev - 1) / 4), 3 + plev / 15);
15 sprintf(p, " %s10", KWD_SPHERE);
18 sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
23 sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
26 sprintf(p, " %s%d", KWD_DURATION, plev);
31 sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), KWD_DAM, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1)));
34 sprintf(p, " %s10+d%d", KWD_DURATION, plev * 3 / 2);
38 sprintf(p, " 最大重量:%d.%dkg", lbtokg1(plev * 15), lbtokg2(plev * 15));
42 sprintf(p, " max wgt %d", plev * 15);
46 sprintf(p, " %s%dd6", KWD_DAM, plev / 2);
49 sprintf(p, " %sd%d+%d", KWD_DAM, plev * 3, plev * 3);
52 sprintf(p, _(" 行動:%ld回", " %ld acts."), (long int)(caster_ptr->csp + 100 - caster_ptr->energy_need - 50) / 100);
57 static void switch_mind_ki(player_type *caster_ptr, const PLAYER_LEVEL plev, const int power, char *p)
59 int boost = get_current_ki(caster_ptr);
60 if (heavy_armor(caster_ptr))
65 sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5) + boost / 12);
70 sprintf(p, " %s%d+d30", KWD_DURATION, 30 + boost / 5);
73 sprintf(p, " %s%dd5", KWD_DAM, 5 + ((plev - 1) / 5) + boost / 10);
76 sprintf(p, " %s%d+d20", KWD_DURATION, 20 + boost / 5);
81 sprintf(p, " %s%d+d%d", KWD_DURATION, 15 + boost / 7, plev / 2);
84 sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4) + boost / 12);
87 sprintf(p, " %s10d6+%d", KWD_DAM, plev * 3 / 2 + boost * 3 / 5);
92 sprintf(p, _(" 最大%d体", " max %d"), 1 + boost / 100);
95 sprintf(p, " %s%d", KWD_DAM, 100 + plev + boost);
98 sprintf(p, " %s%dd15", KWD_DAM, 10 + plev / 2 + boost * 3 / 10);
101 sprintf(p, _(" 行動:%d+d16回", " %d+d16 acts"), 16 + boost / 20);
106 static void switch_mind_mirror_master(const PLAYER_LEVEL plev, const int power, char *p)
114 sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5));
117 sprintf(p, " %s10", KWD_SPHERE);
122 sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
125 sprintf(p, " %s20+d20", KWD_DURATION);
130 sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
135 sprintf(p, " %s%dd8", KWD_DAM, 11 + (plev - 5) / 4);
140 sprintf(p, " %s20+d20", KWD_DURATION);
143 sprintf(p, " %s150+d%d", KWD_DAM, plev * 2);
150 sprintf(p, " %s%d", KWD_SPHERE, plev / 2 + 10);
155 sprintf(p, " %s6+d6", KWD_DURATION);
158 sprintf(p, " %s%d", KWD_DAM, plev * 11 + 5);
161 sprintf(p, " %s4+d4", KWD_DURATION);
166 static void switch_mind_ninja(const PLAYER_LEVEL plev, const int power, char *p)
173 sprintf(p, " %s10", KWD_SPHERE);
178 sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
181 sprintf(p, " %s30", KWD_SPHERE);
187 sprintf(p, " %s20+d20", KWD_DURATION);
190 sprintf(p, " %s%d", KWD_DAM, (50 + plev) / 2);
200 sprintf(p, " %s%d+d%d", KWD_DURATION, plev / 2, plev / 2);
203 sprintf(p, " %s%d*3", KWD_DAM, (75 + plev * 2 / 3) / 2);
206 sprintf(p, " %s%dd10", KWD_DAM, 6 + plev / 8);
209 sprintf(p, " %s6+d6", KWD_DURATION);
215 * @brief 特殊技能の効果情報をまとめたフォーマットを返す
216 * @param p 情報を返す文字列参照ポインタ
217 * @param use_mind 職業毎の特殊技能ID
218 * @param power モンスター魔法のID
221 void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power)
223 const PLAYER_LEVEL plev = caster_ptr->lev;
226 case MIND_MINDCRAFTER:
227 switch_mind_mindcrafter(caster_ptr, plev, power, p);
230 switch_mind_ki(caster_ptr, plev, power, p);
232 case MIND_MIRROR_MASTER:
233 switch_mind_mirror_master(plev, power, p);
236 switch_mind_ninja(plev, power, p);