OSDN Git Service

project_p()にフラグを渡すようにしたため、反射しない魔法には全てPROJECT_NO_REFを
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 15 Aug 2002 08:57:08 +0000 (08:57 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 15 Aug 2002 08:57:08 +0000 (08:57 +0000)
付けなければならなくなったが、わずらわしいので逆にして、反射する魔法全てに
PROJECT_REFLECTABLEを付けるという風に変更した。
生命力吸収、回復モンスター、スロウ、クローン等も今まで反射していたので、
PROJECT_REFLECTABLEを付けるべきだろうけれど、そもそも反射するべきものかどうか
迷ったので保留(今は反射しない状態)。

13 files changed:
src/cmd1.c
src/cmd6.c
src/defines.h
src/hissatsu.c
src/melee1.c
src/melee2.c
src/mind.c
src/monster2.c
src/mspells1.c
src/mspells2.c
src/racial.c
src/spells1.c
src/spells2.c

index ee91a4d..0f8d31f 100644 (file)
@@ -1865,7 +1865,7 @@ static void natural_attack(s16b m_idx, int attack, bool *fear, bool *mdeath)
                switch (attack)
                {
                        case MUT2_SCOR_TAIL:
-                               project(0, 0, m_ptr->fy, m_ptr->fx, k, GF_POIS, PROJECT_KILL | PROJECT_NO_REF, -1);
+                               project(0, 0, m_ptr->fy, m_ptr->fx, k, GF_POIS, PROJECT_KILL, -1);
                                *mdeath = (m_ptr->r_idx == 0);
                                break;
                        case MUT2_HORNS:
index 5ded835..fd56d51 100644 (file)
@@ -2546,7 +2546,7 @@ msg_print("
                        msg_print("Mighty magics rend your enemies!");
 #endif
                        project(0, 5, py, px,
-                               (randint1(200) + 300) * 2, GF_MANA, PROJECT_KILL | PROJECT_ITEM | PROJECT_GRID | PROJECT_NO_REF, -1);
+                               (randint1(200) + 300) * 2, GF_MANA, PROJECT_KILL | PROJECT_ITEM | PROJECT_GRID, -1);
                        if ((p_ptr->pclass != CLASS_MAGE) && (p_ptr->pclass != CLASS_HIGH_MAGE) && (p_ptr->pclass != CLASS_SORCERER) && (p_ptr->pclass != CLASS_MAGIC_EATER) && (p_ptr->pclass != CLASS_BLUE_MAGE))
                        {
 #ifdef JP
@@ -5024,7 +5024,7 @@ msg_print("
                        {
                                int num = 1;
                                int i;
-                               int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_NO_REF;
+                               int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
                                int tx, ty;
 #ifdef JP
                                msg_print("¤»¤Ã¤«¤¯¤À¤«¤é¡Ø¥¯¥ê¥à¥¾¥ó¡Ù¤ò¤Ö¤Ã¤Ñ¤Ê¤¹¤¼¡ª");
index f08db75..4a6f0a8 100644 (file)
  *   KILL: Affect each monster in the "blast area" in some way
  *   HIDE: Hack -- disable "visual" feedback from projection
  */
-#define PROJECT_JUMP       0x01
-#define PROJECT_BEAM       0x02
-#define PROJECT_THRU       0x04
-#define PROJECT_STOP       0x08
-#define PROJECT_GRID       0x10
-#define PROJECT_ITEM       0x20
-#define PROJECT_KILL       0x40
-#define PROJECT_HIDE       0x80
-#define PROJECT_DISI       0x100
-#define PROJECT_PLAYER     0x200
-#define PROJECT_MONSTER    0x400
-#define PROJECT_NO_REF     0x800
-#define PROJECT_NO_HANGEKI 0x1000
-#define PROJECT_PATH       0x2000
-#define PROJECT_FAST       0x4000
+#define PROJECT_JUMP        0x01
+#define PROJECT_BEAM        0x02
+#define PROJECT_THRU        0x04
+#define PROJECT_STOP        0x08
+#define PROJECT_GRID        0x10
+#define PROJECT_ITEM        0x20
+#define PROJECT_KILL        0x40
+#define PROJECT_HIDE        0x80
+#define PROJECT_DISI        0x100
+#define PROJECT_PLAYER      0x200
+#define PROJECT_MONSTER     0x400
+#define PROJECT_REFLECTABLE 0x800
+#define PROJECT_NO_HANGEKI  0x1000
+#define PROJECT_PATH        0x2000
+#define PROJECT_FAST        0x4000
 
 /*
  * Bit flags for the "enchant()" function
index c54d48b..40c9533 100644 (file)
@@ -353,7 +353,7 @@ static bool cast_hissatsu_spell(int spell)
        case 0:
                project_length = 2;
                if (!get_aim_dir(&dir)) return FALSE;
-               project_hook(GF_ATTACK, dir, HISSATSU_2, PROJECT_STOP | PROJECT_KILL | PROJECT_NO_REF);
+               project_hook(GF_ATTACK, dir, HISSATSU_2, PROJECT_STOP | PROJECT_KILL);
 
                break;
        case 1:
@@ -782,7 +782,7 @@ static bool cast_hissatsu_spell(int spell)
        case 18:
                project_length = 5;
                if (!get_aim_dir(&dir)) return FALSE;
-               project_hook(GF_ATTACK, dir, HISSATSU_NYUSIN, PROJECT_STOP | PROJECT_KILL | PROJECT_NO_REF);
+               project_hook(GF_ATTACK, dir, HISSATSU_NYUSIN, PROJECT_STOP | PROJECT_KILL);
 
                break;
        case 19: /* Whirlwind Attack */
@@ -1028,7 +1028,7 @@ static bool cast_hissatsu_spell(int spell)
                        else
                                p_ptr->csp -= 8;
                        new = FALSE;
-                       if (!project_hook(GF_ATTACK, dir, HISSATSU_NYUSIN, PROJECT_STOP | PROJECT_KILL | PROJECT_NO_REF)) break;
+                       if (!project_hook(GF_ATTACK, dir, HISSATSU_NYUSIN, PROJECT_STOP | PROJECT_KILL)) break;
                        count++;
                        command_dir = 0;
                        p_ptr->redraw |= PR_MANA;
@@ -1065,7 +1065,7 @@ msg_print("
 
                        break;
                }
-               project(0, 0, y, x, HISSATSU_ISSEN, GF_ATTACK, PROJECT_BEAM | PROJECT_KILL | PROJECT_NO_REF, -1);
+               project(0, 0, y, x, HISSATSU_ISSEN, GF_ATTACK, PROJECT_BEAM | PROJECT_KILL, -1);
                teleport_player_to(y, x, TRUE);
                break;
        }
index 099123b..5b828d0 100644 (file)
@@ -2298,7 +2298,7 @@ msg_format("%^s
 
                msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
 #endif
-               project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL | PROJECT_NO_REF, -1);
+               project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
                set_tim_eyeeye(p_ptr->tim_eyeeye-5, TRUE);
        }
 
index 526fa21..8dc69a3 100644 (file)
@@ -2056,7 +2056,7 @@ act = "%s
                                if (!explode)
                                {
                                        project(m_idx, 0, t_ptr->fy, t_ptr->fx,
-                                               (pt == GF_OLD_SLEEP ? r_ptr->level : damage), pt, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER | PROJECT_NO_REF, -1);
+                                               (pt == GF_OLD_SLEEP ? r_ptr->level : damage), pt, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER, -1);
                                }
 
                                if (heal_effect)
@@ -2110,7 +2110,7 @@ msg_format("%^s
                                                project(t_idx, 0, m_ptr->fy, m_ptr->fx,
                                                        damroll (1 + ((tr_ptr->level) / 26),
                                                        1 + ((tr_ptr->level) / 17)),
-                                                       GF_FIRE, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER | PROJECT_NO_REF, -1);
+                                                       GF_FIRE, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER, -1);
                                        }
 
                                        /* Aura cold */
@@ -2133,7 +2133,7 @@ msg_format("%^s
                                                project(t_idx, 0, m_ptr->fy, m_ptr->fx,
                                                        damroll (1 + ((tr_ptr->level) / 26),
                                                        1 + ((tr_ptr->level) / 17)),
-                                                       GF_COLD, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER | PROJECT_NO_REF, -1);
+                                                       GF_COLD, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER, -1);
                                        }
 
                                        /* Aura elec */
