OSDN Git Service

[Refactor] #40653 Separated mind-magic-eater.c/h from spells-object.c/h
authorHourier <hourier@users.sourceforge.jp>
Fri, 21 Aug 2020 04:51:09 +0000 (13:51 +0900)
committerHourier <hourier@users.sourceforge.jp>
Fri, 21 Aug 2020 04:51:09 +0000 (13:51 +0900)
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/io/input-key-processor.c
src/mind/mind-magic-eater.c [new file with mode: 0644]
src/mind/mind-magic-eater.h [new file with mode: 0644]
src/racial/racial-switcher.c
src/spell/spells-object.c
src/spell/spells-object.h

index 2031bc1..be76c04 100644 (file)
     <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-eater.c" />\r
     <ClCompile Include="..\..\src\mind\mind-magic-resistance.c" />\r
     <ClCompile Include="..\..\src\mind\mind-monk.c" />\r
     <ClCompile Include="..\..\src\mind\mind-power-getter.c" />\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-eater.h" />\r
     <ClInclude Include="..\..\src\mind\mind-magic-resistance.h" />\r
     <ClInclude Include="..\..\src\mind\mind-monk.h" />\r
     <ClInclude Include="..\..\src\mind\mind-numbers.h" />\r
index e18bccf..a4ba11c 100644 (file)
     <ClCompile Include="..\..\src\mind\mind-archer.c">
       <Filter>mind</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\mind\mind-magic-eater.c">
+      <Filter>mind</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\combat\shoot.h">
     <ClInclude Include="..\..\src\mind\mind-archer.h">
       <Filter>mind</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\mind\mind-magic-eater.h">
+      <Filter>mind</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index 3a11d84..d17f64a 100644 (file)
@@ -427,6 +427,7 @@ hengband_SOURCES = \
        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-eater.c mind/mind-magic-eater.h \
        mind/mind-magic-resistance.c mind/mind-magic-resistance.h \
        mind/mind-mindcrafter.c mind/mind-mindcrafter.h \
        mind/mind-mirror-master.c mind/mind-mirror-master.h \
index dbb0d1f..d0641ab 100644 (file)
 #include "main/sound-definitions-table.h"
 #include "main/sound-of-music.h"
 #include "mind/mind-blue-mage.h"
+#include "mind/mind-magic-eater.h"
 #include "mind/mind-sniper.h"
 #include "mind/snipe-types.h"
 #include "player/attack-defense-types.h"
 #include "player/player-class.h"
 #include "player/special-defense-types.h"
-#include "spell/spells-object.h"
 #include "status/action-setter.h"
 #include "store/home.h"
 #include "store/store-util.h"
