- One screen = full game; **icons and color over text**; player stays in flow; **no blocking loads**; **mobile-first**; clear **pause/play** (spec §12).
- UI must **honestly show hero state** — never visually hide HP loss with auto-healing the server/mechanic didn't grant.
- UI must **clearly show reward model** — gold on every victory, items only on actual drops.
- UI must **clearly show reward model** — gold and items only when they actually dropped (no fake +gold on screen).
<inputid="hero-sub-periods"type="number"min="1"max="52"value="1"style="width:56px"title="Число периодов (как при покупке подписки)"/>
<buttontype="button"class="btn"onclick="withAction(() => heroAction('grant-subscription',{periods:Math.min(52,Math.max(1,parseInt(document.getElementById('hero-sub-periods').value,10)||1))}))"title="Выдать подписку на N периодов (длительность из runtime), без списания RUB">Выдать подписку</button>
<buttontype="button"class="btn warn"onclick="withAction(() => heroAction('revoke-subscription',{}))"title="Снять подписку сейчас; заряды баффов и ревайвы ужимаются до бесплатных лимитов">Снять подписку</button>
<buttontype="button"class="btn warn"onclick="withAction(() => heroAction('force-death',{}))"title="HP 0, state dead, ends combat; counts as a death if the hero was alive">Режим смерти</button>
<buttonclass="btn"onclick="withAction(() => heroAction('start-rest',{}, true))"title="Town rest (same duration as normal town rest)">Start rest (town)</button>
<buttonclass="btn"onclick="withAction(() => heroAction('start-roadside-rest',{}, true))"title="Roadside rest at current road position (not in excursion)">Start rest (roadside)</button>
@ -151,7 +151,7 @@ AutoHero — это idle/incremental RPG с изометрическим вид
**Правила наград:**
- Квест не должен нарушать глобальное правило: **золото с убийств врагов** остаётся по §8; награда квеста — **дополнительный** слой (XP, предмет, косметика).
- Квест не должен нарушать глобальную систему наград за убийства (**§8**); награда квеста — **дополнительный** слой (XP, предмет, косметика).
- Повторяемые квесты (ежедневные) имеют **сброс** и **лимит** попыток в день.
- Шанс, что враг вообще дропнет предмет экипировки: `22%`
- Шанс, что после победы выпадет **предмет экипировки**: настраивается в runtime (`equipmentDropBase` в JSON runtime_config), ориентир **~15%** при базовой удаче; бафф **Удача** умножает этот шанс (с потолком 100%).
- Если предмет выпал, его редкость распределяется так:
- Common: `75%`
- Uncommon: `20%`
- Rare: `4%`
- Epic: `0.9%`
- Legendary: `0.1%`
- Каждый побеждённый враг **всегда** даёт золото.
- Золото — это **гарантированная базовая награда** за убийство, чтобы каждая победа ощущалась как прогресс.
- Предметы экипировки — это **дополнительный необязательный дроп**, а не замена золоту.
- Отсутствие предмета после убийства — это нормальное поведение; отсутствие золота — нет.
- Шанс, что после победы выпадет **золото** как отдельная награда: настраивается в runtime (`goldDropChance`), по умолчанию **высокий, но не 100%** (часть побед может не дать монет с трупа); бафф **Удача** умножает и этот шанс (с потолком 100%).
- Если золото **выпало**, его**количество** и «тираж редкости» золотой пачки задаются таблицей **§8.2** (через бросок редкости лута и диапазоны по тиру).
- Предметы экипировки — **дополнительный** слой поверх (возможного) золота; отсутствие предмета после убийства — норма; отсутствие золота — допустимо при низком исходе броска.
- возможного предмета (оружие, броня нагрудника или — после внедрения §6.3 — предмет в любом доступном слоте)
- Награда за бой состоит из (независимые броски):
- **возможного золота** (шанс `goldDropChance`× удача, см. §8.1)
- **возможного предмета** (оружие, броня нагрудника или — после внедрения §6.3 — предмет в любом доступном слоте; шанс `equipmentDropBase`× удача)
- Если предмет выпал, он должен использовать ту же систему редкости (`Common` ... `Legendary`).
- Бафф **Удача** усиливает лут, но не отменяет правило гарантированного золота.
- В MVP допустим простой формат награды, но логика должна быть прозрачной: `gold always, item sometimes`.
- Бафф **Удача** усиливает шансы и на золото, и на предмет (не отменяет отдельные броски).
- В MVP допустим простой формат награды, но логика должна быть прозрачной: **`gold sometimes, item sometimes`** (конкретные вероятности — в runtime_config).
- Уровень выпавшего предмета (`ilvl`) и масштабирование статов — **§6.4**; связь `ilvl`с уровнем убитого врага — **§6.4.5**.
Эта схема даёт игроку прозрачный MVP loop: золото приходит всегда, хороший предмет сразу усиливает героя, плохой предмет всё равно конвертируется в ощутимую награду.
Эта схема даёт игроку прозрачный MVP loop: при выпадении золота и предметов хороший дроп сразу усиливает героя, слабый предмет при автопродаже конвертируется в ощутимую награду; отдельные победы без монет с трупа возможны при низком шансе золота.
8. UI должен честно показывать состояние героя: нельзя визуально скрывать потерю HP автоматическим лечением, если сервер/механика этого не дали
9. UI должен ясно показывать модель наград: золото за каждую победу, предметы только при фактическом дропе
9. UI должен ясно показывать модель наград: золото и предметы — только при фактическом дропе (в т.ч. `+N gold` в попапе/логе только если монеты с трупа выпали)
10. **Имя героя** (§1.2) всегда видно над моделью в мире; в социальных контекстах — то же имя, без расхождения с сервером