/** * Recalc level and stats * Refill HP/MP * Creatures might skip these formulas. */ void StatBlock::recalc() { if (!statsLoaded) loadHeroStats(); refresh_stats = true; level = 0; for (unsigned i=0; i<xp_table.size(); i++) { if (xp >= xp_table[i]) { level=i+1; check_title = true; } } if (xp >= xp_table.back()) xp = xp_table.back(); applyEffects(); hp = get(STAT_HP_MAX); mp = get(STAT_MP_MAX); }
/** * Recalc level and stats * Refill HP/MP * Creatures might skip these formulas. */ void StatBlock::recalc() { if (hero) { if (!statsLoaded) loadHeroStats(); refresh_stats = true; unsigned long xp_max = eset->xp.getLevelXP(eset->xp.getMaxLevel()); xp = std::min(xp, xp_max); level = eset->xp.getLevelFromXP(xp); if (level != 0) check_title = true; } if (level < 1) level = 1; applyEffects(); hp = get(Stats::HP_MAX); mp = get(Stats::MP_MAX); }