Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Хирургические манипуляции с органами + импланты для них #13552

Closed
wants to merge 22 commits into from

Conversation

TriflesChase
Copy link
Contributor

@TriflesChase TriflesChase commented Sep 25, 2024

Описание изменений

Переносит "organ" в "surgery", ради красоты
Добавляет слоты для органов, спрайты органов, пару базовых имплантов, операции.
Почти не затронуты СПУ и дионы
При желании можно переработать большую часть, добавить или убрать
И в общем, просто добавит чуть более динамичные и ?ВЕСЁЛЫЕ? органы, основанные на парадизах, которые основаны на тг

Почему и что этот ПР улучшит

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

Авторство

Aurorablade с англо парадайзов, откуда взята большая часть кода, а так же сам ПР на который опиралась:
ParadiseSS13/Paradise#2903
@WatlerJe сделал прекрасные спрайты

Чеинжлог

🆑

  • add: Динамичная система органов
  • image: Спрайты органов для всех рас

@TauKitty
Copy link
Contributor

Changelog status: ✔️

@TauKitty TauKitty added Feature Новая фича Map Edit Sprites labels Sep 25, 2024
@TauKitty TauKitty requested a review from a team September 25, 2024 02:14
Они были перенесены
@maleyvich
Copy link
Contributor

КРУТО

@AzzyDreemurr13
Copy link
Contributor

Подарок на ДР Малевича :peka:

@DarkFurrSss
Copy link
Contributor

Наконец-то смогу собрать коллекцию почек со всей станции

@KIBORG04
Copy link
Member

А можно, чтобы было не сломано?

@WatlerJe
Copy link
Contributor

ТГ спрайты нам не подходят, сейчас занимаюсь новыми на основе тех, что делал Малевичу.

@Chip11-n
Copy link
Contributor

Chip11-n commented Sep 26, 2024

Оно WIP и просто плашки нет? Если все же нет, то код нерабочий - посмотри в боте.

Термальное зрение чейджлингов теперь убирается и добавляется корректно, и исправлены ошибки кода цветов и проков
Copy link
Contributor

@NinjaPikachuska NinjaPikachuska left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

круто

code/modules/surgery/organs/organ_internal.dm Show resolved Hide resolved
code/modules/surgery/organs/organ_internal.dm Outdated Show resolved Hide resolved
code/modules/surgery/gender_reassignment.dm Show resolved Hide resolved
code/modules/surgery/organs_internal.dm Outdated Show resolved Hide resolved
code/modules/surgery/organs_internal.dm Outdated Show resolved Hide resolved
code/modules/surgery/eye.dm Outdated Show resolved Hide resolved
code/modules/surgery/eye.dm Show resolved Hide resolved
code/modules/surgery/organs/organ.dm Outdated Show resolved Hide resolved
code/modules/surgery/eye.dm Outdated Show resolved Hide resolved
Comment on lines -1 to 5
/mob/living/carbon/human
/mob/living/carbon
var/list/obj/item/organ/external/bodyparts = list()
var/list/obj/item/organ/external/bodyparts_by_name = list()
var/list/obj/item/organ/internal/organs = list()
var/list/obj/item/organ/internal/organs_by_name = list()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а зачем это поднимать на уровень карбонов?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У меня не получилось заставить работать только на людях
И собираюсь в будущем добавить органы мартышкам

@NinjaPikachuska NinjaPikachuska changed the title [HOLY SHIT!]Charlie, lets go to candy mountain, charlie! Хирургические манипуляции с органами + импланты для них Sep 28, 2024
@AzzyDreemurr13 AzzyDreemurr13 added this to the Surgery milestone Sep 29, 2024
Добавила спрайты Вальтера, убрала недомеханические замену органов оставив лишь кибернетику, ну и попыталась привести в коде всё в порядок... Ну почти
В операциях теперь ранние возвраты, добавлена дополнительная проверка для глаз, имплант для глаз теперь полноценно защищает от сварки
@TauKitty TauKitty requested a review from a team October 7, 2024 12:55
@DarkFurrSss
Copy link
Contributor

