Skip to content

Guide to mapping (Заплатки эдишен)

goliath edited this page Feb 26, 2023 · 3 revisions

Гайд ту заплатки фор даммис 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"