2 #include "cmd-spell.h"
\r
5 * @brief
\8c\95\8fp
\82Ì
\8ae
\8f\88\97\9d\82ð
\8ds
\82¤
\r
6 * @param spell
\8c\95\8fpID
\r
7 * @param mode
\8f\88\97\9d\93à
\97e (SPELL_NAME / SPELL_DESC / SPELL_CAST)
\r
8 * @return SPELL_NAME / SPELL_DESC
\8e\9e\82É
\82Í
\95¶
\8e\9a\97ñ
\83|
\83C
\83\93\83^
\82ð
\95Ô
\82·
\81BSPELL_CAST
\8e\9e\82ÍNULL
\95¶
\8e\9a\97ñ
\82ð
\95Ô
\82·
\81B
\r
10 cptr do_hissatsu_spell(SPELL_IDX spell, BIT_FLAGS mode)
\r
12 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
\r
13 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
\r
14 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
\r
17 int plev = p_ptr->lev;
\r
22 if (name) return _("
\94ò
\94Ñ
\8dj", "Tobi-Izuna");
\r
23 if (desc) return _("2
\83}
\83X
\97£
\82ê
\82½
\82Æ
\82±
\82ë
\82É
\82¢
\82é
\83\82\83\93\83X
\83^
\81[
\82ð
\8dU
\8c\82\82·
\82é
\81B", "Attacks a two squares distant monster.");
\r
28 if (!get_aim_dir(&dir)) return NULL;
\r
30 project_hook(GF_ATTACK, dir, HISSATSU_2, PROJECT_STOP | PROJECT_KILL);
\r
35 if (name) return _("
\8cÜ
\8c\8e\89J
\8ea
\82è", "3-Way Attack");
\r
36 if (desc) return _("3
\95û
\8cü
\82É
\91Î
\82µ
\82Ä
\8dU
\8c\82\82·
\82é
\81B", "Attacks in 3 directions in one time.");
\r
43 if (!get_rep_dir2(&dir)) return NULL;
\r
44 if (dir == 5) return NULL;
\r
46 for (cdir = 0; cdir < 8; cdir++)
\r
48 if (cdd[cdir] == dir) break;
\r
51 if (cdir == 8) return NULL;
\r
53 y = p_ptr->y + ddy_cdd[cdir];
\r
54 x = p_ptr->x + ddx_cdd[cdir];
\r
55 if (cave[y][x].m_idx)
\r
58 msg_print(_("
\8dU
\8c\82\82Í
\8bó
\82ð
\90Ø
\82Á
\82½
\81B", "You attack the empty air."));
\r
60 y = p_ptr->y + ddy_cdd[(cdir + 7) % 8];
\r
61 x = p_ptr->x + ddx_cdd[(cdir + 7) % 8];
\r
62 if (cave[y][x].m_idx)
\r
65 msg_print(_("
\8dU
\8c\82\82Í
\8bó
\82ð
\90Ø
\82Á
\82½
\81B", "You attack the empty air."));
\r
67 y = p_ptr->y + ddy_cdd[(cdir + 1) % 8];
\r
68 x = p_ptr->x + ddx_cdd[(cdir + 1) % 8];
\r
69 if (cave[y][x].m_idx)
\r
72 msg_print(_("
\8dU
\8c\82\82Í
\8bó
\82ð
\90Ø
\82Á
\82½
\81B", "You attack the empty air."));
\r
77 if (name) return _("
\83u
\81[
\83\81\83\89\83\93", "Boomerang");
\r
78 if (desc) return _("
\95\90\8aí
\82ð
\8eè
\8c³
\82É
\96ß
\82Á
\82Ä
\82
\82é
\82æ
\82¤
\82É
\93\8a\82°
\82é
\81B
\96ß
\82Á
\82Ä
\82±
\82È
\82¢
\82±
\82Æ
\82à
\82 \82é
\81B",
\r
79 "Throws current weapon. And it'll return to your hand unless failed.");
\r
83 if (!do_cmd_throw(1, TRUE, -1)) return NULL;
\r
88 if (name) return _("
\89\8b\97ì", "Burning Strike");
\r
89 if (desc) return _("
\89Î
\89\8a\91Ï
\90«
\82Ì
\82È
\82¢
\83\82\83\93\83X
\83^
\81[
\82É
\91å
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B", "Attacks a monster with more damage unless it has resistance to fire.");
\r
95 if (!get_rep_dir2(&dir)) return NULL;
\r
96 if (dir == 5) return NULL;
\r
98 y = p_ptr->y + ddy[dir];
\r
99 x = p_ptr->x + ddx[dir];
\r
101 if (cave[y][x].m_idx)
\r
102 py_attack(y, x, HISSATSU_FIRE);
\r
105 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
112 if (name) return _("
\8eE
\8bC
\8a´
\92m", "Detect Ferocity");
\r
113 if (desc) return _("
\8bß
\82
\82Ì
\8ev
\8dl
\82·
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82é
\83\82\83\93\83X
\83^
\81[
\82ð
\8a´
\92m
\82·
\82é
\81B", "Detects all monsters except mindless in your vicinity.");
\r
117 detect_monsters_mind(DETECT_RAD_DEFAULT);
\r
122 if (name) return _("
\82Ý
\82Ë
\91Å
\82¿", "Strike to Stun");
\r
123 if (desc) return _("
\91\8a\8eè
\82É
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82È
\82¢
\82ª
\81A
\9eN
\9eO
\82Æ
\82³
\82¹
\82é
\81B", "Attempts to stun a monster in the adjacent.");
\r
129 if (!get_rep_dir2(&dir)) return NULL;
\r
130 if (dir == 5) return NULL;
\r
132 y = p_ptr->y + ddy[dir];
\r
133 x = p_ptr->x + ddx[dir];
\r
135 if (cave[y][x].m_idx)
\r
136 py_attack(y, x, HISSATSU_MINEUCHI);
\r
139 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
146 if (name) return _("
\83J
\83E
\83\93\83^
\81[", "Counter");
\r
147 if (desc) return _("
\91\8a\8eè
\82É
\8dU
\8c\82\82³
\82ê
\82½
\82Æ
\82«
\82É
\94½
\8c\82\82·
\82é
\81B
\94½
\8c\82\82·
\82é
\82½
\82Ñ
\82ÉMP
\82ð
\8fÁ
\94ï
\81B",
\r
148 "Prepares to counterattack. When attack by a monster, strikes back using SP each time.");
\r
154 msg_print(_("
\8fæ
\94n
\92\86\82É
\82Í
\96³
\97\9d\82¾
\81B", "You cannot do it when riding."));
\r
157 msg_print(_("
\91\8a\8eè
\82Ì
\8dU
\8c\82\82É
\91Î
\82µ
\82Ä
\90g
\8d\
\82¦
\82½
\81B", "You prepare to counter blow."));
\r
158 p_ptr->counter = TRUE;
\r
163 if (name) return _("
\95¥
\82¢
\94²
\82¯", "Harainuke");
\r
164 if (desc) return _("
\8dU
\8c\82\82µ
\82½
\8cã
\81A
\94½
\91Î
\91¤
\82É
\94²
\82¯
\82é
\81B",
\r
165 "Attacks monster with your weapons normally, then move through counter side of the monster.");
\r
173 msg_print(_("
\8fæ
\94n
\92\86\82É
\82Í
\96³
\97\9d\82¾
\81B", "You cannot do it when riding."));
\r
177 if (!get_rep_dir2(&dir)) return NULL;
\r
179 if (dir == 5) return NULL;
\r
180 y = p_ptr->y + ddy[dir];
\r
181 x = p_ptr->x + ddx[dir];
\r
183 if (!cave[y][x].m_idx)
\r
185 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
189 py_attack(y, x, 0);
\r
191 if (!player_can_enter(cave[y][x].feat, 0) || is_trap(cave[y][x].feat))
\r
197 if (player_can_enter(cave[y][x].feat, 0) && !is_trap(cave[y][x].feat) && !cave[y][x].m_idx)
\r
201 /* Move the player */
\r
202 (void)move_player_effect(y, x, MPE_FORGET_FLOW | MPE_HANDLE_STUFF | MPE_DONT_PICKUP);
\r
208 if (name) return _("
\83T
\81[
\83y
\83\93\83c
\83^
\83\93", "Serpent's Tongue");
\r
209 if (desc) return _("
\93Å
\91Ï
\90«
\82Ì
\82È
\82¢
\83\82\83\93\83X
\83^
\81[
\82É
\91å
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B", "Attacks a monster with more damage unless it has resistance to poison.");
\r
215 if (!get_rep_dir2(&dir)) return NULL;
\r
216 if (dir == 5) return NULL;
\r
218 y = p_ptr->y + ddy[dir];
\r
219 x = p_ptr->x + ddx[dir];
\r
221 if (cave[y][x].m_idx)
\r
222 py_attack(y, x, HISSATSU_POISON);
\r
225 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
232 if (name) return _("
\8ea
\96\82\8c\95\93ó
\82Ì
\91¾
\93\81", "Zammaken");
\r
233 if (desc) return _("
\90¶
\96½
\82Ì
\82È
\82¢
\8e×
\88«
\82È
\83\82\83\93\83X
\83^
\81[
\82É
\91å
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\82ª
\81A
\91¼
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\82Í
\91S
\82
\8cø
\89Ê
\82ª
\82È
\82¢
\81B",
\r
234 "Attacks an evil unliving monster with great damage. No effect to other monsters.");
\r
240 if (!get_rep_dir2(&dir)) return NULL;
\r
241 if (dir == 5) return NULL;
\r
243 y = p_ptr->y + ddy[dir];
\r
244 x = p_ptr->x + ddx[dir];
\r
246 if (cave[y][x].m_idx)
\r
247 py_attack(y, x, HISSATSU_ZANMA);
\r
250 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
257 if (name) return _("
\97ô
\95\97\8c\95", "Wind Blast");
\r
258 if (desc) return _("
\8dU
\8c\82\82µ
\82½
\91\8a\8eè
\82ð
\8cã
\95û
\82Ö
\90\81\82«
\94ò
\82Î
\82·
\81B", "Attacks an adjacent monster, and blow it away.");
\r
264 if (!get_rep_dir2(&dir)) return NULL;
\r
265 if (dir == 5) return NULL;
\r
267 y = p_ptr->y + ddy[dir];
\r
268 x = p_ptr->x + ddx[dir];
\r
270 if (cave[y][x].m_idx)
\r
271 py_attack(y, x, 0);
\r
274 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
277 if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
\r
281 if (cave[y][x].m_idx)
\r
284 POSITION ty = y, tx = x;
\r
285 POSITION oy = y, ox = x;
\r
286 MONSTER_IDX m_idx = cave[y][x].m_idx;
\r
287 monster_type *m_ptr = &m_list[m_idx];
\r
290 monster_desc(m_name, m_ptr, 0);
\r
292 for (i = 0; i < 5; i++)
\r
296 if (cave_empty_bold(y, x))
\r
303 if ((ty != oy) || (tx != ox))
\r
305 msg_format(_("%s
\82ð
\90\81\82«
\94ò
\82Î
\82µ
\82½
\81I", "You blow %s away!"), m_name);
\r
306 cave[oy][ox].m_idx = 0;
\r
307 cave[ty][tx].m_idx = m_idx;
\r
311 update_mon(m_idx, TRUE);
\r
315 if (r_info[m_ptr->r_idx].flags7 & (RF7_LITE_MASK | RF7_DARK_MASK))
\r
316 p_ptr->update |= (PU_MON_LITE);
\r
323 if (name) return _("
\93\81\8f \82Ì
\96Ú
\97\98\82«", "Judge");
\r
324 if (desc) return _("
\95\90\8aí
\81E
\96h
\8bï
\82ð1
\82Â
\8e¯
\95Ê
\82·
\82é
\81B
\83\8c\83x
\83\8b45
\88È
\8fã
\82Å
\95\90\8aí
\81E
\96h
\8bï
\82Ì
\94\
\97Í
\82ð
\8a®
\91S
\82É
\92m
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82é
\81B",
\r
325 "Identifies a weapon or armor. Or *identifies* these at level 45.");
\r
331 if (!identify_fully(TRUE)) return NULL;
\r
335 if (!ident_spell(TRUE)) return NULL;
\r
341 if (name) return _("
\94j
\8aâ
\8ea", "Rock Smash");
\r
342 if (desc) return _("
\8aâ
\82ð
\89ó
\82µ
\81A
\8aâ
\90Î
\8cn
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\91å
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B", "Breaks rock. Or greatly damage a monster made by rocks.");
\r
348 if (!get_rep_dir2(&dir)) return NULL;
\r
349 if (dir == 5) return NULL;
\r
351 y = p_ptr->y + ddy[dir];
\r
352 x = p_ptr->x + ddx[dir];
\r
354 if (cave[y][x].m_idx)
\r
355 py_attack(y, x, HISSATSU_HAGAN);
\r
357 if (!cave_have_flag_bold(y, x, FF_HURT_ROCK)) break;
\r
359 /* Destroy the feature */
\r
360 cave_alter_feat(y, x, FF_HURT_ROCK);
\r
362 /* Update some things */
\r
363 p_ptr->update |= (PU_FLOW);
\r
368 if (name) return _("
\97\90\82ê
\90á
\8c\8e\89Ô", "Midare-Setsugekka");
\r
369 if (desc) return _("
\8dU
\8c\82\89ñ
\90\94\82ª
\91\9d\82¦
\81A
\97â
\8bC
\91Ï
\90«
\82Ì
\82È
\82¢
\83\82\83\93\83X
\83^
\81[
\82É
\91å
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B",
\r
370 "Attacks a monster with increased number of attacks and more damage unless it has resistance to cold.");
\r
376 if (!get_rep_dir2(&dir)) return NULL;
\r
377 if (dir == 5) return NULL;
\r
379 y = p_ptr->y + ddy[dir];
\r
380 x = p_ptr->x + ddx[dir];
\r
382 if (cave[y][x].m_idx)
\r
383 py_attack(y, x, HISSATSU_COLD);
\r
386 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
393 if (name) return _("
\8b}
\8f\8a\93Ë
\82«", "Spot Aiming");
\r
394 if (desc) return _("
\83\82\83\93\83X
\83^
\81[
\82ð
\88ê
\8c\82\82Å
\93|
\82·
\8dU
\8c\82\82ð
\8cJ
\82è
\8fo
\82·
\81B
\8e¸
\94s
\82·
\82é
\82Æ1
\93_
\82µ
\82©
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82ç
\82ê
\82È
\82¢
\81B",
\r
395 "Attempts to kill a monster instantly. If failed cause only 1HP of damage.");
\r
401 if (!get_rep_dir2(&dir)) return NULL;
\r
402 if (dir == 5) return NULL;
\r
404 y = p_ptr->y + ddy[dir];
\r
405 x = p_ptr->x + ddx[dir];
\r
407 if (cave[y][x].m_idx)
\r
408 py_attack(y, x, HISSATSU_KYUSHO);
\r
411 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
418 if (name) return _("
\96\82\90_
\8ea
\82è", "Majingiri");
\r
419 if (desc) return _("
\89ï
\90S
\82Ì
\88ê
\8c\82\82Å
\8dU
\8c\82\82·
\82é
\81B
\8dU
\8c\82\82ª
\82©
\82í
\82³
\82ê
\82â
\82·
\82¢
\81B",
\r
420 "Attempts to attack with critical hit. But this attack is easy to evade for a monster.");
\r
426 if (!get_rep_dir2(&dir)) return NULL;
\r
427 if (dir == 5) return NULL;
\r
429 y = p_ptr->y + ddy[dir];
\r
430 x = p_ptr->x + ddx[dir];
\r
432 if (cave[y][x].m_idx)
\r
433 py_attack(y, x, HISSATSU_MAJIN);
\r
436 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
443 if (name) return _("
\8eÌ
\82Ä
\90g", "Desperate Attack");
\r
444 if (desc) return _("
\8b
\97Í
\82È
\8dU
\8c\82\82ð
\8cJ
\82è
\8fo
\82·
\81B
\8e\9f\82Ì
\83^
\81[
\83\93\82Ü
\82Å
\82Ì
\8aÔ
\81A
\90H
\82ç
\82¤
\83_
\83\81\81[
\83W
\82ª
\91\9d\82¦
\82é
\81B",
\r
445 "Attacks with all of your power. But all damages you take will be doubled for one turn.");
\r
451 if (!get_rep_dir2(&dir)) return NULL;
\r
452 if (dir == 5) return NULL;
\r
454 y = p_ptr->y + ddy[dir];
\r
455 x = p_ptr->x + ddx[dir];
\r
457 if (cave[y][x].m_idx)
\r
458 py_attack(y, x, HISSATSU_SUTEMI);
\r
461 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
464 p_ptr->sutemi = TRUE;
\r
469 if (name) return _("
\97\8b\8c\82\98h
\92Ü
\8ea", "Lightning Eagle");
\r
470 if (desc) return _("
\93d
\8c\82\91Ï
\90«
\82Ì
\82È
\82¢
\83\82\83\93\83X
\83^
\81[
\82É
\94ñ
\8fí
\82É
\91å
\82«
\82¢
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B",
\r
471 "Attacks a monster with more damage unless it has resistance to electricity.");
\r
477 if (!get_rep_dir2(&dir)) return NULL;
\r
478 if (dir == 5) return NULL;
\r
480 y = p_ptr->y + ddy[dir];
\r
481 x = p_ptr->x + ddx[dir];
\r
483 if (cave[y][x].m_idx)
\r
484 py_attack(y, x, HISSATSU_ELEC);
\r
487 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
494 if (name) return _("
\93ü
\90g", "Rush Attack");
\r
495 if (desc) return _("
\91f
\91\81\82
\91\8a\8eè
\82É
\8bß
\8añ
\82è
\8dU
\8c\82\82·
\82é
\81B", "Steps close to a monster and attacks at a time.");
\r
499 if (!rush_attack(NULL)) return NULL;
\r
504 if (name) return _("
\90Ô
\97¬
\89Q", "Bloody Maelstrom");
\r
505 if (desc) return _("
\8e©
\95ª
\8e©
\90g
\82à
\8f\9d\82ð
\8dì
\82è
\82Â
\82Â
\81A
\82»
\82Ì
\8f\9d\82ª
\90[
\82¢
\82Ù
\82Ç
\91å
\82«
\82¢
\88Ð
\97Í
\82Å
\91S
\95û
\8cü
\82Ì
\93G
\82ð
\8dU
\8c\82\82Å
\82«
\82é
\81B
\90¶
\82«
\82Ä
\82¢
\82È
\82¢
\83\82\83\93\83X
\83^
\81[
\82É
\82Í
\8cø
\89Ê
\82ª
\82È
\82¢
\81B",
\r
506 "Attacks all adjacent monsters with power corresponding to your cut status. Then increases your cut status. No effect to unliving monsters.");
\r
513 monster_type *m_ptr;
\r
515 if (p_ptr->cut < 300)
\r
516 set_cut(p_ptr->cut + 300);
\r
518 set_cut(p_ptr->cut * 2);
\r
520 for (dir = 0; dir < 8; dir++)
\r
522 y = p_ptr->y + ddy_ddd[dir];
\r
523 x = p_ptr->x + ddx_ddd[dir];
\r
524 c_ptr = &cave[y][x];
\r
526 /* Get the monster */
\r
527 m_ptr = &m_list[c_ptr->m_idx];
\r
529 /* Hack -- attack monsters */
\r
530 if (c_ptr->m_idx && (m_ptr->ml || cave_have_flag_bold(y, x, FF_PROJECT)))
\r
532 if (!monster_living(&r_info[m_ptr->r_idx]))
\r
536 monster_desc(m_name, m_ptr, 0);
\r
537 msg_format(_("%s
\82É
\82Í
\8cø
\89Ê
\82ª
\82È
\82¢
\81I", "%s is unharmed!"), m_name);
\r
539 else py_attack(y, x, HISSATSU_SEKIRYUKA);
\r
546 if (name) return _("
\8c\83\90k
\8c\82", "Earthquake Blow");
\r
547 if (desc) return _("
\92n
\90k
\82ð
\8bN
\82±
\82·
\81B", "Shakes dungeon structure, and results in random swapping of floors and walls.");
\r
553 if (!get_rep_dir2(&dir)) return NULL;
\r
554 if (dir == 5) return NULL;
\r
556 y = p_ptr->y + ddy[dir];
\r
557 x = p_ptr->x + ddx[dir];
\r
559 if (cave[y][x].m_idx)
\r
560 py_attack(y, x, HISSATSU_QUAKE);
\r
562 earthquake(p_ptr->y, p_ptr->x, 10);
\r
567 if (name) return _("
\92n
\91\96\82è", "Crack");
\r
568 if (desc) return _("
\8fÕ
\8c\82\94g
\82Ì
\83r
\81[
\83\80\82ð
\95ú
\82Â
\81B", "Fires a beam of shock wave.");
\r
572 int total_damage = 0, basedam, i;
\r
573 u32b flgs[TR_FLAG_SIZE];
\r
574 object_type *o_ptr;
\r
575 if (!get_aim_dir(&dir)) return NULL;
\r
576 msg_print(_("
\95\90\8aí
\82ð
\91å
\82«
\82
\90U
\82è
\89º
\82ë
\82µ
\82½
\81B", "You swing your weapon downward."));
\r
577 for (i = 0; i < 2; i++)
\r
581 if (!buki_motteruka(INVEN_RARM + i)) break;
\r
582 o_ptr = &inventory[INVEN_RARM + i];
\r
583 basedam = (o_ptr->dd * (o_ptr->ds + 1)) * 50;
\r
584 damage = o_ptr->to_d * 100;
\r
585 object_flags(o_ptr, flgs);
\r
586 if ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD))
\r
592 else if (have_flag(flgs, TR_VORPAL))
\r
594 /* vorpal flag only */
\r
599 damage *= p_ptr->num_blow[i];
\r
600 total_damage += damage / 200;
\r
601 if (i) total_damage = total_damage * 7 / 10;
\r
603 fire_beam(GF_FORCE, dir, total_damage);
\r
608 if (name) return _("
\8bC
\94\97\82Ì
\97Y
\8b©
\82Ñ", "War Cry");
\r
609 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\83\82\83\93\83X
\83^
\81[
\82É
\91Î
\82µ
\82Ä
\8d\8c\89¹
\82Ì
\8dU
\8c\82\82ð
\8ds
\82¤
\81B
\82³
\82ç
\82É
\81A
\8bß
\82
\82É
\82¢
\82é
\83\82\83\93\83X
\83^
\81[
\82ð
\93{
\82ç
\82¹
\82é
\81B",
\r
610 "Damages all monsters in sight with sound. Aggravate nearby monsters.");
\r
614 msg_print(_("
\97Y
\8b©
\82Ñ
\82ð
\82 \82°
\82½
\81I", "You roar out!"));
\r
615 project_hack(GF_SOUND, randint1(plev * 3));
\r
616 aggravate_monsters(0);
\r
621 if (name) return _("
\96³
\91o
\8eO
\92i", "Musou-Sandan");
\r
622 if (desc) return _("
\8b
\97Í
\82È3
\92i
\8dU
\8c\82\82ð
\8cJ
\82è
\8fo
\82·
\81B", "Attacks with powerful 3 strikes.");
\r
628 if (!get_rep_dir2(&dir)) return NULL;
\r
629 if (dir == 5) return NULL;
\r
631 for (i = 0; i < 3; i++)
\r
637 monster_type *m_ptr;
\r
639 y = p_ptr->y + ddy[dir];
\r
640 x = p_ptr->x + ddx[dir];
\r
641 c_ptr = &cave[y][x];
\r
644 py_attack(y, x, HISSATSU_3DAN);
\r
647 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
651 if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
\r
656 /* Monster is dead? */
\r
657 if (!c_ptr->m_idx) break;
\r
661 m_idx = c_ptr->m_idx;
\r
662 m_ptr = &m_list[m_idx];
\r
664 /* Monster cannot move back? */
\r
665 if (!monster_can_enter(ny, nx, &r_info[m_ptr->r_idx], 0))
\r
668 if (i < 2) msg_print(NULL);
\r
673 cave[ny][nx].m_idx = m_idx;
\r
677 update_mon(m_idx, TRUE);
\r
679 /* Redraw the old spot */
\r
682 /* Redraw the new spot */
\r
685 /* Player can move forward? */
\r
686 if (player_can_enter(c_ptr->feat, 0))
\r
688 /* Move the player */
\r
689 if (!move_player_effect(y, x, MPE_FORGET_FLOW | MPE_HANDLE_STUFF | MPE_DONT_PICKUP)) break;
\r
697 if (i < 2) msg_print(NULL);
\r
703 if (name) return _("
\8bz
\8c\8c\8bS
\82Ì
\89å", "Vampire's Fang");
\r
704 if (desc) return _("
\8dU
\8c\82\82µ
\82½
\91\8a\8eè
\82Ì
\91Ì
\97Í
\82ð
\8bz
\82¢
\82Æ
\82è
\81A
\8e©
\95ª
\82Ì
\91Ì
\97Í
\82ð
\89ñ
\95\9c\82³
\82¹
\82é
\81B
\90¶
\96½
\82ð
\8e\9d\82½
\82È
\82¢
\83\82\83\93\83X
\83^
\81[
\82É
\82Í
\92Ê
\82¶
\82È
\82¢
\81B",
\r
705 "Attacks with vampiric strikes which absorbs HP from a monster and gives them to you. No effect to unliving monsters.");
\r
711 if (!get_rep_dir2(&dir)) return NULL;
\r
712 if (dir == 5) return NULL;
\r
714 y = p_ptr->y + ddy[dir];
\r
715 x = p_ptr->x + ddx[dir];
\r
717 if (cave[y][x].m_idx)
\r
718 py_attack(y, x, HISSATSU_DRAIN);
\r
721 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
728 if (name) return _("
\8c¶
\98f", "Moon Dazzling");
\r
729 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\8bN
\82«
\82Ä
\82¢
\82é
\91S
\83\82\83\93\83X
\83^
\81[
\82É
\9eN
\9eO
\81A
\8d¬
\97\90\81A
\96°
\82è
\82ð
\97^
\82¦
\82æ
\82¤
\82Æ
\82·
\82é
\81B", "Attempts to stun, confuse and sleep all waking monsters.");
\r
733 msg_print(_("
\95\90\8aí
\82ð
\95s
\8bK
\91¥
\82É
\97h
\82ç
\82µ
\82½
\81D
\81D
\81D", "You irregularly wave your weapon..."));
\r
734 project_hack(GF_ENGETSU, plev * 4);
\r
735 project_hack(GF_ENGETSU, plev * 4);
\r
736 project_hack(GF_ENGETSU, plev * 4);
\r
741 if (name) return _("
\95S
\90l
\8ea
\82è", "Hundred Slaughter");
\r
742 if (desc) return _("
\98A
\91±
\82µ
\82Ä
\93ü
\90g
\82Å
\83\82\83\93\83X
\83^
\81[
\82ð
\8dU
\8c\82\82·
\82é
\81B
\8dU
\8c\82\82·
\82é
\82½
\82Ñ
\82ÉMP
\82ð
\8fÁ
\94ï
\81BMP
\82ª
\82È
\82
\82È
\82é
\82©
\81A
\83\82\83\93\83X
\83^
\81[
\82ð
\93|
\82¹
\82È
\82©
\82Á
\82½
\82ç
\95S
\90l
\8ea
\82è
\82Í
\8fI
\97¹
\82·
\82é
\81B",
\r
743 "Performs a series of rush attacks. The series continues while killing each monster in a time and SP remains.");
\r
747 const int mana_cost_per_monster = 8;
\r
748 bool is_new = TRUE;
\r
753 if (!rush_attack(&mdeath)) break;
\r
756 /* Reserve needed mana point */
\r
757 p_ptr->csp -= technic_info[REALM_HISSATSU - MIN_TECHNIC][26].smana;
\r
761 p_ptr->csp -= mana_cost_per_monster;
\r
763 if (!mdeath) break;
\r
766 p_ptr->redraw |= PR_MANA;
\r
768 } while (p_ptr->csp > mana_cost_per_monster);
\r
770 if (is_new) return NULL;
\r
772 /* Restore reserved mana */
\r
773 p_ptr->csp += technic_info[REALM_HISSATSU - MIN_TECHNIC][26].smana;
\r
778 if (name) return _("
\93VãÄ
\97´
\91M", "Dragonic Flash");
\r
779 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\8fê
\8f\8a\82ð
\8ew
\92è
\82µ
\82Ä
\81A
\82»
\82Ì
\8fê
\8f\8a\82Æ
\8e©
\95ª
\82Ì
\8aÔ
\82É
\82¢
\82é
\91S
\83\82\83\93\83X
\83^
\81[
\82ð
\8dU
\8c\82\82µ
\81A
\82»
\82Ì
\8fê
\8f\8a\82É
\88Ú
\93®
\82·
\82é
\81B",
\r
780 "Runs toward given location while attacking all monsters on the path.");
\r
786 if (!tgt_pt(&x, &y)) return NULL;
\r
788 if (!cave_player_teleportable_bold(y, x, 0L) ||
\r
789 (distance(y, x, p_ptr->y, p_ptr->x) > MAX_SIGHT / 2) ||
\r
790 !projectable(p_ptr->y, p_ptr->x, y, x))
\r
792 msg_print(_("
\8e¸
\94s
\81I", "You cannot move to that place!"));
\r
795 if (p_ptr->anti_tele)
\r
797 msg_print(_("
\95s
\8ev
\8bc
\82È
\97Í
\82ª
\83e
\83\8c\83|
\81[
\83g
\82ð
\96h
\82¢
\82¾
\81I", "A mysterious force prevents you from teleporting!"));
\r
800 project(0, 0, y, x, HISSATSU_ISSEN, GF_ATTACK, PROJECT_BEAM | PROJECT_KILL, -1);
\r
801 teleport_player_to(y, x, 0L);
\r
806 if (name) return _("
\93ñ
\8fd
\82Ì
\8c\95\8c\82", "Twin Slash");
\r
807 if (desc) return _("1
\83^
\81[
\83\93\82Å2
\93x
\8dU
\8c\82\82ð
\8ds
\82¤
\81B", "double attacks at a time.");
\r
813 if (!get_rep_dir(&dir, FALSE)) return NULL;
\r
815 y = p_ptr->y + ddy[dir];
\r
816 x = p_ptr->x + ddx[dir];
\r
818 if (cave[y][x].m_idx)
\r
820 py_attack(y, x, 0);
\r
821 if (cave[y][x].m_idx)
\r
824 py_attack(y, x, 0);
\r
829 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "You don't see any monster in this direction"));
\r
836 if (name) return _("
\8cÕ
\95\9a\90â
\93\81\90¨", "Kofuku-Zettousei");
\r
837 if (desc) return _("
\8b
\97Í
\82È
\8dU
\8c\82\82ð
\8ds
\82¢
\81A
\8bß
\82
\82Ì
\8fê
\8f\8a\82É
\82à
\8cø
\89Ê
\82ª
\8by
\82Ô
\81B", "Performs a powerful attack which even effect nearby monsters.");
\r
841 int total_damage = 0, basedam, i;
\r
843 u32b flgs[TR_FLAG_SIZE];
\r
844 object_type *o_ptr;
\r
846 if (!get_rep_dir2(&dir)) return NULL;
\r
847 if (dir == 5) return NULL;
\r
849 y = p_ptr->y + ddy[dir];
\r
850 x = p_ptr->x + ddx[dir];
\r
852 if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
\r
854 msg_print(_("
\82È
\82º
\82©
\8dU
\8c\82\82·
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82È
\82¢
\81B", "Something prevent you from attacking."));
\r
857 msg_print(_("
\95\90\8aí
\82ð
\91å
\82«
\82
\90U
\82è
\89º
\82ë
\82µ
\82½
\81B", "You swing your weapon downward."));
\r
858 for (i = 0; i < 2; i++)
\r
861 if (!buki_motteruka(INVEN_RARM + i)) break;
\r
862 o_ptr = &inventory[INVEN_RARM + i];
\r
863 basedam = (o_ptr->dd * (o_ptr->ds + 1)) * 50;
\r
864 damage = o_ptr->to_d * 100;
\r
865 object_flags(o_ptr, flgs);
\r
866 if ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD))
\r
872 else if (have_flag(flgs, TR_VORPAL))
\r
874 /* vorpal flag only */
\r
879 damage += p_ptr->to_d[i] * 100;
\r
880 damage *= p_ptr->num_blow[i];
\r
881 total_damage += (damage / 100);
\r
883 project(0, (cave_have_flag_bold(y, x, FF_PROJECT) ? 5 : 0), y, x, total_damage * 3 / 2, GF_METEOR, PROJECT_KILL | PROJECT_JUMP | PROJECT_ITEM, -1);
\r
888 if (name) return _("
\8cc
\89_
\8bS
\94E
\8c\95", "Keiun-Kininken");
\r
889 if (desc) return _("
\8e©
\95ª
\82à
\83_
\83\81\81[
\83W
\82ð
\82
\82ç
\82¤
\82ª
\81A
\91\8a\8eè
\82É
\94ñ
\8fí
\82É
\91å
\82«
\82È
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B
\83A
\83\93\83f
\83b
\83h
\82É
\82Í
\93Á
\82É
\8cø
\89Ê
\82ª
\82 \82é
\81B",
\r
890 "Attacks a monster with extremely powerful damage. But you also takes some damages. Hurts a undead monster greatly.");
\r
896 if (!get_rep_dir2(&dir)) return NULL;
\r
897 if (dir == 5) return NULL;
\r
899 y = p_ptr->y + ddy[dir];
\r
900 x = p_ptr->x + ddx[dir];
\r
902 if (cave[y][x].m_idx)
\r
903 py_attack(y, x, HISSATSU_UNDEAD);
\r
906 msg_print(_("
\82»
\82Ì
\95û
\8cü
\82É
\82Í
\83\82\83\93\83X
\83^
\81[
\82Í
\82¢
\82Ü
\82¹
\82ñ
\81B", "There is no monster."));
\r
909 take_hit(DAMAGE_NOESCAPE, 100 + randint1(100), _("
\8cc
\89_
\8bS
\94E
\8c\95\82ð
\8eg
\82Á
\82½
\8fÕ
\8c\82", "exhaustion on using Keiun-Kininken"), -1);
\r
914 if (name) return _("
\90Ø
\95 ", "Harakiri");
\r
915 if (desc) return _("
\81u
\95\90\8em
\93¹
\82Æ
\82Í
\81A
\8e\80\82Ê
\82±
\82Æ
\82Æ
\8c©
\82Â
\82¯
\82½
\82è
\81B
\81v", "'Busido is found in death'");
\r
920 if (!get_check(_("
\96{
\93\96\82É
\8e©
\8eE
\82µ
\82Ü
\82·
\82©
\81H", "Do you really want to commit suicide? "))) return NULL;
\r
921 /* Special Verification for suicide */
\r
922 prt(_("
\8am
\94F
\82Ì
\82½
\82ß '@'
\82ð
\89\9f\82µ
\82Ä
\89º
\82³
\82¢
\81B", "Please verify SUICIDE by typing the '@' sign: "), 0, 0);
\r
927 if (i != '@') return NULL;
\r
928 if (p_ptr->total_winner)
\r
930 take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
\r
931 p_ptr->total_winner = TRUE;
\r
935 msg_print(_("
\95\90\8em
\93¹
\82Æ
\82Í
\81A
\8e\80\82Ê
\82±
\82Æ
\82Æ
\8c©
\82Â
\82¯
\82½
\82è
\81B", "Meaning of Bushi-do is found in the death."));
\r
936 take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
\r