ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/spell_effect.C
(Generate patch)

Comparing deliantra/server/server/spell_effect.C (file contents):
Revision 1.83 by root, Tue May 6 16:55:26 2008 UTC vs.
Revision 1.85 by root, Sun Aug 17 22:46:26 2008 UTC

61{ 61{
62 object *wand, *tmp; 62 object *wand, *tmp;
63 int ncharges; 63 int ncharges;
64 64
65 wand = find_marked_object (op); 65 wand = find_marked_object (op);
66 if (wand == NULL || wand->type != WAND) 66 if (!wand || wand->type != WAND)
67 { 67 {
68 new_draw_info (NDI_UNIQUE, 0, op, "You need to mark the wand you want to recharge."); 68 new_draw_info (NDI_UNIQUE, 0, op, "You need to mark the wand you want to recharge.");
69 return 0; 69 return 0;
70 } 70 }
71 if (!(random_roll (0, 3, op, PREFER_HIGH))) 71 if (!(random_roll (0, 3, op, PREFER_HIGH)))
301 if (!QUERY_FLAG (op, FLAG_WIZCAST) && (mflags & P_NO_MAGIC)) 301 if (!QUERY_FLAG (op, FLAG_WIZCAST) && (mflags & P_NO_MAGIC))
302 { 302 {
303 new_draw_info (NDI_UNIQUE, 0, op, "Something blocks your magic."); 303 new_draw_info (NDI_UNIQUE, 0, op, "Something blocks your magic.");
304 return 0; 304 return 0;
305 } 305 }
306
306 if (mflags & P_IS_ALIVE) 307 if (mflags & P_IS_ALIVE)
307 { 308 {
308 for (tmp = GET_MAP_OB (m, x, y); tmp != NULL; tmp = tmp->above) 309 for (tmp = GET_MAP_OB (m, x, y); tmp; tmp = tmp->above)
309 if (QUERY_FLAG (tmp, FLAG_ALIVE) && (tmp->type == PLAYER || QUERY_FLAG (tmp, FLAG_MONSTER))) 310 if (QUERY_FLAG (tmp, FLAG_ALIVE) && (tmp->type == PLAYER || QUERY_FLAG (tmp, FLAG_MONSTER)))
310 { 311 {
311 new_draw_info (NDI_UNIQUE, 0, op, "You detect something."); 312 new_draw_info (NDI_UNIQUE, 0, op, "You detect something.");
312 if (tmp->head != NULL) 313 if (tmp->head != NULL)
313 tmp = tmp->head; 314 tmp = tmp->head;
491 new_draw_info (NDI_UNIQUE, 0, op, "You feel a force starting to build up inside you."); 492 new_draw_info (NDI_UNIQUE, 0, op, "You feel a force starting to build up inside you.");
492 return 1; 493 return 1;
493 } 494 }
494 495
495 dummy = get_archetype (FORCE_NAME); 496 dummy = get_archetype (FORCE_NAME);
496 if (dummy == NULL) 497
498 if (!dummy)
497 { 499 {
498 new_draw_info (NDI_UNIQUE, 0, op, "Oops, program error!"); 500 new_draw_info (NDI_UNIQUE, 0, op, "Oops, program error!");
499 LOG (llevError, "cast_word_of_recall: get_archetype(force) failed!\n"); 501 LOG (llevError, "cast_word_of_recall: get_archetype(force) failed!\n");
500 return 0; 502 return 0;
501 } 503 }
1170 */ 1172 */
1171int 1173int
1172cast_bless (object *op, object *caster, object *spell_ob, int dir) 1174cast_bless (object *op, object *caster, object *spell_ob, int dir)
1173{ 1175{
1174 int i; 1176 int i;
1175 object *god = find_god (determine_god (op)), *tmp2, *force = NULL, *tmp; 1177 object *god = find_god (determine_god (op)), *force = NULL, *tmp;
1176 1178
1177 /* if dir = 99 op defaults to tmp, eat_special_food() requires this. */ 1179 /* if dir = 99 op defaults to tmp, eat_special_food() requires this. */
1178 if (dir != 0) 1180 if (dir != 0)
1179 { 1181 {
1180 tmp = find_target_for_friendly_spell (op, dir); 1182 tmp = find_target_for_friendly_spell (op, dir);
1183
1184 if (!tmp)
1185 return 0;
1181 } 1186 }
1182 else 1187 else
1183 {
1184 tmp = op; 1188 tmp = op;
1185 }
1186 1189
1187 /* If we've already got a force of this type, don't add a new one. */ 1190 /* If we've already got a force of this type, don't add a new one. */
1188 for (tmp2 = tmp->inv; tmp2 != NULL; tmp2 = tmp2->below) 1191 for (object *tmp2 = tmp->inv; tmp2; tmp2 = tmp2->below)
1189 { 1192 {
1190 if (tmp2->type == FORCE && tmp2->subtype == FORCE_CHANGE_ABILITY) 1193 if (tmp2->type == FORCE && tmp2->subtype == FORCE_CHANGE_ABILITY)
1191 { 1194 {
1192 if (tmp2->name == spell_ob->name) 1195 if (tmp2->name == spell_ob->name)
1193 { 1196 {
1199 new_draw_info_format (NDI_UNIQUE, 0, op, "You can not cast %s while %s is in effect", &spell_ob->name, &tmp2->name_pl); 1202 new_draw_info_format (NDI_UNIQUE, 0, op, "You can not cast %s while %s is in effect", &spell_ob->name, &tmp2->name_pl);
1200 return 0; 1203 return 0;
1201 } 1204 }
1202 } 1205 }
1203 } 1206 }
1207
1204 if (force == NULL) 1208 if (force == NULL)
1205 { 1209 {
1206 force = get_archetype (FORCE_NAME); 1210 force = get_archetype (FORCE_NAME);
1207 force->subtype = FORCE_CHANGE_ABILITY; 1211 force->subtype = FORCE_CHANGE_ABILITY;
1208 if (spell_ob->race) 1212 if (spell_ob->race)
1982 return 0; 1986 return 0;
1983 } 1987 }
1984 1988
1985 /* if no direction specified, pick one */ 1989 /* if no direction specified, pick one */
1986 if (!dir) 1990 if (!dir)
1987 dir = find_free_spot (NULL, op->map, op->x, op->y, 1, 9); 1991 dir = find_free_spot (spell->other_arch, op->map, op->x, op->y, 1, 9);
1988 1992
1989 m = op->map; 1993 m = op->map;
1990 x = op->x + freearr_x[dir]; 1994 x = op->x + freearr_x[dir];
1991 y = op->y + freearr_y[dir]; 1995 y = op->y + freearr_y[dir];
1992 1996
1993 /* if there's no place to put the golem, abort */ 1997 /* if there's no place to put the golem, abort */
1994 if ((dir == -1) || (get_map_flags (m, &m, x, y, &x, &y) & P_OUT_OF_MAP) || 1998 if (dir < 0 || (get_map_flags (m, &m, x, y, &x, &y) & P_OUT_OF_MAP)
1995 ((spell->other_arch->move_type & GET_MAP_MOVE_BLOCK (m, x, y)) == spell->other_arch->move_type)) 1999 || ((spell->other_arch->move_type & GET_MAP_MOVE_BLOCK (m, x, y)) == spell->other_arch->move_type))
1996 { 2000 {
1997 new_draw_info (NDI_UNIQUE, 0, op, "There is something in the way."); 2001 new_draw_info (NDI_UNIQUE, 0, op, "There is something in the way.");
1998 return 0; 2002 return 0;
1999 } 2003 }
2000 2004

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines