--- deliantra/server/server/apply.C 2008/04/22 23:50:24 1.150 +++ deliantra/server/server/apply.C 2008/04/30 06:40:28 1.151 @@ -2215,25 +2215,27 @@ improve_armour (op, tmp, armor); } -extern void +void apply_poison (object *op, object *tmp) { + object *poison = tmp->split (1); + if (op->type == PLAYER) { op->contr->play_sound (sound_find ("drink_poison")); op->failmsg ("Yech! That tasted poisonous!"); - strcpy (op->contr->killer, "poisonous booze"); + op->contr->killer = poison; } - if (tmp->stats.hp > 0) + if (poison->stats.hp > 0) { - LOG (llevDebug, "Trying to poison player/monster for %d hp\n", tmp->stats.hp); - hit_player (op, tmp->stats.hp, tmp, AT_POISON, 1); + LOG (llevDebug, "Trying to poison player/monster for %d hp\n", poison->stats.hp); + hit_player (op, poison->stats.hp, tmp, AT_POISON, 1); } op->stats.food -= op->stats.food / 4; - handle_apply_yield (tmp); - tmp->decrease (); + handle_apply_yield (poison); + poison->destroy (); } /** @@ -3703,7 +3705,7 @@ { if (QUERY_FLAG (food, FLAG_CURSED)) { - assign (who->contr->killer, food->name); + who->contr->killer = food; hit_player (who, food->stats.hp, food, AT_POISON, 1); who->failmsg ("Eck!...that was poisonous!"); } @@ -3717,6 +3719,7 @@ who->stats.hp += food->stats.hp; } } + if (food->stats.sp != 0) { if (QUERY_FLAG (food, FLAG_CURSED))