… | |
… | |
1325 | /*************************************************************************** |
1325 | /*************************************************************************** |
1326 | * |
1326 | * |
1327 | * CURSE |
1327 | * CURSE |
1328 | * |
1328 | * |
1329 | ***************************************************************************/ |
1329 | ***************************************************************************/ |
1330 | |
|
|
1331 | int |
1330 | int |
1332 | cast_curse (object *op, object *caster, object *spell_ob, int dir) |
1331 | cast_curse (object *op, object *caster, object *spell_ob, int dir) |
1333 | { |
1332 | { |
1334 | object *god = find_god (determine_god (op)); |
1333 | object *god = find_god (determine_god (op)); |
1335 | object *tmp, *force; |
1334 | object *tmp, *force; |
… | |
… | |
1413 | force->stats.wc = spell_ob->stats.wc; |
1412 | force->stats.wc = spell_ob->stats.wc; |
1414 | |
1413 | |
1415 | change_abil (tmp, force); /* Mostly to display any messages */ |
1414 | change_abil (tmp, force); /* Mostly to display any messages */ |
1416 | insert_ob_in_ob (force, tmp); |
1415 | insert_ob_in_ob (force, tmp); |
1417 | tmp->update_stats (); |
1416 | tmp->update_stats (); |
|
|
1417 | |
1418 | return 1; |
1418 | return 1; |
1419 | |
|
|
1420 | } |
1419 | } |
1421 | |
1420 | |
1422 | /********************************************************************** |
1421 | /********************************************************************** |
1423 | * mood change |
1422 | * mood change |
1424 | * Arguably, this may or may not be an attack spell. But since it |
1423 | * Arguably, this may or may not be an attack spell. But since it |
… | |
… | |
1525 | Ryo, august 14th |
1524 | Ryo, august 14th |
1526 | */ |
1525 | */ |
1527 | if (head->level > level) |
1526 | if (head->level > level) |
1528 | continue; |
1527 | continue; |
1529 | |
1528 | |
1530 | if (random_roll (0, 100, caster, PREFER_LOW) >= (20 + MIN (50, 2 * (level - head->level)))) |
1529 | if (random_roll (0, 100, caster, PREFER_LOW) >= (20 + min (50, 2 * (level - head->level)))) |
1531 | /* Failed, no effect */ |
1530 | /* Failed, no effect */ |
1532 | continue; |
1531 | continue; |
1533 | } |
1532 | } |
1534 | |
1533 | |
1535 | /* Done with saving throw. Now start affecting the monster */ |
1534 | /* Done with saving throw. Now start affecting the monster */ |
… | |
… | |
2032 | if (infect_object (walk, disease, 1)) |
2031 | if (infect_object (walk, disease, 1)) |
2033 | { |
2032 | { |
2034 | new_draw_info_format (NDI_UNIQUE, 0, op, "You inflict %s on %s!", &disease->name, &walk->name); |
2033 | new_draw_info_format (NDI_UNIQUE, 0, op, "You inflict %s on %s!", &disease->name, &walk->name); |
2035 | |
2034 | |
2036 | disease->destroy (); /* don't need this one anymore */ |
2035 | disease->destroy (); /* don't need this one anymore */ |
2037 | walk->map->insert (get_archetype ("detect_magic"), x, y, op); |
2036 | walk->map->insert (get_archetype (shstr_detect_magic), x, y, op); |
2038 | return 1; |
2037 | return 1; |
2039 | } |
2038 | } |
2040 | |
2039 | |
2041 | disease->destroy (); |
2040 | disease->destroy (); |
2042 | } |
2041 | } |