OSDN Git Service

さらに続きを実装。
authoriks <iks@0568b783-4c39-0410-ac80-bf13821ea2a2>
Tue, 29 Jan 2013 04:48:09 +0000 (04:48 +0000)
committeriks <iks@0568b783-4c39-0410-ac80-bf13821ea2a2>
Tue, 29 Jan 2013 04:48:09 +0000 (04:48 +0000)
lib/edit/a_info.txt
src/artifact.c
src/cmd6.c
src/defines.h
src/init1.c
src/object1.c
src/object2.c
src/wizard1.c

index f673185..8388ecd 100644 (file)
@@ -199,7 +199,6 @@ D:
 D:¥ô¥¡¥ó¥ä¡¼¥ë²¤Î¾åµé²¦¥¤¥ó¥°¥¦¥§¤Î²È·ÏÅÁÍè¤Î²ÈÊõ¡£
 D:¥¤¥ó¥°¥¦¥§¤ËÂй³¤Ç¤­¤ë¼Ù°­¤Ê¤â¤Î¤Ï¤¤¤Ê¤«¤Ã¤¿¡£
 
-
 # The Necklace of the Dwarves
 
 N:6:¥É¥ï¡¼¥Õ¤Î
@@ -218,7 +217,6 @@ D:
 D:´è¶¯¤Ê¥É¥ï¡¼¥Õ¤Î¿¦¿Íº²¤¬¤·¤Ã¤«¤ê¤È½É¤Ã¤Æ¤ª¤ê¡¢
 D:ÃØéá¤Î»å¤Î¤è¤¦¤Ë¿È¤ËÉÕ¤±¤ë¼Ô¤Ë¥Õ¥£¥Ã¥È¤¹¤ë¡£
 
-
 # The Incandescent Light of Yeduson
 # Thomas Alva Yeduson the "Wizard of Menlo Park"
 # patented 1,093 inventions.
@@ -246,6 +244,7 @@ I:45:32:1
 W:50:40:2:75000
 F:STR | INT | WIS | DEX | CON | CHR | STEALTH | HIDE_TYPE |
 F:RES_POIS | ACTIVATE | SEE_INVIS | SEARCH | WARNING | INSTA_ART
+U:DRAIN_1
 D:$This bracelet has its own will, which was created by Marlin
 D:$ the prince of chaos. It is  invisible but it sometimes
 D:$ ripples to warn owner's dangers. It can morph to strangle
@@ -273,7 +272,6 @@ U:XTRA_SPEED
 D:$The treasure of Tulkas, most fleet and wrathful of the Valar.
 D:¥ô¥¡¥é¡¼¥ë¤ÎÃæ¤Ç¤âºÇ¤âÁÇÁ᤯¤«¤ÄͦÌԤʥȥ¥¥ë¥«¥¹¤ÎÊõ¤À¡£
 
-
 # The Ring of Power (Narya)
 
 N:10:¡Ô¥Ê¥ë¥ä¡Õ¤È¤¤¤¦
@@ -378,13 +376,13 @@ D:
 D:¹ï¤ó¤Ç¤¢¤ë¡£¤³¤Î¤ï¤±¤ï¤«¤é¤ó²Ò¤ÎÎϤϤ¢¤Þ¤ê¤Ë¤â¶¯Âç¤Ê¤Î¤Ç¡¢
 D:ÉáÄ̤μԤϤ½¤ì¤ò¿È¤ËÉÕ¤±¤ë¤À¤±¤ÇÏĤá¤é¤ì»ÙÇÛ¤µ¤ì¤Æ¤·¤Þ¤¦¡£
 
-
 N:15:¥Ñ¥é¥ó¥Æ¥£¥¢¤ÎÀÐ
 E:Palantir~ of Westernesse
 I:39:8:3
 W:60:50:10:60000
 P:0:1d1:0:0:0
 F:WIS | CHR | ACTIVATE | TELEPATHY | INSTA_ART | FULL_NAME
+U:DETECT_UNIQUE
 D:$A shining white ball of unbreakable crystal, the ancient palantiri, 
 D:$or 'far-watchers', were used by kings of Numenor and later by the Exiles 
 D:$for rapid communication between distant lands. 
@@ -392,7 +390,6 @@ D:
 D:¸å¤Ë¤Ï¥¨¥ì¥ó¥Ç¥£¥ë¤ò¤Ï¤¸¤á¤È¤¹¤ëήϲ¤Î̱¤Ë¤è¤Ã¤Æ¡¢Î¥¤ì¤¿ÅÚÃϤδ֤Î
 D:¹â®ÄÌ¿®¤ËÍѤ¤¤é¤ì¤¿¡Ö±ó˾¡×¤ÎÀФÀ¡£
 
-
 N:16:¡Ø¥¯¥ê¥à¥¾¥ó¡Ù
 E:'Crimson'
 I:19:50:4
@@ -410,7 +407,6 @@ D:
 D:¥¯¥ê¥à¥¾¥ó¤Ï¤è¤ê¶¯ÎϤÊÉð´ï¤Ø¤È¿Ê²½¤·¤Æ¤¤¤Ã¤¿¡£¡½¡×(¥Ç¥¹¥¯
 D:¥ê¥à¥¾¥ó¡¤¥¨¥³¡¼¥ë¥½¥Õ¥È¥¦¥§¥¢)
 
-
 N:17:Ã챤Î
 E:of Lore
 I:39:7:0
@@ -430,6 +426,7 @@ P:0:0d0:12:0:0
 F:STEALTH | SHOW_MODS | HIDE_TYPE |
 F:RES_CONF | SUST_DEX | ACTIVATE |
 F:INSTA_ART
+U:PESTICIDE
 D:$A slim neckpiece of True-silver, with quiet spells of Ithilien to aid and 
 D:$protect the wearer.
 D:¡Ö¤Þ¤³¤È¤Î¶ä¡×¤Çºî¤é¤ì¤¿¼ó¾þ¤ê¤Ç¡¢¿È¤ËÉÕ¤±¤ë¼Ô¤ò½õ¤±¤Æ¼é¤ë¥¤¥·¥ê¥¨¥ó
@@ -527,6 +524,7 @@ F:STEALTH | WIS | INT | SEE_INVIS |
 F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS |
 F:HOLD_LIFE | RES_NETHER | RES_DARK | RES_FEAR |
 F:ACTIVATE
+U:CHOIR_SINGS
 D:$The shining armor of Lohengrin the son of Parsifal.
 D:$ If you wears it, the holy grail gives to you the devine protection
 D:$  from all evils. (W.R.Wagner, 'Parsifal')
@@ -2394,7 +2392,7 @@ P:0:2d5:10:6:8
 F:WIS | INFRA | HIDE_TYPE | BLESSED |
 F:BRAND_COLD | SLAY_ORC | RES_COLD | RES_LITE | LITE | REGEN |
 F:ACTIVATE | SHOW_MODS | XTRA_H_RES
-U:DRAIN_1
+U:DRAIN_2
 D:$Wielded by the High Priest of Meneltarma, this great mace gleams coldly as 
 D:$though moonlit, and it can strike as mighty a blow spiritually as 
 D:$physically.
@@ -2454,6 +2452,7 @@ I:19:23:10
 W:50:25:110:100000
 P:0:0d0:10:14:0
 F:SPEED | RES_FIRE | XTRA_MIGHT | ACTIVATE | SHOW_MODS | XTRA_RES_OR_POWER
+U:BRAND_FIRE_BOLTS
 D:$Magic power of this crossbow of Brand the prince of Amber will enable
 D:$ you to move faster.
 D:¥È¥é¥ó¥×¤ÎËâÎϤò¼«Ê¬¤Îʪ¤Ë¤·¡¢¿·¤¿¤Ê±§Ãè¤òÁϤ¤·¤è¤¦¤È¤·¤¿
