/expedition/reroll

Метод обновляет список доступных экспедиций: каждый свободный слот получает другое предложение того же тира. Тир сохраняется намеренно — спуск на другой тир противоречил бы весам полосы, за которые игрок и платит.

Выпавшее уходит в память и до сброса не повторяется, поэтому реролл не может вернуть то же самое предложение — ни в тот же слот, ни в соседний. Если в тире не осталось невыпадавших, память этого тира сбрасывается прямо в момент рола и его экспедиции снова участвуют; на экране они при этом всё равно не дублируются. Дубликат допускается ровно в одном случае: в тире экспедиций меньше, чем полоса открывает слотов.

Запущенные и завершённые экспедиции не затрагиваются — уже начатая экспедиция это обязательство, а не предложение. Если свободных слотов нет вовсе, метод отвечает ошибкой и попытка не тратится.

Попытки восстанавливаются раз в сутки, в общий серверный ресет фич. Первый реролл в сутки бесплатный, остальные списывают хард-валюту по лестнице expeditionCommon.rerollPrices; лестница короче лимита повторяет последнюю ступень.

Адрес метода

/expedition/reroll

Требует сессию пользователя

Параметры

Метод не требует параметров.

Результат

Возвращает то же состояние, что и /expedition/list, уже с новыми предложениями.

{
    "response": {
        "success": 1,
        "unlocked": true,
        "max_slots": 2,
        "slots": [
            {
                "slot_index": 0,
                "expedition_cid": "easy_cool_1star",
                "status": 0,
                "skill_cids": [],
                "started_at": 0,
                "ends_at": 0,
                "bonus_qualified": false,
                "skip_price": 0,
                "base_rewards": [
                    { "type": "soft", "amount": 400 }
                ],
                "bonus_rewards": [
                    { "type": "particleOfPower", "amount": 1 }
                ]
            }
        ],
        "rerolls_used": 1,
        "rerolls_reset_at": 1788296400,
        "paid_reroll_limit": 1,
        "reroll_price": {
            "type": "hard",
            "amount": 50
        }
    },
    "update": {
        "member": {
            "wallet": []
        }
    }
}

reroll_price в ответе — цена уже СЛЕДУЮЩЕГО реролла, а не только что списанная.

Если в пуле не нашлось замены ни одному слоту, метод отказывает до того, как потратит попытку и спишет цену. Если же замену забрал параллельный запрос уже после резервирования — например, стартовал все свободные слоты, — метод отвечает success: 0, возвращает попытку и списанное; состояние в ответе приходит целиком.

Попытка резервируется условным инкрементом до всего остального, а цена читается по фактически зарезервированному номеру, поэтому два одновременных реролла не могут забрать одну и ту же попытку и не могут оба оценить себя как бесплатный: проигравший получает отказ Reroll is already in progress. Списание условное — если баланса не хватило в момент списания, попытка возвращается и состояние не меняется.

Ошибки

Код Условие
10405 Фича закрыта по уровню; все слоты заняты; платные попытки на сегодня исчерпаны (в контексте приходит paid_reroll_limit); не хватает валюты (в контексте приходит price); параллельный реролл уже забрал попытку (Reroll is already in progress); цена задана в валюте, отличной от hard.