Appearance
Постоянные циклические события
События, которые происходят каждый год гарантированно, в строгой последовательности (годовой цикл, уровни L1–L7 из структуры). Случайные события между ними — в случайные события.
Порядок внутри года (обязательный)
| # | Уровень | Что происходит каждый год | Примечание |
|---|---|---|---|
| 1 | L1 «Состояние» | Пересчёт цен make_price() (75–125% от базы), отчёт о ресурсах за god-й год | Если fl_block=1 (25%, случайная часть — см. случайные) — торговля запрещена |
| 2 | L1b «Биржа» | Доступ к бирже (если нет блокады): покупка/продажа золота, земли, зерна, крестьян, гвардии | Игрок сам решает, торговать ли; сделок может быть много |
| 3 | L3 «Королева» | Если fl_marry > 0: гонец от королевы → просьба денег (rnd(30)+1)% казны (15% — платье, 85% — бал) | Отказ — только обида королевы (без механических последствий) |
| 4 | L4 «Зерно» | Если prefs.ed_eat > 0: распределение зерна на еду и посев | Авто: едa = (krest+guard)×ed_eat, посев = min(land, krest)×1; если зерна не хватает — ручной ввод |
| 5 | L5 «Правление» | Вопрос: «Будете править в следующем году?» | Отказ — конец игры (fl_end) |
| 6 | L6 «Новый год» | Вопрос: устроить новогодний бал? (произвольная сумма) | Только флейвор: благодарность королевы/придворных |
| 7 | L7 «Доклад визиря» | make_turn() — годовые расчёты (ниже), god += 1, отчёт | Отчёт выводит все произошедшие за год эффекты |
Пайплайн make_turn() — годовые расчёты (L7)
Выполняется каждый год в фиксированном порядке; отдельные эффекты вероятностны (значком ⚁):
| Шаг | Формула | Эффект |
|---|---|---|
| 1. Урожай ⚁ | fl_urog = rnd(5)−1 (0..4); b = min(land, krest, for_posev); add_zerno = (2×fl_urog+3) × b | Зерно: засуха (3×b) … супер-урожай (11×b) |
| 2. Крысы ⚁ | 20%: eat_rat = round(rnd(20) × zerno / 100) | Крысы съедают 0–20% зерна |
| 3. Бегство крестьян ⚁ | Если krest > land: run_krest = rnd(krest − land) | «Лишние» крестьяне (без земли) часть сбегает |
| 4. Прирост крестьян ⚁ | add_krest = round(krest × (rnd(10)+6)/100) | Рост населения 6–16% в год |
| 5. Жалованье гвардии | abs_sod_guard = (guard+1) × 10; если не хватает денег — run_guard = round(guard × (rnd(10)+6)/100) ⚁ | Выплата денег; при нехватке — дезертирство 6–16% |
| 6. Кража золота ⚁ | 20%: grab_gold = round(rnd(25) × gold / 100) | Из сокровищницы похищают 0–25% золота |
| 7. Кража денег ⚁ | 10%: grab_money = round(rnd(25) × money / 100); запись в fl_vis | Визирь крадёт 0–25% денег (может быть пойман — см. случайные) |
| 8. Пересчёт цен | make_price() | Новые рыночные цены на следующий год |
| 9. Блокада ⚁ | fl_block = (rnd(100) < 25) | На следующий год торговля возможна или нет |
| 10. Караваны | Возраст каждого каравана +1; при возрасте 5: прибыль round(вклад × 6), караван удаляется | Возврат вложенного ×6 через 5 лет |
После make_turn() — god += 1 и отчёт визиря (yeartoyear), где игроку показывают: жалованье, урожай (5 текстов по fl_urog), крысы, прирост/бегство крестьян, дезертиры, кражи, прибыль караванов.
Циклические, но условные этапы
| Уровень | Условие | Что происходит |
|---|---|---|
| L1b | fl_block == 0 | Биржа доступна |
| L3 (королева) | fl_marry > 0 | Просьба денег (один раз в год) |
| L4 | prefs.ed_eat > 0 | Распределение зерна (иначе этап пропускается) |
| L4 (обход) | krest == 0 и guard == 0 | Этап зерна пропускается (кормить некого) |
Ключевые инварианты цикла
- Порядок строгий: L1 → L1b → L2 (10 слотов) → L3 → L4 → L5 → L6 → L7 → следующий год. Перестановка невозможна.
- Одно событие на слот: в каждом из 10 слотов L2 может сработать максимум одно событие; не сработало — слот пропускается без следа.
- Год не прерывается случайными событиями, кроме: революции (L4), смерти (L3, illness → shaman) и
god > 50(любой момент). - Жена в год свадьбы не умирает:
year_marry = 1в год брака, обнуляется вmake_turn().