P:0:0d0:20:20:0
F:SPEED | STEALTH | RES_NETHER |
F:ACTIVATE | SHOW_MODS | INSTA_ART | XTRA_POWER | XTRA_H_RES
+U:CRIMSON
D:$"-- In there, the whole town had turned into monsters' nest.
D:$ This gun gotten by Echizen unexpectedly, 'Crimson', helped
D:$ him in his missions, and it evolved into greater weapon
F:SHOW_MODS | HIDE_TYPE |
F:SUST_STR | RES_FEAR | ACTIVATE |
F:INSTA_ART
+U:SCARE_AREA
D:$A massive golden torque, made of innumerable strands of gold and steel
D:$intermingled, with great golden hounds set at either end.
D:²«¶â¤È¹õ¹Ý¤Î̵¿ô¤Î¤è¤ê»å¤ÇÊԤ߾夲¤é¤ì¤¿½Å¸ü¤Ê¶â¤Î¼ó¾þ¤ê¤Ç¡¢
F:HIDE_TYPE | BLOWS | VORPAL | VAMPIRIC | SLAY_HUMAN |
F:SHOW_MODS | SPEED | ACTIVATE | RES_DISEN | NO_TELE |
F:DRAIN_EXP | AGGRAVATE | RES_DARK | RES_NETHER | TY_CURSE |
+U:MURAMASA
D:$Muramasa the legendaly bracksmith forged this sword 'Muramasa'.
D:$ It always wants more blood thirstily, although it already
D:$ drained blood from many person.
W:30:80:3:100000
F:INT | WIS | CHR | SEARCH | INFRA | SEE_INVIS | ACTIVATE |
F:HIDE_TYPE | INSTA_ART
+U:INROU
D:Ëè½µ·îÍËÆü¤Î20:45¤ËÀäÂç¤ÊÎϤòȯ´ø¤¹¤ë¤é¤·¤¤¡£
N:167:¡Ø³úÈøÅá¡Ù
W:25:5:15:808
P:0:1d2:-3:-7:6
F:SEARCH | ACTIVATE | SHOW_MODS | HIDE_TYPE
+U:AGGRAVATE
D:³ÑÃìÆóËܤθߤ¤¤Îü¤¬¡¢ºÙ¤¤Æì¤Ç·ë¤Ð¤ì¤Æ¤¤¤ë¡£
D:Éð´ï¤È¤·¤Æ¤Ï¸«¤ë¤«¤é¤ËÉÏÁê¤À¤¬¡¢ ËɲФò¤½¤ÎǤ¤È¤¹¤ë±Ò»Î¤¿¤Á¤¬»È¤Ã¤¿¡¢
D:ͳ½ïÀµ¤·¤¤Éð´ï¤À¤È¤¤¤ï¤ì¤Æ¤¤¤ë¡£
W:70:12:250:180000
P:0:8d4:8:8:8
F:ACTIVATE | SHOW_MODS
+U:BLOODY_MOON
N:200:¥À
E:'Dasai'
break;
}
+ case ACT_SCARE_AREA:
+ {
+ if (music_singing_any()) stop_singing();
+ if (hex_spelling_any()) stop_hex_spell_all();
+#ifdef JP
+ msg_print("¤¢¤Ê¤¿¤ÏÎ϶¯¤¤ÆÍÉ÷¤ò¿á¤ÌĤ餷¤¿¡£¼þ°Ï¤ÎŨ¤¬¿Ì¤¨¾å¤Ã¤Æ¤¤¤ë!");
+#else
+ msg_print("You wind a mighty blast; your enemies tremble!");
+#endif
+ (void)turn_monsters((3 * p_ptr->lev / 2) + 10);
+ o_ptr->timeout = randint0(40) + 40;
+ break;
+ }
+
+ case ACT_AGGRAVATE:
+ {
+ if (o_ptr->name1 == ART_HYOUSIGI)
+ {
+#ifdef JP
+ msg_print("Çï»ÒÌÚ¤òÂǤä¿¡£");
+#else
+ msg_print("You beat Your wooden clappers.");
+#endif
+ }
+ else
+ {
+#ifdef JP
+ msg_format("%s¤ÏÉÔ²÷¤Êʪ²»¤òΩ¤Æ¤¿¡£", name);
+#else
+ msg_format("The %s sounds an unpleasant noise.", name);
+#endif
+ }
+ aggravate_monsters(0);
+ break;
+ }
+
/* Activate for summoning / charming */
case ACT_CHARM_ANIMAL:
break;
}
+ case ACT_INROU:
+ {
+ int count = 0, i;
+ monster_type *m_ptr;
+#ifndef JP
+ cptr kakusan = "";
+#endif
+ if (summon_named_creature(0, py, px, MON_SUKE, PM_FORCE_PET))
+ {
+#ifdef JP
+ msg_print("¡Ø½õ¤µ¤ó¡Ù¤¬¸½¤ì¤¿¡£");
+#else
+ msg_print("Suke-san apperars.");
+ kakusan = "Suke-san";
+#endif
+ count++;
+ }
+ if (summon_named_creature(0, py, px, MON_KAKU, PM_FORCE_PET))
+ {
+#ifdef JP
+ msg_print("¡Ø³Ê¤µ¤ó¡Ù¤¬¸½¤ì¤¿¡£");
+#else
+ msg_print("Kaku-san appears.");
+ kakusan = "Kaku-san";
+#endif
+ count++;
+ }
+ if (!count)
+ {
+ for (i = m_max - 1; i > 0; i--)
+ {
+ m_ptr = &m_list[i];
+ if (!m_ptr->r_idx) continue;
+ if (!((m_ptr->r_idx == MON_SUKE) || (m_ptr->r_idx == MON_KAKU))) continue;
+ if (!los(m_ptr->fy, m_ptr->fx, py, px)) continue;
+ if (!projectable(m_ptr->fy, m_ptr->fx, py, px)) continue;
+ count++;
+ break;
+ }
+ }
+
+ if (count)
+ {
+#ifdef JP
+ msg_print("¡Ö¼Ô¤É¤â¡¢¤Ò¤«¤¨¤ª¤í¤¦¡ª¡ª¡ª¤³¤Î¤ªÊý¤ò¤É¤Ê¤¿¤È¤³¤³¤í¤¨¤ë¡£¡×");
+#else
+ msg_format("%^s says 'WHO do you think this person is! Bow your head, down your knees!'", kakusan);
+#endif
+ sukekaku = TRUE;
+ stun_monsters(120);
+ confuse_monsters(120);
+ turn_monsters(120);
+ stasis_monsters(120);
+ sukekaku = FALSE;
+ }
+ else
+ {
+#ifdef JP
+ msg_print("¤·¤«¤·¡¢²¿¤âµ¯¤¤Ê¤«¤Ã¤¿¡£");
+#else
+ msg_print("Nothing happen.");
+#endif
+ }
+ o_ptr->timeout = randint0(150) + 150;
+ break;
+ }
+
+ case ACT_MURAMASA:
+ {
+ /* Only for Muramasa */
+ if (o_ptr->name1 != ART_MURAMASA) return FALSE;
+#ifdef JP
+ if (get_check("ËÜÅö¤Ë»È¤¤¤Þ¤¹¤«¡©"))
+#else
+ if (get_check("Are you sure?!"))
+#endif
+ {
+#ifdef JP
+ msg_print("¼Àµ¤¬¿Ì¤¨¤¿¡¥¡¥¡¥");
+#else
+ msg_print("The Muramasa pulsates...");
+#endif
+ do_inc_stat(A_STR);
+ if (one_in_(2))
+ {
+#ifdef JP
+ msg_print("¼Àµ¤Ï²õ¤ì¤¿¡ª");
+#else
+ msg_print("The Muramasa is destroyed!");
+#endif
+ curse_weapon_object(TRUE, o_ptr);
+ }
+ }
+ break;
+ }
+
+ case ACT_BLOODY_MOON:
+ {
+ /* Only for Bloody Moon */
+ if (o_ptr->name1 != ART_BLOOD) return FALSE;
+#ifdef JP
+ msg_print("³ù¤¬ÌÀ¤ë¤¯µ±¤¤¤¿...");
+#else
+ msg_print("Your scythe glows brightly!");
+#endif
+ get_bloody_moon_flags(o_ptr);
+ o_ptr->timeout = 3333;
+ if (p_ptr->prace == RACE_ANDROID) calc_android_exp();
+ p_ptr->update |= (PU_BONUS | PU_HP);
+ break;
+ }
+
+ case ACT_CRIMSON:
+ {
+ int num = 1;
+ int i;
+ int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+ int tx, ty;
+
+ /* Only for Crimson */
+ if (o_ptr->name1 != ART_CRIMSON) return FALSE;
+
+#ifdef JP
+ msg_print("¤»¤Ã¤«¤¯¤À¤«¤é¡Ø¥¯¥ê¥à¥¾¥ó¡Ù¤ò¤Ö¤Ã¤Ñ¤Ê¤¹¤¼¡ª");
+#else
+ msg_print("I'll fire CRIMSON! SEKKAKUDAKARA!");
+#endif
+
+ if (!get_aim_dir(&dir)) return FALSE;
+
+ /* Use the given direction */
+ tx = px + 99 * ddx[dir];
+ ty = py + 99 * ddy[dir];
+
+ /* Hack -- Use an actual "target" */
+ if ((dir == 5) && target_okay())
+ {
+ tx = target_col;
+ ty = target_row;
+ }
+
+ if (p_ptr->pclass == CLASS_ARCHER)
+ {
+ /* Extra shot at level 10 */
+ if (p_ptr->lev >= 10) num++;
+
+ /* Extra shot at level 30 */
+ if (p_ptr->lev >= 30) num++;
+
+ /* Extra shot at level 45 */
+ if (p_ptr->lev >= 45) num++;
+ }
+
+ for (i = 0; i < num; i++)
+ project(0, p_ptr->lev/20+1, ty, tx, p_ptr->lev*p_ptr->lev*6/50, GF_ROCKET, flg, -1);
+ o_ptr->timeout = 15;
+ break;
+ }
+
default:
{
#ifdef JP
/* Choose effect */
switch (o_ptr->name1)
{
- case ART_CRIMSON:
- {
- int num = 1;
- int i;
- int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
- int tx, ty;
-#ifdef JP
- msg_print("¤»¤Ã¤«¤¯¤À¤«¤é¡Ø¥¯¥ê¥à¥¾¥ó¡Ù¤ò¤Ö¤Ã¤Ñ¤Ê¤¹¤¼¡ª");
-#else
- msg_print("I'll fire CRIMSON! SEKKAKUDAKARA!");
-#endif
-
- if (!get_aim_dir(&dir)) return;
-
- /* Use the given direction */
- tx = px + 99 * ddx[dir];
- ty = py + 99 * ddy[dir];
-
- /* Hack -- Use an actual "target" */
- if ((dir == 5) && target_okay())
- {
- tx = target_col;
- ty = target_row;
- }
-
- if (p_ptr->pclass == CLASS_ARCHER)
- {
- /* Extra shot at level 10 */
- if (p_ptr->lev >= 10) num++;
-
- /* Extra shot at level 30 */
- if (p_ptr->lev >= 30) num++;
-
- /* Extra shot at level 45 */
- if (p_ptr->lev >= 45) num++;
- }
-
- for (i = 0; i < num; i++)
- project(0, p_ptr->lev/20+1, ty, tx, p_ptr->lev*p_ptr->lev*6/50, GF_ROCKET, flg, -1);
- o_ptr->timeout = 15;
- break;
- }
-
- case ART_BOROMIR:
- {
- if (music_singing_any()) stop_singing();
- if (hex_spelling_any()) stop_hex_spell_all();
-#ifdef JP
- msg_print("¤¢¤Ê¤¿¤ÏÎ϶¯¤¤ÆÍÉ÷¤ò¿á¤ÌĤ餷¤¿¡£¼þ°Ï¤ÎŨ¤¬¿Ì¤¨¾å¤Ã¤Æ¤¤¤ë!");
-#else
- msg_print("You wind a mighty blast; your enemies tremble!");
-#endif
- (void)turn_monsters((3 * p_ptr->lev / 2) + 10);
- o_ptr->timeout = randint0(40) + 40;
- break;
- }
- case ART_MURAMASA:
- {
-#ifdef JP
- if (get_check("ËÜÅö¤Ë»È¤¤¤Þ¤¹¤«¡©"))
-#else
- if (get_check("Are you sure?!"))
-#endif
- {
-#ifdef JP
- msg_print("¼Àµ¤¬¿Ì¤¨¤¿¡¥¡¥¡¥");
-#else
- msg_print("The Muramasa pulsates...");
-#endif
- do_inc_stat(A_STR);
- if (one_in_(2))
- {
-#ifdef JP
- msg_print("¼Àµ¤Ï²õ¤ì¤¿¡ª");
-#else
- msg_print("The Muramasa is destroyed!");
-#endif
- curse_weapon(TRUE, item);
- }
- }
- break;
- }
- case ART_INROU:
- {
- int count = 0, i;
- monster_type *m_ptr;
-#ifndef JP
- cptr kakusan = "";
-#endif
-
- if (summon_named_creature(0, py, px, MON_SUKE, PM_FORCE_PET))
- {
-#ifdef JP
- msg_print("¡Ø½õ¤µ¤ó¡Ù¤¬¸½¤ì¤¿¡£");
-#else
- msg_print("Suke-san apperars.");
- kakusan = "Suke-san";
-#endif
- count++;
- }
- if (summon_named_creature(0, py, px, MON_KAKU, PM_FORCE_PET))
- {
-#ifdef JP
- msg_print("¡Ø³Ê¤µ¤ó¡Ù¤¬¸½¤ì¤¿¡£");
-#else
- msg_print("Kaku-san appears.");
- kakusan = "Kaku-san";
-#endif
- count++;
- }
- if (!count)
- {
- for (i = m_max - 1; i > 0; i--)
- {
- m_ptr = &m_list[i];
- if (!m_ptr->r_idx) continue;
- if (!((m_ptr->r_idx == MON_SUKE) || (m_ptr->r_idx == MON_KAKU))) continue;
- if (!los(m_ptr->fy, m_ptr->fx, py, px)) continue;
- if (!projectable(m_ptr->fy, m_ptr->fx, py, px)) continue;
- count++;
- break;
- }
- }
-
- if (count)
- {
-#ifdef JP
- msg_print("¡Ö¼Ô¤É¤â¡¢¤Ò¤«¤¨¤ª¤í¤¦¡ª¡ª¡ª¤³¤Î¤ªÊý¤ò¤É¤Ê¤¿¤È¤³¤³¤í¤¨¤ë¡£¡×");
-#else
- msg_format("%^s says 'WHO do you think this person is! Bow your head, down your knees!'", kakusan);
-#endif
-
- sukekaku = TRUE;
- stun_monsters(120);
- confuse_monsters(120);
- turn_monsters(120);
- stasis_monsters(120);
- sukekaku = FALSE;
- }
- else
- {
-#ifdef JP
- msg_print("¤·¤«¤·¡¢²¿¤âµ¯¤¤Ê¤«¤Ã¤¿¡£");
-#else
- msg_print("Nothing happen.");
-#endif
- }
- o_ptr->timeout = randint0(150) + 150;
- break;
- }
-
- case ART_HYOUSIGI:
- {
-#ifdef JP
- msg_print("Çï»ÒÌÚ¤òÂǤä¿¡£");
-#else
- msg_print("You beat Your wooden clappers.");
-#endif
- aggravate_monsters(0);
- break;
- }
- case ART_BLOOD:
- {
-#ifdef JP
- msg_print("³ù¤¬ÌÀ¤ë¤¯µ±¤¤¤¿...");
-#else
- msg_print("Your scythe glows brightly!");
-#endif
- get_bloody_moon_flags(o_ptr);
- o_ptr->timeout = 3333;
- if (p_ptr->prace == RACE_ANDROID) calc_android_exp();
- p_ptr->update |= (PU_BONUS | PU_HP);
- break;
- }
+ default:
+ break;
}
/* Window stuff */
#define ACT_BANISH_EVIL 56
#define ACT_GENOCIDE 57
#define ACT_MASS_GENO 58
+#define ACT_SCARE_AREA 59
+#define ACT_AGGRAVATE 60
/* 59 - 64 unused */
#define ACT_CHARM_ANIMAL 65
#define ACT_CHARM_UNDEAD 66
#define ACT_LORE 134
#define ACT_SHIKOFUMI 135
/* 127 -> unused */
-#define ACT_FISHING 200
-
+#define ACT_FISHING 251
+#define ACT_INROU 252
+#define ACT_MURAMASA 253
+#define ACT_BLOODY_MOON 254
+#define ACT_CRIMSON 255
/*** Object "tval" and "sval" codes ***/
extern int cold_dam(int dam, cptr kb_str, int monspell);
extern bool rustproof(void);
extern bool curse_armor(void);
+extern bool curse_weapon_object(bool force, object_type *o_ptr);
extern bool curse_weapon(bool force, int slot);
extern bool brand_bolts(void);
extern bool polymorph_monster(int y, int x);
{ "BANISH_EVIL", ACT_BANISH_EVIL },
{ "GENOCIDE", ACT_GENOCIDE },
{ "MASS_GENO", ACT_MASS_GENO },
+ { "SCARE_AREA", ACT_SCARE_AREA },
+ { "AGGRAVATE", ACT_AGGRAVATE },
{ "CHARM_ANIMAL", ACT_CHARM_ANIMAL },
{ "CHARM_UNDEAD", ACT_CHARM_UNDEAD },
{ "SHIKOFUMI", ACT_SHIKOFUMI },
{ "FISHING", ACT_FISHING },
+ { "INROU", ACT_INROU },
+ { "MURAMASA", ACT_MURAMASA },
+ { "BLOODY_MOON", ACT_BLOODY_MOON },
+ { "CRIMSON", ACT_CRIMSON },
{ NULL, 0 }
};
return "Ëõ»¦ : 500 ¥¿¡¼¥óËè";
case ACT_MASS_GENO:
return "¼þÊÕËõ»¦ : 1000 ¥¿¡¼¥óËè";
-
+ case ACT_SCARE_AREA:
+ return "¥â¥ó¥¹¥¿¡¼¶²¹² : 40+d40¥¿¡¼¥óËè";
+ case ACT_AGGRAVATE:
+ if (o_ptr->name1 == ART_HYOUSIGI) return "Çï»ÒÌÚ¤òÂǤÁ¤Ê¤é¤¹ : ¤¤¤Ä¤Ç¤â";
+ return "¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë : ¤¤¤Ä¤Ç¤â";
case ACT_CHARM_ANIMAL:
return "ưʪ̥λ : 200 ¥¿¡¼¥óËè";
case ACT_CHARM_UNDEAD:
/* Unique activation */
case ACT_FISHING:
return "Äà¤ê¤ò¤¹¤ë : ¤¤¤Ä¤Ç¤â";
+ case ACT_INROU:
+ return "Îã¤Î¥¢¥ì : 150+d150 ¥¿¡¼¥óËè";
+ case ACT_MURAMASA:
+ return "ÏÓÎϤξ徺 : ³ÎΨ50%¤Ç²õ¤ì¤ë";
+ case ACT_BLOODY_MOON:
+ return "°ÀÊѹ¹ : 3333 ¥¿¡¼¥óËè";
+ case ACT_CRIMSON:
+ return "¥Õ¥¡¥¤¥¢¡ª : 15 ¥¿¡¼¥óËè";
default:
return "̤ÄêµÁ";
return "genocide every 500 turns";
case ACT_MASS_GENO:
return "mass genocide every 1000 turns";
+ case ACT_SCARE_AREA:
+ return "frighten monsters every 40+d40 turns";
+ case ACT_AGGRAVATE:
+ if (o_ptr->name1 == ART_HYOUSIGI) return "beat wooden clappers every turn";
+ return "aggravete monsters every turn";
case ACT_CHARM_ANIMAL:
return "charm animal every 200 turns";
/* Unique activation */
case ACT_FISHING:
return "fishing : every time";
+ case ACT_INROU:
+ return "reveal your identity every 150+d150 turns";
+ case ACT_MURAMASA:
+ return "increase STR (destroyed 50%)";
+ case ACT_BLOODY_MOON:
+ return "change zokusei every 3333 turns";
+ case ACT_CRIMSON:
+ return "fire! every 15 turns";
default:
return "something undefined";
/* Some artifacts can be activated */
switch (o_ptr->name1)
{
- case ART_CRIMSON:
- {
-#ifdef JP
- return "¥Õ¥¡¥¤¥¢¡ª : 15 ¥¿¡¼¥óËè";
-#else
- return "fire! every 15 turns";
-#endif
- }
- case ART_BOROMIR:
- {
-#ifdef JP
- return "¥â¥ó¥¹¥¿¡¼¶²¹² : 40+d40¥¿¡¼¥óËè";
-#else
- return "frighten monsters every 40+d40 turns";
-#endif
- }
- case ART_MURAMASA:
- {
-#ifdef JP
- return "ÏÓÎϤξ徺 : ³ÎΨ50%¤Ç²õ¤ì¤ë";
-#else
- return "increase STR (destroyed 50%)";
-#endif
- }
- case ART_INROU:
- {
-#ifdef JP
- return "Îã¤Î¥¢¥ì : 150+d150 ¥¿¡¼¥óËè";
-#else
- return "reveal your identity every 150+d150 turns";
-#endif
- }
- case ART_HYOUSIGI:
- {
-#ifdef JP
- return "Çï»ÒÌÚ¤òÂǤÁ¤Ê¤é¤¹ : ¤¤¤Ä¤Ç¤â";
-#else
- return "beat wooden clappers every turn";
-#endif
- }
- case ART_BLOOD:
- {
+ /* Nothing */
+ default:
#ifdef JP
- return "°ÀÊѹ¹ : 3333 ¥¿¡¼¥óËè";
+ return "̤ÄêµÁ";
#else
- return "change zokusei every 3333 turns";
+ return "something undefined";
#endif
-
- }
}
if (object_is_smith(o_ptr))
/*
* Curse the players weapon
*/
-bool curse_weapon(bool force, int slot)
+bool curse_weapon_object(bool force, object_type *o_ptr)
{
int i;
-
- object_type *o_ptr;
-
char o_name[MAX_NLEN];
-
- /* Curse the weapon */
- o_ptr = &inventory[slot];
-
/* Nothing to curse */
if (!o_ptr->k_idx) return (FALSE);
-
/* Describe */
object_desc(o_name, o_ptr, OD_OMIT_PREFIX);
{
/* Cool */
#ifdef JP
-msg_format("%s¤¬%s¤òÊñ¤ß¹þ¤â¤¦¤È¤·¤¿¤¬¡¢%s¤Ï¤½¤ì¤òÄ·¤ÍÊÖ¤·¤¿¡ª",
-"¶²ÉݤΰŹõ¥ª¡¼¥é", "Éð´ï", o_name);
+ msg_format("%s¤¬%s¤òÊñ¤ß¹þ¤â¤¦¤È¤·¤¿¤¬¡¢%s¤Ï¤½¤ì¤òÄ·¤ÍÊÖ¤·¤¿¡ª",
+ "¶²ÉݤΰŹõ¥ª¡¼¥é", "Éð´ï", o_name);
#else
msg_format("A %s tries to %s, but your %s resists the effects!",
- "terrible black aura", "surround your weapon", o_name);
+ "terrible black aura", "surround your weapon", o_name);
#endif
-
}
/* not artifact or failed save... */
{
/* Oops */
#ifdef JP
-if (!force) msg_format("¶²ÉݤΰŹõ¥ª¡¼¥é¤¬¤¢¤Ê¤¿¤Î%s¤òÊñ¤ß¹þ¤ó¤À¡ª", o_name);
+ if (!force) msg_format("¶²ÉݤΰŹõ¥ª¡¼¥é¤¬¤¢¤Ê¤¿¤Î%s¤òÊñ¤ß¹þ¤ó¤À¡ª", o_name);
#else
if (!force) msg_format("A terrible black aura blasts your %s!", o_name);
#endif
-
chg_virtue(V_ENCHANT, -5);
/* Shatter the weapon */
for (i = 0; i < TR_FLAG_SIZE; i++)
o_ptr->art_flags[i] = 0;
-
/* Curse it */
o_ptr->curse_flags = TRC_CURSED;
return (TRUE);
}
+bool curse_weapon(bool force, int slot)
+{
+ /* Curse the weapon */
+ return curse_weapon_object(force, &inventory[slot]);
+}
+
/*
* Enchant some bolts