А можно, чтобы было не сломано?

Теперь у СПУ мозг корректно переходит в позитроник при гибе, а дионы в нимфу

А у особкового в нормальный мозг?

Copy link
Contributor

@Kiromaka Kiromaka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Новые фичи nice, жалко на основе парадизов. Перевод просить не буду, апрув английского. Еще это WIP, видимо - где тег в названии?

Copy link
Contributor

@AzzyDreemurr13 AzzyDreemurr13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если оно не влияет на текущие переводы которые в боди сканере и другие мед переводы, то и вопросов нет.

Добавила механические органы, а так же добавила их крафт роботистам. Так же, при особке на СПУ будет доставаться MMI корректно, а не позитроник.
@TauKitty TauKitty requested a review from a team October 10, 2024 19:21
@TriflesChase
Copy link
Contributor Author

А у особкового в нормальный мозг?

В mmi, спасибо, что напомнил про особку

@TriflesChase
Copy link
Contributor Author

Новые фичи nice, жалко на основе парадизов. Перевод просить не буду, апрув английского. Еще это WIP, видимо - где тег в названии?

I missed it. Но код уже завершён и ничего не собираюсь добавлять больше. Если только не исправить часть логики кода, наверное?

@AzzyDreemurr13
Copy link
Contributor

Но код уже завершён и ничего не собираюсь добавлять больше

Ты можешь глянуть, в Боди сканере ничего не сломалось касательно добавленных тобою органов, если там всё нормально отображается, то всё окей.

@TriflesChase
Copy link
Contributor Author

Ты можешь глянуть, в Боди сканере ничего не сломалось касательно добавленных тобою органов, если там всё нормально отображается, то всё окей.

Да, проверила, если органов не будет в теле, они просто не будут показываться в сканере

@AzzyDreemurr13
Copy link
Contributor

А ну по идее тогда всё хорошо должно быть, наверное вначале твой ПР в тест мерж закинут, то сможем если что глянуть.

@TriflesChase
Copy link
Contributor Author

Сразу после плувийцев и добавления и для них органов

Исправила ошибку, из за которой у всех не было печени, добавила всем расам разную чувствительность, и теперь скреллы полностью имунны к опьянению
добавила глазам "darksight", теперь можно будет чуть лучше видеть в темноте, если вырезать глаза таяр, но не полноценно
Comment on lines +25 to +32
/mob/living/carbon/human/proc/get_organ(zone)
if(!zone)
zone = BP_CHEST
if(zone in list(O_EYES, O_MOUTH))
zone = BP_HEAD

return organs_by_name[zone]

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зона - это зона. Это часть тела. organs_by_name же хранит название органа по органу, мы не может получить орган, зная часть тела, используя этот лист.
Крч, прок не работает, всегда возвращать нулл будет

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Починила, пропустила этот момент

@@ -234,6 +234,8 @@
// Used for statistics of death
var/last_phrase

var/weakeyes //Are they vulnerable to flashes?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мы же вроде реворкаем ограны, почему эта переменная в /mob вообще, а не в органе глаз?

Comment on lines +41 to +51
/obj/item/organ/internal/cyberimp/eyes/thermals/ling/insert_organ(mob/living/carbon/human/M, special = 0)
..()
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
H.weakeyes = 1

/obj/item/organ/internal/cyberimp/eyes/thermals/ling/remove(mob/living/carbon/M, special = 0)
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
H.weakeyes = 0
..()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А потом орган присваивает значение этой переменной у хумана, жесть

Comment on lines 94 to +98
var/mob/living/carbon/human/H = O
var/obj/item/organ/internal/eyes/IO = H.organs_by_name[O_EYES]
if (IO.damage > IO.min_bruised_damage && prob(IO.damage + 50))
H.flash_eyes()
IO.damage += rand(1, 5)
if(IO)
if(O.weakeyes)
O.Weaken(strength * 1.5)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А могло бы быть IO.weakeyes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Удалено

