mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 03:55:11 +01:00
[MIRROR] Refactor modular computer (and application) attackby into item_interaction (#28360)
* Refactor modular computer (and application) attackby into item_interaction (#84245) ## About The Pull Request Sooooooooo I was recently notified of an issue (#84185) that popped up from me replacing the `attackby(...)` chain on id cards, where it's no longer possible to put money into IDs inside of PDAs by slapping it against the PDA. As I expected, this is because modular computers both still use `attackby(...)`, and would call `attackby(...)` on the ID they contained if hit with cash. https://github.com/tgstation/tgstation/blob/24a23009e8ee4d056b6671c70c41feab1a18590b/code/modules/modular_computers/computers/item/computer.dm#L799 Now this could've been an easy one line no-gbp fix where I just replace it with a direct call to `insert_money(...)` on the ID and call it a day! But hey. Might as well get rid of the `attackby(...)` altogether while we're at it. First off, because the `attackby(...)` proc was getting quite bloated, we split off all the specific item behaviours into `[X]_act(...)` type procs to clean it up. We then make those return item interaction flags, so we can call them on `item_interaction(...)` after the right typecheck passes and immediately return their results. This also involves replacing the `application_attackby(...)` on applications with an `application_item_interaction(...)`, and making it return the item interaction flags too. The code of each subsection isn't significantly different, though reorganized a bit in some cases. Like inserting a computer disks now tries to move it into the computer _first_ before swapping out whichever disk is already in there, so it doesn't swap out the disk if putting the new one in fails. ## Why It's Good For The Game Fixes #84185. Having more stuff be updated to the proper `item_interaction(...)` system is cool and good. * Refactor modular computer (and application) attackby into item_interaction --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
This commit is contained in:
@@ -26,13 +26,16 @@
|
||||
if(!CONFIG_GET(flag/no_default_techweb_link) && !stored_research)
|
||||
CONNECT_TO_RND_SERVER_ROUNDSTART(stored_research, computer)
|
||||
|
||||
/datum/computer_file/program/science/application_attackby(obj/item/attacking_item, mob/living/user)
|
||||
if(!istype(attacking_item, /obj/item/multitool))
|
||||
return FALSE
|
||||
var/obj/item/multitool/attacking_tool = attacking_item
|
||||
if(!QDELETED(attacking_tool.buffer) && istype(attacking_tool.buffer, /datum/techweb))
|
||||
stored_research = attacking_tool.buffer
|
||||
return TRUE
|
||||
/datum/computer_file/program/science/application_item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
||||
if(istype(tool, /obj/item/multitool))
|
||||
return multitool_act(user, tool)
|
||||
|
||||
/datum/computer_file/program/science/proc/multitool_act(mob/living/user, obj/item/multitool/used_multitool)
|
||||
if(QDELETED(used_multitool.buffer) || !istype(used_multitool.buffer, /datum/techweb))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
stored_research = used_multitool.buffer
|
||||
computer.balloon_alert(user, "buffer linked!")
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/datum/computer_file/program/science/ui_assets(mob/user)
|
||||
return list(
|
||||
|
||||
Reference in New Issue
Block a user