-
Notifications
You must be signed in to change notification settings - Fork 211
Guide to mapping (Заплатки эдишен)
Гайд ту заплатки фор даммис 101, или "Мама я хочу рандомногенерируемую карту"
Создание заплаток со стороны кода - очень простая вещь, поэтому хватай кратко то, что надо сделать
Шаг первый:
Идешь в code\game\map_ent
и создаешь там новый файл map_YOUR-NAME.dm
где YOUR-NAME это название того, что ты будешь рандомно генерировать.
Если ты делаешь заплатку для какой-то карты - рекомендую сделать этот файл в папке с картой, чтобы в случае, если мы будем удалять карту, то у нас не осталось огрызок кода.
В этот файл кидаешь код что-то на подобии вот этого
/obj/map_ent/your-name
name = "your-name"
icon_state = "your-name"
var/ev_your-name
var/ev_result
/obj/map_ent/your-name/activate()
var/target_your-name = ev_your-name
if(!target_your-name)
target_your-name = config.mapping.preferable_your-name
if(target_your-name == MAP_YOUR-NAME_RANDOM)
target_bar = pick(YOURVARIATION1, YOURVARIATION2, YOURVARIATION3)
ev_result = "maps/[GLOB.using_map.path]/your-name/[target_your-name].dmm"
Где YOUR-NAME это, опять же, удобное название того, что ты будешь вставлять, например bridge, vault, admin-furry-stash Где YOUR-VARIATION это возможные варианты твоей заплатки, об этом прямо сейчас.
Шаг один с половиной:
Открой icons/misc/map_ent.dmi
и добавь иконку своей заплатке, не забудь ее назвать your-name.
Шаг второй:
Надеюсь, что ты уже всё замаппил. Закинь все свои заплатки в карты по пути mapname/your-name/
, чтобы было что-то вроде
exodus/adminstash/bdsm-stash.dmm
exodus/adminstash/uwu-dungeon.dmm
Так вот, открываешь code/__defines/mapping.dm
и добавляешь свои дефайны заплаток сразу после последнего #define MAP_
.
В формате:
#define MAP_YOURNAME_VARIATION-NAME "variation-name"
Где variation-name это название твоей заплаточной карты без разрешения файла (т.е. не "furry-stash.dmm", а просто "furry-stash")
Например:
#define MAP_ADMINSTASH_BDSMSTASH "bdsm-stash"
Добавляешь так все замапленные заплатки.
НЕ ЗАБУДЬ ПОСЛЕ ДОБАВИТЬ ЕЩЕ
#define MAP_YOUR-NAME_RANDOM "random"
если ты хочешь, чтобы твоя заплатка могла выбираться рандомно.
Шаг три:
Все самое сложное позади, осталось лишь всё это подключить.
Идешь в code/datums/configuration/mapping_section.dm
И в /datum/configuration_section/mapping
прописываешь свою заплатку по умолчанию сразу после последнего var/preferable_какое-то_название
по типу
var/preferable_your-name = MAP_YOUR-NAME_BASEVARIATION
Например:
var/preferable_adminstash = MAP_ADMINSTASH_BDSMSTASH
Потом чуть ниже в /datum/configuration_section/mapping/load_data(list/data)
добавляешь строку
CONFIG_LOAD_STR(preferable_your-name, data["preferable_your-name"])
И потом еще чуть ниже
if(!(preferable_your-name in list(VARIATION-NAME1, VARIATION-NAME2, VARIATION-NAME3)))
preferable_your-name = MAP_YOUR-NAME_BASEVARIATION
Например
if(!(preferable_adminstash in list(MAP_ADMINSTASH_BDSMSTASH, MAP_ADMINSTASH_UWUDUNGEON)))
preferable_adminstash = MAP_ADMINSTASH_BDSMSTASH
И последнее - не забудь добавить в config/example/config.toml
новый конфиг в [mapping]
секции по типу
## Which yourname should be on map.
## Pick one from: "variation-name1", "variation-name2", "variation-name3"
preferable_your-name = "basevariation"