1 of 23

С чего начинается

Изометрия

Конечно же нужно для начала проставить галочку�build -> preferences -> auto FILEDIR в Dream Maker (Все спрайты лежат в одной папке и нет нужды прописывать точный путь к файлам! Удобно!)

2 of 23

Структура

Вот файловая структура, как тут все устроено? Иерархически.

Основные папки: ATMOS, ATOM, DATUM, ICONS, SOUNDS, SYSTEM.

Основные файлы: dbay3302.dme, dbay3302.dmb, isometris.dm, skin.dmf

Остальное не трогайте.

3 of 23

ATMOS

ATMOS состоит из двух основных папок

ATMOSPHERICS и ZAS, первая хранит в себе всю атмосную машинерию, вторая саму систему атмоса, взаимодействие с турфами, зонами. Вот, главное, что тут нужно понимать.

4 of 23

ATOM: A-AREA T-TURFS O-OBJECTS M-MOBS

Собственно, все объекты, которые могут быть помещены на карту. Делится в данном случае на четыре важные составляющие, как вы могли догадаться из названия. Далее рассмотрим подробнее каждую составляющую.

5 of 23

AREA

Зоны, я их не трогал, по сути из важного там только зона шаттла.

И этого кода там совсем немного(AREAS/area.dm)

/proc/send_supply_shuttle()

var/shuttleat = supply_shuttle_at_station ? SUPPLY_STATION_AREATYPE : SUPPLY_DOCK_AREATYPE //зона отправки (проверка, есть ли в этой зоне шаттл)

var/shuttleto = !supply_shuttle_at_station ? SUPPLY_STATION_AREATYPE : SUPPLY_DOCK_AREATYPE //зона доставки (проверка, есть ли в этой зоне шаттл)

var/area/from = locate(text2path(shuttleat)) //грубо говоря, в shuttleat мы прописываем зону отправки

var/area/dest = locate(text2path(shuttleto)) //а сюда доставки

if(!from || !dest) return //если этих зон нет(хотя бы одной), то ничего не произойдет

from.move_contents_to(dest) //переносим полностью все содержимое одной зоны в другую

supply_shuttle_at_station = !supply_shuttle_at_station //говорим, что шаттл улетел

6 of 23

MOB

Мобы, вообще особенность моей изометрии в том, что файловая структура и структура дерева объектов очень и очень схожи. И это лучше всего можно отследить по папке MOB.

Папка GHOST - содержит код призраков.

Папка SIMULATED - содержит код тех мобов, которые обрабатываются игрой все время, пока длится раунд или моб не помрет

SYSTEM - пока пуста

7 of 23

MOB иерархия

Суть в чем, иерархия мобов представляет из себя:

MOB (1)

SIMULATED(2) GHOST(3) NEW_PLAYER(4)

LIVING (5)

ANIMAL(6) HUMANOID(7)

HUMAN(8)

  1. Моб прародитель, имеет клиента, но больше ничем не выделяется.
  2. Симулируемый моб, моб который обрабатывается игрой, может быть роботом, животным, бактерией, да хоть грибом ебаным.
  3. Призрак, обычно обсерв или мертвый персонаж, ничего не может, кроме летать по станции.
  4. Новый игрок, системный моб, который нужен для настройки персонажа перед входом.

5. Живой. Значит обладающий рядом свойств, умеет дышать, ходить, получать урон, имеет органы.

6. Животное, не умеет пользоваться подавляющим количеством вещей на станции.

7. Гуманоид. Разумное существо, умеет пользоваться подавляющим большинством вещей на станции.

8. Человек, подвид гуманоида.

8 of 23

SIMULATED свойства

Это свойства, которыми обладают

симулируемые мобы. Также часть HUD’а тоже

там.

/mob/simulated

var/bodytemperature = 310.055 //температура тела

var/oxyloss = 0.0 // Кислородный урон

var/toxloss = 0.0 // Токсичный урон

var/brainloss = 0.0 //не работает, забейте

var/ear_deaf = null //не работает, забейте

var/face_dmg = 0 //не работает, забейте

var/halloss = 0 //не работает, забейте

var/hallucination = 0 //не работает, забейте

var/list/atom/hallucinations = list() //не работает, забейте

var/health = 100 //общее здоровье в процентах(от суммы урона всем частям тела)

var/damage_bonus = 0 //модификатор урона (меняется динамически)

var/defense = 5 // модификатор защиты(тоже динамический)

var/revenge = 0 //не работает

var/nodamage = 0 //не работает

var/atom/movable/pulling = null //перетаскиваемый объект пуллом

var/list/stomach_contents = list() //не работает

var/nutrition = 400.0 //сытость

var/mob/my_last_looting //служебный

var/image/overlay_cur //оверлей при say

9 of 23

Функции SIMULATED

MouseDrop_T(mob/simulated/living/humanoid/target, mob/user) + Topic(href, href list) -- Связка, которая работает для лута мобов

verb/Say(msg as text) -- Верб, который позволяет мобам разговаривать

Emote(msg as text) -- Эмоуты

death() -- прок, который обрабатывает смерть персонажа

verb/suicide() -- самоубийство

getOxyLoss() -- Получить цифровое значение кислородного урона

adjustOxyLoss(var/amount) -- Добавить кислородного урона к текущему урону

10 of 23

Функции SIMULATED

getToxLoss() - Получить цифровое значение токсичного урона

adjustToxLoss(var/amount) - Добавить токсического урона к текущему урону

11 of 23

Свойства LIVING

