OSDN Git Service

[Implement] #37324 エゴ/アーティファクトの発動に死者復活を追加した / Added activation of ego/artifact: Anima...
authorHourier <hourier@users.sourceforge.jp>
Thu, 8 Oct 2020 13:11:10 +0000 (22:11 +0900)
committerHourier <hourier@users.sourceforge.jp>
Thu, 8 Oct 2020 13:27:34 +0000 (22:27 +0900)
lib/edit/a_info.txt
src/art-definition/random-art-effects.h
src/object-activation/activation-others.c
src/object-activation/activation-others.h
src/object-activation/activation-switcher.c
src/object-enchant/activation-info-table.c
src/object-enchant/activation-info-table.h
src/object-enchant/object-boost.c

index f4c5ce9..95865e6 100644 (file)
@@ -4205,14 +4205,14 @@ D:その刃は数多くの赤衣の者達に握られ、悪しき者たちを屠
 
 N:253:トゲトゲバット『エスカリボルグ』
 E:'Excaliborg, the *thorny* bat'
-I:21:16:4
-W:35:40:190:150000
-P:0:7d7:30:30:10
+I:21:16:2
+W:35:40:190:85000
+P:0:7d7:18:18:10
 F:STR | DEX | CON | SUST_STR | SUST_DEX | SUST_CON
-F:VORPAL | VAMPIRIC | KILL_HUMAN | BLESSED
+F:VORPAL | VAMPIRIC | KILL_HUMAN | BLESSED | ACTIVATE
 F:RES_FIRE | RES_LITE | LEVITATION
 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
 F:FULL_NAME
 U:ANIM_DEAD
