summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2018-04-18 23:00:13 +0300
committerAndrei Karas <akaras@inbox.ru>2018-04-18 23:00:13 +0300
commitf9d77cc5c8de9b4c56ff71a2d9256cda16d87fed (patch)
treec037145ac02e0d89ecf0a45eaa0f3ecc6fd6e610 /src/map
parent0c9117a3444ace5fd5f412f74fc94eb316a75561 (diff)
downloadhercules-f9d77cc5c8de9b4c56ff71a2d9256cda16d87fed.tar.gz
hercules-f9d77cc5c8de9b4c56ff71a2d9256cda16d87fed.tar.bz2
hercules-f9d77cc5c8de9b4c56ff71a2d9256cda16d87fed.tar.xz
hercules-f9d77cc5c8de9b4c56ff71a2d9256cda16d87fed.zip
Move hp recover code from status_calc_pc_ into separate function.
Diffstat (limited to 'src/map')
-rw-r--r--src/map/status.c19
-rw-r--r--src/map/status.h1
2 files changed, 15 insertions, 5 deletions
diff --git a/src/map/status.c b/src/map/status.c
index b2f67735b..fc81126a6 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -2333,6 +2333,18 @@ void status_calc_pc_additional(struct map_session_data* sd, enum e_status_calc_o
return;
}
+void status_calc_pc_recover_hp(struct map_session_data* sd, struct status_data *bstatus)
+{
+ nullpo_retv(sd);
+ nullpo_retv(bstatus);
+
+ if ((sd->job & MAPID_BASEMASK) == MAPID_NOVICE && (sd->job & JOBL_2) == 0
+ && battle_config.restart_hp_rate < 50)
+ bstatus->hp = bstatus->max_hp>>1;
+ else
+ bstatus->hp = APPLY_RATE(bstatus->max_hp, battle_config.restart_hp_rate);
+}
+
//Calculates player data from scratch without counting SC adjustments.
//Should be invoked whenever players raise stats, learn passive skills or change equipment.
int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
@@ -2874,11 +2886,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->hp = bstatus->max_hp;
bstatus->sp = bstatus->max_sp;
} else {
- if ((sd->job & MAPID_BASEMASK) == MAPID_NOVICE && (sd->job & JOBL_2) == 0
- && battle_config.restart_hp_rate < 50)
- bstatus->hp = bstatus->max_hp>>1;
- else
- bstatus->hp = APPLY_RATE(bstatus->max_hp, battle_config.restart_hp_rate);
+ status->calc_pc_recover_hp(sd, bstatus);
if(!bstatus->hp)
bstatus->hp = 1;
@@ -13650,6 +13658,7 @@ void status_defaults(void)
status->calc_pet_ = status_calc_pet_;
status->calc_pc_ = status_calc_pc_;
status->calc_pc_additional = status_calc_pc_additional;
+ status->calc_pc_recover_hp = status_calc_pc_recover_hp;
status->calc_homunculus_ = status_calc_homunculus_;
status->calc_mercenary_ = status_calc_mercenary_;
status->calc_elemental_ = status_calc_elemental_;
diff --git a/src/map/status.h b/src/map/status.h
index 5a031fa48..5df439237 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -2355,6 +2355,7 @@ struct status_interface {
int (*calc_pet_) (struct pet_data* pd, enum e_status_calc_opt opt);
int (*calc_pc_) (struct map_session_data* sd, enum e_status_calc_opt opt);
void (*calc_pc_additional) (struct map_session_data* sd, enum e_status_calc_opt opt);
+ void (*calc_pc_recover_hp) (struct map_session_data* sd, struct status_data *bstatus);
int (*calc_homunculus_) (struct homun_data *hd, enum e_status_calc_opt opt);
int (*calc_mercenary_) (struct mercenary_data *md, enum e_status_calc_opt opt);
int (*calc_elemental_) (struct elemental_data *ed, enum e_status_calc_opt opt);