@@ -2572,6 +2571,7 @@ W:30:30:180:120000
 P:0:2d6:10:12:2
 F:CON | BLOWS | HIDE_TYPE | BRAND_ACID | SHOW_MODS
 F:SLAY_TROLL | SLAY_DEMON | ACTIVATE
+U:HELO_SPEED
 D:$"Hurin [...] wielded the axe two-handed, and it is sung that the axe
 D:$ smoked in the black blood of the troll-guard of Gothmog, until it withered,
 D:$ and each time that he slew Hurin cried 'Aure entuluva! Day shall come
@@ -2642,6 +2642,7 @@ W:70:4:100:65000
 P:10:1d2:0:0:20
 F:LITE | CHR | RES_ELEC | RES_ACID | HIDE_TYPE | REFLECT |
 F:SUST_WIS | SUST_CHR | ACTIVATE
+U:BLINDING_LIGHT
 D:$The legendary shield of Gil-Galad, who fought his way to the gates of
 D:$ the Dark Tower, and with whom came light even to Gorgoroth.
 D:¥Î¥ë¥É¡¼¥ë¤ÎºÇ¸å¤Î¾åµé²¦¡¢¥®¥ë=¥¬¥é¥É¤ÎÅÁÀâ¤Î½â¤À¡£Èà¤Ï¥Ð¥é¥É=¥É¥¥¥¢¤ÎÌç¤Þ¤Ç
@@ -2899,6 +2900,9 @@ P:0:4d9:6:23:10
 F:STR | DEX | HIDE_TYPE | SEARCH | FREE_ACT | SLAY_HUMAN |
 F:SLAY_TROLL | SLAY_GIANT | SLAY_ANIMAL | SLAY_ORC | RES_FIRE | RES_COLD |
 F:RES_ELEC | RES_ACID | RES_FEAR | SHOW_MODS | RIDING
+D:$Because of very superb sharpness such as dragon flies are 
+D:$cut which perches on the tip of this spear, it is called
+D:$'Tonbo giri' which means 'dragon fry cutter'. 
 D:ÆÁÀî»ÍÅ·²¦¤Î£±¿ÍËÜ¿Ã龡¤Î°¦ÍѤÎÁä¤À¡£
 D:¤½¤ÎÀÚ¤ìÌ£¤ÏÊæÀè¤Ë»ß¤Þ¤Ã¤¿éñéÙ¤¬ÀÚ¤ì¤ÆÍî¤Á¤ë¤Û¤É¤Ç¤¢¤ë¡£
 
@@ -2908,6 +2912,10 @@ I:21:2:1
 W:8:5:30:18000
 P:0:1d6:16:13:0
 F:INT | WIS | LEVITATION | SHOW_MODS | ACTIVATE | SEE_INVIS
+U:TELEKINESIS
+D:$This is the whip of the famous archaeologist Prof. Jones.
+D:¤¢¤ÎÃø̾¤Ê¹Í¸Å³Ø¼Ô¥¸¥ç¡¼¥ó¥ºÇî»Î¤Î¥à¥Á¤À¡£
+D:ɬ¤º¤ä¡¢¥¹¡¼¥Ñ¡¼¥¢¥¯¥·¥ç¥ó¤ò²Äǽ¤Ë¤¹¤ë¤À¤í¤¦¡£
 
 # The Spear 'GaeBolg'
 N:163:¡Ø¥¬¥¨¥Ü¥ë¥°¡Ù
@@ -3001,6 +3009,7 @@ I:21:7:3
 W:40:5:100:808
 P:0:1d7:-5:10:3
 F:STR | CHR | RES_FIRE | ACTIVATE | 
+U:HELO
 D:¾Ã²Ðºî¶È¤Ë¤¢¤¿¤Ã¤Æ¡¢»Îµ¤¤ò¸ÝÉñ¤¹¤Ù¤¯¿¶¤ê¤¿¤Æ¤é¤ì¤¿¾ó¤À¡£
 D:¾ó¤ÎÀè¤ËÂâ¤Î¥Þ¡¼¥¯Æþ¤ê¤Î±ßÈפ¬¤¢¤ê¡¢¤½¤Î²¼Â¦¤«¤é
 D:Ť¤ÂÓ¾õ¤Î¾þ¤ê¤¬´öËܤâ¤Î¤Ó¤Æ¤¤¤ë¡£
@@ -3205,6 +3214,7 @@ W:50:6:160:90000
 P:10:1d6:0:0:20
 F:LITE | RES_BLIND | RES_DARK | RES_NETHER | RES_ELEC | RES_FIRE |
 F:ACTIVATE | ESP_GOOD
+U:CURING
 D:$A shining shield, once borne by the great mariner Earendil, "scored with 
 D:$runes to keep all wounds and harm from him".
 D:¤«¤Ä¤Æ°ÎÂç¤Ê¤ëÁ¥¾è¤ê¥¨¥¢¥ì¥ó¥Ç¥£¥ë¤¬¿È¤ËÉÕ¤±¤Æ¤¤¤¿µ±¤¯½â¤À¡£
@@ -3433,6 +3443,7 @@ I:35:3:0
 W:20:20:30:50000
 P:3:0d0:0:0:20
 F:RES_COLD | RES_ACID | RES_CHAOS | LEVITATION | ACTIVATE
+U:RESIST_COLD
 D:¥¬¥Á¥ã¥Ô¥ó¤ÈÂФò¤Ê¤¹ÀÖ¤¤½Ã¤ÎÌÓÈé¤Î¥¯¥í¡¼¥¯¤À¡£
 
 # ¶â°À½¥é¥á¥é¡¼¡¦¥¢¡¼¥Þ¡¼¡Ø¥Ð¥Æ¥ì¥ó³»¡Ù
@@ -3470,6 +3481,7 @@ P:0:3d3:11:22:0
 F:STR | DEX | CHR | TUNNEL | BLESSED |
 F:SLAY_EVIL | SLAY_DRAGON | SLAY_ORC | SLAY_GIANT | SLAY_DEMON |
 F:RES_COLD | SEE_INVIS | RES_FEAR | REGEN
+U:HELO
 D:¥Ð¥È¥ë¥Ï¥ó¥Þ¡¼»á²¤Î¥É¥ï¡¼¥Õ¤ÎŤˤ·¤Æ¡¢ÅÁÀâ¤ÎÅԥߥ¹¥ê¥ë¡¦¥Û¡¼¥ë¤Î²¦¡¢
 D:¥Ö¥ë¡¼¥Î¡¼¡¦¥Ð¥È¥ë¥Ï¥ó¥Þ¡¼¤ÎÀ¸³¶ºÇ¹â·æºî¤À¡£
 D:¡Ö¤Ê¤ë¤Û¤É¤Í¡×¥É¥ê¥Ã¥º¥É¤Ï¡¢¥Ï¥ó¥Þ¡¼¤ò¥Ö¥ë¡¼¥Î¡¼¤ËÊÖ¤·¤¿¡£
@@ -3629,6 +3641,7 @@ F:INT | CHR | INFRA | SEARCH | HIDE_TYPE | FULL_NAME |
 F:SEE_INVIS | FREE_ACT | SLOW_DIGEST | REGEN | LITE | WARNING |
 F:SH_FIRE | SH_ELEC | SH_COLD | ACTIVATE |
 F:INSTA_ART
+U:CURE_MANA_FULL
 
 N:220:¤â¤Î¤Þ¤Í¤Î»ÏÁÄ¥´¥´¤Î
 E:of Gogo
@@ -3657,6 +3670,7 @@ W:30:15:110:60000
 P:0:2d1:15:17:0
 F:STR | INFRA | RES_FIRE | SH_FIRE |
 F:ACTIVATE | HIDE_TYPE | SHOW_MODS
