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

fix(advtool): removing necessary parents #12858

Open
wants to merge 6 commits into
base: dev
Choose a base branch
from

Conversation

BaraBarax
Copy link
Contributor

Создавать целый отдельный подтип инструментов ради одного крутого мультитула это конечно круто, но почему бы просто не засунуть его в сыновья обычного для меньшей мозгоёбки?

close #12856
close #12044

Чейнджлог
🆑BaraBara
bugfix: Продвинутый мультитул теперь может взаимодействовать с телекоммами.
/🆑
  • Pull Request полностью завершен, мне не нужна помощь чтобы его закончить.
  • Я внимательно прочитал(-а) все свои изменения и багов в них не нашёл(-ла).
  • Я запускал(-а) сервер со своими изменениями локально и все протестировал(-а).
  • Я ознакомился(-ась) c Guide to Contribute.

@BaraBarax BaraBarax requested a review from a team as a code owner September 28, 2024 19:39
@github-actions github-actions bot added 🗺️ карта Мапдиффы 100500к+- и миссклики ломающие станцию 📜 Есть CL Чейнджлог в наличии и не содержит ошибок labels Sep 28, 2024
Copy link
Member

@TobyThorne TobyThorne left a comment

Choose a reason for hiding this comment

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

ОП не осилил факт, что смысл тула - в переключении между мультитулом, отвёрткой и кусачками.

@BaraBarax
Copy link
Contributor Author

BaraBarax commented Sep 28, 2024

А он потерял эту возможность? Он в первую очередь мультитул, в смысле хуйня для тыканья в проводки, к которому приделали отвёртку и кусачки

@Filatelele
Copy link
Member

Честно? Проблема не в коде адвтула. И решаться должна не так.

/obj/machinery/telecomms/attack_hand(mob/user)

	if(stat & (BROKEN|NOPOWER))
		return TRUE

	var/obj/item/device/multitool/P = get_multitool(user)

	if(!P)
		return TRUE

/proc/get_multitool(mob/user)
	var/obj/item/device/multitool/MT = null
	if(!issilicon(user))
		if(isMultitool(user.get_active_hand()))
			MT = user.get_active_hand()
	else if(isAI(user))
		var/mob/living/silicon/ai/AI = user
		MT = AI.aiMulti
	else if(isrobot(user))
		if(isMultitool(user.get_active_hand()))
			MT = user.get_active_hand()
	return MT

Здесь нахуй что-то не то, потому что get_multitool() возвращает любой айтем у которого тул бихейвиор == TOOL_MULTITOOL

Но только device/multitool умеет в get_buffer() и аналогичное

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

@BaraBarax
Copy link
Contributor Author

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

@BaraBarax BaraBarax closed this Sep 28, 2024
code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
if(!screwdriver)
contents += SD
user.drop(SD, src)
screwdriver = SD
Copy link
Member

Choose a reason for hiding this comment

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

Не обязательно. На будущее. Есть крутое решение, чтобы не ебаться с присвоением переменных когда чет дропаешь в атом.

Переопределяешь Entered() и когда чет попадает внутрь - смотришь по изтайпу и присваиваешь в нужную переменную. Аналогично с Exited() - обнуляешь ссылки.

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

code/game/objects/items/devices/multitool.dm Outdated Show resolved Hide resolved
@Filatelele
Copy link
Member

А нахуя я ревью делал если автор все закрыл?
Сука.

@BaraBarax BaraBarax reopened this Sep 28, 2024
@BaraBarax
Copy link
Contributor Author

Уэээ, ну я подумал что если все молчат то так и будет

@Filatelele
Copy link
Member

Уэээ, ну я подумал что если все молчат то так и будет

Ну решение очевидно субоптимальное но я хз того рот ебал
Пусть Игорь решает мне впадлу думать ревув кода я дал
Но компонент с сигналами это сто строк кода не более

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📜 Есть CL Чейнджлог в наличии и не содержит ошибок 🗺️ карта Мапдиффы 100500к+- и миссклики ломающие станцию
Projects
None yet
3 participants