<ClCompile Include="..\..\src\melee\melee-spell.c" />\r
<ClCompile Include="..\..\src\mind\mind-blue-mage.c" />\r
<ClCompile Include="..\..\src\mind\mind-explanations-table.c" />\r
+ <ClCompile Include="..\..\src\mind\mind-info.c" />\r
<ClCompile Include="..\..\src\mind\mind-mage.c" />\r
<ClCompile Include="..\..\src\mind\mind-magic-resistance.c" />\r
<ClCompile Include="..\..\src\mind\mind-weaponsmith.c" />\r
<ClInclude Include="..\..\src\melee\melee-spell.h" />\r
<ClInclude Include="..\..\src\mind\mind-blue-mage.h" />\r
<ClInclude Include="..\..\src\mind\mind-explanations-table.h" />\r
+ <ClInclude Include="..\..\src\mind\mind-info.h" />\r
<ClInclude Include="..\..\src\mind\mind-mage.h" />\r
<ClInclude Include="..\..\src\mind\mind-magic-resistance.h" />\r
+ <ClInclude Include="..\..\src\mind\mind-types.h" />\r
<ClInclude Include="..\..\src\mind\mind-weaponsmith.h" />\r
<ClInclude Include="..\..\src\mspell\element-resistance-checker.h" />\r
<ClInclude Include="..\..\src\mspell\high-resistance-checker.h" />\r
<ClCompile Include="..\..\src\mind\mind-explanations-table.c">
<Filter>mind</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\mind\mind-info.c">
+ <Filter>mind</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\combat\shoot.h">
<ClInclude Include="..\..\src\mind\mind-explanations-table.h">
<Filter>mind</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\mind\mind-info.h">
+ <Filter>mind</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\src\mind\mind-types.h">
+ <Filter>mind</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
mind/mind-cavalry.c mind/mind-cavalry.h \
mind/mind-explanations-table.c mind/mind-explanations-table.h \
mind/mind-force-trainer.c mind/mind-force-trainer.h \
+ mind/mind-info.c mind/mind-info.h \
mind/mind-mage.c mind/mind-mage.h \
mind/mind-magic-resistance.c mind/mind-magic-resistance.h \
mind/mind-mindcrafter.c mind/mind-mindcrafter.h \
mind/mind-samurai.c mind/mind-samurai.h \
mind/mind-sniper.c mind/mind-sniper.h \
mind/mind-switcher.c mind/mind-switcher.h \
+ mind/mind-types.h \
mind/mind-warrior.c mind/mind-warrior.h \
mind/mind-warrior-mage.c mind/mind-warrior-mage.h \
mind/mind-weaponsmith.c mind/mind-weaponsmith.h \
--- /dev/null
+#include "mind/mind-info.h"
+#include "cmd-action/cmd-spell.h"
+#include "mind/mind-force-trainer.h"
+#include "mind/mind-types.h"
+
+/*!
+ * @brief 特殊技能の効果情報をまとめたフォーマットを返す
+ * @param p 情報を返す文字列参照ポインタ
+ * @param use_mind 職業毎の特殊技能ID
+ * @param power モンスター魔法のID
+ * @return なし
+ */
+void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power)
+{
+ PLAYER_LEVEL plev = caster_ptr->lev;
+ strcpy(p, "");
+ switch (use_mind) {
+ case MIND_MINDCRAFTER:
+ switch (power) {
+ case 0:
+ break;
+ case 1:
+ sprintf(p, " %s%dd%d", KWD_DAM, 3 + ((plev - 1) / 4), 3 + plev / 15);
+ break;
+ case 2:
+ sprintf(p, " %s10", KWD_SPHERE);
+ break;
+ case 3:
+ sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
+ break;
+ case 4:
+ break;
+ case 5:
+ sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
+ break;
+ case 6:
+ sprintf(p, " %s%d", KWD_DURATION, plev);
+ break;
+ case 7:
+ break;
+ case 8:
+ sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), KWD_DAM, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1)));
+ break;
+ case 9:
+ sprintf(p, " %s10+d%d", KWD_DURATION, plev * 3 / 2);
+ break;
+#ifdef JP
+ case 10:
+ sprintf(p, " 最大重量:%d.%dkg", lbtokg1(plev * 15), lbtokg2(plev * 15));
+ break;
+#else
+ case 10:
+ sprintf(p, " max wgt %d", plev * 15);
+ break;
+#endif
+ case 11:
+ sprintf(p, " %s%dd6", KWD_DAM, plev / 2);
+ break;
+ case 12:
+ sprintf(p, " %sd%d+%d", KWD_DAM, plev * 3, plev * 3);
+ break;
+ case 13:
+ sprintf(p, _(" 行動:%ld回", " %ld acts."), (long int)(caster_ptr->csp + 100 - caster_ptr->energy_need - 50) / 100);
+ break;
+ }
+ break;
+ case MIND_KI: {
+ int boost = get_current_ki(caster_ptr);
+ if (heavy_armor(caster_ptr))
+ boost /= 2;
+
+ switch (power) {
+ case 0:
+ sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5) + boost / 12);
+ break;
+ case 1:
+ break;
+ case 2:
+ sprintf(p, " %s%d+d30", KWD_DURATION, 30 + boost / 5);
+ break;
+ case 3:
+ sprintf(p, " %s%dd5", KWD_DAM, 5 + ((plev - 1) / 5) + boost / 10);
+ break;
+ case 4:
+ sprintf(p, " %s%d+d20", KWD_DURATION, 20 + boost / 5);
+ break;
+ case 5:
+ break;
+ case 6:
+ sprintf(p, " %s%d+d%d", KWD_DURATION, 15 + boost / 7, plev / 2);
+ break;
+ case 7:
+ sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4) + boost / 12);
+ break;
+ case 8:
+ sprintf(p, " %s10d6+%d", KWD_DAM, plev * 3 / 2 + boost * 3 / 5);
+ break;
+ case 9:
+ break;
+ case 10:
+ sprintf(p, _(" 最大%d体", " max %d"), 1 + boost / 100);
+ break;
+ case 11:
+ sprintf(p, " %s%d", KWD_DAM, 100 + plev + boost);
+ break;
+ case 12:
+ sprintf(p, " %s%dd15", KWD_DAM, 10 + plev / 2 + boost * 3 / 10);
+ break;
+ case 13:
+ sprintf(p, _(" 行動:%d+d16回", " %d+d16 acts"), 16 + boost / 20);
+ break;
+ }
+ break;
+ }
+ case MIND_MIRROR_MASTER: {
+ switch (power) {
+ case 0:
+ break;
+ case 1:
+ break;
+ case 2:
+ sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5));
+ break;
+ case 3:
+ sprintf(p, " %s10", KWD_SPHERE);
+ break;
+ case 4:
+ break;
+ case 5:
+ sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
+ break;
+ case 6:
+ sprintf(p, " %s20+d20", KWD_DURATION);
+ break;
+ case 7:
+ break;
+ case 8:
+ sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
+ break;
+ case 9:
+ break;
+ case 10:
+ sprintf(p, " %s%dd8", KWD_DAM, 11 + (plev - 5) / 4);
+ break;
+ case 11:
+ break;
+ case 12:
+ sprintf(p, " %s20+d20", KWD_DURATION);
+ break;
+ case 13:
+ sprintf(p, " %s150+d%d", KWD_DAM, plev * 2);
+ break;
+ case 14:
+ break;
+ case 15:
+ break;
+ case 16:
+ sprintf(p, " %s%d", KWD_SPHERE, plev / 2 + 10);
+ break;
+ case 17:
+ break;
+ case 18:
+ sprintf(p, " %s6+d6", KWD_DURATION);
+ break;
+ case 19:
+ sprintf(p, " %s%d", KWD_DAM, plev * 11 + 5);
+ break;
+ case 20:
+ sprintf(p, " %s4+d4", KWD_DURATION);
+ break;
+ }
+ break;
+ }
+ case MIND_NINJUTSU: {
+ switch (power) {
+ case 0:
+ break;
+ case 1:
+ break;
+ case 2:
+ sprintf(p, " %s10", KWD_SPHERE);
+ break;
+ case 3:
+ break;
+ case 4:
+ sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
+ break;
+ case 5:
+ sprintf(p, " %s30", KWD_SPHERE);
+ break;
+ case 6:
+ break;
+ case 7:
+ break;
+ case 8:
+ sprintf(p, " %s20+d20", KWD_DURATION);
+ break;
+ case 9:
+ sprintf(p, " %s%d", KWD_DAM, (50 + plev) / 2);
+ break;
+ case 10:
+ break;
+ case 11:
+ break;
+ case 12:
+ break;
+ case 13:
+ break;
+ case 14:
+ break;
+ case 15:
+ break;
+ case 16:
+ sprintf(p, " %s%d+d%d", KWD_DURATION, plev / 2, plev / 2);
+ break;
+ case 17:
+ sprintf(p, " %s%d*3", KWD_DAM, (75 + plev * 2 / 3) / 2);
+ break;
+ case 18:
+ sprintf(p, " %s%dd10", KWD_DAM, 6 + plev / 8);
+ break;
+ case 19:
+ sprintf(p, " %s6+d6", KWD_DURATION);
+ break;
+ }
+ break;
+ }
+ }
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+
+void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power);
#include "main/sound-of-music.h"
#include "mind/mind-explanations-table.h"
#include "mind/mind-force-trainer.h"
+#include "mind/mind-info.h"
#include "mind/mind-magic-resistance.h"
#include "mind/mind-mindcrafter.h"
#include "mind/mind-mirror-master.h"
#include "mind/mind-ninja.h"
+#include "mind/mind-types.h"
#include "mind/mind-warrior.h"
#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "view/display-messages.h"
/*!
- * @brief 特殊技能の効果情報をまとめたフォーマットを返す
- * @param p 情報を返す文字列参照ポインタ
- * @param use_mind 職業毎の特殊技能ID
- * @param power モンスター魔法のID
- * @return なし
- */
-void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power)
-{
- PLAYER_LEVEL plev = caster_ptr->lev;
-
- strcpy(p, "");
-
- switch (use_mind) {
- case MIND_MINDCRAFTER:
- switch (power) {
- case 0:
- break;
- case 1:
- sprintf(p, " %s%dd%d", KWD_DAM, 3 + ((plev - 1) / 4), 3 + plev / 15);
- break;
- case 2:
- sprintf(p, " %s10", KWD_SPHERE);
- break;
- case 3:
- sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
- break;
- case 4:
- break;
- case 5:
- sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
- break;
- case 6:
- sprintf(p, " %s%d", KWD_DURATION, plev);
- break;
- case 7:
- break;
- case 8:
- sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), KWD_DAM, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1)));
- break;
- case 9:
- sprintf(p, " %s10+d%d", KWD_DURATION, plev * 3 / 2);
- break;
-#ifdef JP
- case 10:
- sprintf(p, " 最大重量:%d.%dkg", lbtokg1(plev * 15), lbtokg2(plev * 15));
- break;
-#else
- case 10:
- sprintf(p, " max wgt %d", plev * 15);
- break;
-#endif
- case 11:
- sprintf(p, " %s%dd6", KWD_DAM, plev / 2);
- break;
- case 12:
- sprintf(p, " %sd%d+%d", KWD_DAM, plev * 3, plev * 3);
- break;
- case 13:
- sprintf(p, _(" 行動:%ld回", " %ld acts."), (long int)(caster_ptr->csp + 100 - caster_ptr->energy_need - 50) / 100);
- break;
- }
- break;
- case MIND_KI: {
- int boost = get_current_ki(caster_ptr);
-
- if (heavy_armor(caster_ptr))
- boost /= 2;
-
- switch (power) {
- case 0:
- sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5) + boost / 12);
- break;
- case 1:
- break;
- case 2:
- sprintf(p, " %s%d+d30", KWD_DURATION, 30 + boost / 5);
- break;
- case 3:
- sprintf(p, " %s%dd5", KWD_DAM, 5 + ((plev - 1) / 5) + boost / 10);
- break;
- case 4:
- sprintf(p, " %s%d+d20", KWD_DURATION, 20 + boost / 5);
- break;
- case 5:
- break;
- case 6:
- sprintf(p, " %s%d+d%d", KWD_DURATION, 15 + boost / 7, plev / 2);
- break;
- case 7:
- sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4) + boost / 12);
- break;
- case 8:
- sprintf(p, " %s10d6+%d", KWD_DAM, plev * 3 / 2 + boost * 3 / 5);
- break;
- case 9:
- break;
- case 10:
- sprintf(p, _(" 最大%d体", " max %d"), 1 + boost / 100);
- break;
- case 11:
- sprintf(p, " %s%d", KWD_DAM, 100 + plev + boost);
- break;
- case 12:
- sprintf(p, " %s%dd15", KWD_DAM, 10 + plev / 2 + boost * 3 / 10);
- break;
- case 13:
- sprintf(p, _(" 行動:%d+d16回", " %d+d16 acts"), 16 + boost / 20);
- break;
- }
- break;
- }
- case MIND_MIRROR_MASTER: {
- switch (power) {
- case 0:
- break;
- case 1:
- break;
- case 2:
- sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5));
- break;
- case 3:
- sprintf(p, " %s10", KWD_SPHERE);
- break;
- case 4:
- break;
- case 5:
- sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
- break;
- case 6:
- sprintf(p, " %s20+d20", KWD_DURATION);
- break;
- case 7:
- break;
- case 8:
- sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
- break;
- case 9:
- break;
- case 10:
- sprintf(p, " %s%dd8", KWD_DAM, 11 + (plev - 5) / 4);
- break;
- case 11:
- break;
- case 12:
- sprintf(p, " %s20+d20", KWD_DURATION);
- break;
- case 13:
- sprintf(p, " %s150+d%d", KWD_DAM, plev * 2);
- break;
- case 14:
- break;
- case 15:
- break;
- case 16:
- sprintf(p, " %s%d", KWD_SPHERE, plev / 2 + 10);
- break;
- case 17:
- break;
- case 18:
- sprintf(p, " %s6+d6", KWD_DURATION);
- break;
- case 19:
- sprintf(p, " %s%d", KWD_DAM, plev * 11 + 5);
- break;
- case 20:
- sprintf(p, " %s4+d4", KWD_DURATION);
- break;
- }
- break;
- }
- case MIND_NINJUTSU: {
- switch (power) {
- case 0:
- break;
- case 1:
- break;
- case 2:
- sprintf(p, " %s10", KWD_SPHERE);
- break;
- case 3:
- break;
- case 4:
- sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
- break;
- case 5:
- sprintf(p, " %s30", KWD_SPHERE);
- break;
- case 6:
- break;
- case 7:
- break;
- case 8:
- sprintf(p, " %s20+d20", KWD_DURATION);
- break;
- case 9:
- sprintf(p, " %s%d", KWD_DAM, (50 + plev) / 2);
- break;
- case 10:
- break;
- case 11:
- break;
- case 12:
- break;
- case 13:
- break;
- case 14:
- break;
- case 15:
- break;
- case 16:
- sprintf(p, " %s%d+d%d", KWD_DURATION, plev / 2, plev / 2);
- break;
- case 17:
- sprintf(p, " %s%d*3", KWD_DAM, (75 + plev * 2 / 3) / 2);
- break;
- case 18:
- sprintf(p, " %s%dd10", KWD_DAM, 6 + plev / 8);
- break;
- case 19:
- sprintf(p, " %s6+d6", KWD_DURATION);
- break;
- }
- break;
- }
- }
-}
-
-/*!
* @brief 使用可能な特殊技能を選択する /
* Allow user to choose a mindcrafter power.
* @param sn 選択した特殊技能ID、キャンセルの場合-1、不正な選択の場合-2を返す
#include "system/angband.h"
-#define MIND_MINDCRAFTER 0 /*!< 特殊能力: 超能力 */
-#define MIND_KI 1 /*!< 特殊能力: 練気 */
-#define MIND_BERSERKER 2 /*!< 特殊能力: 怒り */
-#define MIND_MIRROR_MASTER 3 /*!< 特殊能力: 鏡魔法 */
-#define MIND_NINJUTSU 4 /*!< 特殊能力: 忍術 */
-
-extern void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power);
-extern void do_cmd_mind(player_type *caster_ptr);
-extern void do_cmd_mind_browse(player_type *caster_ptr);
-extern void do_cmd_mind_browse(player_type *caster_ptr);
+void do_cmd_mind(player_type *caster_ptr);
+void do_cmd_mind_browse(player_type *caster_ptr);
+void do_cmd_mind_browse(player_type *caster_ptr);
--- /dev/null
+#pragma once
+
+typedef enum mind_kind_type {
+ MIND_MINDCRAFTER = 0, /*!< 特殊能力: 超能力 */
+ MIND_KI = 1, /*!< 特殊能力: 練気 */
+ MIND_BERSERKER = 2, /*!< 特殊能力: 怒り */
+ MIND_MIRROR_MASTER = 3, /*!< 特殊能力: 鏡魔法 */
+ MIND_NINJUTSU = 4, /*!< 特殊能力: 忍術 */
+} mind_kind_type;
#include "game-option/option-flags.h"
#include "mind/mind-sniper.h"
#include "mind/mind-explanations-table.h"
-#include "mind/mind-switcher.h"
+#include "mind/mind-info.h"
+#include "mind/mind-types.h"
#include "player/player-class.h"
#include "realm/realm-names-table.h"
#include "spell/spells-execution.h"