#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
int main() {
    int maxHP = 100; // максимальное количество HP
    int currentHP = maxHP; // текущее количество HP
    int hpPerInterval = 10; // количество HP, восстанавливаемых за интервал
    int intervalInSeconds = 600; // интервал в секундах (10 минут = 600 секунд)
    
    while (true) {
        auto startTime = chrono::steady_clock::now(); // запоминаем время начала интервала
        
        // сюда вставь  код для обработки событий и действий персонажа
        
        auto endTime = chrono::steady_clock::now(); // запоминаем время окончания интервала
        auto elapsedTime = chrono::duration_cast<chrono::seconds>(endTime - startTime).count(); // вычисляем прошедшее время в секундах
        
        if (elapsedTime >= intervalInSeconds) { // если прошло достаточно времени
            currentHP += hpPerInterval; // увеличиваем текущее количество HP
            if (currentHP > maxHP) {
                currentHP = maxHP; // ограничиваем текущее количество HP максимальным значением
            }
            
            // сюда вставь код для обновления интерфейса и отображения текущего количества HP
            
            startTime = endTime; // обновляем время начала интервала
        }
        
        // сюда вставь  код для обработки других событий и действий персонажа
        
        this_thread::sleep_for(chrono::seconds(1)); // пауза 1 секунда между итерациями цикла
    }
    
    return 0;
}
В начале кода   объявляем необходимые переменные: `maxHP` (максимальное количество HP), `currentHP` (текущее количество HP), `hpPerInterval` (количество HP, восстанавливаемых за интервал) и `intervalInSeconds` (интервал в секундах, через который происходит восстановление HP).
Затем   входим в бесконечный цикл `while (true)`, который будет выполняться постоянно.
Затем мы входим в бесконечный цикл `while (true)`, который будет выполняться постоянно.
Внутри цикла у нас есть два блока кода, отмеченные комментариями "Ваш код для обработки событий и действий персонажа". В этих блоках Вы можете добавить свою логику для обработки действий персонажа, например, проверку на начало и окончание боя, взаимодействие с кузнецом и т.д.
Затем мы запоминаем время начала интервала с помощью `auto startTime = chrono::steady_clock::now();`.
После этого   запоминаем время окончания интервала с помощью `auto endTime = chrono::steady_clock::now();`.
Потом   вычисляем прошедшее время в секундах с помощью `auto elapsedTime = chrono::duration_cast(endTime - startTime).count();`.
После    проверяем, прошло ли достаточно времени для восстановления HP с помощью условия `if (elapsedTime >= intervalInSeconds)`.
Если прошло достаточно времени, мы увеличиваем текущее количество HP на `hpPerInterval` и ограничиваем его максимальным значением `maxHP`.
После этого   обновляем время начала интервала с помощью `startTime = endTime;`.
 
В конце каждой итерации цикла   делаем паузу на 1 секунду с помощью `this_thread::sleep_for(chrono::seconds(1))`, чтобы не перегруж