@@ -2156,7 +2156,7 @@ msg_format("%^s
                                                project(t_idx, 0, m_ptr->fy, m_ptr->fx,
                                                        damroll (1 + ((tr_ptr->level) / 26),
                                                        1 + ((tr_ptr->level) / 17)),
-                                                       GF_ELEC, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER | PROJECT_NO_REF, -1);
+                                                       GF_ELEC, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER, -1);
                                        }
 
                                }
@@ -3327,7 +3327,7 @@ msg_print("
                                                msg_print("The rune explodes!");
 #endif
 
-                                               project(0, 2, ny, nx, 2 * (p_ptr->lev + damroll(7, 7)), GF_MANA, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_REF | PROJECT_NO_HANGEKI), -1);
+                                               project(0, 2, ny, nx, 2 * (p_ptr->lev + damroll(7, 7)), GF_MANA, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);
                                        }
                                }
                                else
index 9d2bdd4..4136da8 100644 (file)
@@ -1349,7 +1349,7 @@ msg_format("There are too many mirrors to control!");
          for(x=0;x<cur_wid;x++){
            for(y=0;y<cur_hgt;y++){
              if(cave[y][x].info & CAVE_IN_MIRROR){
-               project(0,2,y,x,plev,GF_OLD_SLEEP,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_REF|PROJECT_NO_HANGEKI),-1);
+               project(0,2,y,x,plev,GF_OLD_SLEEP,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_HANGEKI),-1);
              }
            }
          }