-D:$This bat is filled with the unremitting love of the user.
-D:このバットには使用者のたゆまぬ愛が込められている。
+D:$This glowing black bat is filled with the unremitting love of the user.
+D:この黒光りするバットには使用者のたゆまぬ愛が込められている。
index ee6bc99..4101112 100644 (file)
@@ -1,7 +1,7 @@
 #pragma once
 
 typedef enum random_art_activation_type {
-       ACT_SUNLIGHT = 1,
+    ACT_SUNLIGHT = 1,
     ACT_BO_MISS_1 = 2,
     ACT_BA_POIS_1 = 3,
     ACT_BO_ELEC_1 = 4,
@@ -43,7 +43,8 @@ typedef enum random_art_activation_type {
     ACT_BR_DRAGON = 40,
     ACT_BA_FIRE_4 = 41,
     ACT_BA_NUKE_1 = 42,
-    /* 42 - 50 unused */
+    /* 43 - 49 unused */
+    ACT_ANIM_DEAD = 50,
     ACT_CONFUSE = 51,
     ACT_SLEEP = 52,
     ACT_QUAKE = 53,
index 986298f..577358f 100644 (file)
@@ -346,3 +346,12 @@ bool activate_recall(player_type *user_ptr)
     msg_print(_("やわらかな白色に輝いている...", "It glows soft white..."));
     return recall_player(user_ptr, randint0(21) + 15);
 }
+
+bool activate_animate_dead(player_type *user_ptr, object_type *o_ptr)
+{
+    msg_print(_("黄金色の光が溢れ出た...", "It emitted a golden light..."));
+    if (o_ptr->name1 > 0)
+        msg_print(_("ぴぴるぴるぴるぴぴるぴ~♪", "Pipiru piru piru pipiru pii"));
+
+    return animate_dead(user_ptr, 0, user_ptr->y, user_ptr->x);
+}
index 74e106e..84ee2dd 100644 (file)
@@ -37,3 +37,4 @@ bool activate_exploding_rune(player_type *user_ptr);
 bool activate_protection_rune(player_type *user_ptr);
 bool activate_light(player_type *user_ptr, concptr name);
 bool activate_recall(player_type *user_ptr);
+bool activate_animate_dead(player_type *user_ptr, object_type *o_ptr);
index b1fd025..65c5ea8 100644 (file)
@@ -123,6 +123,8 @@ bool switch_activation(player_type *user_ptr, object_type *o_ptr, const activati
         return activate_breath_cold(user_ptr, o_ptr);
     case ACT_BR_DRAGON:
         return activate_dragon_breath(user_ptr, o_ptr);
+    case ACT_ANIM_DEAD:
+        return activate_animate_dead(user_ptr, o_ptr);
     case ACT_CONFUSE:
         return activate_confusion(user_ptr);
     case ACT_SLEEP:
index e8eead6..631383c 100644 (file)
@@ -5,7 +5,8 @@
  * @brief アイテムの発動効果テーブル /
  * Define flags, levels, values of activations
  */
-const activation_type activation_info[] = { { "SUNLIGHT", ACT_SUNLIGHT, 10, 250, { 10, 0 }, _("太陽光線", "beam of sunlight") },
+const activation_type activation_info[MAX_ACTIVATION_TYPE] = {
+    { "SUNLIGHT", ACT_SUNLIGHT, 10, 250, { 10, 0 }, _("太陽光線", "beam of sunlight") },
     { "BO_MISS_1", ACT_BO_MISS_1, 10, 250, { 2, 0 }, _("マジック・ミサイル(2d6)", "magic missile (2d6)") },
     { "BA_POIS_1", ACT_BA_POIS_1, 10, 300, { 4, 0 }, _("悪臭雲(12)", "stinking cloud (12)") },
     { "BO_ELEC_1", ACT_BO_ELEC_1, 20, 250, { 5, 0 }, _("サンダー・ボルト(4d8)", "lightning bolt (4d8)") },
@@ -51,7 +52,8 @@ const activation_type activation_info[] = { { "SUNLIGHT", ACT_SUNLIGHT, 10, 250,
 
     { "CONFUSE", ACT_CONFUSE, 10, 500, { 10, 0 }, _("パニック・モンスター", "confuse monster") },
     { "SLEEP", ACT_SLEEP, 10, 750, { 15, 0 }, _("周囲のモンスターを眠らせる", "sleep nearby monsters") },
-    { "QUAKE", ACT_QUAKE, 30, 600, { 20, 0 }, _("地震", "earthquake") }, { "TERROR", ACT_TERROR, 20, 2500, { -1, 0 }, _("恐慌", "terror") },
+    { "QUAKE", ACT_QUAKE, 30, 600, { 20, 0 }, _("地震", "earthquake") },
+    { "TERROR", ACT_TERROR, 20, 2500, { -1, 0 }, _("恐慌", "terror") },
     { "TELE_AWAY", ACT_TELE_AWAY, 20, 2000, { 15, 0 }, _("テレポート・アウェイ", "teleport away") },
     { "BANISH_EVIL", ACT_BANISH_EVIL, 40, 2000, { 250, 0 }, _("邪悪消滅", "banish evil") },
     { "GENOCIDE", ACT_GENOCIDE, 50, 10000, { 500, 0 }, _("抹殺", "genocide") },
@@ -111,7 +113,8 @@ const activation_type activation_info[] = { { "SUNLIGHT", ACT_SUNLIGHT, 10, 250,
     { "SATIATE", ACT_SATIATE, 10, 2000, { 200, 0 }, _("空腹充足", "satisfy hunger") },
     { "DEST_DOOR", ACT_DEST_DOOR, 10, 100, { 10, 0 }, _("ドア破壊", "destroy doors") },
     { "STONE_MUD", ACT_STONE_MUD, 20, 1000, { 3, 0 }, _("岩石溶解", "stone to mud") },
-    { "RECHARGE", ACT_RECHARGE, 30, 1000, { 70, 0 }, _("魔力充填", "recharging") }, { "ALCHEMY", ACT_ALCHEMY, 50, 10000, { 500, 0 }, _("錬金術", "alchemy") },
+    { "RECHARGE", ACT_RECHARGE, 30, 1000, { 70, 0 }, _("魔力充填", "recharging") },
+    { "ALCHEMY", ACT_ALCHEMY, 50, 10000, { 500, 0 }, _("錬金術", "alchemy") },
     { "DIM_DOOR", ACT_DIM_DOOR, 50, 10000, { 100, 0 }, _("次元の扉", "dimension door") },
     { "TELEPORT", ACT_TELEPORT, 10, 2000, { 25, 0 }, _("テレポート", "teleport") },
     { "RECALL", ACT_RECALL, 30, 7500, { 200, 0 }, _("帰還の詔", "word of recall") },
@@ -138,5 +141,7 @@ const activation_type activation_info[] = { { "SUNLIGHT", ACT_SUNLIGHT, 10, 250,
     { "STRAIN_HASTE", ACT_STRAIN_HASTE, 10, 1000, { 120, 100 }, _("体力と引き換えに加速", "haste with strain") },
     { "GRAND_CROSS", ACT_GRAND_CROSS, 30, 15000, { 250, 200 }, _("グランド・クロス", "grand cross") },
     { "TELEPORT_LEVEL", ACT_TELEPORT_LEVEL, 10, 1500, { 100, 200 }, _("テレポート・レベル", "teleort level") },
-    { "ARTS_FALLING_STAR", ACT_FALLING_STAR, 20, 5500, { 30, 50 }, _("魔剣・流れ星", "blade arts 'falling star'") }, { NULL, 0, 0, 0, { 0, 0 }, "" }
+    { "ARTS_FALLING_STAR", ACT_FALLING_STAR, 20, 5500, { 30, 50 }, _("魔剣・流れ星", "blade arts 'falling star'") },
+    { "ANIM_DEAD", ACT_ANIM_DEAD, 30, 2000, { 10, 10 }, _("死者復活", "animate dead") },
+    { NULL, 0, 0, 0, { 0, 0 }, "" },
 };
index b4ce797..0dc28e5 100644 (file)
@@ -14,4 +14,5 @@ typedef struct activation_type {
     concptr desc;
 } activation_type;
 
-extern const activation_type activation_info[];
+#define MAX_ACTIVATION_TYPE 130
+extern const activation_type activation_info[MAX_ACTIVATION_TYPE];
index b202bd1..fc54f7d 100644 (file)
@@ -448,6 +448,7 @@ void one_activation(object_type *o_ptr)
             chance = 50;
             break;
         case ACT_SUMMON_ANIMAL:
+        case ACT_ANIM_DEAD:
             chance = 40;
             break;
         case ACT_DISP_EVIL: