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

Open
wants to merge 11 commits into
base: master
Choose a base branch
from

Conversation

TriflesChase
Copy link
Contributor

@TriflesChase TriflesChase commented Sep 25, 2024

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

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

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

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

Авторство

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

Чеинжлог

🆑

  • 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

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

var/mob/living/L = antag.current
L.changeling_aug = FALSE

*/
/mob/proc/remove_changeling_powers(keep_free_powers=0)
Copy link
Contributor

Choose a reason for hiding this comment

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

Либо сейчас, либо потом такие комменты тебя попросят удалить

@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.

круто

Comment on lines +34 to +37
if(M.organs_by_name[organ_tag] == src)
M.organs_by_name -= organ_tag
if(M.internal_organs_slot[slot] == src)
M.internal_organs_slot.Remove(slot)
Copy link
Contributor

Choose a reason for hiding this comment

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

а чем листы отличаются между собой?

Comment on lines +191 to +193
spawn(120)
beating = 0
update_icon()
Copy link
Contributor

Choose a reason for hiding this comment

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

просьба все spawn(time) переписать на addtimer()

Comment on lines -25 to +27
/obj/item/weapon/scalpel = 100, \
/obj/item/weapon/kitchenknife = 75, \
/obj/item/weapon/shard = 50, \
/obj/item/weapon/retractor = 100, \
/obj/item/weapon/kitchen/utensil/fork = 75, \
/obj/item/weapon/screwdriver = 50
Copy link
Contributor

Choose a reason for hiding this comment

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

это конфликтует со стандартной операцией по вскрытию части тела (скальпель, гемостат, ретракторы)

Comment on lines +30 to +54
if(istype(target,/mob/living/carbon/human))
if(target_zone in list(O_EYES , O_MOUTH, BP_HEAD))
return 0
if(is_int_organ(tool))
var/obj/item/organ/internal/I = tool
if(I.requires_robotic_bodypart)
user.visible_message ("<span class='warning'>[I] is an organ that requires a robotic interface! [target]'s [parse_zone(target_zone)] does not have one.</span>")
return 0

if(target_zone != I.parent_bodypart || target.get_organ_slot(I.slot))
user.visible_message ( "<span class='notice'>There is no room for [I] in [target]'s [parse_zone(target_zone)]!</span>")
return 0

if(I.damage > (I.max_damage * 0.75))
user.visible_message ( "<span class='notice'> \The [I] is in no state to be transplanted.</span>")
return 0

if(target.get_int_organ(I))
user.visible_message ( "<span class='warning'> \The [target] already has [I].</span>")
return 0

else
return 1

else return 0
Copy link
Contributor

@NinjaPikachuska NinjaPikachuska Sep 28, 2024

Choose a reason for hiding this comment

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

страшная стена табов
почему бы не переписать на ранние возвраты?
(желательно везде где такая стена есть)

if(!ishuman(target))
     return FALSE
if(target_zone in list(O_EYES , O_MOUTH, BP_HEAD))
     return FALSE
...

Comment on lines +61 to +64
/* user.visible_message("[user] starts putting \the [tool] inside [target].", \
"You start putting \the [tool] inside [target]." )
target.custom_pain("The pain in your chest is living hell!",1)
*/
Copy link
Contributor

Choose a reason for hiding this comment

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

все такие комментарии желательно удалить, для архивации старого кода есть гитхаб

user.visible_message ( "<span class='warning'> \The [target] already has [I].</span>")
return 0
else
user.visible_message("it work")
Copy link
Contributor

Choose a reason for hiding this comment

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

user.visible_message("it work")
huh?

return
var/obj/item/organ/internal/I = choosen_organ
I.status |= ORGAN_CUT_AWAY
I.remove(target)
Copy link
Contributor

Choose a reason for hiding this comment

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

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

var/obj/item/organ/internal/eyes/IO = H.organs_by_name[O_EYES]
if (IO.damage > IO.min_bruised_damage && prob(IO.damage + 50))

var/obj/item/organ/internal/eyes/IO = H.organs_by_name[O_EYES]
if(IO.damage >= IO.min_bruised_damage)

и т.д.


/obj/item/organ/Destroy()
owner = null
return ..()

/obj/item/organ/proc/remove(var/mob/living/user,special = 0)
Copy link
Contributor

Choose a reason for hiding this comment

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

и так везде

Suggested change
/obj/item/organ/proc/remove(var/mob/living/user,special = 0)
/obj/item/organ/proc/remove(mob/living/user, special = 0)



/datum/surgery_step/eye/manipulation/place/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if(istype(target,/mob/living/carbon/human))
Copy link
Contributor

Choose a reason for hiding this comment

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

и так везде

Suggested change
if(istype(target,/mob/living/carbon/human))
if(ishuman(target))

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.

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

@NinjaPikachuska NinjaPikachuska changed the title [HOLY SHIT!]Charlie, lets go to candy mountain, charlie! Хирургические манипуляции с органами + импланты для них Sep 28, 2024
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.

9 participants