В LIVING в основном хранятся

органы.

/mob/simulated/living

var/list/organs = list() //Список органов

var/brain_op_stage = 0.0 //не работает(в доработке)

var/eye_op_stage = 0.0 //не работает(в доработке)

var/dizziness = 0 //опьянение

var/appendix_op_stage = 0.0 //не работает(в доработке)

var/datum/organ/external/chest/chest //тело

var/datum/organ/external/head/head //голова

var/datum/organ/external/arm/l_arm/l_arm //левая рука

var/datum/organ/external/arm/r_arm/r_arm // правая рука

var/datum/organ/external/leg/r_leg/r_leg // правая нога

var/datum/organ/external/leg/l_leg/l_leg // левая нога

var/datum/organ/external/groin/groin // пах

var/datum/organ/internal/lungs/lungs //легкие

var/datum/organ/internal/heart/heart // сердце

//var/datum/disease2/disease/virus2 = null //не работает(в доработке)

//var/list/datum/disease2/disease/resistances2 = list()//не работает(в доработке)

var/antibodies = 0 //не работает(в доработке)

12 of 23

LIVING функции

getBruteLoss() - Получить цифровое значение брут урона

adjustBruteLoss(var/amount) - Добавить брут урона к текущему урону

getFireLoss() - Получить цифровое значение температурного урона

adjustFireLoss(var/amount) - Добавить температурного урона к текущему урону

handle_chemicals_in_body() - Обработка реагентов в теле моба

rand_damage(var/mind, var/maxd) - Добавить случайное значение брут урона в размере от mind до maxd случайной части тела

rand_burn_damage(var/mind, var/maxd) - Тоже самое, только с температурным уроном

proc/gib() - я думаю вы поняли

blood_flow() - Обработка кровотечений, голода, опьянения, оверлея урона, работы сердца

13 of 23

LIVING функции

updatehealth() - обработка дыхания и обновления индикации здоровья(показателя health)

HealDamage(zone, brute, burn) - излечение части тела zone от физического и температурного урона

apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0) - добавить урон damage типа damatype части тела def_zone минус бонус защиты blocked

get_organ(var/zone) - получить часть тела по названию

heal_burn(var/vol) - излечить весь берн урон в количестве vol

heal_brute(var/vol) - излечить весь брут урон в количестве vol

pain(var/partname, var/amount, var/force) - Боль

14 of 23

HUMANOID

Подобно LIVING и SIMULATED, содержит свои функции, в основном связанные с ношением одежды, инвентарем, взаимодействием с техникой и некоторыми другими вещами.

handle_temperature_damage(body_part, exposed_temperature, exposed_intensity) урон от температуры окружающего воздуха

handle_temperature(var/datum/gas_mixture/environment) обработка температуры тела

process() \\ главный прок, в который включены все остальные проки(подсистемы организма)

15 of 23

do_after(var/time) - выполнять что-то не отрываясь какое-то время

show(var/atom/mybuild) - Показать создаваемый объект

16 of 23

HUMAN

Особо ничем пока не выделяется.

17 of 23

OBJECTS

Главные свойства объектов это density, opacity, anchored. В целом, также как и у мобов, основной прок, это process который автоматически вызывается игрой и обрабатывается каждые n тиков. Объекты подразделяются на item, structure, machinery, effects и остальные

К первым относится все, что можно взять в руку. Ко вторым обычно не обрабатываемые игрой предметы мебели и декора, к третьим разные техники и системы, к эффектам вспышка молнии, дым и взрыв. К остальным служебные объекты(ХУД, лэндмарки и тд.) и некоторые другие эффекты.

18 of 23

Как устроена энергосистема станции

Проводов в изометрии нет, потому АПЦ передает энергию от смеса/получает от генераторов на условном расстоянии. Смес содержит в себе всю собранную АПЦ энергию, АПЦ имеют со смесами один заряд, их не нужно заряжать, тратится энергия одним АПЦ - тратится энергия всей системы.

19 of 23

Интерфейсы

В данном случае простой HTML, с небольшой подключенной таблицей стилей:

https://unpkg.com/purecss@1.0.0/build/pure-min.css\" integrity=\"sha384-nn4HPE8lTHyVtfCBi5yW9d20FjT8BJwUXyWZT9InLYax14RDjBj46LmSztkmNP9w

20 of 23

Фикс “я”

fix255(“здесь текст”)

fix1103(“здесь текст”) для HTML интерфейсов

21 of 23

DATUMS

Турфы(полностью по станционному образу и подобию) рассматривать не особо есть смысл.

А вот датумы стоит глянуть.

22 of 23

AI - Модели поведения роботов

currency - зародыш коммерческой системы

dna - не работает

electronics - Электронные модули для крафтовых плат

events - Ряд случайных событий, активируемых во время игры

idchecker - Проверка айди карт, может быть привязана к любому объекту

jobs - Обработка в соответствии с профессией снаряжения персонажа при спавне

organs - Органы. Подразделяются на внешние и внутренние. Внешние работают одинаково, внутренних два: легкие и сердце.

powernet - полурабочий придаток энергосистемы

recipes - рецепты на кухню

var - нужный для переноса фич с новоТГ кусок кода

23 of 23

SYSTEMS

Рабочих систем не так много, среди них:

Химия, админка, контроллер, ивенты

Химия - содержит взаимодействия разных химических элементов между собой и воздействие на персонажа

Админка - баны

Контроллер - Обрабатывает все, что происходит на станции, самая важная часть

Ивенты - Разные события и гейммоды.