diff --git a/src/map/pc.cpp b/src/map/pc.cpp index d3e2643343..a4abc22c5b 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -11039,7 +11039,7 @@ void pc_regen (struct map_session_data *sd, t_tick diff_tick) if (sd->percent_hp_regen.value) { sd->percent_hp_regen.tick += diff_tick; while (sd->percent_hp_regen.tick >= sd->percent_hp_regen.rate) { - hp += (sd->percent_hp_regen.value * sd->status.max_hp); + hp += sd->status.max_hp * sd->percent_hp_regen.value / 100; sd->percent_hp_regen.tick -= sd->percent_hp_regen.rate; } } @@ -11047,7 +11047,7 @@ void pc_regen (struct map_session_data *sd, t_tick diff_tick) if (sd->percent_sp_regen.value) { sd->percent_sp_regen.tick += diff_tick; while (sd->percent_sp_regen.tick >= sd->percent_sp_regen.rate) { - sp += (sd->percent_sp_regen.value * sd->status.max_sp); + sp += sd->status.max_sp * sd->percent_sp_regen.value / 100; sd->percent_sp_regen.tick -= sd->percent_sp_regen.rate; } } diff --git a/src/map/status.cpp b/src/map/status.cpp index 6e0ec807d7..81d40a046c 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -14307,7 +14307,7 @@ static int status_natural_heal(struct block_list* bl, va_list args) if (sd) { if (sd->hp_loss.value || sd->sp_loss.value) pc_bleeding(sd, natural_heal_diff_tick); - if (sd->hp_regen.value || sd->sp_regen.value) + if (sd->hp_regen.value || sd->sp_regen.value || sd->percent_hp_regen.value || sd->percent_sp_regen.value) pc_regen(sd, natural_heal_diff_tick); }