diff --git a/src/mind/mind-magic-eater.c b/src/mind/mind-magic-eater.c
new file mode 100644 (file)
index 0000000..0701138
--- /dev/null
@@ -0,0 +1,86 @@
+#include "mind/mind-magic-eater.h"
+#include "flavor/flavor-describer.h"
+#include "floor/floor-object.h"
+#include "inventory/inventory-object.h"
+#include "object-hook/hook-magic.h"
+#include "object/item-tester-hooker.h"
+#include "object/item-use-flags.h"
+#include "perception/object-perception.h"
+#include "sv-definition/sv-staff-types.h"
+#include "system/object-type-definition.h"
+#include "view/display-messages.h"
+
+/*!
+ * @brief \96\82\93¹\8bï\8fp\8et\82Ì\96\82\97Í\8eæ\82è\8d\9e\82Ý\8f\88\97\9d
+ * @param user_ptr \83A\83C\83e\83\80\82ð\8eæ\82è\8d\9e\82Þ\83N\83\8a\81[\83`\83\83\81[
+ * @return \8eæ\82è\8d\9e\82Ý\82ð\8eÀ\8ds\82µ\82½\82çTRUE\81A\83L\83\83\83\93\83Z\83\8b\82µ\82½\82çFALSE\82ð\95Ô\82·
+ */
+bool import_magic_device(player_type *user_ptr)
+{
+    item_tester_hook = item_tester_hook_recharge;
+    concptr q = _("\82Ç\82Ì\83A\83C\83e\83\80\82Ì\96\82\97Í\82ð\8eæ\82è\8d\9e\82Ý\82Ü\82·\82©? ", "Gain power of which item? ");
+    concptr s = _("\96\82\97Í\82ð\8eæ\82è\8d\9e\82ß\82é\83A\83C\83e\83\80\82ª\82È\82¢\81B", "You have nothing to gain power.");
+    OBJECT_IDX item;
+    object_type *o_ptr = choose_object(user_ptr, &item, q, s, USE_INVEN | USE_FLOOR, 0);
+    if (!o_ptr)
+        return FALSE;
+
+    if (o_ptr->tval == TV_STAFF && o_ptr->sval == SV_STAFF_NOTHING) {
+        msg_print(_("\82±\82Ì\8fñ\82É\82Í\94­\93®\82Ì\88×\82Ì\94\\97Í\82Í\89½\82à\94õ\82í\82Á\82Ä\82¢\82È\82¢\82æ\82¤\82¾\81B", "This staff doesn't have any magical ability."));
+        return FALSE;
+    }
+
+    if (!object_is_known(o_ptr)) {
+        msg_print(_("\8aÓ\92è\82³\82ê\82Ä\82¢\82È\82¢\82Æ\8eæ\82è\8d\9e\82ß\82È\82¢\81B", "You need to identify before absorbing."));
+        return FALSE;
+    }
+
+    if (o_ptr->timeout) {
+        msg_print(_("\8f[\93U\92\86\82Ì\83A\83C\83e\83\80\82Í\8eæ\82è\8d\9e\82ß\82È\82¢\81B", "This item is still charging."));
+        return FALSE;
+    }
+
+    PARAMETER_VALUE pval = o_ptr->pval;
+    int ext = 0;
+    if (o_ptr->tval == TV_ROD)
+        ext = 72;
+    else if (o_ptr->tval == TV_WAND)
+        ext = 36;
+
+    if (o_ptr->tval == TV_ROD) {
+        user_ptr->magic_num2[o_ptr->sval + ext] += (MAGIC_NUM2)o_ptr->number;
+        if (user_ptr->magic_num2[o_ptr->sval + ext] > 99)
+            user_ptr->magic_num2[o_ptr->sval + ext] = 99;
+    } else {
+        int num;
+        for (num = o_ptr->number; num; num--) {
+            int gain_num = pval;
+            if (o_ptr->tval == TV_WAND)
+                gain_num = (pval + num - 1) / num;
+            if (user_ptr->magic_num2[o_ptr->sval + ext]) {
+                gain_num *= 256;
+                gain_num = (gain_num / 3 + randint0(gain_num / 3)) / 256;
+                if (gain_num < 1)
+                    gain_num = 1;
+            }
+            user_ptr->magic_num2[o_ptr->sval + ext] += (MAGIC_NUM2)gain_num;
+            if (user_ptr->magic_num2[o_ptr->sval + ext] > 99)
+                user_ptr->magic_num2[o_ptr->sval + ext] = 99;
+            user_ptr->magic_num1[o_ptr->sval + ext] += pval * 0x10000;
+            if (user_ptr->magic_num1[o_ptr->sval + ext] > 99 * 0x10000)
+                user_ptr->magic_num1[o_ptr->sval + ext] = 99 * 0x10000;
+            if (user_ptr->magic_num1[o_ptr->sval + ext] > user_ptr->magic_num2[o_ptr->sval + ext] * 0x10000)
+                user_ptr->magic_num1[o_ptr->sval + ext] = user_ptr->magic_num2[o_ptr->sval + ext] * 0x10000;
+            if (o_ptr->tval == TV_WAND)
+                pval -= (pval + num - 1) / num;
+        }
+    }
+
+    GAME_TEXT o_name[MAX_NLEN];
+    describe_flavor(user_ptr, o_name, o_ptr, 0);
+    msg_format(_("%s\82Ì\96\82\97Í\82ð\8eæ\82è\8d\9e\82ñ\82¾\81B", "You absorb magic of %s."), o_name);
+
+    vary_item(user_ptr, item, -999);
+    take_turn(user_ptr, 100);
+    return TRUE;
+}
diff --git a/src/mind/mind-magic-eater.h b/src/mind/mind-magic-eater.h
new file mode 100644 (file)
index 0000000..ecca775
--- /dev/null
@@ -0,0 +1,5 @@
+#pragma once
+
+#include "system/angband.h"
+
+bool import_magic_device(player_type *creature_ptr);
index f8beb25..ee58f6d 100644 (file)
@@ -32,6 +32,7 @@
 #include "mind/mind-cavalry.h"
 #include "mind/mind-force-trainer.h"
 #include "mind/mind-mage.h"
+#include "mind/mind-magic-eater.h"
 #include "mind/mind-mirror-master.h"
 #include "mind/mind-monk.h"
 #include "mind/mind-ninja.h"
