From cd8224897439e38efc64f8d2293c6ae42cb2e311 Mon Sep 17 00:00:00 2001 From: Rerik007 <120549107+Rerik007@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:39:13 +0300 Subject: [PATCH] bugfix: fixes access control eating and holding (#4778) * fixes access control * Update code/game/machinery/doors/airlock_electronics.dm * Update door_assembly.dm * forcemove_turf --- code/game/machinery/doors/access_control.dm | 3 ++ .../machinery/doors/airlock_electronics.dm | 28 +++++++++++++++++- .../objects/items/weapons/storage/bags.dm | 18 ++++++++--- code/game/objects/structures/door_assembly.dm | 13 ++++++++ icons/obj/doors/door_assembly.dmi | Bin 50839 -> 50991 bytes 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/doors/access_control.dm b/code/game/machinery/doors/access_control.dm index 075baf54e34..cbf9d9fe6fc 100644 --- a/code/game/machinery/doors/access_control.dm +++ b/code/game/machinery/doors/access_control.dm @@ -11,6 +11,9 @@ req_access = list(ACCESS_ENGINE) toolspeed = 1 usesound = 'sound/items/deconstruct.ogg' + material_type = MATERIAL_CLASS_TECH + max_bites = 1 + nutritional_value = 10 /// List of accesses currently set var/list/selected_accesses = list() diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 01ac78227f3..35241abf6b2 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -9,12 +9,38 @@ usesound = 'sound/items/deconstruct.ogg' multitool_menu_type = /datum/multitool_menu/idtag/airlock_electronics - + + var/obj/item/access_control/access_electronics = null var/id /obj/item/airlock_electronics/multitool_act(mob/user, obj/item/I) . = TRUE multitool_menu_interact(user, I) +/obj/item/airlock_electronics/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/access_control) && !access_electronics) + if(!user.drop_transfer_item_to_loc(I, src)) + return + access_electronics = I + update_icon(UPDATE_OVERLAYS) + return TRUE + return ..() + +/obj/item/airlock_electronics/screwdriver_act(mob/living/user, obj/item/I) + if(!access_electronics) + return FALSE + access_electronics.forceMove_turf() + if(iscarbon(user)) + var/mob/living/carbon/carbon_user = user + carbon_user.put_in_hands(access_electronics, ignore_anim = FALSE) + access_electronics = null + update_icon(UPDATE_OVERLAYS) + return TRUE + +/obj/item/airlock_electronics/update_overlays() + . = ..() + if(access_electronics) + . += "access-control-overlay" + /obj/item/airlock_electronics/syndicate name = "suspicious airlock electronics" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 010c6d989ab..8ca10668f51 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -403,10 +403,20 @@ max_w_class = WEIGHT_CLASS_NORMAL w_class = WEIGHT_CLASS_TINY can_hold = list( - /obj/item/assembly, /obj/item/circuitboard, /obj/item/intercom_electronics, - /obj/item/airlock_electronics, /obj/item/firelock_electronics, /obj/item/tracker_electronics, - /obj/item/firealarm_electronics, /obj/item/airalarm_electronics, /obj/item/apc_electronics, - /obj/item/stock_parts/cell, /obj/item/stock_parts, /obj/item/camera_assembly) + /obj/item/assembly, + /obj/item/circuitboard, + /obj/item/intercom_electronics, + /obj/item/airlock_electronics, + /obj/item/firelock_electronics, + /obj/item/tracker_electronics, + /obj/item/firealarm_electronics, + /obj/item/airalarm_electronics, + /obj/item/apc_electronics, + /obj/item/stock_parts/cell, + /obj/item/stock_parts, + /obj/item/camera_assembly, + /obj/item/access_control + ) resistance_flags = FLAMMABLE /* diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 08614b684ed..4831618bfb7 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -103,6 +103,17 @@ state = AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER name = "near finished airlock assembly" airlock_electronics = W + var/obj/item/airlock_electronics/electronics = W + if(electronics.access_electronics) + if(electronics.access_electronics.emagged || access_electronics) + to_chat(user, span_warning("[electronics.access_electronics] не вставляется в [src]")) + electronics.access_electronics.forceMove(user.drop_location()) + electronics.access_electronics = null + return + electronics.access_electronics.forceMove(src) + to_chat(user, span_notice("You install the access control electronics.")) + access_electronics = electronics.access_electronics + electronics.access_electronics = null else if(istype(W, /obj/item/access_control) && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) var/obj/item/access_control/control = W @@ -231,6 +242,8 @@ door.check_one_access = access_electronics.one_access access_electronics.forceMove(door) access_electronics = null + else + door.has_access_electronics = FALSE qdel(src) update_icon(UPDATE_OVERLAYS) diff --git a/icons/obj/doors/door_assembly.dmi b/icons/obj/doors/door_assembly.dmi index f8c1e979ff9b44df1b0046e14e81f4adb0db63a7..7f7b5a976400b5c293154239e794f376c4d796cc 100644 GIT binary patch delta 9824 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 delta 9651 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 X