View Single Post
  #2  
Old 11-09-2013, 12:29 PM
Kingly_Krab
Administrator
 
Join Date: May 2013
Location: United States
Posts: 1,603
Default

Here's the code for the regen in the source. Rest Regen occurs when they're out of combat for XX seconds, the Regen Percent occurs when they sit down. This is in client_process.cpp.

Code:
void Client::CalcRestState() {

        // This method calculates rest state HP and mana regeneration.
        // The client must have been out of combat for RuleI(Character, RestRegenTimeToActivate) seconds,
        // must be sitting down, and must not have any detrimental spells affecting them.
        //
        if(!RuleI(Character, RestRegenPercent))
                return;

        RestRegenHP = RestRegenMana = RestRegenEndurance = 0;

        if(AggroCount || !IsSitting())
                return;

        if(!rest_timer.Check(false))
                return;

        uint32 buff_count = GetMaxTotalSlots();
        for (unsigned int j = 0; j < buff_count; j++) {
                if(buffs[j].spellid != SPELL_UNKNOWN) {
                        if(IsDetrimentalSpell(buffs[j].spellid) && (buffs[j].ticsremaining > 0))
                                if(!DetrimentalSpellAllowsRest(buffs[j].spellid))
                                        return;
                }
        }

        RestRegenHP = (GetMaxHP() * RuleI(Character, RestRegenPercent) / 100);

        RestRegenMana = (GetMaxMana() * RuleI(Character, RestRegenPercent) / 100);

        if(RuleB(Character, RestRegenEndurance))
                RestRegenEndurance = (GetMaxEndurance() * RuleI(Character, RestRegenPercent) / 100);
}
Reply With Quote