Skip to content

Постоянные циклические события ​

События, которые происходят каждый год гарантированно, в строгой последовательности (годовой цикл, уровни L1–L7 из структуры). Случайные события между ними — в случайные события.

Порядок внутри года (обязательный) ​

#УровеньЧто происходит каждый годПримечание
1L1 «Состояние»Пересчёт цен make_price() (75–125% от базы), отчёт о ресурсах за god-й годЕсли fl_block=1 (25%, случайная часть — см. случайные) — торговля запрещена
2L1b «Биржа»Доступ к бирже (если нет блокады): покупка/продажа золота, земли, зерна, крестьян, гвардииИгрок сам решает, торговать ли; сделок может быть много
3L3 «Королева»Если fl_marry > 0: гонец от королевы → просьба денег (rnd(30)+1)% казны (15% — платье, 85% — бал)Отказ — только обида королевы (без механических последствий)
4L4 «Зерно»Если prefs.ed_eat > 0: распределение зерна на еду и посевАвто: едa = (krest+guard)×ed_eat, посев = min(land, krest)×1; если зерна не хватает — ручной ввод
5L5 «Правление»Вопрос: «Будете править в следующем году?»Отказ — конец игры (fl_end)
6L6 «Новый год»Вопрос: устроить новогодний бал? (произвольная сумма)Только флейвор: благодарность королевы/придворных
7L7 «Доклад визиря»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), крысы, прирост/бегство крестьян, дезертиры, кражи, прибыль караванов.

Циклические, но условные этапы ​

УровеньУсловиеЧто происходит
L1bfl_block == 0Биржа доступна
L3 (королева)fl_marry > 0Просьба денег (один раз в год)
L4prefs.ed_eat > 0Распределение зерна (иначе этап пропускается)
L4 (обход)krest == 0 и guard == 0Этап зерна пропускается (кормить некого)

Ключевые инварианты цикла ​

  1. Порядок строгий: L1 → L1b → L2 (10 слотов) → L3 → L4 → L5 → L6 → L7 → следующий год. Перестановка невозможна.
  2. Одно событие на слот: в каждом из 10 слотов L2 может сработать максимум одно событие; не сработало — слот пропускается без следа.
  3. Год не прерывается случайными событиями, кроме: революции (L4), смерти (L3, illness → shaman) и god > 50 (любой момент).
  4. Жена в год свадьбы не умирает: year_marry = 1 в год брака, обнуляется в make_turn().