Привет, мои маленькие любители механа. В очередной раз посмотрев на игру из вне, меня/стошнило/вырвало/блевота. И если вы всё ещё не поняли, в этой теме речь пойдёт о коде, чтении кода. А именно нашего кода TauCetiStation.
Тут я не буду читать основы, по типу gun_damage = projectiles_damage. ||И сразу хочу сказать, последовательности не будет. ||
Частично или полностью, я это делаю для себя. Так как хочу иногда смотреть/перечитывать код который я разбирал. Дабы наконец понять как работает игра.
Сценарий такой: Хватаем баг из:
И далее пытаемся найти причину, попутно вникая в структуру и механизмы работы, различных механик.
Итак:
Bug#8425
File:
- code\game\gamemodes\modes_gameplays\changeling\headcrab.dm
- code\modules\mob\living\carbon\human\death.dm
- code\modules\organs\organ_external.dm
Так как нас интересует спавн краба, после отсечения головы генокрада начнём с его создания.
Файл 1
В выделенном куске кода, создаётся Хэдкраб, на месте тайла пользователя(генокрада)
Далее идёт переселение эссенции(игрока).
Проблем не видно, идём дальше.
Файл 2
Тут идёт перехват действия. Когда кукла умирает, Точнее сказать, во время смерти идёт проверка на роль генокрада и кольво химикатов для активации.
После вызывается файл #1
Тоже не особо запутанно,ошибки нету.
Поехали дальше.
Файл 3
Тут начинается огромный механ отсечь/испепелить/размазать
Объяснять его мне лень, покажу нужные нам моменты.
А сейчас рассказываю, при нанесении большого урона (смотри в билде) конечность 1) отлетает, если урон режущий. 2) Удаляется, если урон огненный или тупой.
Теперь можете подумать, почему хэдкраб не спавнится на месте трупа, когда в голову стреляют слагом.
Причина бага
Коротко: Краб спавнится на тайле пользователя/куклы, но когда мы отсоединяем голову от тела, пользователь находится в ней. И теперь у нас есть два случая, 1) урон был режущий - голова есть. 2) Урон был тупой или испепеляющий, голова была удалена.
Так и возник данный баг, хэдкраб не знает куда ему спавнится.
Всем спасибо. Чтение получилось малоинформативным, в следующий раз будут комментарии к строчкам.
оправдания
Время воот:
Тратить на 30 минут больше, НЕ БУДУ. СОСИ
Если есть вопросы задавайте, либо предлагайте новые ишью на разбор.