… | |
… | |
1781 | if (!QUERY_FLAG (op, FLAG_ALIVE) || op->stats.hp < 0) |
1781 | if (!QUERY_FLAG (op, FLAG_ALIVE) || op->stats.hp < 0) |
1782 | { |
1782 | { |
1783 | /* FIXME: If a player is killed by a rune in a door, the |
1783 | /* FIXME: If a player is killed by a rune in a door, the |
1784 | * destroyed() check above doesn't return, and might get here. |
1784 | * destroyed() check above doesn't return, and might get here. |
1785 | */ |
1785 | */ |
|
|
1786 | |
|
|
1787 | /* FIXME: This for example happens when a dead door is on a mover and |
|
|
1788 | gets it's speed_left raised on each mover-tick. |
|
|
1789 | Doors are removed in a kinda funny way by giving them speed and speed_left |
|
|
1790 | and waiting for that to run out. |
|
|
1791 | */ |
1786 | LOG (llevDebug, "victim %s already dead in hit_player()\n", op->debug_desc ()); |
1792 | LOG (llevDebug, "victim %s (%d) already dead in hit_player()\n", op->debug_desc (), op->stats.hp); |
1787 | return 0; |
1793 | return 0; |
1788 | } |
1794 | } |
1789 | |
1795 | |
1790 | #ifdef ATTACK_DEBUG |
1796 | #ifdef ATTACK_DEBUG |
1791 | LOG (llevDebug, "hit player: attacktype %d, dam %d\n", type, dam); |
1797 | LOG (llevDebug, "hit player: attacktype %d, dam %d\n", type, dam); |
… | |
… | |
1915 | if (magic && did_make_save (op, op->level, 0)) |
1921 | if (magic && did_make_save (op, op->level, 0)) |
1916 | maxdam = maxdam / 2; |
1922 | maxdam = maxdam / 2; |
1917 | |
1923 | |
1918 | attack_message (maxdam, maxattacktype, op, hitter); |
1924 | attack_message (maxdam, maxattacktype, op, hitter); |
1919 | |
1925 | |
|
|
1926 | if (op->type == DOOR && maxdam > 0) { LOG (llevDebug, "DOOR WAS HIT: %d BY %s\n", maxdam, hitter->debug_desc ()); } |
1920 | op->stats.hp -= maxdam; |
1927 | op->stats.hp -= maxdam; |
1921 | |
1928 | |
1922 | /* Eneq(@csd.uu.se): Check to see if monster runs away. */ |
1929 | /* Eneq(@csd.uu.se): Check to see if monster runs away. */ |
1923 | if ((op->stats.hp >= 0) && |
1930 | if ((op->stats.hp >= 0) && |
1924 | (QUERY_FLAG (op, FLAG_MONSTER) || op->type == PLAYER) && |
1931 | (QUERY_FLAG (op, FLAG_MONSTER) || op->type == PLAYER) && |