1 #include "spell/spells-neighbor.h"
2 #include "effect/effect-characteristics.h"
3 #include "floor/floor.h"
4 #include "grid/feature.h"
5 #include "spell/process-effect.h"
6 #include "spell/spells-floor.h"
7 #include "spell/spells-type.h"
10 * @brief
\83h
\83A
\90¶
\90¬
\8f\88\97\9d(
\83v
\83\8c\83C
\83\84\81[
\92\86\90S
\82É
\8eü
\88Í1
\83}
\83X) / Hooks -- affect adjacent grids (radius 1 ball attack)
11 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
12 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
14 bool door_creation(player_type *caster_ptr, POSITION y, POSITION x)
16 BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
17 return (project(caster_ptr, 0, 1, y, x, 0, GF_MAKE_DOOR, flg, -1));
21 * @brief
\83g
\83\89\83b
\83v
\90¶
\90¬
\8f\88\97\9d(
\8bN
\93_
\82©
\82ç
\8eü
\88Í1
\83}
\83X)
22 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
23 * @param y
\8bN
\93_Y
\8dÀ
\95W
24 * @param x
\8bN
\93_X
\8dÀ
\95W
25 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
27 bool trap_creation(player_type *caster_ptr, POSITION y, POSITION x)
29 BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
30 return (project(caster_ptr, 0, 1, y, x, 0, GF_MAKE_TRAP, flg, -1));
34 * @brief
\90X
\97Ñ
\90¶
\90¬
\8f\88\97\9d(
\83v
\83\8c\83C
\83\84\81[
\92\86\90S
\82É
\8eü
\88Í1
\83}
\83X)
35 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
36 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
38 bool tree_creation(player_type *caster_ptr, POSITION y, POSITION x)
40 BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
41 return (project(caster_ptr, 0, 1, y, x, 0, GF_MAKE_TREE, flg, -1));
45 * @brief
\96\82\96@
\82Ì
\83\8b\81[
\83\93\90¶
\90¬
\8f\88\97\9d(
\83v
\83\8c\83C
\83\84\81[
\92\86\90S
\82É
\8eü
\88Í1
\83}
\83X)
46 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
47 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
49 bool glyph_creation(player_type *caster_ptr, POSITION y, POSITION x)
51 BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM;
52 return (project(caster_ptr, 0, 1, y, x, 0, GF_MAKE_GLYPH, flg, -1));
56 * @brief
\95Ç
\90¶
\90¬
\8f\88\97\9d(
\83v
\83\8c\83C
\83\84\81[
\92\86\90S
\82É
\8eü
\88Í1
\83}
\83X)
57 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
58 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
60 bool wall_stone(player_type *caster_ptr)
62 BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
63 bool dummy = (project(caster_ptr, 0, 1, caster_ptr->y, caster_ptr->x, 0, GF_STONE_WALL, flg, -1));
64 caster_ptr->update |= (PU_FLOW);
65 caster_ptr->redraw |= (PR_MAP);
70 * @brief
\83h
\83A
\94j
\89ó
\8f\88\97\9d(
\83v
\83\8c\83C
\83\84\81[
\92\86\90S
\82É
\8eü
\88Í1
\83}
\83X)
71 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
72 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
74 bool destroy_doors_touch(player_type *caster_ptr)
76 BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
77 return (project(caster_ptr, 0, 1, caster_ptr->y, caster_ptr->x, 0, GF_KILL_DOOR, flg, -1));
81 * @brief
\83g
\83\89\83b
\83v
\89ð
\8f\9c\8f\88\97\9d(
\83v
\83\8c\83C
\83\84\81[
\92\86\90S
\82É
\8eü
\88Í1
\83}
\83X)
82 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
83 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
85 bool disarm_traps_touch(player_type *caster_ptr)
87 BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
88 return (project(caster_ptr, 0, 1, caster_ptr->y, caster_ptr->x, 0, GF_KILL_TRAP, flg, -1));
92 * @brief
\83X
\83\8a\81[
\83v
\83\82\83\93\83X
\83^
\81[
\8f\88\97\9d(
\83v
\83\8c\83C
\83\84\81[
\92\86\90S
\82É
\8eü
\88Í1
\83}
\83X)
93 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
94 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
96 bool sleep_monsters_touch(player_type *caster_ptr)
98 BIT_FLAGS flg = PROJECT_KILL | PROJECT_HIDE;
99 return (project(caster_ptr, 0, 1, caster_ptr->y, caster_ptr->x, caster_ptr->lev, GF_OLD_SLEEP, flg, -1));
103 * @brief
\8e\80\8eÒ
\95\9c\8a\88\8f\88\97\9d(
\8bN
\93_
\82æ
\82è
\8eü
\88Í5
\83}
\83X)
104 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
105 * @param who
\8fp
\8eÒ
\83\82\83\93\83X
\83^
\81[ID(0
\82È
\82ç
\82Î
\83v
\83\8c\83C
\83\84\81[)
106 * @param y
\8bN
\93_Y
\8dÀ
\95W
107 * @param x
\8bN
\93_X
\8dÀ
\95W
108 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
110 bool animate_dead(player_type *caster_ptr, MONSTER_IDX who, POSITION y, POSITION x)
112 BIT_FLAGS flg = PROJECT_ITEM | PROJECT_HIDE;
113 return (project(caster_ptr, who, 5, y, x, 0, GF_ANIM_DEAD, flg, -1));
117 * @brief
\8eü
\95Ó
\94j
\89ó
\8cø
\89Ê(
\83v
\83\8c\83C
\83\84\81[
\92\86\90S)
118 * @param caster_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
119 * @return
\8dì
\97p
\82ª
\8eÀ
\8dÛ
\82É
\82 \82Á
\82½
\8fê
\8d\87TRUE
\82ð
\95Ô
\82·
121 void wall_breaker(player_type *caster_ptr)
123 POSITION y = 0, x = 0;
125 if (randint1(80 + caster_ptr->lev) < 70) {
127 scatter(caster_ptr, &y, &x, caster_ptr->y, caster_ptr->x, 4, 0);
129 if (!cave_have_flag_bold(caster_ptr->current_floor_ptr, y, x, FF_PROJECT))
132 if (!player_bold(caster_ptr, y, x))
136 project(caster_ptr, 0, 0, y, x, 20 + randint1(30), GF_KILL_WALL, (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL), -1);
140 if (randint1(100) > 30) {
141 earthquake(caster_ptr, caster_ptr->y, caster_ptr->x, 1, 0);
145 int num = damroll(5, 3);
146 for (int i = 0; i < num; i++) {
148 scatter(caster_ptr, &y, &x, caster_ptr->y, caster_ptr->x, 10, 0);
150 if (!player_bold(caster_ptr, y, x))
154 project(caster_ptr, 0, 0, y, x, 20 + randint1(30), GF_KILL_WALL, (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL), -1);