diff --git a/code/game/machinery/dna_infuser/dna_infuser.dm b/code/game/machinery/dna_infuser/dna_infuser.dm index 1e64561c9be..8c8c0512bc3 100644 --- a/code/game/machinery/dna_infuser/dna_infuser.dm +++ b/code/game/machinery/dna_infuser/dna_infuser.dm @@ -226,10 +226,10 @@ /obj/machinery/dna_infuser/click_alt(mob/user) if(infusing) balloon_alert(user, "not while it's on!") - return + return CLICK_ACTION_BLOCKING if(!infusing_from) balloon_alert(user, "no sample to eject!") - return + return CLICK_ACTION_BLOCKING balloon_alert(user, "ejected sample") infusing_from.forceMove(get_turf(src)) infusing_from = null diff --git a/code/game/machinery/medical_kiosk.dm b/code/game/machinery/medical_kiosk.dm index a10aff9f448..65052a2e833 100644 --- a/code/game/machinery/medical_kiosk.dm +++ b/code/game/machinery/medical_kiosk.dm @@ -10,8 +10,6 @@ /// Shows if the machine is being used for a reagent scan. #define KIOSK_SCANNING_REAGENTS (1<<3) - - /obj/machinery/medical_kiosk name = "medical kiosk" desc = "A freestanding medical kiosk, which can provide a wide range of medical analysis for diagnosis." @@ -114,34 +112,40 @@ return board.custom_cost -/obj/machinery/medical_kiosk/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) - if(default_deconstruction_screwdriver(user, "[base_icon_state]_open", "[base_icon_state]_off", O)) - return - else if(default_deconstruction_crowbar(O)) - return +/obj/machinery/medical_kiosk/screwdriver_act(mob/living/user, obj/item/tool) + if(default_deconstruction_screwdriver(user, "[base_icon_state]_open", "[base_icon_state]_off", tool)) + return ITEM_INTERACT_SUCCESS + return ITEM_INTERACT_BLOCKING - if(istype(O, /obj/item/scanner_wand)) - var/obj/item/scanner_wand/W = O - if(scanner_wand) - balloon_alert(user, "already has a wand!") - return - if(HAS_TRAIT(O, TRAIT_NODROP) || !user.transferItemToLoc(O, src)) - balloon_alert(user, "stuck to your hand!") - return - user.visible_message(span_notice("[user] snaps [O] onto [src]!")) - balloon_alert(user, "wand returned") - //This will be the scanner returning scanner_wand's selected_target variable and assigning it to the altPatient var - if(W.selected_target) - var/datum/weakref/target_ref = WEAKREF(W.return_patient()) - if(patient_ref != target_ref) - clearScans() - patient_ref = target_ref - user.visible_message(span_notice("[W.return_patient()] has been set as the current patient.")) - W.selected_target = null - playsound(src, 'sound/machines/click.ogg', 50, TRUE) - scanner_wand = O - return - return ..() +/obj/machinery/medical_kiosk/crowbar_act(mob/living/user, obj/item/tool) + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS + return ITEM_INTERACT_BLOCKING + +/obj/machinery/medical_kiosk/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/scanner_wand)) + return NONE + + var/obj/item/scanner_wand/wand = tool + if(scanner_wand) + balloon_alert(user, "already has a wand!") + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + balloon_alert(user, "stuck to your hand!") + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] snaps [tool] onto [src]!")) + balloon_alert(user, "wand returned") + //This will be the scanner returning scanner_wand's selected_target variable and assigning it to the altPatient var + if(wand.selected_target) + var/datum/weakref/target_ref = WEAKREF(wand.return_patient()) + if(patient_ref != target_ref) + clearScans() + patient_ref = target_ref + user.visible_message(span_notice("[wand.return_patient()] has been set as the current patient.")) + wand.selected_target = null + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + scanner_wand = tool + return ITEM_INTERACT_SUCCESS /obj/machinery/medical_kiosk/attack_hand_secondary(mob/user, list/modifiers) . = ..() diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index d98506dff51..cf17c44c6d1 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -778,6 +778,9 @@ /obj/item/card/id/click_alt(mob/living/user) if(!alt_click_can_use_id(user)) return NONE + if (registered_account.being_dumped) + registered_account.bank_card_talk(span_warning("内部服务器错误"), TRUE) + return CLICK_ACTION_SUCCESS if(registered_account.account_debt) var/choice = tgui_alert(user, "Choose An Action", "Bank Account", list("Withdraw", "Pay Debt")) if(!choice || QDELETED(user) || QDELETED(src) || !alt_click_can_use_id(user) || loc != user) @@ -785,9 +788,6 @@ if(choice == "Pay Debt") pay_debt(user) return CLICK_ACTION_SUCCESS - if (registered_account.being_dumped) - registered_account.bank_card_talk(span_warning("内部服务器错误"), TRUE) - return CLICK_ACTION_SUCCESS if(loc != user) to_chat(user, span_warning("You must be holding the ID to continue!")) return CLICK_ACTION_BLOCKING @@ -803,17 +803,17 @@ return CLICK_ACTION_BLOCKING if(!alt_click_can_use_id(user)) return CLICK_ACTION_BLOCKING - if(registered_account.adjust_money(-amount_to_remove, "System: Withdrawal")) - var/obj/item/holochip/holochip = new (user.drop_location(), amount_to_remove) - user.put_in_hands(holochip) - to_chat(user, span_notice("You withdraw [amount_to_remove] credits into a holochip.")) - SSblackbox.record_feedback("amount", "credits_removed", amount_to_remove) - log_econ("[amount_to_remove] credits were removed from [src] owned by [src.registered_name]") - return CLICK_ACTION_SUCCESS - else + if(!registered_account.adjust_money(-amount_to_remove, "System: Withdrawal")) var/difference = amount_to_remove - registered_account.account_balance registered_account.bank_card_talk(span_warning("ERROR: The linked account requires [difference] more credit\s to perform that withdrawal."), TRUE) return CLICK_ACTION_BLOCKING + var/obj/item/holochip/holochip = new (user.drop_location(), amount_to_remove) + user.put_in_hands(holochip) + to_chat(user, span_notice("You withdraw [amount_to_remove] credits into a holochip.")) + SSblackbox.record_feedback("amount", "credits_removed", amount_to_remove) + log_econ("[amount_to_remove] credits were removed from [src] owned by [registered_name]") + return CLICK_ACTION_SUCCESS + /obj/item/card/id/click_alt_secondary(mob/user) if(!alt_click_can_use_id(user)) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 30731e086b5..28065c4cead 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -809,6 +809,10 @@ ) register_context() register_item_context() + // If default crayon red colour, pick a more fun spraycan colour + if(!paint_color) + set_painting_tool_color(pick(COLOR_CRAYON_RED, COLOR_CRAYON_ORANGE, COLOR_CRAYON_YELLOW, COLOR_CRAYON_GREEN, COLOR_CRAYON_BLUE, COLOR_CRAYON_PURPLE)) + refill() /obj/item/toy/crayon/spraycan/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) . = ..() @@ -859,13 +863,6 @@ reagents.trans_to(user, used, volume_multiplier, transferred_by = user, methods = VAPOR) return OXYLOSS -/obj/item/toy/crayon/spraycan/Initialize(mapload) - . = ..() - // If default crayon red colour, pick a more fun spraycan colour - if(!paint_color) - set_painting_tool_color(pick(COLOR_CRAYON_RED, COLOR_CRAYON_ORANGE, COLOR_CRAYON_YELLOW, COLOR_CRAYON_GREEN, COLOR_CRAYON_BLUE, COLOR_CRAYON_PURPLE)) - refill() - /obj/item/toy/crayon/spraycan/examine(mob/user) . = ..() if(charges != INFINITE_CHARGES) diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm index cd7c745a168..31006c8dc1d 100644 --- a/code/game/objects/items/devices/desynchronizer.dm +++ b/code/game/objects/items/devices/desynchronizer.dm @@ -41,7 +41,7 @@ /obj/item/desynchronizer/click_alt(mob/living/user) var/new_duration = tgui_input_number(user, "Set the duration", "Desynchronizer", duration / 10, max_duration, 5) - if(!new_duration || QDELETED(user) || QDELETED(src) || !usr.can_perform_action(src, NEED_DEXTERITY)) + if(!new_duration || QDELETED(user) || QDELETED(src) || !user.can_perform_action(src, NEED_DEXTERITY)) return CLICK_ACTION_BLOCKING duration = new_duration to_chat(user, span_notice("You set the duration to [DisplayTimeText(duration)].")) diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 25bae430609..2f65c72436f 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -112,9 +112,9 @@ /obj/item/geiger_counter/click_alt(mob/living/user) if(!scanning) - to_chat(usr, span_warning("[src] must be on to reset its radiation level!")) + to_chat(user, span_warning("[src] must be on to reset its radiation level!")) return CLICK_ACTION_BLOCKING - to_chat(usr, span_notice("You flush [src]'s radiation counts, resetting it to normal.")) + to_chat(user, span_notice("You flush [src]'s radiation counts, resetting it to normal.")) last_perceived_radiation_danger = null update_appearance(UPDATE_ICON) return CLICK_ACTION_SUCCESS diff --git a/code/game/objects/items/devices/quantum_keycard.dm b/code/game/objects/items/devices/quantum_keycard.dm index c815cc41ef1..44cd9fbe6ea 100644 --- a/code/game/objects/items/devices/quantum_keycard.dm +++ b/code/game/objects/items/devices/quantum_keycard.dm @@ -45,9 +45,10 @@ /obj/item/quantum_keycard/click_alt(mob/living/user) to_chat(user, span_notice("You start pressing [src]'s unlink button...")) - if(do_after(user, 4 SECONDS, target = src)) - to_chat(user, span_notice("The keycard beeps twice and disconnects the quantum link.")) - set_pad() + if(!do_after(user, 4 SECONDS, target = src)) + return CLICK_ACTION_BLOCKING + to_chat(user, span_notice("The keycard beeps twice and disconnects the quantum link.")) + set_pad() return CLICK_ACTION_SUCCESS /obj/item/quantum_keycard/proc/set_pad(obj/machinery/quantumpad/new_pad) diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm index 90d4d9bcc8f..7e70edc5f5e 100644 --- a/code/game/objects/items/devices/scanners/health_analyzer.dm +++ b/code/game/objects/items/devices/scanners/health_analyzer.dm @@ -21,13 +21,13 @@ throw_range = 7 custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT *2) interaction_flags_click = NEED_LITERACY|NEED_LIGHT|ALLOW_RESTING + custom_price = PAYCHECK_COMMAND /// Verbose/condensed var/mode = SCANNER_VERBOSE /// HEALTH/WOUND var/scanmode = SCANMODE_HEALTH /// Advanced health analyzer var/advanced = FALSE - custom_price = PAYCHECK_COMMAND /// If this analyzer will give a bonus to wound treatments apon woundscan. var/give_wound_treatment_bonus = FALSE var/last_scan_text @@ -190,7 +190,7 @@ render_list += "Fatigue level: [target.getStaminaLoss()]%.
" else render_list += "Subject appears to be suffering from fatigue.
" - + // Check for brain - both organic (carbon) and synthetic (cyborg MMI) var/has_brain = FALSE if(target.get_organ_slot(ORGAN_SLOT_BRAIN)) @@ -199,7 +199,7 @@ var/mob/living/silicon/robot/cyborg_target = target if(cyborg_target.mmi?.brain) has_brain = TRUE - + if(!has_brain) // kept exclusively for soul purposes render_list += "Subject lacks a brain.
" diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index b7da99fdfdb..e406dbb6f5c 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -25,7 +25,9 @@ var/lit = FALSE //on or off var/operating = FALSE//cooldown var/obj/item/weldingtool/weldtool = null + /// The igniter stored in the flamethrower var/obj/item/assembly/igniter/igniter = null + /// The plasma tank that we shoot gas from var/obj/item/tank/internals/plasma/ptank = null var/warned_admins = FALSE //for the message_admins() when lit //variables for prebuilt flamethrowers @@ -94,9 +96,9 @@ return ITEM_INTERACT_SUCCESS /obj/item/flamethrower/wrench_act(mob/living/user, obj/item/tool) - . = TRUE + . = ITEM_INTERACT_SUCCESS if(status) - return FALSE + return ITEM_INTERACT_BLOCKING tool.play_tool_sound(src) var/turf/T = get_turf(src) if(weldtool) @@ -119,34 +121,34 @@ update_appearance() return TRUE -/obj/item/flamethrower/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(isigniter(W)) - var/obj/item/assembly/igniter/I = W - if(I.secured) - return +/obj/item/flamethrower/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(isigniter(tool)) + var/obj/item/assembly/igniter/inserting_igniter = tool + if(inserting_igniter.secured) + return ITEM_INTERACT_BLOCKING if(igniter) - return - if(!user.transferItemToLoc(W, src)) - return - igniter = I + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + igniter = inserting_igniter update_appearance() - return - - else if(istype(W, /obj/item/tank/internals/plasma)) + balloon_alert(user, "attached") + return ITEM_INTERACT_SUCCESS + if(istype(tool, /obj/item/tank/internals/plasma)) if(ptank) - if(user.transferItemToLoc(W,src)) - ptank.forceMove(get_turf(src)) - ptank = W - to_chat(user, span_notice("You swap the plasma tank in [src]!")) - return - if(!user.transferItemToLoc(W, src)) - return - ptank = W + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + ptank.forceMove(get_turf(src)) + ptank = tool + to_chat(user, span_notice("You swap the plasma tank in [src]!")) + return ITEM_INTERACT_SUCCESS + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + ptank = tool update_appearance() - return + return ITEM_INTERACT_SUCCESS - else - return ..() + return NONE /obj/item/flamethrower/return_analyzable_air() if(ptank) diff --git a/code/game/objects/items/implants/security/implant_chem.dm b/code/game/objects/items/implants/security/implant_chem.dm index 178dfcae2a6..d957100ce70 100644 --- a/code/game/objects/items/implants/security/implant_chem.dm +++ b/code/game/objects/items/implants/security/implant_chem.dm @@ -95,9 +95,7 @@ desc = "A glass case containing a remote chemical implant." imp_type = /obj/item/implant/chem -/obj/item/implantcase/chem/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/reagent_containers/syringe) && imp) - W.interact_with_atom(imp, user, modifiers) - return TRUE - else - return ..() +/obj/item/implantcase/chem/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/reagent_containers/syringe) && imp) + return NONE + return tool.interact_with_atom(imp, user, modifiers) diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm index d0feef1471e..2f96f3fb737 100644 --- a/code/game/objects/items/inspector.dm +++ b/code/game/objects/items/inspector.dm @@ -462,11 +462,13 @@ var/datum/action/innate/origami/origami_action = locate() in user.actions if(origami_action?.active) //Origami masters can fold water make_plane(user, /obj/item/paperplane/syndicate) - else if(do_after(user, 1 SECONDS, target = src, progress=TRUE)) - var/turf/open/target = get_turf(src) - target.MakeSlippery(TURF_WET_WATER, min_wet_time = 10 SECONDS, wet_time_to_add = 5 SECONDS) - to_chat(user, span_notice("As you try to fold [src] into the shape of a plane, it disintegrates into water!")) - qdel(src) + return CLICK_ACTION_SUCCESS + if(!do_after(user, 1 SECONDS, target = src, progress=TRUE)) + return CLICK_ACTION_BLOCKING + var/turf/open/target = get_turf(src) + target.MakeSlippery(TURF_WET_WATER, min_wet_time = 10 SECONDS, wet_time_to_add = 5 SECONDS) + to_chat(user, span_notice("As you try to fold [src] into the shape of a plane, it disintegrates into water!")) + qdel(src) return CLICK_ACTION_SUCCESS #undef ENERGY_TO_SPEAK diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 90c99011376..91240c6534e 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -599,13 +599,13 @@ . += span_notice("Alt-click it to quickly draw the blade.") /obj/item/storage/belt/sheath/click_alt(mob/user) - if(length(contents)) - var/obj/item/I = contents[1] - user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src].")) - user.put_in_hands(I) - update_appearance() - else + if(!length(contents)) balloon_alert(user, "it's empty!") + return CLICK_ACTION_BLOCKING + var/obj/item/stored_item = contents[1] + user.visible_message(span_notice("[user] takes [stored_item] out of [src]."), span_notice("You take [stored_item] out of [src].")) + user.put_in_hands(stored_item) + update_appearance() return CLICK_ACTION_SUCCESS /obj/item/storage/belt/sheath/update_icon_state() diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index 6114a20158c..bfe843d7f4d 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -10,13 +10,13 @@ /obj/structure/sacrificealtar/click_alt(mob/living/user) if(!has_buckled_mobs()) return CLICK_ACTION_BLOCKING - var/mob/living/L = locate() in buckled_mobs - if(!L) + var/mob/living/buckled_mob = locate() in buckled_mobs + if(!buckled_mob) return CLICK_ACTION_BLOCKING - to_chat(user, span_notice("Invoking the sacred ritual, you sacrifice [L].")) - L.investigate_log("has been sacrificially gibbed on an altar.", INVESTIGATE_DEATHS) - L.gib(DROP_ALL_REMAINS) - message_admins("[ADMIN_LOOKUPFLW(user)] has sacrificed [key_name_admin(L)] on the sacrificial altar at [AREACOORD(src)].") + to_chat(user, span_notice("Invoking the sacred ritual, you sacrifice [buckled_mob].")) + buckled_mob.investigate_log("has been sacrificially gibbed on an altar.", INVESTIGATE_DEATHS) + buckled_mob.gib(DROP_ALL_REMAINS) + message_admins("[ADMIN_LOOKUPFLW(user)] has sacrificed [key_name_admin(buckled_mob)] on the sacrificial altar at [AREACOORD(src)].") return CLICK_ACTION_SUCCESS /obj/structure/healingfountain diff --git a/code/game/objects/structures/toiletbong.dm b/code/game/objects/structures/toiletbong.dm index fa770dd75ee..c45e58d5845 100644 --- a/code/game/objects/structures/toiletbong.dm +++ b/code/game/objects/structures/toiletbong.dm @@ -78,7 +78,6 @@ update_appearance(UPDATE_ICON) /obj/structure/toiletbong/wrench_act(mob/living/user, obj/item/tool) - ..() default_unfasten_wrench(user, tool) return ITEM_INTERACT_SUCCESS diff --git a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm index c8bfd8628e9..4f1f4a2aa64 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm @@ -17,7 +17,6 @@ ..() update_appearance() - /obj/machinery/atmospherics/components/unary/click_alt(mob/living/beno) beno.handle_ventcrawl(src) return CLICK_ACTION_SUCCESS diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 0a6affdafd1..d75e5407798 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -123,8 +123,8 @@ return CONTEXTUAL_SCREENTIP_SET /obj/item/clothing/head/helmet/space/plasmaman/click_alt(mob/user) - if(user.can_perform_action(src)) - adjust_visor(user) + adjust_visor(user) + return CLICK_ACTION_SUCCESS /obj/item/clothing/head/helmet/space/plasmaman/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/toggle_welding_screen)) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 36867f2ff7e..b9910bfb2bf 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -7,14 +7,13 @@ abstract_type = /obj/item/clothing/under body_parts_covered = CHEST|GROIN|LEGS|ARMS slot_flags = ITEM_SLOT_ICLOTHING - interaction_flags_click = NEED_DEXTERITY + interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING armor_type = /datum/armor/clothing_under supports_variations_flags = CLOTHING_DIGITIGRADE_MASK equip_sound = 'sound/items/equip/jumpsuit_equip.ogg' drop_sound = 'sound/items/handling/cloth/cloth_drop1.ogg' pickup_sound = 'sound/items/handling/cloth/cloth_pickup1.ogg' limb_integrity = 30 - interaction_flags_click = ALLOW_RESTING /// Has this undersuit been freshly laundered and, as such, imparts a mood bonus for wearing var/freshly_laundered = FALSE diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm index b52c2dc21d3..a88de7ff035 100644 --- a/code/modules/mining/equipment/marker_beacons.dm +++ b/code/modules/mining/equipment/marker_beacons.dm @@ -60,9 +60,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, sort_list(list( /obj/item/stack/marker_beacon/click_alt(mob/living/user) var/input_color = tgui_input_list(user, "Choose a color", "Beacon Color", GLOB.marker_beacon_colors) - if(isnull(input_color)) - return CLICK_ACTION_BLOCKING - if(!user.can_perform_action(src)) + if(isnull(input_color) || !user.can_perform_action(src)) return CLICK_ACTION_BLOCKING picked_color = input_color update_appearance() @@ -154,15 +152,12 @@ GLOBAL_LIST_INIT(marker_beacon_colors, sort_list(list( /obj/structure/marker_beacon/click_alt(mob/living/user) var/input_color = tgui_input_list(user, "Choose a color", "Beacon Color", GLOB.marker_beacon_colors) - if(isnull(input_color)) + if(isnull(input_color) || !user.can_perform_action(src)) return CLICK_ACTION_BLOCKING - if(!user.can_perform_action(src)) - return NONE picked_color = input_color update_appearance() return CLICK_ACTION_SUCCESS - /* Preset marker beacon types, for mapping */ // Set the icon_state here to make it clear for mappers. diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index d5d066f63e6..7bfc3612e88 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -77,10 +77,8 @@ GLOBAL_VAR(posibrain_notify_cooldown) /obj/item/mmi/posibrain/click_alt(mob/living/user) var/input_seed = tgui_input_text(user, "Enter a personality seed", "Enter seed", ask_role, max_length = MAX_NAME_LEN) - if(isnull(input_seed)) + if(isnull(input_seed) || !user.can_perform_action(src)) return CLICK_ACTION_BLOCKING - if(!user.can_perform_action(src)) - return to_chat(user, span_notice("You set the personality seed to \"[input_seed]\".")) ask_role = input_seed update_appearance() diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm index 27301f09448..6e24123bfa1 100644 --- a/code/modules/paperwork/paper_cutter.dm +++ b/code/modules/paperwork/paper_cutter.dm @@ -104,16 +104,16 @@ /obj/item/papercutter/screwdriver_act(mob/living/user, obj/item/tool) if(!stored_blade && !blade_secured) balloon_alert(user, "no blade!") - return + return ITEM_INTERACT_BLOCKING tool.play_tool_sound(src) balloon_alert(user, "[blade_secured ? "un" : ""]secured") blade_secured = !blade_secured return ITEM_INTERACT_SUCCESS -/obj/item/papercutter/attackby(obj/item/inserted_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(inserted_item, /obj/item/paper)) - if(is_type_in_list(inserted_item, list( +/obj/item/papercutter/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/paper)) + if(is_type_in_list(tool, list( /obj/item/paper/fake_report, /obj/item/paper/holy_writ, /obj/item/paper/pamphlet, @@ -121,29 +121,31 @@ /obj/item/paper/report, ))) balloon_alert(user, "won't fit!") - return + return ITEM_INTERACT_BLOCKING if(stored_paper) balloon_alert(user, "already paper inside!") - return - if(!user.transferItemToLoc(inserted_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING playsound(loc, SFX_PAGE_TURN, 60, TRUE) balloon_alert(user, "paper inserted") - stored_paper = inserted_item + stored_paper = tool + update_appearance() + return ITEM_INTERACT_SUCCESS - if(istype(inserted_item, /obj/item/hatchet/cutterblade)) + if(istype(tool, /obj/item/hatchet/cutterblade)) if(stored_blade) balloon_alert(user, "already a blade inside!") - return - if(!user.transferItemToLoc(inserted_item, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING balloon_alert(user, "blade inserted") - inserted_item.forceMove(src) - stored_blade = inserted_item + tool.forceMove(src) + stored_blade = tool + update_appearance() + return ITEM_INTERACT_SUCCESS - update_appearance() - - return ..() + return NONE /obj/item/papercutter/click_alt(mob/user) // can only remove one at a time; paper goes first, as its most likely what players will want to be taking out