- Made regen work always, like Hp/Sp Loss, it no longer displays healing numbers as well.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11118 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2007-09-03 23:02:55 +00:00
parent 2084299342
commit 1f1dbd4927
3 changed files with 10 additions and 10 deletions

View File

@ -6886,11 +6886,11 @@ void pc_bleeding (struct map_session_data *sd, unsigned int diff_tick)
//Character regen. Flag is used to know which types of regen can take place.
//&1: HP regen
//&2: SP regen
void pc_regen (struct map_session_data *sd, unsigned int diff_tick, int flag)
void pc_regen (struct map_session_data *sd, unsigned int diff_tick)
{
int hp = 0, sp = 0;
if (sd->hp_regen.value && flag&1) {
if (sd->hp_regen.value) {
sd->hp_regen.tick += diff_tick;
while (sd->hp_regen.tick >= sd->hp_regen.rate) {
hp += sd->hp_regen.value;
@ -6898,7 +6898,7 @@ void pc_regen (struct map_session_data *sd, unsigned int diff_tick, int flag)
}
}
if (sd->sp_regen.value && flag&2) {
if (sd->sp_regen.value) {
sd->sp_regen.tick += diff_tick;
while (sd->sp_regen.tick >= sd->sp_regen.rate) {
sp += sd->sp_regen.value;
@ -6907,7 +6907,7 @@ void pc_regen (struct map_session_data *sd, unsigned int diff_tick, int flag)
}
if (hp > 0 || sp > 0)
status_heal(&sd->bl, hp, sp, 2);
status_heal(&sd->bl, hp, sp, 0);
return;
}

View File

@ -264,7 +264,7 @@ struct map_session_data *pc_get_mother(struct map_session_data *sd);
struct map_session_data *pc_get_child(struct map_session_data *sd);
void pc_bleeding (struct map_session_data *sd, unsigned int diff_tick);
void pc_regen (struct map_session_data *sd, unsigned int diff_tick, int flag);
void pc_regen (struct map_session_data *sd, unsigned int diff_tick);
int pc_set_gm_level(int account_id, int level);
void pc_setstand(struct map_session_data *sd);

View File

@ -7133,8 +7133,12 @@ static int status_natural_heal(DBKey key,void * data,va_list ap)
))
flag=0;
if (sd && (sd->hp_loss.value || sd->sp_loss.value))
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)
pc_regen(sd, natural_heal_diff_tick);
}
if(flag&(RGN_SHP|RGN_SSP) && regen->ssregen &&
(vd = status_get_viewdata(bl)) && vd->dead_sit == 2)
@ -7237,10 +7241,6 @@ static int status_natural_heal(DBKey key,void * data,va_list ap)
}
}
//Bonus skill-like regen
if (sd && (sd->hp_regen.value || sd->sp_regen.value))
pc_regen(sd, natural_heal_diff_tick, (flag&RGN_SHP?1:0)|(flag&RGN_SSP?2:0));
if (!regen->sregen)
return flag;