diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index c502e36ae8..20e44aa093 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -275,16 +275,15 @@ /obj/structure/closet/proc/tool_interact(obj/item/W, mob/living/user)//returns TRUE if attackBy call shouldn't be continued (because tool was used/closet was of wrong type), FALSE if otherwise . = TRUE if(opened) - if(istype(W, /obj/item/weldingtool)) - if(W.tool_behaviour == TOOL_WELDER) - // eigen check - if(eigen_teleport) - to_chat(user, "The unstable nature of \the [src] makes it impossible to deconstruct!") - return + if(W.tool_behaviour == cutting_tool) + // eigen check + if(eigen_teleport) + to_chat(user, "The unstable nature of \the [src] makes it impossible to deconstruct!") + return + if(W.tool_behaviour == TOOL_WELDER) if(!W.tool_start_check(user, amount=0)) return - to_chat(user, "You begin cutting \the [src] apart...") if(W.use_tool(src, user, 40, volume=50)) if(!opened) @@ -294,13 +293,27 @@ "You hear welding.") deconstruct(TRUE) return - else // for example cardboard box is cut with wirecutters + else if(W.tool_behaviour == TOOL_WIRECUTTER) + W.use_tool(src, user, 40, volume=50) user.visible_message("[user] cut apart \the [src].", \ "You cut \the [src] apart with \the [W].") deconstruct(TRUE) return + W.use_tool(src, user, 40, volume=50) + user.visible_message("[user] deconstructed \the [src].", \ + "You deconstructed \the [src] with \the [W].") + deconstruct(TRUE) //Honestly by this point, if all checks were right and this is the cutting tool, just cut it + return if(user.transferItemToLoc(W, drop_location())) // so we put in unlit welder too return + else if(!opened && user.a_intent == INTENT_HELP && !W.tool_behaviour) + var/item_is_id = W.GetID() + if(!item_is_id) + open(user) + return + if(item_is_id || !toggle(user)) + togglelock(user) + return else if(W.tool_behaviour == TOOL_WELDER && can_weld_shut) // eigen check if(eigen_teleport) @@ -328,12 +341,6 @@ user.visible_message("[user] [anchored ? "anchored" : "unanchored"] \the [src] [anchored ? "to" : "from"] the ground.", \ "You [anchored ? "anchored" : "unanchored"] \the [src] [anchored ? "to" : "from"] the ground.", \ "You hear a ratchet.") - else if(user.a_intent != INTENT_HARM && !(W.item_flags & NOBLUDGEON)) - var/item_is_id = W.GetID() - if(!item_is_id) - return FALSE - if(item_is_id || !toggle(user)) - togglelock(user) // cit addons else if(istype(W, /obj/item/electronics/airlock)) handle_lock_addition(user, W) diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm index 37eedcb312..aee5dd4229 100644 --- a/code/modules/modular_computers/computers/item/laptop.dm +++ b/code/modules/modular_computers/computers/item/laptop.dm @@ -25,9 +25,15 @@ /obj/item/modular_computer/laptop/examine(mob/user) . = ..() - . += "Drag it in your hand to pick it up." - if(screen_on) - . += "Alt-click to close it." + . += "Drag it in your hand or on yourself to pick it up." + . += "Ctrl+Shift-click to [screen_on ? "close" : "open"] it." + var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] + var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2] + if(card_slot || card_slot2) + if(card_slot.stored_card) + . += "\The [src] has \a [card_slot] with an id inside, Alt-click to remove the id." + if(card_slot2.stored_card) + . += "\The [src] has \a [card_slot2] with an id inside, Alt-click to remove the id." /obj/item/modular_computer/laptop/Initialize() . = ..() @@ -62,14 +68,14 @@ try_toggle_open(usr) /obj/item/modular_computer/laptop/MouseDrop(obj/over_object, src_location, over_location) - . = ..() - if(over_object == usr || over_object == src) - try_toggle_open(usr) - return - if(istype(over_object, /obj/screen/inventory/hand)) + if(istype(over_object, /obj/screen/inventory/hand) || over_object == usr) var/obj/screen/inventory/hand/H = over_object var/mob/M = usr + if(!istype(over_object, /obj/screen/inventory/hand)) + M.put_in_active_hand(src) + return + if(M.stat != CONSCIOUS || M.restrained()) return if(!isturf(loc) || !Adjacent(M)) @@ -77,11 +83,9 @@ M.put_in_hand(src, H.held_index) /obj/item/modular_computer/laptop/on_attack_hand(mob/user) - . = ..() - if(!.) - return if(screen_on && isturf(loc)) return attack_self(user) + ..() /obj/item/modular_computer/laptop/proc/try_toggle_open(mob/living/user) if(issilicon(user)) @@ -94,11 +98,8 @@ toggle_open(user) -/obj/item/modular_computer/laptop/AltClick(mob/user) - if(screen_on) // Close it. - try_toggle_open(user) - else - return ..() +/obj/item/modular_computer/laptop/CtrlShiftClick(mob/user) + try_toggle_open(user) /obj/item/modular_computer/laptop/proc/toggle_open(mob/living/user=null) if(screen_on)