ТЗ: Скрипт ребаланса магических навыков для файлов .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. Алгоритм работы
- Поиск моба: Скрипт ищет блоки, начинающиеся с
#ID.
- Определение уровня: * Пропускает текстовые описания (до строки, заканчивающейся на
E).
- Считывает первое число следующей строки.
- Пример для моба #9204: В строке
4 3 4 5d4+25 2d4+0 уровень равен 4.
- Поиск и замена навыков:
- Ищет в блоке моба строку
Skill: ID Percent.
- Рассчитывает новый процент: $Level \times Коэффициент$.
- Округляет до целого числа.
- Ограничивает результат в диапазоне [10 - 95] (чтобы не было 0% и не было 100% успеха всегда).
- Сохранение: Перезаписывает файл, сохраняя оригинальную кодировку и структуру.
5. Пример преобразования (Логика)
Для моба #9204 (Гусеница):
- Уровень: 4
- Текущая строка:
Skill: 136 60
- Расчет (Магия Жизни): $4 \times 5 = 20%$
- Результат: Скрипт должен заменить
Skill: 136 60 на Skill: 136 20.
6. Особые требования
- Валидация: Если строка
Skill есть, а уровень найти не удалось — выдать предупреждение в лог.
- Бэкап: Перед модификацией создавать копию папки с файлами.
- Режим "Предпросмотра" (Dry Run): Возможность запустить скрипт без записи в файлы, чтобы увидеть в консоли, какие значения изменятся.
Поскольку структура файла позиционная (числа зависят от того, в какой они строке), разработчику нужно будет внимательно настроить регулярные выражения или парсер строк.
ТЗ: Скрипт ребаланса магических навыков для файлов .mob
1. Контекст и структура данных
Данные в файлах разделены символом
#(начало моба) иE(конец блока данных).d0 0 0 Eили аналогичной). Это первое число в строке.Skill: [ID_Навыка] [Процент].Skill: 136 60(где 136 — ID магии, а 60 — текущий %).2. Цель
Написать скрипт (предпочтительно Python), который автоматически пересчитает значение
[Процент]для всех строкSkillво всех.mobфайлах, основываясь на уровне конкретного моба.3. Таблица соответствия (Конфиг)
Скрипт должен использовать справочник ID магий и коэффициентов:
4. Алгоритм работы
#ID.E).4 3 4 5d4+25 2d4+0уровень равен 4.Skill: ID Percent.5. Пример преобразования (Логика)
Для моба #9204 (Гусеница):
Skill: 136 60Skill: 136 60наSkill: 136 20.6. Особые требования
Skillесть, а уровень найти не удалось — выдать предупреждение в лог.Поскольку структура файла позиционная (числа зависят от того, в какой они строке), разработчику нужно будет внимательно настроить регулярные выражения или парсер строк.