/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. |