@@ -1690,7 +1690,7 @@ msg_print("
        case 10:
                project_length = 5;
                if (!get_aim_dir(&dir)) return FALSE;
-               project_hook(GF_ATTACK, dir, HISSATSU_NYUSIN, PROJECT_STOP | PROJECT_KILL | PROJECT_NO_REF);
+               project_hook(GF_ATTACK, dir, HISSATSU_NYUSIN, PROJECT_STOP | PROJECT_KILL);
 
                break;
        case 11:
index 3b416a6..9da86ac 100644 (file)
@@ -3274,7 +3274,7 @@ msg_print("
                                msg_print("The rune explodes!");
 #endif
 
-                               project(0, 2, y, x, 2 * (p_ptr->lev + damroll(7, 7)), GF_MANA, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_REF | PROJECT_NO_HANGEKI), -1);
+                               project(0, 2, y, x, 2 * (p_ptr->lev + damroll(7, 7)), GF_MANA, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);
                        }
                }
                else
index fb03e20..91a8d27 100644 (file)
@@ -489,7 +489,7 @@ bool clean_shot(int y1, int x1, int y2, int x2, bool friend)
  */
 static void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER;
+       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER | PROJECT_REFLECTABLE;
 
        /* Target the player with a bolt attack */
        (void)project(m_idx, 0, py, px, dam_hp, typ, flg, (learnable ? monspell : -1));
@@ -497,7 +497,7 @@ static void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
 
 static void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
 {
-       int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER | PROJECT_NO_REF;
+       int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER;
 
        /* Target the player with a bolt attack */
        (void)project(m_idx, 0, py, px, dam_hp, typ, flg, (learnable ? monspell : -1));
@@ -511,7 +511,7 @@ static void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
  */
 static void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_PLAYER | PROJECT_NO_REF;
+       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_PLAYER;
 
        monster_type *m_ptr = &m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
@@ -3629,7 +3629,7 @@ msg_format("%^s
 
                                                        msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
 #endif
-                                                       project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL | PROJECT_NO_REF, -1);
+                                                       project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
                                                        set_tim_eyeeye(p_ptr->tim_eyeeye-5, TRUE);
                                                }
                                         }
index 0d8406e..bf702b8 100644 (file)
@@ -44,14 +44,14 @@ static void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int
  */
 static void monst_bolt_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell, bool learnable)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_MONSTER;
+       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_MONSTER | PROJECT_REFLECTABLE;
 
        (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
 }
 
 static void monst_beam_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell, bool learnable)
 {
-       int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_MONSTER | PROJECT_NO_REF;
+       int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_MONSTER;
 
        (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
 }
index 2cddf47..60b65e8 100644 (file)
@@ -1381,7 +1381,7 @@ msg_print("
                                for( y=0 ; y < cur_hgt ;y++){
                                  if( (cave[y][x].info & CAVE_IN_MIRROR)){
                                    remove_mirror(y,x);
-                                   project(0,2,y,x, p_ptr->lev /2 +5 ,GF_SHARDS,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_REF|PROJECT_NO_HANGEKI),-1);
+                                   project(0,2,y,x, p_ptr->lev /2 +5 ,GF_SHARDS,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_HANGEKI),-1);
                                  }
                                }
                              }
index e1f5db9..dcb065a 100644 (file)
@@ -1216,7 +1216,7 @@ msg_print("
                                msg_print("The mirror was chashed!");
 #endif                         
                                remove_mirror(y,x);
-                           project(0,2,y,x, p_ptr->lev /2 +5 ,GF_SHARDS,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_REF|PROJECT_NO_HANGEKI),-1);
+                           project(0,2,y,x, p_ptr->lev /2 +5 ,GF_SHARDS,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_HANGEKI),-1);
                        }
                        break;
                }
@@ -6433,7 +6433,7 @@ static bool project_p(int who, cptr who_name, int r, int y, int x, int dam, int
        if (!who) return (FALSE);
        if (who == p_ptr->riding) return (FALSE);
 
-       if ((p_ptr->reflect || p_ptr->tim_reflect || ((p_ptr->special_defense & KATA_FUUJIN) && !p_ptr->blind)) && !(flg & PROJECT_NO_REF) && !one_in_(10))
+       if ((p_ptr->reflect || p_ptr->tim_reflect || ((p_ptr->special_defense & KATA_FUUJIN) && !p_ptr->blind)) && (flg & PROJECT_REFLECTABLE) && !one_in_(10))
        {
                byte t_y, t_x;
                int max_attempts = 10;
@@ -6464,7 +6464,7 @@ else msg_print("
                        t_x = m_list[who].fx;
                }
 
-               project(0, 0, t_y, t_x, dam, typ, (PROJECT_STOP|PROJECT_KILL), monspell);
+               project(0, 0, t_y, t_x, dam, typ, (PROJECT_STOP|PROJECT_KILL|PROJECT_REFLECTABLE), monspell);
 
                disturb(1, 0);
                return TRUE;
@@ -7694,7 +7694,7 @@ msg_print("
 
                msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
 #endif
-               project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL | PROJECT_NO_REF, -1);
+               project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
                set_tim_eyeeye(p_ptr->tim_eyeeye-5, TRUE);
        }
 
@@ -9032,7 +9032,7 @@ bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int mons
                        {
                                monster_race *ref_ptr = &r_info[m_list[cave[y][x].m_idx].r_idx];
 
-                               if ((ref_ptr->flags2 & RF2_REFLECTING) && (!one_in_(10) && !(flg & PROJECT_NO_REF) && (!who || dist_hack > 1)))
+                               if ((ref_ptr->flags2 & RF2_REFLECTING) && (!one_in_(10) && (flg & PROJECT_REFLECTABLE) && (!who || dist_hack > 1)))
                                {
                                        byte t_y, t_x;
                                        int max_attempts = 10;
@@ -9313,7 +9313,7 @@ bool binding_field( int dam )
                        {
                                if( player_has_los_bold(y,x) ){
                                        (void)project_m(0,0,y,x,dam,GF_MANA,
-                                         (PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_REF));
+                                         (PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP));
                                }
                        }
                }
@@ -9341,7 +9341,7 @@ void seal_of_mirror( int dam )
                        if( (cave[y][x].info & CAVE_IN_MIRROR))
                        {
                                if(project_m(0,0,y,x,dam,GF_GENOCIDE,
-                                                        (PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_REF)))
+                                                        (PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP)))
                                {
                                        if( !cave[y][x].m_idx )
                                        {
index 0756304..3cb2378 100644 (file)
@@ -4522,7 +4522,7 @@ bool detect_all(int range)
 bool project_hack(int typ, int dam)
 {
        int     i, x, y;
-       int     flg = PROJECT_JUMP | PROJECT_KILL | PROJECT_HIDE | PROJECT_NO_REF;
+       int     flg = PROJECT_JUMP | PROJECT_KILL | PROJECT_HIDE;
        bool    obvious = FALSE;
 
 
@@ -6453,7 +6453,7 @@ bool fire_ball(int typ, int dir, int dam, int rad)
 {
        int tx, ty;
 
-       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_NO_REF;
+       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
 
        if (typ == GF_CONTROL_LIVING) flg|= PROJECT_HIDE;
        /* Use the given direction */
@@ -6483,7 +6483,7 @@ bool fire_rocket(int typ, int dir, int dam, int rad)
 {
        int tx, ty;
 
-       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_NO_REF;
+       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
 
        /* Use the given direction */
        tx = px + 99 * ddx[dir];
@@ -6511,7 +6511,7 @@ bool fire_ball_hide(int typ, int dir, int dam, int rad)
 {
        int tx, ty;
 
-       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_NO_REF | PROJECT_HIDE;
+       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_HIDE;
 
        /* Use the given direction */
        tx = px + 99 * ddx[dir];
@@ -6540,7 +6540,7 @@ bool fire_ball_hide(int typ, int dir, int dam, int rad)
  */
 bool fire_meteor(int who, int typ, int y, int x, int dam, int rad)
 {
-       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_NO_REF;
+       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
 
        /* Analyze the "target" and the caster. */
        return (project(who, rad, y, x, dam, typ, flg, -1));
@@ -6553,7 +6553,7 @@ bool fire_blast(int typ, int dir, int dd, int ds, int num, int dev)
        int ty, tx, y, x;
        int i;
 
-       int flg = PROJECT_FAST | PROJECT_THRU | PROJECT_STOP | PROJECT_KILL | PROJECT_GRID;
+       int flg = PROJECT_FAST | PROJECT_THRU | PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE | PROJECT_GRID;
 
        /* Assume okay */
        bool result = TRUE;
@@ -6777,7 +6777,7 @@ bool project_hook(int typ, int dir, int dam, int flg)
  */
 bool fire_bolt(int typ, int dir, int dam)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_GRID;
+       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE | PROJECT_GRID;
        return (project_hook(typ, dir, dam, flg));
 }