Jump to content

NimbleStorm

Members
  • Posts

    4
  • Joined

  • Last visited

Community Answers

  1. NimbleStorm's post in How to change HP and SP recovery was marked as the answer   
    Hello,
    If you're running the latest rAthena:

    In /conf/battle/player.conf
    You may adjust the following to alter the time factor of regen for HP/SP:
    // The time interval for HP to restore naturally. (in milliseconds) natural_healhp_interval: 6000 // The time interval for SP to restore naturally. (in milliseconds) natural_healsp_interval: 8000
    An alternative but not recommended method source-side:

    In /src/map/pc.cpp:
    Replace:
    //Character regen. Flag is used to know which types of regen can take place. //&1: HP regen //&2: SP regen void pc_regen (map_session_data *sd, t_tick diff_tick) { int hp = 0, sp = 0; 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; sd->hp_regen.tick -= sd->hp_regen.rate; } } 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; sd->sp_regen.tick -= sd->sp_regen.rate; } } 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->status.max_hp * sd->percent_hp_regen.value / 100; sd->percent_hp_regen.tick -= sd->percent_hp_regen.rate; } } 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->status.max_sp * sd->percent_sp_regen.value / 100; sd->percent_sp_regen.tick -= sd->percent_sp_regen.rate; } } if (hp > 0 || sp > 0) status_heal(&sd->bl, hp, sp, 0); }
    With:
    void pc_regen (map_session_data *sd, t_tick diff_tick) { int hp = 0, sp = 0; int regen_rate_modifier = 1; // Normal rate // Check if the player is sitting to apply a rate modifier [NimbleStorm] if (pc_issit(sd)) { regen_rate_modifier = 2; // Increase tick rate by a factor of 2, adjust as needed [NimbleStorm] } if (sd->hp_regen.value) { sd->hp_regen.tick += diff_tick * regen_rate_modifier; // Apply modified rate while (sd->hp_regen.tick >= sd->hp_regen.rate) { hp += sd->hp_regen.value; sd->hp_regen.tick -= sd->hp_regen.rate; } } if (sd->sp_regen.value) { sd->sp_regen.tick += diff_tick * regen_rate_modifier; // Apply modified rate while (sd->sp_regen.tick >= sd->sp_regen.rate) { sp += sd->sp_regen.value; sd->sp_regen.tick -= sd->sp_regen.rate; } } if (sd->percent_hp_regen.value) { sd->percent_hp_regen.tick += diff_tick * regen_rate_modifier; // Apply modified rate while (sd->percent_hp_regen.tick >= sd->percent_hp_regen.rate) { hp += sd->status.max_hp * sd->percent_hp_regen.value / 100; sd->percent_hp_regen.tick -= sd->percent_hp_regen.rate; } } if (sd->percent_sp_regen.value) { sd->percent_sp_regen.tick += diff_tick * regen_rate_modifier; // Apply modified rate while (sd->percent_sp_regen.tick >= sd->percent_sp_regen.rate) { sp += sd->status.max_sp * sd->percent_sp_regen.value / 100; sd->percent_sp_regen.tick -= sd->percent_sp_regen.rate; } } if (hp > 0 || sp > 0) status_heal(&sd->bl, hp, sp, 0); }
    Good luck. You can do it.
×
×
  • Create New...