diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index 87be4c9c624..e86a085e047 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -38678,7 +38678,8 @@ /obj/effect/decal/warning_stripes/yellow, /obj/item/desk_bell{ pixel_x = -6; - pixel_y = 3 + pixel_y = 3; + anchored = 1 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -63256,7 +63257,8 @@ /obj/effect/decal/warning_stripes/yellow, /obj/item/desk_bell{ pixel_x = -6; - pixel_y = 3 + pixel_y = 3; + anchored = 1 }, /turf/simulated/floor/plasteel/white, /area/toxins/lab) diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 9a601077d90..95512671dc4 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -15795,7 +15795,8 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /obj/item/desk_bell{ pixel_x = 7; - pixel_y = 7 + pixel_y = 7; + anchored = 1 }, /turf/simulated/floor/plasteel, /area/quartermaster/office) @@ -75075,7 +75076,8 @@ }, /obj/effect/mapping_helpers/airlock/access/all/science/research, /obj/item/desk_bell{ - pixel_y = 8 + pixel_y = 8; + anchored = 1 }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 3c750a95474..5ffce14e957 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -38313,7 +38313,9 @@ /obj/structure/noticeboard{ pixel_y = 27 }, -/obj/item/desk_bell, +/obj/item/desk_bell{ + anchored = 1 + }, /turf/simulated/floor/plasteel, /area/quartermaster/office) "bQf" = ( @@ -73924,6 +73926,9 @@ name = "Research and Development Desk"; req_access_txt = "47" }, +/obj/item/desk_bell{ + anchored = 1 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurplefull" diff --git a/code/modules/paperwork/desk_bell.dm b/code/modules/paperwork/desk_bell.dm index b7501d61ac8..da9f631dd84 100644 --- a/code/modules/paperwork/desk_bell.dm +++ b/code/modules/paperwork/desk_bell.dm @@ -2,7 +2,7 @@ /obj/item/desk_bell name = "desk bell" - desc = "The cornerstone of any customer service job. You feel an unending urge to ring it." + desc = "The cornerstone of any customer service job. You feel an unending urge to ring it. It looks like it can be wrenched or screwdrivered." icon = 'icons/obj/bureaucracy.dmi' icon_state = "desk_bell" /// The amount of times this bell has been rang, used to check the chance it breaks @@ -17,7 +17,11 @@ var/ring_sound = 'sound/machines/bell.ogg' /obj/item/desk_bell/attack_hand(mob/living/user) - if(ring_cooldown > world.time) + if(in_inventory && ishuman(user)) + if(!user.get_active_hand()) + user.put_in_hands(src) + return TRUE + if(ring_cooldown > world.time || !anchored) return TRUE if(!ring_bell(user)) to_chat(user, "[src] is silent. Some idiot broke it.") @@ -35,17 +39,7 @@ if(!remove_item_from_storage(M)) M.unEquip(src) M.put_in_hands(src) - - else if(istype(over_object, /obj/screen)) - switch(over_object.name) - if("r_hand") - if(!remove_item_from_storage(M)) - M.unEquip(src) - M.put_in_r_hand(src) - if("l_hand") - if(!remove_item_from_storage(M)) - M.unEquip(src) - M.put_in_l_hand(src) + anchored = FALSE add_fingerprint(M) @@ -53,25 +47,39 @@ /obj/item/desk_bell/screwdriver_act(mob/living/user, obj/item/tool) . = TRUE if(broken_ringer) - to_chat(user, "You begin repairing the bell...") + visible_message("[user] begins repairing [src]...", "You begin repairing [src]...") tool.play_tool_sound(src) if(tool.use_tool(src, user, 5 SECONDS)) - user.visible_message("[user] repairs the bell.", "You repair the bell.") + user.visible_message("[user] repairs [src].", "You repair [src].") playsound(user, 'sound/items/change_drill.ogg', 50, vary = TRUE) broken_ringer = FALSE times_rang = 0 return TRUE return FALSE -// Deconstruct +// Deconstruct and Anchor /obj/item/desk_bell/wrench_act(mob/living/user, obj/item/tool) - to_chat(user, "You begin taking apart the bell...") - if(tool.use_tool(src, user, 5 SECONDS)) - to_chat(user, "You disassemble the bell...") - playsound(user, 'sound/items/deconstruct.ogg', 50, vary = TRUE) - new /obj/item/stack/sheet/metal(drop_location(), 2) - qdel(src) - return TRUE + . = TRUE + if(user.a_intent == INTENT_HARM && !in_inventory) + visible_message("[user] begins taking apart [src]...", "You begin taking apart [src]...") + if(tool.use_tool(src, user, 5 SECONDS, volume = tool.tool_volume)) + visible_message("[user] takes apart [src].", "You take apart [src].") + playsound(user, 'sound/items/deconstruct.ogg', 50, vary = TRUE) + new /obj/item/stack/sheet/metal(drop_location(), 2) + qdel(src) + return TRUE + if(!in_inventory) + if(!anchored) + user.visible_message("[user] begins securing [src]...", "You begin securing [src]...") + if(!tool.use_tool(src, user, 3 SECONDS, volume = tool.tool_volume)) + return + anchored = TRUE + else + user.visible_message("[user] begins unsecuring [src]...", "You begin unsecuring [src]...") + if(!tool.use_tool(src, user, 3 SECONDS, volume = tool.tool_volume)) + return + anchored = FALSE + /// Check if the clapper breaks, and if it does, break it /obj/item/desk_bell/proc/check_clapper(mob/living/user)