diff options
author | Haru <haru@dotalux.com> | 2018-04-22 21:02:00 +0200 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2018-11-14 18:44:19 +0100 |
commit | 8269fdcd5d036ddc3c24bc0ebb4ad958b5c19a3a (patch) | |
tree | 12f538ec393399874eedc24724281b2980c59dc8 /src/map/status.c | |
parent | 9ae4b5ad26029f8056635a6112828d87dc671184 (diff) | |
download | hercules-8269fdcd5d036ddc3c24bc0ebb4ad958b5c19a3a.tar.gz hercules-8269fdcd5d036ddc3c24bc0ebb4ad958b5c19a3a.tar.bz2 hercules-8269fdcd5d036ddc3c24bc0ebb4ad958b5c19a3a.tar.xz hercules-8269fdcd5d036ddc3c24bc0ebb4ad958b5c19a3a.zip |
Extend status->heal() with a flag to allow reviving a dead character
This adds `STATUS_HEAL_ALLOWREVIVE` to `enum status_heal_flag`.
Fixes an issue caused by a hack in the resurrection code, that would
make characters respawn with 2 HP instead of 1.
Signed-off-by: Haru <haru@dotalux.com>
Diffstat (limited to 'src/map/status.c')
-rw-r--r-- | src/map/status.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/map/status.c b/src/map/status.c index a1be36ff4..edcdd515d 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1555,7 +1555,9 @@ static int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, enum sta nullpo_ret(bl); st = status->get_status_data(bl); - if (st == &status->dummy || !st->hp) + if (st == &status->dummy) + return 0; + if (st->hp == 0 && (flag & STATUS_HEAL_ALLOWREVIVE) != 0) return 0; /* From here onwards, we consider it a 32-type as the client does not support higher and the value doesn't get through percentage modifiers */ |