Что такое питомцы
Питомцы 🐾 - это коллекционная гейм-механика, главная цель сток маков. Юзер покупает сундуки за маки, открывает их, получает случайных питомцев. Каждый уникальный питомец в инвентаре даёт постоянный процентный буст ко всем будущим заработкам.
Питомцев в каталоге 30 штук, разделённых на 5 редкостей:
- Common (обычные) - частые, дают маленький буст
- Rare (редкие) - средняя частота, средний буст
- Epic (эпические) - редкие, заметный буст
- Legendary (легендарные) - очень редкие, крупный буст
- Mythic (мифические) - крайне редкие, максимальный буст
Каждый питомец имеет:
- PNG-картинку
- Имя на русском и английском
- Класс (вид/species - например «Кот», «Медведь», «Дракон»)
- Свой boost_percent - сколько процентов прибавит к заработку
Сундуки
Доступны 4 типа сундуков с разной стоимостью и шансами:
| Сундук | Цена | Шансы редкостей |
|---|---|---|
| Бронзовый | дешёвый | в основном Common, изредка Rare |
| Серебряный | средний | смесь Common/Rare, шанс на Epic |
| Золотой | дорогой | сдвиг к Rare/Epic, шанс на Legendary |
| Алмазный | очень дорогой | максимальный шанс на Epic/Legendary, есть шанс на Mythic |
Конкретные веса вероятностей хранятся в таблице chest<em>tiers.weights</em>json и могут корректироваться админом для баланса.
Бесплатный ежедневный сундук
Каждый юзер раз в 22 часа может открыть бесплатный Common-сундук без траты маков. Это гарантия стабильного притока питомцев даже без активного фарма маков.
Кнопка обновляется через 22 часа после последнего открытия - не привязана к календарным дням, чтобы юзер мог открывать сундук в одно и то же время каждый день.
Бонус коллекции (буст)
Каждый собранный питомец даёт +N процентов ко всем будущим заработкам. Бонусы стакаются - чем больше уникальных питомцев в коллекции, тем выше суммарный буст.
Формула финальной выплаты:
final = base × streak_multiplier × (1 + total_pet_boost / 100)
Где total<em>pet</em>boost - сумма boost_percent всех собранных питомцев.
Буст работает на:
- Прослушивание блога
- Игры (Memory, Open or Closed, Shortcut Quiz)
- Награды квестов
- Визиты программ (Эксперт)
- Награды за ранги
- Победа над боссом
- Letter Hunt
Буст НЕ работает на:
- admin<em>grant - админские ручные начисления
- chest</em>dup<em>compensation - компенсация за дубликат
- chest</em>purchase - сама покупка сундука (отрицательная транзакция)
- pet<em>collection</em>boost - чтобы избежать рекурсии
Дубликаты
Питомец может выпасть повторно, если он уже есть в инвентаре. В этом случае дубль не добавляется - вместо этого юзер получает компенсацию маками в зависимости от редкости питомца:
| Редкость | Компенсация |
|---|---|
| Common | 30% от стоимости сундука |
| Rare | 50% |
| Epic | 70% |
| Legendary | 90% |
| Mythic | заменяется на Legendary - дубля Mythic не бывает |
Это гарантирует, что даже при невезучих сундуках юзер не теряет всю валюту - часть возвращается.
Защита от накруток
- Roll на сервере - выпадение питомца определяется через
random_int()с весами из БД. Юзер не может повлиять на результат - Атомарная транзакция - списание маков, INSERT в
chest<em>opens, UPSERT вpet</em>inventoryидут одним блоком - SELECT FOR UPDATE на баланс - параллельные запросы не могут списать дважды
- UNIQUE(userid, petslug) - дубль-INSERT в инвентаре физически невозможен
- Rate limit 10 открытий в минуту
- Whitelist бустов (
PETS<em>BOOSTABLE</em>REASONS) - предотвращает рекурсию буста на сам сундук
Где смотреть
Магазин сундуков
/pets/chests - 4 сундука с описаниями, ценой, шансами. Кнопка «Открыть» рядом с каждым.
Инвентарь
/pets или /profile?tab=pets - сетка из 30 питомцев. Полученные подсвечены и кликабельны (открывает деталь). Заблокированные затемнены, показано «не получен».
Лидерборд по питомцам
/leaderboard?tab=pets (если включён) - топ юзеров по сумме boost_percent в коллекции.
Свой буст
Текущий суммарный буст показан:
- В шапке плашки в /profile рядом с балансом
- В лидерборде рядом с твоим именем (плашка 🐾 +N%)
- В виджете Эксперта на странице программы (мелкий текст «(🐾 +N%)»)