+U:BRAND_FIRE_BOLTS
 D:$This crossbow gives flame energy to bolts which it fires.
 D:¤³¤Îdz¤¨¤ë¤è¤¦¤Ê¿§¤Î¥¯¥í¥¹¥Ü¥¦¤Ï¡¢È¯¼Í¤¹¤ë¥Ü¥ë¥È¤Ë±ê¤ÎÎϤò
 D:Í¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
index f88555d..57ee412 100644 (file)
@@ -2105,13 +2105,13 @@ bool activate_random_artifact(object_type *o_ptr)
                case ACT_DRAIN_1:
                {
 #ifdef JP
-                       msg_print("¤½¤ì¤Ï¹õ¤¯µ±¤¤¤¿...");
+                       msg_format("¤¢¤Ê¤¿¤Ï%s¤ËŨ¤òÄù¤á»¦¤¹¤è¤¦Ì¿¤¸¤¿¡£", name);
 #else
-                       msg_print("It glows black...");
+                       msg_format("You order the %s to strangle your opponent.", name);
 #endif
                        if (!get_aim_dir(&dir)) return FALSE;
-                       if (drain_life(dir, 90))
-                       o_ptr->timeout = 70;
+                       if (drain_life(dir, 100))
+                       o_ptr->timeout = randint0(100) + 100;
                        break;
                }
 
@@ -2307,6 +2307,19 @@ bool activate_random_artifact(object_type *o_ptr)
                        break;
                }
 
+               case ACT_BA_MISS_3:
+               {
+                       if (!get_aim_dir(&dir)) return FALSE;
+#ifdef JP
+                       msg_print("¤¢¤Ê¤¿¤Ï¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
+#else
+                       msg_print("You breathe the elements.");
+#endif
+                       fire_ball(GF_MISSILE, dir, 300, 4);
+                       o_ptr->timeout = 500;
+                       break;
+               }
+
                case ACT_DISP_GOOD:
                {
 #ifdef JP
@@ -2371,16 +2384,28 @@ bool activate_random_artifact(object_type *o_ptr)
                        break;
                }
 
-               case ACT_BA_MISS_3:
+               case ACT_PESTICIDE:
                {
-                       if (!get_aim_dir(&dir)) return FALSE;
 #ifdef JP
-                       msg_print("¤¢¤Ê¤¿¤Ï¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
+                       msg_print("¤¢¤Ê¤¿¤Ï³²Ãî¤ò°ìÁݤ·¤¿¡£");
 #else
-                       msg_print("You breathe the elements.");
+                       msg_print("You exterminate small life.");
 #endif
-                       fire_ball(GF_MISSILE, dir, 300, 4);
-                       o_ptr->timeout = 500;
+                       (void)dispel_monsters(4);
+                       o_ptr->timeout = randint0(55) + 55;
+                       break;
+               }
+
+               case ACT_BLINDING_LIGHT:
+               {
+#ifdef JP
+                       msg_format("%s¤¬âÁ¤·¤¤¸÷¤Çµ±¤¤¤¿...", name);
+#else
+                       msg_format("The %s gleams with blinding light...", name);
+#endif
+                       fire_ball(GF_LITE, 0, 300, 6);
+                       confuse_monsters(3 * p_ptr->lev / 2);
+                       o_ptr->timeout = 250;
                        break;
                }
 
@@ -2667,6 +2692,25 @@ bool activate_random_artifact(object_type *o_ptr)
 
                /* Activate for healing */
 
+               case ACT_CHOIR_SINGS:
+               {
+#ifdef JP
+                       msg_print("Å·¹ñ¤Î²Î¤¬Ê¹¤³¤¨¤ë...");
+#else
+                       msg_print("A heavenly choir sings...");
+#endif
+                       (void)set_poisoned(0);
+                       (void)set_cut(0);
+                       (void)set_stun(0);
+                       (void)set_confused(0);
+                       (void)set_blind(0);
+                       (void)set_afraid(0);
+                       (void)set_hero(randint1(25) + 25, FALSE);
+                       (void)hp_player(777);
+                       o_ptr->timeout = 300;
+                       break;
+               }
+
                case ACT_CURE_LW:
                {
                        (void)set_afraid(0);
@@ -2761,6 +2805,69 @@ bool activate_random_artifact(object_type *o_ptr)
                        break;
                }
 
+               case ACT_CURING:
+               {
+#ifdef JP
+                       msg_format("%s¤ÎÍ¥¤·¤µ¤ËÌþ¤µ¤ì¤ë...", name);
+#else
+                       msg_format("the %s cures you affectionately ...", name);
+#endif
+                       (void)set_poisoned(0);
+                       (void)set_confused(0);
+                       (void)set_blind(0);
+                       (void)set_stun(0);
+                       (void)set_cut(0);
+                       (void)set_image(0);
+
+                       o_ptr->timeout = 100;
+                       break;
+               }
+
+               case ACT_CURE_MANA_FULL:
+               {
+#ifdef JP
+                       msg_format("%s¤¬ÀÄÇò¤¯¸÷¤Ã¤¿¡¥¡¥¡¥", name);
+#else
+                       msg_format("The %s glows pale...", name);
+#endif
+                       if (p_ptr->pclass == CLASS_MAGIC_EATER)
+                       {
+                               int i;
+                               for (i = 0; i < EATER_EXT*2; i++)
+                               {
+                                       p_ptr->magic_num1[i] += (p_ptr->magic_num2[i] < 10) ? EATER_CHARGE * 3 : p_ptr->magic_num2[i]*EATER_CHARGE/3;
+                                       if (p_ptr->magic_num1[i] > p_ptr->magic_num2[i]*EATER_CHARGE) p_ptr->magic_num1[i] = p_ptr->magic_num2[i]*EATER_CHARGE;
+                               }
+                               for (; i < EATER_EXT*3; i++)
+                               {
+                                       int k_idx = lookup_kind(TV_ROD, i-EATER_EXT*2);
+                                       p_ptr->magic_num1[i] -= ((p_ptr->magic_num2[i] < 10) ? EATER_ROD_CHARGE*3 : p_ptr->magic_num2[i]*EATER_ROD_CHARGE/3)*k_info[k_idx].pval;
+                                       if (p_ptr->magic_num1[i] < 0) p_ptr->magic_num1[i] = 0;
+                               }
+#ifdef JP
+                               msg_print("Ƭ¤¬¥Ï¥Ã¥­¥ê¤È¤·¤¿¡£");
+#else
+                               msg_print("You feel your head clear.");
+#endif
+                               p_ptr->window |= (PW_PLAYER);
+                       }
+                       else if (p_ptr->csp < p_ptr->msp)
+                       {
+                               p_ptr->csp = p_ptr->msp;
+                               p_ptr->csp_frac = 0;
+#ifdef JP
+                               msg_print("Ƭ¤¬¥Ï¥Ã¥­¥ê¤È¤·¤¿¡£");
+#else
+                               msg_print("You feel your head clear.");
+#endif
+                               p_ptr->redraw |= (PR_MANA);
+                               p_ptr->window |= (PW_PLAYER);
+                               p_ptr->window |= (PW_SPELL);
+                       }
+                       o_ptr->timeout = 777;
+                       break;
+               }
+
                /* Activate for timed effect */
 
                case ACT_ESP:
@@ -2846,6 +2953,85 @@ bool activate_random_artifact(object_type *o_ptr)
                        break;
                }
 
+               case ACT_HELO:
+               {
+                       (void)set_afraid(0);
+                       set_hero(randint1(25)+25, FALSE);
+                       hp_player(10);
+                       o_ptr->timeout = randint0(30) + 30;
+                       break;
+               }
+
+               case ACT_HELO_SPEED:
+               {
+                       (void)set_fast(randint1(50) + 50, FALSE);
+                       hp_player(10);
+                       set_afraid(0);
+                       set_hero(randint1(50) + 50, FALSE);
+                       o_ptr->timeout = randint0(200) + 100;
+                       break;
+               }
+
+               case ACT_RESIST_ACID:
+               {
+#ifdef JP
+                       msg_format("%s¤¬¹õ¤¯µ±¤¤¤¿...", name);
+#else
+                       msg_format("The %s grows black.", name);
+#endif
+                       (void)set_oppose_acid(randint1(20) + 20, FALSE);
+                       o_ptr->timeout = 40 + randint1(40);
+                       break;
+               }
+
+               case ACT_RESIST_FIRE:
+               {
+#ifdef JP
+                       msg_format("%s¤¬ÀÖ¤¯µ±¤¤¤¿...", name);
+#else
+                       msg_format("The %s grows red.", name);
+#endif
+                       (void)set_oppose_fire(randint1(20) + 20, FALSE);
+                       o_ptr->timeout = 40 + randint1(40);
+                       break;
+               }
+
+               case ACT_RESIST_COLD:
+               {
+#ifdef JP
+                       msg_format("%s¤¬Çò¤¯µ±¤¤¤¿...", name);
+#else
+                       msg_format("The %s grows white.", name);
+#endif
+                       (void)set_oppose_cold(randint1(20) + 20, FALSE);
+                       o_ptr->timeout = 40 + randint1(40);
+                       break;
+               }
+
+               case ACT_RESIST_ELEC:
+               {
+#ifdef JP
+                       msg_format("%s¤¬ÀĤ¯µ±¤¤¤¿...", name);
+#else
+                       msg_format("The %s grows blue.", name);
+#endif
+                       (void)set_oppose_cold(randint1(20) + 20, FALSE);
+                       o_ptr->timeout = 40 + randint1(40);
+                       break;
+               }
+
+               case ACT_RESIST_POIS:
+               {
+#ifdef JP
+                       msg_format("%s¤¬ÎФ˵±¤¤¤¿...", name);
+#else
+                       msg_format("The %s grows green.", name);
+#endif
+                       (void)set_oppose_cold(randint1(20) + 20, FALSE);
+                       o_ptr->timeout = 40 + randint1(40);
+                       break;
+               }
+
                /* Activate for general purpose effect (detection etc.) */
 
                case ACT_LIGHT:
@@ -3032,7 +3218,32 @@ bool activate_random_artifact(object_type *o_ptr)
                        break;
                }
 
