[Путь к великому] Учимся читать заново

Привет, мои маленькие любители механа. В очередной раз посмотрев на игру из вне, меня/стошнило/вырвало/блевота. И если вы всё ещё не поняли, в этой теме речь пойдёт о коде, чтении кода. А именно нашего кода TauCetiStation.


Тут я не буду читать основы, по типу gun_damage = projectiles_damage. ||И сразу хочу сказать, последовательности не будет. ||

Частично или полностью, я это делаю для себя. Так как хочу иногда смотреть/перечитывать код который я разбирал. Дабы наконец понять как работает игра.

Сценарий такой: Хватаем баг из:


И далее пытаемся найти причину, попутно вникая в структуру и механизмы работы, различных механик.


Итак:
Bug#8425
File:

  1. code\game\gamemodes\modes_gameplays\changeling\headcrab.dm
  2. code\modules\mob\living\carbon\human\death.dm
  3. code\modules\organs\organ_external.dm

Так как нас интересует спавн краба, после отсечения головы генокрада начнём с его создания.
Файл 1


В выделенном куске кода, создаётся Хэдкраб, на месте тайла пользователя(генокрада)
Далее идёт переселение эссенции(игрока).
Проблем не видно, идём дальше.
Файл 2

Тут идёт перехват действия. Когда кукла умирает, Точнее сказать, во время смерти идёт проверка на роль генокрада и кольво химикатов для активации.
После вызывается файл #1
Тоже не особо запутанно,ошибки нету.
Поехали дальше.
Файл 3


Тут начинается огромный механ отсечь/испепелить/размазать
Объяснять его мне лень, покажу нужные нам моменты.
image

image
А сейчас рассказываю, при нанесении большого урона (смотри в билде) конечность 1) отлетает, если урон режущий. 2) Удаляется, если урон огненный или тупой.

Теперь можете подумать, почему хэдкраб не спавнится на месте трупа, когда в голову стреляют слагом.

Причина бага

Коротко: Краб спавнится на тайле пользователя/куклы, но когда мы отсоединяем голову от тела, пользователь находится в ней. И теперь у нас есть два случая, 1) урон был режущий - голова есть. 2) Урон был тупой или испепеляющий, голова была удалена.
Так и возник данный баг, хэдкраб не знает куда ему спавнится.


Всем спасибо. Чтение получилось малоинформативным, в следующий раз будут комментарии к строчкам.

оправдания

Время воот:
image
Тратить на 30 минут больше, НЕ БУДУ. СОСИ

Если есть вопросы задавайте, либо предлагайте новые ишью на разбор.

Оставить едкий критический комментарий. button

Пойти нахуй

4 симпатии

Отлично, а фиксить то кто будет?

1 симпатия

То есть нужно вставить проверку на хедслага перед удалением или что?

Можно попробовать обозначать турф не через юзера

А вариант засунуть сознание генокрада вместе с хедслагом в тело, не меняя механа отстрела башки и проверкой этого ластрезортом реализуемо? Или сознание всегда будет в голове и это не поменять? а если сделать две головы…?

предлагаю просто закрыть бйондо код и никогда больше в жизни его не открывать

8 симпатий

Лучше в дисе дискутировать. Ты там есть?

Я думал тут фиксы будут, а тут какие-то размышления на тему «так писали код наши шизопредки».

3 симпатии

Ну, историю тоже писали наши шизопредки, так то.