index 0ae05e4..c6d67b1 100644 (file)
@@ -102,85 +102,6 @@ static amuse_type amuse_info[]
           { 0, 0, 0, 0 } };
 
 /*!
- * @brief 魔道具術師の魔力取り込み処理
- * @param user_ptr アイテムを取り込むクリーチャー
- * @return 取り込みを実行したらTRUE、キャンセルしたらFALSEを返す
- */
-bool import_magic_device(player_type *user_ptr)
-{
-    /* Only accept legal items */
-    item_tester_hook = item_tester_hook_recharge;
-
-    concptr q = _("どのアイテムの魔力を取り込みますか? ", "Gain power of which item? ");
-    concptr s = _("魔力を取り込めるアイテムがない。", "You have nothing to gain power.");
-
-    OBJECT_IDX item;
-    object_type *o_ptr;
-    o_ptr = choose_object(user_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), 0);
-    if (!o_ptr)
-        return FALSE;
-
-    if (o_ptr->tval == TV_STAFF && o_ptr->sval == SV_STAFF_NOTHING) {
-        msg_print(_("この杖には発動の為の能力は何も備わっていないようだ。", "This staff doesn't have any magical ability."));
-        return FALSE;
-    }
-
-    if (!object_is_known(o_ptr)) {
-        msg_print(_("鑑定されていないと取り込めない。", "You need to identify before absorbing."));
-        return FALSE;
-    }
-
-    if (o_ptr->timeout) {
-        msg_print(_("充填中のアイテムは取り込めない。", "This item is still charging."));
-        return FALSE;
-    }
-
-    PARAMETER_VALUE pval = o_ptr->pval;
-    int ext = 0;
-    if (o_ptr->tval == TV_ROD)
-        ext = 72;
-    else if (o_ptr->tval == TV_WAND)
-        ext = 36;
-
-    if (o_ptr->tval == TV_ROD) {
-        user_ptr->magic_num2[o_ptr->sval + ext] += (MAGIC_NUM2)o_ptr->number;
-        if (user_ptr->magic_num2[o_ptr->sval + ext] > 99)
-            user_ptr->magic_num2[o_ptr->sval + ext] = 99;
-    } else {
-        int num;
-        for (num = o_ptr->number; num; num--) {
-            int gain_num = pval;
-            if (o_ptr->tval == TV_WAND)
-                gain_num = (pval + num - 1) / num;
-            if (user_ptr->magic_num2[o_ptr->sval + ext]) {
-                gain_num *= 256;
-                gain_num = (gain_num / 3 + randint0(gain_num / 3)) / 256;
-                if (gain_num < 1)
-                    gain_num = 1;
-            }
-            user_ptr->magic_num2[o_ptr->sval + ext] += (MAGIC_NUM2)gain_num;
-            if (user_ptr->magic_num2[o_ptr->sval + ext] > 99)
-                user_ptr->magic_num2[o_ptr->sval + ext] = 99;
-            user_ptr->magic_num1[o_ptr->sval + ext] += pval * 0x10000;
-            if (user_ptr->magic_num1[o_ptr->sval + ext] > 99 * 0x10000)
-                user_ptr->magic_num1[o_ptr->sval + ext] = 99 * 0x10000;
-            if (user_ptr->magic_num1[o_ptr->sval + ext] > user_ptr->magic_num2[o_ptr->sval + ext] * 0x10000)
-                user_ptr->magic_num1[o_ptr->sval + ext] = user_ptr->magic_num2[o_ptr->sval + ext] * 0x10000;
-            if (o_ptr->tval == TV_WAND)
-                pval -= (pval + num - 1) / num;
-        }
-    }
-
-    GAME_TEXT o_name[MAX_NLEN];
-    describe_flavor(user_ptr, o_name, o_ptr, 0);
-    msg_format(_("%sの魔力を取り込んだ。", "You absorb magic of %s."), o_name);
-
-    vary_item(user_ptr, item, -999);
-    take_turn(user_ptr, 100);
-    return TRUE;
-}
-
-/*!
  * @brief 誰得ドロップを行う。
  * @param creature_ptr プレーヤーへの参照ポインタ
  * @param y1 配置したいフロアのY座標
index f56316f..bb1df75 100644 (file)
@@ -2,7 +2,6 @@
 
 #include "system/angband.h"
 
-bool import_magic_device(player_type *creature_ptr);
 void amusement(player_type *creature_ptr, POSITION y1, POSITION x1, int num, bool known);
 void acquirement(player_type *caster_ptr, POSITION y1, POSITION x1, int num, bool great, bool special, bool known);
 void acquire_chaos_weapon(player_type *creature_ptr);