+               case ACT_TELEKINESIS:
+               {
+                       if (!get_aim_dir(&dir)) return FALSE;
+#ifdef JP
+                       msg_format("%s¤ò¿­¤Ð¤·¤¿¡£", name);
+#else
+                       msg_format("You stretched your %s.", name);
+#endif
+                       fetch(dir, 500, TRUE);
+                       o_ptr->timeout = randint0(25) + 25;
+                       break;
+               }
+
                /* Unique activation */
+               case ACT_BRAND_FIRE_BOLTS:
+               {
+#ifdef JP
+                       msg_format("%s¤¬¿¼¹È¤Ëµ±¤¤¤¿...", name);
+#else
+                       msg_format("Your %s glows deep red...", name);
+#endif
+                       (void)brand_bolts();
+                       o_ptr->timeout = 999;
+                       break;
+               }
+
                case ACT_JUDGE:
                {
 #ifdef JP
@@ -3079,6 +3290,40 @@ bool activate_random_artifact(object_type *o_ptr)
                        break;
                }
 
+               case ACT_DETECT_UNIQUE:
+               {
+                       int i;
+                       monster_type *m_ptr;
+                       monster_race *r_ptr;
+#ifdef JP
+                       msg_print("´ñ̯¤Ê¾ì½ê¤¬Æ¬¤ÎÃæ¤ËÉ⤫¤ó¤À¡¥¡¥¡¥");
+#else
+                       msg_print("Some strange places show up in your mind. And you see ...");
+#endif
+                       /* Process the monsters (backwards) */
+                       for (i = m_max - 1; i >= 1; i--)
+                       {
+                               /* Access the monster */
+                               m_ptr = &m_list[i];
+
+                               /* Ignore "dead" monsters */
+                               if (!m_ptr->r_idx) continue;
+
+                               r_ptr = &r_info[m_ptr->r_idx];
+
+                               if(r_ptr->flags1 & RF1_UNIQUE)
+                               {
+#ifdef JP
+                                       msg_format("%s¡¥ ",r_name + r_ptr->name);
+#else
+                                       msg_format("%s. ",r_name + r_ptr->name);
+#endif
+                               }
+                       }
+                       o_ptr->timeout = 200;
+                       break;
+               }
+
                default:
                {
 #ifdef JP
@@ -3232,6 +3477,7 @@ bool create_named_art(int a_idx, int y, int x)
        q_ptr->to_h = a_ptr->to_h;
        q_ptr->to_d = a_ptr->to_d;
        q_ptr->weight = a_ptr->weight;
+       q_ptr->xtra2 = a_ptr->act_idx;
 
        /* Hack -- extract the "cursed" flag */
        if (a_ptr->gen_flags & TRG_CURSED) q_ptr->curse_flags |= (TRC_CURSED);
index d03d9af..826f7b8 100644 (file)
@@ -4159,7 +4159,7 @@ static void do_cmd_activate_aux(int item)
                if (!o_ptr->xtra2) o_ptr->xtra2 = a_info[o_ptr->name1].act_idx;
        }
 
