Skip to content

daardos/undead-harvest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🧟 Undead Harvest – текстовая RPG на C++

Консольная игра с русским интерфейсом. Исследуйте опасные локации, собирайте лут, сражайтесь с зомби и развивайте персонажа.


Основная петля игры

  1. Регистрация / вход – новый игрок придумывает никнейм (только буквы, 6–17 символов). При повторном запуске сохранённый прогресс загружается автоматически.
  2. База – меню с выбором действий:
    • 1 Охота (добыча предметов и опыта)
    • 2 Больница (лечение, 1 HP = 2 монеты)
    • 3 Мастерская (броня, оружие, верстак)
    • 4 Сохранить игру
    • 5 Статистика (полный статус героя)
    • 6 Скупщик (продажа предметов из рюкзака)
    • 7 Дом (отдых, майнинг-ферма)
    • 8 Выход (с сохранением)
  3. Охота – три варианта:
    • Вариант 1 (минимальный риск): 5 ящиков, зомби нет. Лут: Металлолом (10 монет), Батарейка (25), Тряпка (5).
    • Вариант 2 (высокий риск): 5 ящиков, лут: Аптечка (50), Патроны (40), Деталь оружия (100), Золотая цепочка (150). У каждого ящика 40% шанс встретить зомби (обычного или быстрого).
    • Вариант 3 (максимальный риск, стелс): 5 ящиков, лут: Кристалл (300), Редкий артефакт (800), Схема обвеса (1200). При активации «активных зомби» цена удваивается.
  4. Бой – пошаговый, с расходом энергии:
    • Действия: 1 Выстрел (5 энергии), 2 Отойти (15 энергии), 3 Аптечка (10 энергии).
    • Каждое действие тратит энергию. При нехватке энергии действие недоступно.
    • Выстрел расходует патроны и прочность оружия. Поддерживается два типа зомби: обычный и быстрый (двойной урон).
    • При промахе или отходе зомби контратакует. Успешный отход завершает бой.
    • После победы даётся опыт, здоровье зомби восстанавливается.
  5. Стелс (в варианте 3): 4 действия – убежать, затаиться, отвлечь камнем, обойти за спину. Успех даёт опыт как за убийство. Неудача может нанести урон.
  6. Рюкзак – вся добыча складывается в инвентарь. Одинаковые предметы группируются.
  7. Скупщик – покупает всё содержимое рюкзака. При каждой сделке произносит случайную фразу, зависящую от самых ценных/специфичных предметов в рюкзаке.
  8. Повышение уровня – при накоплении опыта level * 200 + level^2 * 5. При переходе даётся случайный набор из трёх улучшений (HP, монеты, урон, скорость лута, ваншот, поглощение).
  9. Мастерская:
    • Броня (4 типа, бесплатно) – влияет на поглощение, урон, скорость лута, макс. HP.
    • Оружие (4 вида, покупка) – AK-47 (5400), AWP (8400), LR-300 (3600), MP-5 (5400).
    • Верстак (крафт) – починка оружия (250 монет), создание патронов (10 монет/шт), создание аптечек (150 монет/шт). Максимум 5 аптечек.
  10. Дом:
    • Отдых – полностью восстанавливает энергию. Если энергия была ≤5, также увеличивает максимальную энергию на 10. Нельзя использовать дважды подряд.
    • Майнинг-ферма (в разработке).
  11. Энергия – тратится в бою и восстанавливается отдыхом. Исходное значение 100, максимальное может расти.
  12. Сохранение/загрузка – все параметры (включая энергию, аптечки, регистрацию) записываются в save.txt.

Ключевые особенности

  • Три режима охоты с разными таблицами лута
  • Боевая система: части тела, двойной выстрел (MP-5), мгновенное убийство (AWP), расход патронов и прочности
  • Система энергии и отдыха
  • Стелс-механика с четырьмя вариантами действий
  • Система уровней с квадратичным порогом и случайными перками
  • Рюкзак и скупщик с контекстными фразами (более 20 реплик)
  • Верстак: ремонт, патроны, аптечки
  • Дом с отдыхом и заготовкой под майнинг-ферму
  • Полная поддержка кириллицы (UTF-8 в консоли Windows)

Сборка и запуск

Требования

  • Компилятор с поддержкой C++11 (g++, clang++, MSVC)
  • ОС Windows, Linux или macOS
  • Для Windows: консоль с поддержкой UTF-8 (включена по умолчанию в Windows 10+)

Компиляция и запуск

g++ main.cpp -o undead_harvest -std=c++11
./undead_harvest        # Linux/macOS
.\undead_harvest.exe    # Windows

Структура проекта

Файл Назначение
main.cpp Основной код игры (логика, бой, охота, мастерская, дом)
struct.h Заголовочный файл со структурами, классами и методами
save.txt Файл сохранения (создаётся автоматически)

Детальное описание механик

Бой

  • Попадание: базовый шанс 60% + (точность оружия / 10). Максимум 100%.
  • Урон игрока: (базовый урон) * (множитель части тела) * (множитель брони) * (множитель оружия)
  • Урон зомби: обычный 10–40, быстрый 5–30 (удваивается за счёт скорости)
  • Ресурсы: каждый выстрел –1 патрон, –1 прочность

Броня (выбор в мастерской, пункт 3 → 1)

Броня Поглощение HP Урон Скорость лута
Тяжёлая 75% 120 70% 50%
Лёгкая -25% 100 110% 500%
Средняя 10% 110 110% 110%
Начальная -5% 100 100% 80%

Оружие (покупка в мастерской, пункт 3 → 2)

Оружие Цена Урон Точность Скорость лута Особенность
AK-47 5400 x1.6 +0% x1.1 Слоты для обвесов (позже)
AWP 8400 x2.5 +50% x0.5 5% мгновенное убийство
LR-300 3600 x1.4 +5% x1.0
MP-5 5400 x1.0 +5% x1.15 20% двойной выстрел

Верстак (пункт 3 → 3)

  • Починка оружия: 250 монет (восстанавливает прочность до 100)
  • Создание патронов: 10 монет за штуку (максимум 30)
  • Создание аптечек: 150 монет за штуку (максимум 5)

Уровни и опыт

  • Опыт за ящик: 1–10 XP
  • Опыт за убийство: 20–50 XP
  • Порог уровня: level * 200 + level * level * 5
  • При повышении – случайный набор из трёх улучшений (таблица level_gifts)

Рюкзак и скупщик

  • Предметы добавляются через add_item() (группировка по имени)
  • Продажа всего содержимого: sell_all_loot() (пункт 6 меню)
  • Скупщик выбирает фразу, анализируя состав рюкзака (приоритет у дорогих/редких предметов)

Энергия и отдых

  • Максимальная энергия хранится в Armor::player_max_energe (начальное 100).
  • Тратится в бою. Восстанавливается в доме через «Отдых».
  • При энергии ≤5 отдых дополнительно увеличивает максимум на 10.

Обратная связь

Нашли баг или есть идеи? Создайте Issue или pull request.

Скупщик уже заждался твой лут, выживший!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages