From: iks Date: Tue, 29 Jan 2013 04:48:09 +0000 (+0000) Subject: さらに続きを実装。 X-Git-Tag: v2.1.2~156^2~3 X-Git-Url: http://git.osdn.net/view?p=hengband%2Fhengband.git;a=commitdiff_plain;h=6a3720a0a1d5a23a4774bef037191669506701bd さらに続きを実装。 --- diff --git a/lib/edit/a_info.txt b/lib/edit/a_info.txt index f67318554..8388ecddc 100644 --- a/lib/edit/a_info.txt +++ b/lib/edit/a_info.txt @@ -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:Í¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ diff --git a/src/artifact.c b/src/artifact.c index f88555d86..57ee412bd 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -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); diff --git a/src/cmd6.c b/src/cmd6.c index d03d9afac..826f7b8e0 100644 --- a/src/cmd6.c +++ b/src/cmd6.c @@ -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 */ diff --git a/src/defines.h b/src/defines.h index 9b59ddd4f..fcf31c268 100644 --- a/src/defines.h +++ b/src/defines.h @@ -1801,7 +1801,9 @@ #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 @@ -1823,6 +1825,7 @@ #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 @@ -1830,7 +1833,9 @@ #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 @@ -1839,7 +1844,14 @@ #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 @@ -1856,8 +1868,11 @@ #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 diff --git a/src/init1.c b/src/init1.c index f51368938..87a950d2d 100644 --- a/src/init1.c +++ b/src/init1.c @@ -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 }, diff --git a/src/object1.c b/src/object1.c index 9a405a67b..37216df8d 100644 --- a/src/object1.c +++ b/src/object1.c @@ -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 - - } } diff --git a/src/object2.c b/src/object2.c index c29d022c3..45578c51a 100644 --- a/src/object2.c +++ b/src/object2.c @@ -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); diff --git a/src/wizard1.c b/src/wizard1.c index 27ae9c049..3d6b42457 100644 --- a/src/wizard1.c +++ b/src/wizard1.c @@ -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);