Skip to content

балансный скрипт для магий мобам #3266

@ladon3434

Description

@ladon3434

ТЗ: Скрипт ребаланса магических навыков для файлов .mob

1. Контекст и структура данных

Данные в файлах разделены символом # (начало моба) и E (конец блока данных).

  • Уровень моба: Находится в первой строке числового блока (сразу после строки с флагами d0 0 0 E или аналогичной). Это первое число в строке.
  • Навыки (Skills): Описываются строкой вида Skill: [ID_Навыка] [Процент].
  • Пример из файла: Skill: 136 60 (где 136 — ID магии, а 60 — текущий %).

2. Цель

Написать скрипт (предпочтительно Python), который автоматически пересчитает значение [Процент] для всех строк Skill во всех .mob файлах, основываясь на уровне конкретного моба.

3. Таблица соответствия (Конфиг)

Скрипт должен использовать справочник ID магий и коэффициентов:

Тип магии ID (из файла) Коэффициент (на 1 уровень)
Магия Жизни 136 (условно) +5%
Магия Огня 137 (условно) +4.5%
Прочие Любой другой ID +3%

4. Алгоритм работы

  1. Поиск моба: Скрипт ищет блоки, начинающиеся с #ID.
  2. Определение уровня: * Пропускает текстовые описания (до строки, заканчивающейся на E).
  • Считывает первое число следующей строки.
  • Пример для моба #9204: В строке 4 3 4 5d4+25 2d4+0 уровень равен 4.
  1. Поиск и замена навыков:
  • Ищет в блоке моба строку Skill: ID Percent.
  • Рассчитывает новый процент: $Level \times Коэффициент$.
  • Округляет до целого числа.
  • Ограничивает результат в диапазоне [10 - 95] (чтобы не было 0% и не было 100% успеха всегда).
  1. Сохранение: Перезаписывает файл, сохраняя оригинальную кодировку и структуру.

5. Пример преобразования (Логика)

Для моба #9204 (Гусеница):

  • Уровень: 4
  • Текущая строка: Skill: 136 60
  • Расчет (Магия Жизни): $4 \times 5 = 20%$
  • Результат: Скрипт должен заменить Skill: 136 60 на Skill: 136 20.

6. Особые требования

  • Валидация: Если строка Skill есть, а уровень найти не удалось — выдать предупреждение в лог.
  • Бэкап: Перед модификацией создавать копию папки с файлами.
  • Режим "Предпросмотра" (Dry Run): Возможность запустить скрипт без записи в файлы, чтобы увидеть в консоли, какие значения изменятся.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions