Hi! For quite some time, it wasn't possible any more to build a director right beneath the player. But this is a very important thing, because you often use directors to shoot around corners where the room is only one space wide. Until now, you got the message "Something is in the way." when trying to cast a director with "." (stay fire). This was presumably done to prevent build * walls to build a wall beneath the player (all build * spells are handled in the same function). I moved the check whether the destination field is blocked into the cases where we know which object is created. For directors, we then apply the "blocked" check only if the destination is different from the player's position. Bye Jochen ---------------- patch ------------------- Index: server/spell_effect.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/server/spell_effect.c,v retrieving revision 1.101 diff -c -r1.101 spell_effect.c *** server/spell_effect.c 3 Mar 2003 05:13:08 -0000 1.101 --- server/spell_effect.c 5 Mar 2003 19:47:01 -0000 *************** *** 2668,2680 **** m = op->map; - if(get_map_flags(m, &m, x, y, &x, &y) & (P_BLOCKED | P_OUT_OF_MAP)) { - new_draw_info(NDI_UNIQUE, 0,op,"Something is in the way."); - return 0; - } - switch(spell_effect) { case SP_BUILD_DIRECTOR: sprintf(buf1,"director_%d",dir); tmp=get_archetype(buf1); SET_FLAG(tmp, FLAG_IS_USED_UP); --- 2668,2680 ---- m = op->map; switch(spell_effect) { case SP_BUILD_DIRECTOR: + if((x != op->x || y != op->y) && (get_map_flags(m, &m, x, y, &x, &y) & (P_BLOCKED | P_OUT_OF_MAP))) { + new_draw_info(NDI_UNIQUE, 0,op,"Something is in the way."); + return 0; + } + sprintf(buf1,"director_%d",dir); tmp=get_archetype(buf1); SET_FLAG(tmp, FLAG_IS_USED_UP); *************** *** 2684,2689 **** --- 2684,2694 ---- break; case SP_BUILD_LWALL: + if(get_map_flags(m, &m, x, y, &x, &y) & (P_BLOCKED | P_OUT_OF_MAP)) { + new_draw_info(NDI_UNIQUE, 0,op,"Something is in the way."); + return 0; + } + sprintf(buf1,"lightningwall_%d",dir); tmp=get_archetype(buf1); SET_FLAG(tmp, FLAG_IS_USED_UP); *************** *** 2695,2700 **** --- 2700,2710 ---- break; case SP_BUILD_BWALL: + if(get_map_flags(m, &m, x, y, &x, &y) & (P_BLOCKED | P_OUT_OF_MAP)) { + new_draw_info(NDI_UNIQUE, 0,op,"Something is in the way."); + return 0; + } + sprintf(buf1,"lbulletwall_%d",dir); tmp=get_archetype(buf1); SET_FLAG(tmp, FLAG_IS_USED_UP); *************** *** 2706,2711 **** --- 2716,2726 ---- break; case SP_BUILD_FWALL: + if(get_map_flags(m, &m, x, y, &x, &y) & (P_BLOCKED | P_OUT_OF_MAP)) { + new_draw_info(NDI_UNIQUE, 0,op,"Something is in the way."); + return 0; + } + sprintf(buf1,"firewall_%d",dir); tmp=get_archetype(buf1); SET_FLAG(tmp, FLAG_IS_USED_UP); -- Jochen Suckfuell --- http://www.suckfuell.net/jochen/ --- _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel