+ case ACT_BA_DARK:
+ {
+ msg_format(_("%s¤¬¿¼¤¤°Ç¤Ëʤ¤ï¤ì¤¿...","The %s is coverd in pitch-darkness..."), name);
+ if (!get_aim_dir(&dir)) return FALSE;
+ fire_ball(GF_DARK, dir, 250, 4);
+ break;
+ }
+
+ case ACT_BA_MANA:
+ {
+ msg_format(_("%s¤¬ÀÄÇò¤¯¸÷¤Ã¤¿¡¥¡¥¡¥", "The %s glows pale..."), name);
+ if (!get_aim_dir(&dir)) return FALSE;
+ fire_ball(GF_MANA, dir, 250, 4);
+ break;
+ }
+
+ case ACT_PESTICIDE:
+ {
+ msg_print(_("¤¢¤Ê¤¿¤Ï³²Ãî¤ò°ìÁݤ·¤¿¡£","You exterminate small life."));
+ (void)dispel_monsters(4);
+ break;
+ }
+
+ case ACT_BLINDING_LIGHT:
+ {
+ msg_format(_("%s¤¬âÁ¤·¤¤¸÷¤Çµ±¤¤¤¿...", "The %s gleams with blinding light..."), name);
+ fire_ball(GF_LITE, 0, 300, 6);
+ confuse_monsters(3 * p_ptr->lev / 2);
+ break;
+ }
+
+ case ACT_BIZARRE:
+ {
+ msg_format(_("%s¤Ï¼¿¹õ¤Ëµ±¤¤¤¿...", "The %s glows intensely black..."), name);
+ if (!get_aim_dir(&dir)) return FALSE;
+ ring_of_power(dir);
+ break;
+ }
+
+ case ACT_CAST_BA_STAR:
+ {
+ int num = damroll(5, 3);
+ int y, x;
+ int attempts;
+ msg_format(_("%s¤¬°ðºÊ¤Çʤ¤ï¤ì¤¿...","The %s is surrounded by lightning..."), name);
+ for (k = 0; k < num; k++)
+ {
+ attempts = 1000;
+
+ while (attempts--)
+ {
+ scatter(&y, &x, py, px, 4, 0);
+
+ if (!cave_have_flag_bold(y, x, FF_PROJECT)) continue;
+
+ if (!player_bold(y, x)) break;
+ }
+
+ project(0, 3, y, x, 150, GF_ELEC,
+ (PROJECT_THRU | PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL), -1);
+ }
+
+ break;
+ }
+
+ case ACT_BLADETURNER:
+ {
+ if (!get_aim_dir(&dir)) return FALSE;
+ msg_print(_("¤¢¤Ê¤¿¤Ï¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe the elements."));
+ fire_ball(GF_MISSILE, dir, 300, -4);
+ msg_print(_("³»¤¬ÍÍ¡¹¤Ê¿§¤Ëµ±¤¤¤¿...", "Your armor glows many colours..."));
+ (void)set_afraid(0);
+ (void)set_hero(randint1(50) + 50, FALSE);
+ (void)hp_player(10);
+ (void)set_blessed(randint1(50) + 50, FALSE);
+ (void)set_oppose_acid(randint1(50) + 50, FALSE);
+ (void)set_oppose_elec(randint1(50) + 50, FALSE);
+ (void)set_oppose_fire(randint1(50) + 50, FALSE);
+ (void)set_oppose_cold(randint1(50) + 50, FALSE);
+ (void)set_oppose_pois(randint1(50) + 50, FALSE);
+ break;
+ }
+
+ case ACT_BR_FIRE:
+ {
+ if (!get_aim_dir(&dir)) return FALSE;
+ fire_ball(GF_FIRE, dir, 200, -2);
+ if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
+ {
+ (void)set_oppose_fire(randint1(20) + 20, FALSE);
+ }
+ break;
+ }
+ case ACT_BR_COLD:
+ {
+ if (!get_aim_dir(&dir)) return FALSE;
+ fire_ball(GF_COLD, dir, 200, -2);
+ if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
+ {
+ (void)set_oppose_cold(randint1(20) + 20, FALSE);
+ }
+ break;
+ }
+ case ACT_BR_DRAGON:
+ {
+ if (!activate_dragon_breath(o_ptr)) return FALSE;
+ break;
+ }
+
+ /* Activate for other offensive action */
+
+ case ACT_CONFUSE:
+ {
+ msg_print(_("ÍÍ¡¹¤Ê¿§¤Î²Ð²Ö¤òȯ¤·¤Æ¤¤¤ë...", "It glows in scintillating colours..."));
+ if (!get_aim_dir(&dir)) return FALSE;
+ confuse_monster(dir, 20);
+ break;
+ }
+
+ case ACT_SLEEP:
+ {
+ msg_print(_("¿¼ÀÄ¿§¤Ëµ±¤¤¤Æ¤¤¤ë...", "It glows deep blue..."));
+ sleep_monsters_touch();
+ break;
+ }
+
+ case ACT_QUAKE:
+ {
+ earthquake(py, px, 5);
+ break;
+ }
+
+ case ACT_TERROR:
+ {
+ turn_monsters(40 + p_ptr->lev);
+ break;
+ }
+
+ case ACT_TELE_AWAY:
+ {
+ if (!get_aim_dir(&dir)) return FALSE;
+ (void)fire_beam(GF_AWAY_ALL, dir, plev);
+ break;
+ }
+
+ case ACT_BANISH_EVIL:
+ {
+ if (banish_evil(100))
+ {
+ msg_print(_("¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤ÎÎϤ¬¼Ù°¤òÂǤÁʧ¤Ã¤¿¡ª", "The power of the artifact banishes evil!"));
+ }
+ break;
+ }
+
+ case ACT_GENOCIDE:
+ {
+ msg_print(_("¿¼ÀÄ¿§¤Ëµ±¤¤¤Æ¤¤¤ë...", "It glows deep blue..."));
+ (void)symbol_genocide(200, TRUE);
+ break;
+ }
+
+ case ACT_MASS_GENO:
+ {
+ msg_print(_("¤Ò¤É¤¯±Ô¤¤²»¤¬Î®¤ì½Ð¤¿...", "It lets out a long, shrill note..."));
+ (void)mass_genocide(200, TRUE);
+ break;
+ }
+
+ case ACT_SCARE_AREA:
+ {
+ if (music_singing_any()) stop_singing();
+ if (hex_spelling_any()) stop_hex_spell_all();
+ msg_print(_("¤¢¤Ê¤¿¤ÏÎ϶¯¤¤ÆÍÉ÷¤ò¿á¤ÌĤ餷¤¿¡£¼þ°Ï¤ÎŨ¤¬¿Ì¤¨¾å¤Ã¤Æ¤¤¤ë!",
+ "You wind a mighty blast; your enemies tremble!"));
+ (void)turn_monsters((3 * p_ptr->lev / 2) + 10);
+ break;
+ }
+
+ case ACT_AGGRAVATE:
+ {
+ if (o_ptr->name1 == ART_HYOUSIGI)
+ {
+ msg_print(_("Çï»ÒÌÚ¤òÂǤä¿¡£", "You beat Your wooden clappers."));
+ }
+ else
+ {
+ msg_format(_("%s¤ÏÉÔ²÷¤Êʪ²»¤òΩ¤Æ¤¿¡£","The %s sounds an unpleasant noise."), name);
+ }
+ aggravate_monsters(0);
+ break;
+ }
+
+ /* Activate for summoning / charming */
+
+ case ACT_CHARM_ANIMAL:
+ {
+ if (!get_aim_dir(&dir)) return FALSE;
+ (void)charm_animal(dir, plev * 2);
+ break;
+ }
+
+ case ACT_CHARM_UNDEAD:
+ {
+ if (!get_aim_dir(&dir)) return FALSE;
+ (void)control_one_undead(dir, plev * 2);
+ break;
+ }
+
+ case ACT_CHARM_OTHER:
+ {
+ if (!get_aim_dir(&dir)) return FALSE;
+ (void)charm_monster(dir, plev * 2);
+ break;
+ }
+
+ case ACT_CHARM_ANIMALS:
+ {
+ (void)charm_animals(plev * 2);
+ break;
+ }
+
+ case ACT_CHARM_OTHERS:
+ {
+ charm_monsters(plev * 2);
+ break;
+ }
+
+ case ACT_SUMMON_ANIMAL:
+ {
+ (void)summon_specific(-1, py, px, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET));
+ break;
+ }
+
+ case ACT_SUMMON_PHANTOM:
+ {
+ msg_print(_("¸¸Îî¤ò¾¤´¤·¤¿¡£", "You summon a phantasmal servant."));
+ (void)summon_specific(-1, py, px, dun_level, SUMMON_PHANTOM, (PM_ALLOW_GROUP | PM_FORCE_PET));
+ break;
+ }
+
+ case ACT_SUMMON_ELEMENTAL:
+ {
+ bool pet = one_in_(3);
+ u32b mode = 0L;
+
+ if (!(pet && (plev < 50))) mode |= PM_ALLOW_GROUP;
+ if (pet) mode |= PM_FORCE_PET;
+ else mode |= PM_NO_PET;
+
+ if (summon_specific((pet ? -1 : 0), py, px, ((plev * 3) / 2), SUMMON_ELEMENTAL, mode))
+ {
+ msg_print(_("¥¨¥ì¥á¥ó¥¿¥ë¤¬¸½¤ì¤¿...", "An elemental materializes..."));
+ if (pet)
+ msg_print(_("¤¢¤Ê¤¿¤ËÉþ½¾¤·¤Æ¤¤¤ë¤è¤¦¤À¡£", "It seems obedient to you."));
+ else
+ msg_print(_("¤½¤ì¤ò¥³¥ó¥È¥í¡¼¥ë¤Ç¤¤Ê¤«¤Ã¤¿¡ª", "You fail to control it!"));
+ }
+
+ break;
+ }
+
+ case ACT_SUMMON_DEMON:
+ {
+ bool pet = one_in_(3);
+ u32b mode = 0L;
+
+ if (!(pet && (plev < 50))) mode |= PM_ALLOW_GROUP;
+ if (pet) mode |= PM_FORCE_PET;
+ else mode |= PM_NO_PET;
+
+ if (summon_specific((pet ? -1 : 0), py, px, ((plev * 3) / 2), SUMMON_DEMON, mode))
+ {
+ msg_print(_("ⲫ¤Î°½¤¬½¼Ëþ¤·¤¿¡£", "The area fills with a stench of sulphur and brimstone."));
+ if (pet)
+ msg_print(_("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×", "'What is thy bidding... Master?'"));
+ else
+ msg_print(_("¡ÖNON SERVIAM! Wretch! ¤ªÁ°¤Îº²¤òĺ¤¯¤¾¡ª¡×", "'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'"));
+ }
+
+ break;
+ }
+
+ case ACT_SUMMON_UNDEAD:
+ {
+ bool pet = one_in_(3);
+ int type;
+ u32b mode = 0L;
+
+ type = (plev > 47 ? SUMMON_HI_UNDEAD : SUMMON_UNDEAD);
+
+ if (!pet || ((plev > 24) && one_in_(3))) mode |= PM_ALLOW_GROUP;
+ if (pet) mode |= PM_FORCE_PET;
+ else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET);
+
+ if (summon_specific((pet ? -1 : 0), py, px, ((plev * 3) / 2), type, mode))
+ {
+ msg_print(_("Î䤿¤¤É÷¤¬¤¢¤Ê¤¿¤Î¼þ¤ê¤Ë¿á¤»Ï¤á¤¿¡£¤½¤ì¤ÏÉåÇÔ½¤ò±¿¤ó¤Ç¤¤¤ë...",
+ "Cold winds begin to blow around you, carrying with them the stench of decay..."));
+ if (pet)
+ msg_print(_("¸Å¤¨¤Î»à¤»¤ë¼Ô¶¦¤¬¤¢¤Ê¤¿¤Ë»Å¤¨¤ë¤¿¤áÅÚ¤«¤éᴤä¿¡ª",
+ "Ancient, long-dead forms arise from the ground to serve you!"));
+ else
+ msg_print(_("»à¼Ô¤¬á´¤Ã¤¿¡£Ì²¤ê¤ò˸¤²¤ë¤¢¤Ê¤¿¤òȳ¤¹¤ë¤¿¤á¤Ë¡ª",
+ "'The dead arise... to punish you for disturbing them!'"));
+ }
+
+ break;
+ }
+
+ case ACT_SUMMON_HOUND:
+ {
+ u32b mode = PM_ALLOW_GROUP;
+ bool pet = !one_in_(5);
+ if (pet) mode |= PM_FORCE_PET;
+ else mode |= PM_NO_PET;
+
+ if (summon_specific((pet ? -1 : 0), py, px, ((p_ptr->lev * 3) / 2), SUMMON_HOUND, mode))
+ {
+
+ if (pet)
+ msg_print(_("¥Ï¥¦¥ó¥É¤¬¤¢¤Ê¤¿¤Î²¼ËͤȤ·¤Æ½Ð¸½¤·¤¿¡£",
+ "A group of hounds appear as your servant."));
+ else
+ msg_print(_("¥Ï¥¦¥ó¥É¤Ï¤¢¤Ê¤¿¤Ë²ç¤ò¸þ¤±¤Æ¤¤¤ë¡ª",
+ "A group of hounds appear as your enemy!"));
+ }
+
+ break;
+ }
+
+ case ACT_SUMMON_DAWN:
+ {
+ msg_print(_("¶Ç¤Î»ÕÃĤò¾¤´¤·¤¿¡£","You summon the Legion of the Dawn."));
+ (void)summon_specific(-1, py, px, dun_level, SUMMON_DAWN, (PM_ALLOW_GROUP | PM_FORCE_PET));
+ break;
+ }
+
+ case ACT_SUMMON_OCTOPUS:
+ {
+ u32b mode = PM_ALLOW_GROUP;
+ bool pet = !one_in_(5);
+ if (pet) mode |= PM_FORCE_PET;
+
+ if (summon_named_creature(0, py, px, MON_JIZOTAKO, mode))
+ {
+ if (pet)
+ msg_print(_("Âý¤¬¤¢¤Ê¤¿¤Î²¼ËͤȤ·¤Æ½Ð¸½¤·¤¿¡£", "A group of octopuses appear as your servant."));
+ else
+ msg_print(_("Âý¤Ï¤¢¤Ê¤¿¤òâˤó¤Ç¤¤¤ë¡ª", "A group of octopuses appear as your enemy!"));
+ }
+
+ break;
+ }
+
+ /* Activate for healing */
+
+ case ACT_CHOIR_SINGS:
+ {
+ msg_print(_("Å·¹ñ¤Î²Î¤¬Ê¹¤³¤¨¤ë...", "A heavenly choir sings..."));
+ (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);
+ break;
+ }
+
+ case ACT_CURE_LW:
+ {
+ (void)set_afraid(0);
+ (void)hp_player(30);
+ break;
+ }
+
+ case ACT_CURE_MW:
+ {
+ msg_print(_("¿¼»ç¿§¤Î¸÷¤òȯ¤·¤Æ¤¤¤ë...", "It radiates deep purple..."));
+ hp_player(damroll(4, 8));
+ (void)set_cut((p_ptr->cut / 2) - 50);
+ break;
+ }
+
+ case ACT_CURE_POISON:
+ {
+ msg_print(_("¿¼ÀÄ¿§¤Ëµ±¤¤¤Æ¤¤¤ë...", "It glows deep blue..."));
+ (void)set_afraid(0);
+ (void)set_poisoned(0);
+ break;
+ }
+
+ case ACT_REST_LIFE:
+ {
+ msg_print(_("¿¼¹È¤Ëµ±¤¤¤Æ¤¤¤ë...", "It glows a deep red..."));
+ restore_level();
+ break;
+ }
+
+ case ACT_REST_ALL:
+ {
+ msg_print(_("Ç»Îп§¤Ëµ±¤¤¤Æ¤¤¤ë...", "It glows a deep green..."));
+ (void)do_res_stat(A_STR);
+ (void)do_res_stat(A_INT);
+ (void)do_res_stat(A_WIS);
+ (void)do_res_stat(A_DEX);
+ (void)do_res_stat(A_CON);
+ (void)do_res_stat(A_CHR);
+ (void)restore_level();
+ break;
+ }
+
+ case ACT_CURE_700:
+ {
+ msg_print(_("¿¼ÀÄ¿§¤Ëµ±¤¤¤Æ¤¤¤ë...","It glows deep blue..."));
+ msg_print(_("ÂÎÆâ¤ËÃȤ«¤¤¸ÝÆ°¤¬´¶¤¸¤é¤ì¤ë...","You feel a warm tingling inside..."));
+ (void)hp_player(700);
+ (void)set_cut(0);
+ break;
+ }
+
+ case ACT_CURE_1000:
+ {
+ msg_print(_("Çò¤¯ÌÀ¤ë¤¯µ±¤¤¤Æ¤¤¤ë...","It glows a bright white..."));
+ msg_print(_("¤Ò¤¸¤ç¤¦¤Ëµ¤Ê¬¤¬¤è¤¤...","You feel much better..."));
+ (void)hp_player(1000);
+ (void)set_cut(0);
+ break;
+ }
+
+ case ACT_CURING:
+ {
+ msg_format(_("%s¤ÎÍ¥¤·¤µ¤ËÌþ¤µ¤ì¤ë...", "the %s cures you affectionately ..."), name);
+ (void)set_poisoned(0);
+ (void)set_confused(0);
+ (void)set_blind(0);
+ (void)set_stun(0);
+ (void)set_cut(0);
+ (void)set_image(0);
+
+ break;
+ }
+
+ case ACT_CURE_MANA_FULL:
+ {
+ msg_format(_("%s¤¬ÀÄÇò¤¯¸÷¤Ã¤¿¡¥¡¥¡¥","The %s glows pale..."), name);
+ 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;
+ }
+ msg_print(_("Ƭ¤¬¥Ï¥Ã¥¥ê¤È¤·¤¿¡£", "You feel your head clear."));
+ p_ptr->window |= (PW_PLAYER);
+ }
+ else if (p_ptr->csp < p_ptr->msp)
+ {
+ p_ptr->csp = p_ptr->msp;
+ p_ptr->csp_frac = 0;
+ msg_print(_("Ƭ¤¬¥Ï¥Ã¥¥ê¤È¤·¤¿¡£", "You feel your head clear."));
+ p_ptr->redraw |= (PR_MANA);
+ p_ptr->window |= (PW_PLAYER);
+ p_ptr->window |= (PW_SPELL);
+ }
+ break;
+ }
+
+ /* Activate for timed effect */
+
+ case ACT_ESP:
+ {
+ (void)set_tim_esp(randint1(30) + 25, FALSE);