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

Фикс блюспейс рюкзака и пересмотренное возвращение механики неисправности интерфейса #13724

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

Conversation

hyyda
Copy link

@hyyda hyyda commented Jan 11, 2025

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

fix #13547 Помимо простого и неочевидного фикса бага с невидимым блюспейс рюкзаком теперь создает аномалию при засовывании блюспейс рюкзака в рюкзак. Также во время попыток создать рабочую аномалию пофикшен баг при котором свойства аномалии проявляются лишь раз при спавне, а не каждый тик

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

Исправляет баги и возвращает старую механику в менее грифозном виде

Авторство

hyda, danistans

Чеинжлог

🆑 HyDa, Danistans

  • bugfix: Рюкзак корректно исчезает при засовывании сам в себя.
  • bugfix: Аномалии созданные не ивентом теряли свои свойства.
  • rscadd: Блюспейс рюкзак теперь при засовывании в другой блюспейс рюкзак создает аномалию.

@TauKitty
Copy link
Contributor

Changelog status: ❌ Empty changelog (check markdown correctness)

Copy link
Member

Choose a reason for hiding this comment

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

у тебя довольно странный нейминг функций (да и переменных, но бог с ними). Пиши лучше так, как написано в коде рядом, а рядом снейк кейс, соблюдай похожесть кода.

return

return ..()
/obj/item/weapon/storage/backpack/holding/proc/Make_Anomaly(delay_time, current_anomaly)
Copy link
Member

Choose a reason for hiding this comment

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

Функцию бы вызывать асинхронно, так как есть слип. А я не очень хочу, чтобы attackby и handle_item_insertion останавливались

@@ -49,17 +52,46 @@
max_w_class = SIZE_NORMAL
max_storage_space = 56

var/global/IsHoldingMalfunction = FALSE
Copy link
Member

Choose a reason for hiding this comment

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

Не оч похоже на глобал

QDEL_NULL(warp)
return ..()

/obj/effect/anomaly/grav/process() // Спасибо ДаркВотеру
Copy link
Member

Choose a reason for hiding this comment

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

У нас принято писать комменты на инглише

@@ -28,6 +28,9 @@
S.opened = !S.opened

/obj/item/weapon/storage/backpack/attackby(obj/item/I, mob/user, params)
if(I == src)
Copy link
Member

Choose a reason for hiding this comment

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

Это как

/obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = FALSE, NoUpdate = FALSE)
. = ..()
if(W == src)
Destroy() // каким-то образом удаляет экшен меню при попытке воспроизвести баг и фиксит его
Copy link
Member

Choose a reason for hiding this comment

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

У нас принято писать комменты на инглише

/obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = FALSE, NoUpdate = FALSE)
. = ..()
if(W == src)
Destroy() // каким-то образом удаляет экшен меню при попытке воспроизвести баг и фиксит его
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
Member

Choose a reason for hiding this comment

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

Как вообще можно вставить свой же рюкзак в рюкзак?

Copy link
Author

Choose a reason for hiding this comment

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

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

Copy link
Member

Choose a reason for hiding this comment

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

Крч, вестимо нужно не ЭТО делать, а тыкнуть куда-то проверку в /mob/living/carbon/human/verb/quick_equip(), чтобы нельзя было положить себя в себя

Destroy() // каким-то образом удаляет экшен меню при попытке воспроизвести баг и фиксит его
to_chat(usr, "<span class='red'>Рюкзак засасывается сам в себя и исчезает.</span>")
return
if(istype(W, /obj/item/weapon/storage/backpack/holding/) && !IsHoldingMalfunction && !(W == src))
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
if(istype(W, /obj/item/weapon/storage/backpack/holding/) && !IsHoldingMalfunction && !(W == src))
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !IsHoldingMalfunction && !(W == src))

var/obj/effect/anomaly/anomaly = new current_anomaly(targloc)
IsHoldingMalfunction = TRUE
sleep(delay_time)
anomaly.Destroy()
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
anomaly.Destroy()
qdel(anomaly)

Для любого удаления чего-то используй qdel()

Comment on lines 89 to 94
/obj/item/weapon/storage/backpack/holding/proc/Adjust_Malfunction_Global_Timer()
var/timer = 30 MINUTES
for(timer)
timer -= 1 SECOND
if(!timer)
IsHoldingMalfunction = FALSE
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
Member

Choose a reason for hiding this comment

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

Что это и зачем? Если хочешь IsHoldingMalfunction = FALSE сетать, то просто перенесни к тому слипу в Make_Anomaly

return

return ..()
/obj/item/weapon/storage/backpack/holding/proc/Make_Anomaly(delay_time, current_anomaly)
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 70 to 79
/obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = FALSE, NoUpdate = FALSE)
. = ..()
if(W == src)
Destroy() // каким-то образом удаляет экшен меню при попытке воспроизвести баг и фиксит его
to_chat(usr, "<span class='red'>Рюкзак засасывается сам в себя и исчезает.</span>")
return
if(istype(W, /obj/item/weapon/storage/backpack/holding/) && !IsHoldingMalfunction && !(W == src))
to_chat(usr, "<span class='red'>The Bluespace interfaces of the two devices conflict and malfunction.</span>")
Make_Anomaly(150 SECONDS, /obj/effect/anomaly/grav)
return
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
/obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = FALSE, NoUpdate = FALSE)
. = ..()
if(W == src)
Destroy() // каким-то образом удаляет экшен меню при попытке воспроизвести баг и фиксит его
to_chat(usr, "<span class='red'>Рюкзак засасывается сам в себя и исчезает.</span>")
return
if(istype(W, /obj/item/weapon/storage/backpack/holding/) && !IsHoldingMalfunction && !(W == src))
to_chat(usr, "<span class='red'>The Bluespace interfaces of the two devices conflict and malfunction.</span>")
Make_Anomaly(150 SECONDS, /obj/effect/anomaly/grav)
return
/obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = FALSE, NoUpdate = FALSE)
. = ..()
if(W == src)
Destroy() // каким-то образом удаляет экшен меню при попытке воспроизвести баг и фиксит его
to_chat(usr, "<span class='red'>Рюкзак засасывается сам в себя и исчезает.</span>")
return FALSE
if(istype(W, /obj/item/weapon/storage/backpack/holding/) && !IsHoldingMalfunction && !(W == src))
to_chat(usr, "<span class='red'>The Bluespace interfaces of the two devices conflict and malfunction.</span>")
Make_Anomaly(150 SECONDS, /obj/effect/anomaly/grav)
return FALSE
return TRUE

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

Successfully merging this pull request may close these issues.

Блюспейс рюкзак кладется сам в себя.
3 participants