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