-       if ((o_ptr->name1 || o_ptr->art_name) && o_ptr->xtra2)
+       if (object_is_artifact(o_ptr) && o_ptr->xtra2)
        {
                (void)activate_random_artifact(o_ptr);
 
@@ -4176,20 +4176,6 @@ static void do_cmd_activate_aux(int item)
                /* Choose effect */
                switch (o_ptr->name1)
                {
-                       case ART_FRAKIR:
-                       {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¥Õ¥é¥­¥¢¤ËŨ¤òÄù¤á»¦¤¹¤è¤¦Ì¿¤¸¤¿¡£");
-#else
-                               msg_print("You order Frakir to strangle your opponent.");
-#endif
-
-                               if (!get_aim_dir(&dir)) return;
-                               if (drain_life(dir, 100))
-                               o_ptr->timeout = randint0(100) + 100;
-                               break;
-                       }
-
                        case ART_RAZORBACK:
                        {
                                int num = damroll(5, 3);
@@ -4250,26 +4236,6 @@ static void do_cmd_activate_aux(int item)
                                break;
                        }
 
-                       case ART_LOHENGRIN:
-                       {
-#ifdef JP
-                               msg_print("Å·¹ñ¤Î²Î¤¬Ê¹¤³¤¨¤ë...");
-#else
-                               msg_print("A heavenly choir sings...");
-#endif
-                               (void)set_poisoned(0);
-                               (void)set_cut(0);
-                               (void)set_stun(0);
-                               (void)set_confused(0);
-                               (void)set_blind(0);
-                               (void)set_afraid(0);
-                               (void)set_hero(randint1(25) + 25, FALSE);
-                               (void)hp_player(777);
-                               o_ptr->timeout = 300;
-                               break;
-                       }
-
-
                        case ART_KUSANAGI:
                        case ART_WEREWINDLE:
                        {
@@ -4286,11 +4252,10 @@ static void do_cmd_activate_aux(int item)
                                        break;
                                default:
 #ifdef JP
-if (get_check("¤³¤Î³¬¤òµî¤ê¤Þ¤¹¤«¡©"))
+                                       if (get_check("¤³¤Î³¬¤òµî¤ê¤Þ¤¹¤«¡©"))
 #else
                                        if (get_check("Leave this level? "))
 #endif
-
                                        {
                                                if (autosave_l) do_cmd_save_game(TRUE);
 
@@ -4314,19 +4279,6 @@ if (get_check("
                                break;
                        }
 
-                       case ART_BRAND:
-                       case ART_HELLFIRE:
-                       {
-#ifdef JP
-                               msg_print("¥¯¥í¥¹¥Ü¥¦¤¬¿¼¹È¤Ëµ±¤¤¤¿...");
-#else
-                               msg_print("Your crossbow glows deep red...");
-#endif
-                               (void)brand_bolts();
-                               o_ptr->timeout = 999;
-                               break;
-                       }
-
                        case ART_CRIMSON:
                        {
                                int num = 1;
@@ -4369,42 +4321,6 @@ if (get_check("
                                o_ptr->timeout = 15;
                                break;
                        }
-                       case ART_PALANTIR:
-                       {
-                               monster_type *m_ptr;
-                               monster_race *r_ptr;
-                               int i;
-
-#ifdef JP
-                               msg_print("´ñ̯¤Ê¾ì½ê¤¬Æ¬¤ÎÃæ¤ËÉ⤫¤ó¤À¡¥¡¥¡¥");
-#else
-                               msg_print("Some strange places show up in your mind. And you see ...");
-#endif
-
-                               /* Process the monsters (backwards) */
-                               for (i = m_max - 1; i >= 1; i--)
-                               {
-                                       /* Access the monster */
-                                       m_ptr = &m_list[i];
-
-                                       /* Ignore "dead" monsters */
-                                       if (!m_ptr->r_idx) continue;
-
-                                       r_ptr = &r_info[m_ptr->r_idx];
-
-                                       if(r_ptr->flags1 & RF1_UNIQUE)
-                                       {
-#ifdef JP
-                                               msg_format("%s¡¥ ",r_name + r_ptr->name);
-#else
-                                               msg_format("%s. ",r_name + r_ptr->name);
-#endif
-                                       }
-                               }
-                               o_ptr->timeout = 200;
-                               break;
-                       }
-
                        case ART_STONE_LORE:
                        {
 #ifdef JP
@@ -4486,40 +4402,6 @@ if (get_check("
                                o_ptr->timeout = randint0(40) + 40;
                                break;
                        }
-
-                       case ART_FARAMIR:
-                       {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï³²Ãî¤ò°ìÁݤ·¤¿¡£");
-#else
-                               msg_print("You exterminate small life.");
-#endif
-                               (void)dispel_monsters(4);
-                               o_ptr->timeout = randint0(55) + 55;
-                               break;
-                       }
-
-                       case ART_HURIN:
-                       {
-                               (void)set_fast(randint1(50) + 50, FALSE);
-                               hp_player(10);
-                               set_afraid(0);
-                               set_hero(randint1(50) + 50, FALSE);
-                               o_ptr->timeout = randint0(200) + 100;
-                               break;
-                       }
-                       case ART_GIL_GALAD:
-                       {
-#ifdef JP
-                               msg_print("¥·¡¼¥ë¥É¤¬âÁ¤·¤¤¸÷¤Çµ±¤¤¤¿¡¥¡¥¡¥");
-#else
-                               msg_print("Your shield gleams with blinding light...");
-#endif
-                               fire_ball(GF_LITE, 0, 300, 6);
-                               confuse_monsters(3 * p_ptr->lev / 2);
-                               o_ptr->timeout = 250;
-                               break;
-                       }
                        case ART_YENDOR:
                        {
 #ifdef JP
@@ -4590,20 +4472,6 @@ if (get_check("
                                p_ptr->redraw |= (PR_STATE);
                                break;
                        }
-                       case ART_JONES:
-                       {
-                               if (!get_aim_dir(&dir)) return;
-#ifdef JP
-                               msg_print("¥à¥Á¤ò¿­¤Ð¤·¤¿¡£");
-#else
-                               msg_print("You stretched your whip.");
-#endif
-
-                               fetch(dir, 500, TRUE);
-                               o_ptr->timeout = randint0(25) + 25;
-                               break;
-                       }
-
                        case ART_INROU:
                        {
                                int count = 0, i;
@@ -4683,38 +4551,6 @@ if (get_check("
                                aggravate_monsters(0);
                                break;
                        }
-
-                       case ART_MATOI:
-                       case ART_AEGISFANG:
-                       {
-                               (void)set_afraid(0);
-                               set_hero(randint1(25)+25, FALSE);
-                               hp_player(10);
-                               o_ptr->timeout = randint0(30) + 30;
-                               break;
-                       }
-
-                       case ART_EARENDIL:
-                       {
-                               (void)set_poisoned(0);
-                               (void)set_confused(0);
-                               (void)set_blind(0);
-                               (void)set_stun(0);
-                               (void)set_cut(0);
-                               (void)set_image(0);
-
-                               o_ptr->timeout = 100;
-                               break;
-                       }
-
-                       case ART_BOLISHOI:
-                       {
-                               if (!get_aim_dir(&dir)) return;
-                               (void)charm_animal(dir, p_ptr->lev);
-
-                               o_ptr->timeout = 200;
-                               break;
-                       }
                        case ART_BLOOD:
                        {
 #ifdef JP
@@ -4741,17 +4577,6 @@ if (get_check("
                                o_ptr->timeout = 100 + randint1(100);
                                break;
                        }
-                       case ART_MOOK:
-                       {
-#ifdef JP
-                               msg_print("¥¯¥í¡¼¥¯¤¬Çò¤¯µ±¤¤¤¿...");
-#else
-                               msg_print("Your cloak grows white.");
-#endif
-                               (void)set_oppose_cold(randint1(20) + 20, FALSE);
-                               o_ptr->timeout = 40 + randint1(40);
-                               break;
-                       }
                        case ART_JIZO:
                        {
                                u32b mode = PM_ALLOW_GROUP;
@@ -4764,16 +4589,14 @@ if (get_check("
 #ifdef JP
                                                msg_print("Âý¤¬¤¢¤Ê¤¿¤Î²¼ËͤȤ·¤Æ½Ð¸½¤·¤¿¡£");
 #else
-                                       msg_print("A group of octopuses appear as your servant.");
+                                               msg_print("A group of octopuses appear as your servant.");
 #endif
-
                                        else
 #ifdef JP
                                                msg_print("Âý¤Ï¤¢¤Ê¤¿¤òâˤó¤Ç¤¤¤ë¡ª");
 #else
                                                msg_print("A group of octopuses appear as your enemy!");
 #endif
-
                                }
 
                                o_ptr->timeout = 300 + randint1(150);
@@ -4798,51 +4621,6 @@ if (get_check("
                                (void)probing();
                                break;
                        }
-                       case ART_CHARMED:
-                       {
-#ifdef JP
-                               msg_print("¥Ú¥ó¥À¥ó¥È¤¬ÀÄÇò¤¯¸÷¤Ã¤¿¡¥¡¥¡¥");
-#else
-                               msg_print("Your pendant glows pale...");
-#endif
-                               if (p_ptr->pclass == CLASS_MAGIC_EATER)
-                               {
-                                       int i;
-                                       for (i = 0; i < EATER_EXT*2; i++)
-                                       {
-                                               p_ptr->magic_num1[i] += (p_ptr->magic_num2[i] < 10) ? EATER_CHARGE * 3 : p_ptr->magic_num2[i]*EATER_CHARGE/3;
-                                               if (p_ptr->magic_num1[i] > p_ptr->magic_num2[i]*EATER_CHARGE) p_ptr->magic_num1[i] = p_ptr->magic_num2[i]*EATER_CHARGE;
-                                       }
-                                       for (; i < EATER_EXT*3; i++)
-                                       {
-                                               int k_idx = lookup_kind(TV_ROD, i-EATER_EXT*2);
-                                               p_ptr->magic_num1[i] -= ((p_ptr->magic_num2[i] < 10) ? EATER_ROD_CHARGE*3 : p_ptr->magic_num2[i]*EATER_ROD_CHARGE/3)*k_info[k_idx].pval;
-                                               if (p_ptr->magic_num1[i] < 0) p_ptr->magic_num1[i] = 0;
-                                       }
-#ifdef JP
-                                       msg_print("Ƭ¤¬¥Ï¥Ã¥­¥ê¤È¤·¤¿¡£");
-#else
-                                       msg_print("You feel your head clear.");
-#endif
-                                       p_ptr->window |= (PW_PLAYER);
-                               }
-                               else if (p_ptr->csp < p_ptr->msp)
-                               {
-                                       p_ptr->csp = p_ptr->msp;
-                                       p_ptr->csp_frac = 0;
-#ifdef JP
-                                       msg_print("Ƭ¤¬¥Ï¥Ã¥­¥ê¤È¤·¤¿¡£");
-#else
-                                       msg_print("You feel your head clear.");
-#endif
-
-                                       p_ptr->redraw |= (PR_MANA);
-                                       p_ptr->window |= (PW_PLAYER);
-                                       p_ptr->window |= (PW_SPELL);
-                               }
-                               o_ptr->timeout = 777;
-                               break;
-                       }
                }
 
                /* Window stuff */
index 9b59ddd..fcf31c2 100644 (file)
 #define ACT_BA_STAR             29
 #define ACT_BA_DARK             30
 #define ACT_BA_MANA             31
-/* 27 - 50 unused */
+#define ACT_PESTICIDE           32
+#define ACT_BLINDING_LIGHT      33
+/* 34 - 50 unused */
 #define ACT_CONFUSE             51
 #define ACT_SLEEP               52
 #define ACT_QUAKE               53
 #define ACT_SUMMON_UNDEAD       74
 #define ACT_SUMMON_HOUND        75
 /* 76 - 80 unused */
+#define ACT_CHOIR_SINGS         80
 #define ACT_CURE_LW             81
 #define ACT_CURE_MW             82
 #define ACT_CURE_POISON         83
 #define ACT_REST_ALL            85
 #define ACT_CURE_700            86
 #define ACT_CURE_1000           87
-/* 88 - 90 unused */
+#define ACT_CURING              88
+#define ACT_CURE_MANA_FULL      89
+/* 90 unused */
 #define ACT_ESP                 91
 #define ACT_BERSERK             92
 #define ACT_PROT_EVIL           93
 #define ACT_XTRA_SPEED          96
 #define ACT_WRAITH              97
 #define ACT_INVULN              98
-/* 99 - 110 unused */
+#define ACT_HELO                99
+#define ACT_HELO_SPEED          100
+#define ACT_RESIST_ACID         101
+#define ACT_RESIST_FIRE         102
+#define ACT_RESIST_COLD         103
+#define ACT_RESIST_ELEC         104
+#define ACT_RESIST_POIS         105
+/* 106 - 110 unused */
 #define ACT_LIGHT               111
 #define ACT_MAP_LIGHT           112
 #define ACT_DETECT_ALL          113
 #define ACT_DIM_DOOR            124
 #define ACT_TELEPORT            125
 #define ACT_RECALL              126
+#define ACT_TELEKINESIS         127
+#define ACT_DETECT_UNIQUE       128
 /* 127 -> unused */
 
+#define ACT_BRAND_FIRE_BOLTS    253
 #define ACT_JUDGE               254
 #define ACT_BIZARRE             255
 
index f513689..87a950d 100644 (file)
@@ -853,6 +853,8 @@ struct k_info_activation_flag
        { "BA_STAR", ACT_BA_STAR },
        { "BA_DARK", ACT_BA_DARK },
        { "BA_MANA", ACT_BA_MANA },
+       { "PESTICIDE", ACT_PESTICIDE },
+       { "BLINDING_LIGHT", ACT_BLINDING_LIGHT },
 
        { "CONFUSE", ACT_CONFUSE },
        { "SLEEP", ACT_SLEEP },
@@ -875,6 +877,7 @@ struct k_info_activation_flag
        { "SUMMON_UNDEAD", ACT_SUMMON_UNDEAD },
        { "SUMMON_HOUND", ACT_SUMMON_HOUND },
 
+       { "CHOIR_SINGS", ACT_CHOIR_SINGS },
        { "CURE_LW", ACT_CURE_LW },
        { "CURE_MW", ACT_CURE_MW },
        { "CURE_POISON", ACT_CURE_POISON },
@@ -882,6 +885,8 @@ struct k_info_activation_flag
        { "REST_ALL", ACT_REST_ALL },
        { "CURE_700", ACT_CURE_700 },
        { "CURE_1000", ACT_CURE_1000 },
+       { "CURING", ACT_CURING },
+       { "CURE_MANA_FULL", ACT_CURE_MANA_FULL },
 
        { "ESP", ACT_ESP },
        { "BERSERK", ACT_BERSERK },
@@ -891,6 +896,13 @@ struct k_info_activation_flag
        { "XTRA_SPEED", ACT_XTRA_SPEED },
        { "WRAITH", ACT_WRAITH },
        { "INVULN", ACT_INVULN },
+       { "HELO", ACT_HELO },
+       { "HELO_SPEED", ACT_HELO_SPEED },
+       { "RESIST_ACID", ACT_RESIST_ACID },
+       { "RESIST_FIRE", ACT_RESIST_ACID },
+       { "RESIST_COLD", ACT_RESIST_ACID },
+       { "RESIST_ELEC", ACT_RESIST_ACID },
+       { "RESIST_POIS", ACT_RESIST_ACID },
 
        { "LIGHT", ACT_LIGHT },
        { "MAP_LIGHT", ACT_MAP_LIGHT },
@@ -908,7 +920,10 @@ struct k_info_activation_flag
        { "DIM_DOOR", ACT_DIM_DOOR },
        { "TELEPORT", ACT_TELEPORT },
        { "RECALL", ACT_RECALL },
+       { "TELEKINESIS", ACT_TELEKINESIS },
+       { "DETECT_UNIQUE", ACT_DETECT_UNIQUE },
 
+       { "BRAND_FIRE_BOLTS", ACT_BRAND_FIRE_BOLTS },
        { "JUDGE", ACT_JUDGE },
        { "BIZARRE", ACT_BIZARRE },
 
index 9a405a6..37216df 100644 (file)
@@ -387,7 +387,7 @@ cptr item_activation(object_type *o_ptr)
                        case ACT_BA_FIRE_1:
                                return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (72) : 9+d9 ¥¿¡¼¥óËè";
                        case ACT_DRAIN_1:
-                               return "À¸Ì¿Îϵۼý (90) : 70 ¥¿¡¼¥óËè";
+                               return "Ã⩹¶·â(100) : 100+d100 ¥¿¡¼¥óËè";
                        case ACT_BA_COLD_2:
                                return "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë (100) : 12+d12 ¥¿¡¼¥óËè";
                        case ACT_BA_ELEC_2:
@@ -430,6 +430,10 @@ cptr item_activation(object_type *o_ptr)
                                return "°Å¹õ¤ÎÍò(250) : 150+d150 ¥¿¡¼¥óËè";
                        case ACT_BA_MANA:
                                return "ËâÎϤÎÍò(400) : 250+d250¥¿¡¼¥óËè";
+                       case ACT_PESTICIDE:
+                               return "³²Ãî¤Î¶î½ü : 55+d55¥¿¡¼¥óËè";
+                       case ACT_BLINDING_LIGHT:
+                               return "âÁ¤·¤¤¸÷ : 250 ¥¿¡¼¥óËè";
                        case ACT_CONFUSE:
                                return "¥Ñ¥Ë¥Ã¥¯¡¦¥â¥ó¥¹¥¿¡¼ : 15 ¥¿¡¼¥óËè";
                        case ACT_SLEEP:
@@ -466,6 +470,8 @@ cptr item_activation(object_type *o_ptr)
                                return "°­Ë⾤´­ : 666+d333 ¥¿¡¼¥óËè";
                        case ACT_SUMMON_UNDEAD:
                                return "¥¢¥ó¥Ç¥Ã¥É¾¤´­ : 666+d333 ¥¿¡¼¥óËè";
+                       case ACT_CHOIR_SINGS:
+                               return "²óÉü (777)¡¢Ìþ¤·¡¢»Îµ¤¹âÍÈ : 300 ¥¿¡¼¥óËè";
                        case ACT_CURE_LW:
                                return "¶²Éݽüµî/ÂÎÎϲóÉü(30) : 10 ¥¿¡¼¥óËè";
                        case ACT_CURE_MW:
@@ -480,6 +486,10 @@ cptr item_activation(object_type *o_ptr)
                                return "ÂÎÎϲóÉü(700) : 250 ¥¿¡¼¥óËè";
                        case ACT_CURE_1000:
                                return "ÂÎÎϲóÉü(1000) : 888 ¥¿¡¼¥óËè";
+                       case ACT_CURING:
+                               return "Ìþ¤· : 100¥¿¡¼¥óËè";
+                       case ACT_CURE_MANA_FULL:
+                               return "ËâÎÏÉü³è: 777 ¥¿¡¼¥óËè";
                        case ACT_ESP:
                                return "¥Æ¥ì¥Ñ¥·¡¼ (´ü´Ö 25+d30) : 200 ¥¿¡¼¥óËè";
                        case ACT_BERSERK:
@@ -496,6 +506,10 @@ cptr item_activation(object_type *o_ptr)
                                return "Í©Âβ½ (´ü´Ö level/2 + d(level/2)) : 1000 ¥¿¡¼¥óËè";
                        case ACT_INVULN:
                                return "̵Ũ²½ (´ü´Ö 8+d8) : 1000 ¥¿¡¼¥óËè";
+                       case ACT_HELO:
+                               return "»Îµ¤¹âÍÈ : 30+d30¥¿¡¼¥óËè";
+                       case ACT_HELO_SPEED:
+                               return "»Îµ¤¹âÍÈ, ¥¹¥Ô¡¼¥É(50+d50¥¿¡¼¥ó) : 100+d200 ¥¿¡¼¥óËè";
                        case ACT_LIGHT:
                                return "¥¤¥ë¥ß¥Í¡¼¥·¥ç¥ó : 10+d10 ¥¿¡¼¥óËè";
                        case ACT_MAP_LIGHT:
@@ -528,8 +542,14 @@ cptr item_activation(object_type *o_ptr)
                                return "¥Æ¥ì¥Ý¡¼¥È (range 100) : 25 ¥¿¡¼¥óËè";
                        case ACT_RECALL:
                                return "µ¢´Ô¤Î¾Û : 200 ¥¿¡¼¥óËè";
+                       case ACT_TELEKINESIS:
+                               return "ʪÂΤò°ú¤­´ó¤»¤ë(½ÅÎÌ25kg¤Þ¤Ç) : 25+d25¥¿¡¼¥óËè";
+                       case ACT_DETECT_UNIQUE:
+                               return "¤³¤Î³¬¤Ë¤¤¤ë¥æ¥Ë¡¼¥¯¥â¥ó¥¹¥¿¡¼¤òɽ¼¨ : 200¥¿¡¼¥óËè";
 
                        /* Unique activation */
+                       case ACT_BRAND_FIRE_BOLTS:
+                               return "¿ÏÀè¤Î¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È : 999 ¥¿¡¼¥óËè";
                        case ACT_JUDGE:
                                return "ÂÎÎϤȰú¤­Âؤ¨¤ËÀéΤ´ã¤Èµ¢´Ô : 20+d20 ¥¿¡¼¥óËè";
                        case ACT_BIZARRE:
@@ -559,7 +579,7 @@ cptr item_activation(object_type *o_ptr)
                        case ACT_BA_FIRE_1:
                                return "ball of fire (72) every 9+d9 turns";
                        case ACT_DRAIN_1:
-                               return "drain life (90) every 70 turns";
+                               return "a strangling attack (100) every 100+d100 turns";
                        case ACT_BA_COLD_2:
                                return "ball of cold (100) every 12+d12 turns";
                        case ACT_BA_ELEC_2:
@@ -602,6 +622,10 @@ cptr item_activation(object_type *o_ptr)
                                return "darkness storm (250) every 150+d150 turns";
                        case ACT_BA_MANA:
                                return "a mana storm every 250+d250 turns";
+                       case ACT_PESTICIDE:
+                               return "dispel small life every 55+d55 turns";
+                       case ACT_BLINDING_LIGHT:
+                               return "blinding light every 250 turns";
                        case ACT_CONFUSE:
                                return "confuse monster every 15 turns";
                        case ACT_SLEEP:
@@ -638,6 +662,8 @@ cptr item_activation(object_type *o_ptr)
                                return "summon demon every 666+d333 turns";
                        case ACT_SUMMON_UNDEAD:
                                return "summon undead every 666+d333 turns";
+                       case ACT_CHOIR_SINGS:
+                               return "heal 777 hit points, curing and heloism every 300 turns";
                        case ACT_CURE_LW:
                                return "remove fear and heal 30 hp every 10 turns";
                        case ACT_CURE_MW:
@@ -652,6 +678,10 @@ cptr item_activation(object_type *o_ptr)
                                return "heal 700 hit points every 250 turns";
                        case ACT_CURE_1000:
                                return "heal 1000 hit points every 888 turns";
+                       case ACT_CURING:
+                               return "curing every 100 turns";
+                       case ACT_CURE_MANA_FULL:
+                               return "restore mana every 777 turns";
                        case ACT_ESP:
                                return "telepathy (dur 25+d30) every 200 turns";
                        case ACT_BERSERK:
@@ -668,6 +698,20 @@ cptr item_activation(object_type *o_ptr)
                                return "wraith form (dur level/2 + d(level/2)) every 1000 turns";
                        case ACT_INVULN:
                                return "invulnerability (dur 8+d8) every 1000 turns";
+                       case ACT_HELO:
+                               return "heroism every 30+d30 turns";
+                       case ACT_HELO_SPEED:
+                               return "hero and +10 to speed (50) every 100+200d turns";
+                       case ACT_RESIST_ACID:
+                               return "resist acid (dur 20+d20) every 40+d40 turns";
+                       case ACT_RESIST_FIRE:
+                               return "resist fire (dur 20+d20) every 40+d40 turns";
+                       case ACT_RESIST_COLD:
+                               return "resist cold (dur 20+d20) every 40+d40 turns";
+                       case ACT_RESIST_ELEC:
+                               return "resist thunder (dur 20+d20) every 40+d40 turns";
+                       case ACT_RESIST_POIS:
+                               return "resist poison (dur 20+d20) every 40+d40 turns";
                        case ACT_LIGHT:
                                return "light area (dam 2d15) every 10+d10 turns";
                        case ACT_MAP_LIGHT:
@@ -700,8 +744,14 @@ cptr item_activation(object_type *o_ptr)
                                return "teleport (range 100) every 25 turns";
                        case ACT_RECALL:
                                return "word of recall every 200 turns";
+                       case ACT_TELEKINESIS:
+                               return "a telekinesis (500 lb) every 25+d25 turns";
+                       case ACT_DETECT_UNIQUE:
+                               return "list of the uniques on the level every 200 turns";
 
                        /* Unique activation */
+                       case ACT_BRAND_FIRE_BOLTS:
+                               return "fire branding of bolts every 999 turns";
                        case ACT_JUDGE:
                                return "clairvoyance and recall, draining you every 20+d20 turns";
                        case ACT_BIZARRE:
@@ -724,15 +774,6 @@ cptr item_activation(object_type *o_ptr)
                        return "summon the Legion of the Dawn every 500+d500 turns";
 #endif
                }
-               case ART_BRAND:
-               case ART_HELLFIRE:
-               {
-#ifdef JP
-                       return "¿ÏÀè¤Î¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È : 999 ¥¿¡¼¥óËè";
-#else
-                       return "fire branding of bolts every 999 turns";
-#endif
-               }
                case ART_CRIMSON:
                {
 #ifdef JP
@@ -766,22 +807,6 @@ cptr item_activation(object_type *o_ptr)
                        return "breathe elements (300), hero, bless, and resistance";
 #endif
                }
-               case ART_FRAKIR:
-               {
-#ifdef JP
-                       return "Ã⩹¶·â(100) : 100+d100 ¥¿¡¼¥óËè";
-#else
-                       return "a strangling attack (100) every 100+d100 turns";
-#endif
-               }
-               case ART_PALANTIR:
-               {
-#ifdef JP
-                       return "¤³¤Î³¬¤Ë¤¤¤ë¥æ¥Ë¡¼¥¯¥â¥ó¥¹¥¿¡¼¤òɽ¼¨ : 200¥¿¡¼¥óËè";
-#else
-                       return "list of the uniques on the level every 200 turns";
-#endif
-               }
                case ART_STONE_LORE:
                {
 #ifdef JP
@@ -790,14 +815,6 @@ cptr item_activation(object_type *o_ptr)
                        return "perilous identify every turn";
 #endif
                }
-               case ART_FARAMIR:
-               {
-#ifdef JP
-                       return "³²Ãî¤Î¶î½ü : 55+d55¥¿¡¼¥óËè";
-#else
-                       return "dispel small life every 55+d55 turns";
-#endif
-               }
                case ART_BOROMIR:
                {
 #ifdef JP
@@ -806,22 +823,6 @@ cptr item_activation(object_type *o_ptr)
                        return "frighten monsters every 40+d40 turns";
 #endif
                }
-               case ART_HURIN:
-               {
-#ifdef JP
-                       return "»Îµ¤¹âÍÈ, ¥¹¥Ô¡¼¥É(50+d50¥¿¡¼¥ó) : 100+d200 ¥¿¡¼¥óËè";
-#else
-                       return "hero and +10 to speed (50) every 100+200d turns";
-#endif
-               }
-               case ART_GIL_GALAD:
-               {
-#ifdef JP
-                       return "âÁ¤·¤¤¸÷ : 250 ¥¿¡¼¥óËè";
-#else
-                       return "blinding light every 250 turns";
-#endif
-               }
                case ART_YENDOR:
                {
 #ifdef JP
@@ -838,14 +839,6 @@ cptr item_activation(object_type *o_ptr)
                        return "increase STR (destroyed 50%)";
 #endif
                }
-               case ART_JONES:
-               {
-#ifdef JP
-                       return "ʪÂΤò°ú¤­´ó¤»¤ë(½ÅÎÌ25kg¤Þ¤Ç) : 25+d25¥¿¡¼¥óËè";
-#else
-                       return "a telekinesis (500 lb) every 25+d25 turns";
-#endif
-               }
                case ART_INROU:
                {
 #ifdef JP
@@ -862,23 +855,6 @@ cptr item_activation(object_type *o_ptr)
                        return "beat wooden clappers every turn";
 #endif
                }
-               case ART_MATOI:
-               case ART_AEGISFANG:
-               {
-#ifdef JP
-                       return "»Îµ¤¹âÍÈ : 30+d30¥¿¡¼¥óËè";
-#else
-                       return "heroism every 30+d30 turns";
-#endif
-               }
-               case ART_EARENDIL:
-               {
-#ifdef JP
-                       return "Ìþ¤· : 100¥¿¡¼¥óËè";
-#else
-                       return "curing every 100 turns";
-#endif
-               }
                case ART_BLOOD:
                {
 #ifdef JP
@@ -923,15 +899,6 @@ cptr item_activation(object_type *o_ptr)
 #endif
 
                }
-               case ART_CHARMED:
-               {
-#ifdef JP
-                       return "ËâÎÏÉü³è: 777 ¥¿¡¼¥óËè";
-#else
-                       return "restore mana every 777 turns";
-#endif
-
-               }
        }
 
 
index c29d022..45578c5 100644 (file)
@@ -1085,6 +1085,8 @@ s32b flag_cost(object_type *o_ptr, int plusses)
                else if (type == ACT_SUMMON_ELEMENTAL) total += 15000;
                else if (type == ACT_SUMMON_DEMON) total += 20000;
                else if (type == ACT_SUMMON_UNDEAD) total += 20000;
+               else if (type == ACT_SUMMON_HOUND) total += 15000;
+               else if (type == ACT_CHOIR_SINGS) total += 20000;
                else if (type == ACT_CURE_LW) total += 500;
                else if (type == ACT_CURE_MW) total += 750;
                else if (type == ACT_CURE_POISON) total += 1000;
@@ -1092,14 +1094,23 @@ s32b flag_cost(object_type *o_ptr, int plusses)
                else if (type == ACT_REST_ALL) total += 15000;
                else if (type == ACT_CURE_700) total += 10000;
                else if (type == ACT_CURE_1000) total += 15000;
+               else if (type == ACT_CURING) total += 5000;
+               else if (type == ACT_CURE_MANA_FULL) total += 20000;
                else if (type == ACT_ESP) total += 1500;
                else if (type == ACT_BERSERK) total += 800;
                else if (type == ACT_PROT_EVIL) total += 5000;
                else if (type == ACT_RESIST_ALL) total += 5000;
                else if (type == ACT_SPEED) total += 15000;
                else if (type == ACT_XTRA_SPEED) total += 25000;
+               else if (type == ACT_RESIST_ACID) total += 2000;
+               else if (type == ACT_RESIST_FIRE) total += 2000;
+               else if (type == ACT_RESIST_COLD) total += 2000;
+               else if (type == ACT_RESIST_ELEC) total += 2000;
+               else if (type == ACT_RESIST_POIS) total += 2000;
                else if (type == ACT_WRAITH) total += 25000;
                else if (type == ACT_INVULN) total += 25000;
+               else if (type == ACT_HELO) total += 500;
+               else if (type == ACT_HELO_SPEED) total += 20000;
                else if (type == ACT_LIGHT) total += 150;
                else if (type == ACT_MAP_LIGHT) total += 500;
                else if (type == ACT_DETECT_ALL) total += 1000;
@@ -1116,6 +1127,8 @@ s32b flag_cost(object_type *o_ptr, int plusses)
                else if (type == ACT_DIM_DOOR) total += 10000;
                else if (type == ACT_TELEPORT) total += 2000;
                else if (type == ACT_RECALL) total += 7500;
+               else if (type == ACT_TELEKINESIS) total += 5500;
+               else if (type == ACT_BRAND_FIRE_BOLTS) total += 20000;
        }
 
        return total;
@@ -4239,6 +4252,7 @@ void apply_magic(object_type *o_ptr, int lev, u32b mode)
                o_ptr->to_h = a_ptr->to_h;
                o_ptr->to_d = a_ptr->to_d;
                o_ptr->weight = a_ptr->weight;
+               o_ptr->xtra2 = a_ptr->act_idx;
 
                /* Hack -- extract the "broken" flag */
                if (!a_ptr->cost) o_ptr->ident |= (IDENT_BROKEN);
index 27ae9c0..3d6b424 100644 (file)
@@ -1597,6 +1597,7 @@ static bool make_fake_artifact(object_type *o_ptr, int name1)
        o_ptr->to_h = a_ptr->to_h;
        o_ptr->to_d = a_ptr->to_d;
        o_ptr->weight = a_ptr->weight;
+       o_ptr->xtra2 = a_ptr->act_idx;
 
        /* Success */
        return (TRUE);