@@ -2,7 +2,7 @@
//////////////////////////////////////////////////////////////////
// APPENDECTOMY //
//////////////////////////////////////////////////////////////////

/*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

за что аппендицит..

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Когда ни будь вернётся

@@ -7,6 +7,7 @@
/datum/surgery_step/cavity
priority = 1
allowed_species = null
var/obj/item/organ/internal/I = null
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что ето и зачем

if(!owner)
return
owner.reagents.add_reagent("????",poison_amount / severity) //food poisoning
owner << "<span class='warning'>You feel like your insides are burning.</span>"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ноу комментс

Comment on lines +162 to +165
if(!breath || (breath.total_moles == 0))
adjustOxyLoss(5)
throw_alert("not_enough_oxy", /atom/movable/screen/alert/oxy)
return FALSE
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

алерты желательно не выносить из handle_alerts()
(как минимум по той причине что в таком виде алерт не удалится и останется с игроком навсегда)
лучше inhale_alert = TRUE

Copy link
Member

@KIBORG04 KIBORG04 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Убедительно прошу автора разбить ПР всё же на механо-часть(базу) и контенто-часть.

Я вижу тут какие-то имлпанты, технологии РНД, кибер тела, кучу хирургических операций к ним, кучу кода, который еще надо хоть как-то отбалансить.
Есть как полезный код c рефактором объемных кусков, так и совершенно отстранённые от него технологии.
Я думаю, разделить код на два ПРа не займет много труда, зато облегчит дальнейшую разработку как с твоей стороны, так и с нашей, ревьюверско-тестерской. Нам тупо лень даже начинать ревьювить это чудо на 1600 диффа, это даже видно из того, что за 3! недели особо никто так и не посмотрел ничего, а править тут можно многое.

TLDR: убери из этого ПРа всякие имплатны, рнд технологии, глаза ченджлинга и вот всякое такое, а органы людей, рас оставь

Comment on lines +24 to +26
/mutable_appearance/clean/New()
. = ..()
alpha = 255
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тоже не используется

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Удалено

Comment on lines +13 to +14
/mob/living/carbon/get_int_organ(typepath)
return (locate(typepath) in organs_by_name)
Copy link
Contributor

@NinjaPikachuska NinjaPikachuska Oct 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а зачем это вообще? почему просто не organs_by_name[organ_name] как ниже?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Потому что иначе не работает в некоторых местах

Comment on lines +16 to +17
/mob/living/carbon/proc/get_int_organ_by_name(tag_to_check)
return organs_by_name[tag_to_check]
Copy link
Contributor

@NinjaPikachuska NinjaPikachuska Oct 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тоже непонятно почему нельзя просто organs_by_name[tag_to_check], зачем это в прок определять

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

organs_by_name не работает при проверке лёгких для дыхания

Comment on lines +22 to +25
/mob/living/carbon/get_int_organ_tag(tag)
for(var/obj/item/organ/internal/O in organs)
if(tag == O.organ_tag)
return O
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

разве это не organs_by_name[tag] буквально?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Оказался не нужным, удалила

Comment on lines +27 to +28
/proc/is_int_organ(atom/A)
return istype(A, /obj/item/organ/internal)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в is_helpers.dm перенести бы и через дефайн, а не прок

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Удалено

@@ -10,10 +10,17 @@
// And yes this does have to be in the constructor, BYOND ignores it if you set it as a normal var

// Helper similar to image()
/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE)
/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, plane = FLOAT_PLANE, color)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавляя новый аргумент alpha до plane мы рискуем, что в каком-то создании mutable_appearance будет передаваться плейн (int) в альфу (int) и что-то сломается.
И мы не то что рискуем, а так оно и есть. Да и я так же не заметил, чтобы эти новые альфа и колор как-то менялись или использовались, мб просто не нашел /shrug

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Удалено

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants