На тему давно минувших дней... А точнее отсюда:
https://doom2d.org/forum/viewtopic.php?f=41&t=2649Прошёлся специально поиском и не нашёл в целом темы про мутаторы, хотя стоило это бы обсудить как одну из вариаций настроек игрового процесса, причём в чате не раз были обсуждения этой темы. Правда нужно тщательно подумать, что будет под ними подразумеваться для ДФ, а ещё для правильной реализации выкорчевать значения различных параметров у монстров, пушек, игроков и прочего в цвары для удобной реализации и тонкой подстройки.
Параметры их включения/подключения:
Code:
g_use_mutators 1\0 - включаем или выключаем использование мутаторов, если в списке ни один не указан - выводим сообщение что-то наподобие "У вас не указаны мутаторы! Подключите их через меню настройки или при помощи команды mutators_list!"
mutators_list "<name>" - перечисляем список подключаемых мутаторов.
[u]Необязательное:[/u]
mutators_use_recommended 1\0 - подключать или не подключать рекомендованные для определённых карт мутаторы.
Подключение мутаторов
обязательно перезапускает текущий раунд для применения настроек, либо применяет их в следующем. Названия мутаторов очень важно парсить без расширения, чтобы было легче перечислять названия подключаемых файлов.
По поводу скачки:
https://doom2d.org/forum/viewtopic.php?f=56&t=3130&p=45030#p45025По поводу дополнительного способа подключения:
https://doom2d.org/forum/viewtopic.php?f=56&t=3130&p=45030#p45030По поводу настроек внутри игры:
https://www.doom2d.org/forum/viewtopic.php?f=56&t=3130&p=45021#p45031Так же очевидно, что их нужно реализовывать каким-то отдельным файлов, .cfg, .ini, .txt или какой-либо другой - не особо имеет разницы. Структуру самого мутатора предлагаю сделать по следующей конструкции:
Code:
[MUTATOR]
name = "hui"
author = "Vasiliy"
description = "pizda"
version = "v0.1"
[MAPS]
# Настройки использования для отдельных карт для сервера. Необязательно к реализации.
# Зависит целиком от параметра mutators_use_recommended!
PrikolSoft.wad MAP01
DF_DM_MAPS.wad MAP08
DarkLab.dfz MAP01
[CVARS]
# Обычный цвар
pl_pistol_damage = 30
pl_max_hp_set = 666
pl_max_hp_mutliply= 2
# Цвар-список
pl_start_weapons = (
pistol;
shotgun;
bfg9000;
)
pl_start_items = (
backpack;
berserk;
megasphere;
)
pl_start_ammo = (
bullets = 300;
shells = 100;
)
# Цвар с мульти-вложением, значения дамага должны умножать на указанное значение
mon = (
id = 1
damage = (
type_1 = 2
type_2 = 10
)
hp_set = 100 # Устанавливаем количество ХП на строго заданное значение
hp_multiply = 2 # Умножаем имеющееся ХП на это значение
)
# Глобальная настройка для монстров, значения дамага должны умножать на указанное значение
mon_damage = 2
# Пример отлова эвента (необязательно, но тоже полезная штука)
if (game_time = 30), then
pl_max_hp_set = 5
fi
Это
лишь пример реализации, как оно должно выглядеть нужно решать путём обсуждения.