diff --git a/code/modules/smithing/machinery/casting_basin.dm b/code/modules/smithing/machinery/casting_basin.dm index 9faaf6558a0..27c8d4b5fab 100644 --- a/code/modules/smithing/machinery/casting_basin.dm +++ b/code/modules/smithing/machinery/casting_basin.dm @@ -148,6 +148,8 @@ update_icon(UPDATE_OVERLAYS) /obj/machinery/smithing/casting_basin/attack_hand(mob/user) + if(!allowed(user) && !isobserver(user)) + to_chat(user, "Access denied.") if(!we_are_open) to_chat(user, "You open [src].") we_are_open = TRUE diff --git a/code/modules/smithing/machinery/kinetic_assembler.dm b/code/modules/smithing/machinery/kinetic_assembler.dm index c2aefbc3cf1..cb0064625f6 100644 --- a/code/modules/smithing/machinery/kinetic_assembler.dm +++ b/code/modules/smithing/machinery/kinetic_assembler.dm @@ -174,6 +174,9 @@ return ITEM_INTERACT_COMPLETE /obj/machinery/smithing/kinetic_assembler/attack_hand(mob/user) + if(!allowed(user) && !isobserver(user)) + to_chat(user, "Access denied.") + return FINISH_ATTACK if(!primary) to_chat(user, "[src] lacks a primary component!") return FINISH_ATTACK @@ -246,6 +249,7 @@ bound_width = 32 bound_y = 0 operation_sound = 'sound/items/welder.ogg' + req_one_access = list(ACCESS_TOX, ACCESS_XENOBIOLOGY, ACCESS_SMITH) /// Slime extract for the egun var/obj/item/slime_extract/slime_core /// The gun frame @@ -351,6 +355,9 @@ return ITEM_INTERACT_COMPLETE /obj/machinery/smithing/scientific_assembler/attack_hand(mob/user) + if(!allowed(user) && !isobserver(user)) + to_chat(user, "Access denied.") + return FINISH_ATTACK if(!slime_core) to_chat(user, "[src] lacks a slime core!") return FINISH_ATTACK diff --git a/code/modules/smithing/machinery/lava_furnace.dm b/code/modules/smithing/machinery/lava_furnace.dm index 1cc5d776e08..edbcd8c7798 100644 --- a/code/modules/smithing/machinery/lava_furnace.dm +++ b/code/modules/smithing/machinery/lava_furnace.dm @@ -58,6 +58,9 @@ /obj/machinery/smithing/lava_furnace/attack_hand(mob/user) . = ..() + if(!allowed(user) && !isobserver(user)) + to_chat(user, "Access denied.") + return FINISH_ATTACK if(operating) to_chat(user, "[src] is currently operating!") return diff --git a/code/modules/smithing/machinery/power_hammer.dm b/code/modules/smithing/machinery/power_hammer.dm index af463db6671..ee1f81a9cea 100644 --- a/code/modules/smithing/machinery/power_hammer.dm +++ b/code/modules/smithing/machinery/power_hammer.dm @@ -79,6 +79,9 @@ /obj/machinery/smithing/power_hammer/attack_hand(mob/user) . = ..() + if(!allowed(user) && !isobserver(user)) + to_chat(user, "Access denied.") + return FINISH_ATTACK if(operating) to_chat(user, "[src] is currently operating!") return diff --git a/code/modules/smithing/smith_machinery.dm b/code/modules/smithing/smith_machinery.dm index d01456bec2c..3bc35938cf0 100644 --- a/code/modules/smithing/smith_machinery.dm +++ b/code/modules/smithing/smith_machinery.dm @@ -12,6 +12,7 @@ anchored = TRUE density = TRUE resistance_flags = FIRE_PROOF + req_one_access = list(ACCESS_SMITH) /// How many loops per operation var/operation_time = 10 /// Is this active @@ -66,6 +67,14 @@ return ITEM_INTERACT_COMPLETE return ..() +/obj/machinery/smithing/emag_act(user as mob) + if(!emagged) + playsound(get_turf(src), 'sound/effects/sparks4.ogg', 75, 1) + req_one_access = list() + emagged = TRUE + to_chat(user, "You disable the security protocols") + return TRUE + /obj/machinery/smithing/proc/operate(loops, mob/living/user) operating = TRUE update_icon(ALL) @@ -91,6 +100,9 @@ if(G.state < GRAB_NECK) to_chat(user, "You need a better grip to do that!") return FALSE + if(!allowed(user) && !isobserver(user)) + to_chat(user, "You try to shove someone into the machine, but your access is denied!") + return FALSE var/result = special_attack(user, G.affecting) user.changeNext_move(CLICK_CD_MELEE) special_attack_on_cooldown = TRUE