1 #include "mind/mind-info.h"
2 #include "cmd-action/cmd-spell.h"
3 #include "locale/japanese.h"
4 #include "mind/mind-force-trainer.h"
5 #include "mind/mind-types.h"
6 #include "player-info/equipment-info.h"
7 #include "system/player-type-definition.h"
9 static std::string switch_mind_mindcrafter(PlayerType *player_ptr, const PLAYER_LEVEL plev, const int power)
13 return format(" %s%dd%d", KWD_DAM, 3 + ((plev - 1) / 4), 3 + plev / 15);
15 return format(" %s10", KWD_SPHERE);
17 return format(" %s%d", KWD_SPHERE, plev * 5);
19 return format(" %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
21 return format(" %s%d", KWD_DURATION, plev);
23 return format((plev < 25 ? " %s%d" : " %sd%d"), KWD_DAM, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1)));
25 return format(" %s10+d%d", KWD_DURATION, plev * 3 / 2);
28 return format(" 最大重量:%d.%dkg", lb_to_kg_integer(plev * 15), lb_to_kg_fraction(plev * 15));
31 return format(" max wgt %d", plev * 15);
34 return format(" %s%dd6", KWD_DAM, plev / 2);
36 return format(" %sd%d+%d", KWD_DAM, plev * 3, plev * 3);
38 return format(_(" 行動:%ld回", " %ld acts."), (long int)(player_ptr->csp + 100 - player_ptr->energy_need - 50) / 100);
44 static std::string switch_mind_ki(PlayerType *player_ptr, const PLAYER_LEVEL plev, const int power)
46 int boost = get_current_ki(player_ptr);
47 if (heavy_armor(player_ptr)) {
53 return format(" %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5) + boost / 12);
55 return format(" %s%d+d30", KWD_DURATION, 30 + boost / 5);
57 return format(" %s%dd5", KWD_DAM, 5 + ((plev - 1) / 5) + boost / 10);
59 return format(" %s%d+d20", KWD_DURATION, 20 + boost / 5);
61 return format(" %s%d+d%d", KWD_DURATION, 15 + boost / 7, plev / 2);
63 return format(" %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4) + boost / 12);
65 return format(" %s10d6+%d", KWD_DAM, plev * 3 / 2 + boost * 3 / 5);
67 return format(_(" 最大%d体", " max %d"), 1 + boost / 100);
69 return format(" %s%d", KWD_DAM, 100 + plev + boost);
71 return format(" %s%dd15", KWD_DAM, 10 + plev / 2 + boost * 3 / 10);
73 return format(_(" 行動:%d+d16回", " %d+d16 acts"), 16 + boost / 20);
79 static std::string switch_mind_mirror_master(const PLAYER_LEVEL plev, const int power)
83 return format(" %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5));
85 return format(" %s10", KWD_SPHERE);
87 return format(" %s%d", KWD_SPHERE, plev * 5);
89 return format(" %s20+d20", KWD_DURATION);
91 return format(" %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
93 return format(" %s%dd8", KWD_DAM, 11 + (plev - 5) / 4);
95 return format(" %s20+d20", KWD_DURATION);
97 return format(" %s150+d%d", KWD_DAM, plev * 2);
99 return format(" %s%d", KWD_SPHERE, plev / 2 + 10);
101 return format(" %s6+d6", KWD_DURATION);
103 return format(" %s%d", KWD_DAM, plev * 11 + 5);
105 return format(" %s4+d4", KWD_DURATION);
107 return std::string();
111 static std::string switch_mind_ninja(const PLAYER_LEVEL plev, const int power)
115 return format(" %s10", KWD_SPHERE);
117 return format(" %s%d", KWD_SPHERE, plev * 5);
119 return format(" %s30", KWD_SPHERE);
121 return format(" %s20+d20", KWD_DURATION);
123 return format(" %s%d", KWD_DAM, (50 + plev) / 2);
125 return format(" %s%d+d%d", KWD_DURATION, plev / 2, plev / 2);
127 return format(" %s%d*3", KWD_DAM, (75 + plev * 2 / 3) / 2);
129 return format(" %s%dd10", KWD_DAM, 6 + plev / 8);
131 return format(" %s6+d6", KWD_DURATION);
133 return std::string();
138 * @brief 特殊技能の効果情報をまとめたフォーマットを返す
139 * @param use_mind 職業毎の特殊技能ID
140 * @param power モンスター魔法のID
141 * @return std::string 特殊技能の情報を表す文字列
143 std::string mindcraft_info(PlayerType *player_ptr, MindKindType use_mind, int power)
145 const PLAYER_LEVEL plev = player_ptr->lev;
147 case MindKindType::MINDCRAFTER:
148 return switch_mind_mindcrafter(player_ptr, plev, power);
149 case MindKindType::KI:
150 return switch_mind_ki(player_ptr, plev, power);
151 case MindKindType::MIRROR_MASTER:
152 return switch_mind_mirror_master(plev, power);
153 case MindKindType::NINJUTSU:
154 return switch_mind_ninja(plev, power);
156 return std::string();