diff --git a/code/datums/components/style/style.dm b/code/datums/components/style/style.dm index d50b9736e8f..8b532277e34 100644 --- a/code/datums/components/style/style.dm +++ b/code/datums/components/style/style.dm @@ -96,8 +96,6 @@ if(multitooled) src.multitooled = multitooled - RegisterSignal(src, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_parent_multitool)) - ADD_TRAIT(mob_parent, TRAIT_STYLISH, REF(src)) // SKYRAT EDIT ADD - allows style meter chads to do flips /datum/component/style/RegisterWithParent() @@ -345,12 +343,6 @@ INVOKE_ASYNC(source, TYPE_PROC_REF(/mob/living, put_in_hands), target) source.visible_message(span_notice("[source] quickly swaps [weapon] out with [target]!"), span_notice("You quickly swap [weapon] with [target].")) - -/datum/component/style/proc/on_parent_multitool(datum/source, mob/living/user, obj/item/tool, list/recipes) - multitooled = !multitooled - user.balloon_alert(user, "meter [multitooled ? "" : "un"]hacked") - - // Point givers /datum/component/style/proc/on_punch(mob/living/carbon/human/punching_person, atom/attacked_atom, proximity) SIGNAL_HANDLER diff --git a/code/datums/components/style/style_meter.dm b/code/datums/components/style/style_meter.dm index 8c5b5ea87df..72688f41c52 100644 --- a/code/datums/components/style/style_meter.dm +++ b/code/datums/components/style/style_meter.dm @@ -17,7 +17,6 @@ /obj/item/style_meter/Initialize(mapload) . = ..() meter_appearance = mutable_appearance(icon, icon_state) - RegisterSignal(src, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_multitool)) /obj/item/style_meter/Destroy(force) if(istype(loc, /obj/item/clothing/glasses)) @@ -28,28 +27,30 @@ . = ..() . += span_notice("You feel like a multitool could be used on this.") -/obj/item/style_meter/afterattack(atom/movable/attacked_atom, mob/user, proximity_flag, click_parameters) - . = ..() - if(!istype(attacked_atom, /obj/item/clothing/glasses)) - return +/obj/item/style_meter/interact_with_atom(atom/interacting_with, mob/living/user) + if(!istype(interacting_with, /obj/item/clothing/glasses)) + return NONE - forceMove(attacked_atom) - attacked_atom.add_overlay(meter_appearance) - RegisterSignal(attacked_atom, COMSIG_ITEM_EQUIPPED, PROC_REF(check_wearing)) - RegisterSignal(attacked_atom, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) - RegisterSignal(attacked_atom, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) - RegisterSignal(attacked_atom, COMSIG_CLICK_ALT, PROC_REF(on_altclick)) - RegisterSignal(attacked_atom, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_multitool)) + . = ITEM_INTERACT_SUCCESS + + forceMove(interacting_with) + interacting_with.add_overlay(meter_appearance) + RegisterSignal(interacting_with, COMSIG_ITEM_EQUIPPED, PROC_REF(check_wearing)) + RegisterSignal(interacting_with, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + RegisterSignal(interacting_with, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(interacting_with, COMSIG_CLICK_ALT, PROC_REF(on_altclick)) + RegisterSignal(interacting_with, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(redirect_multitool)) balloon_alert(user, "style meter attached") playsound(src, 'sound/machines/click.ogg', 30, TRUE) - if(!iscarbon(attacked_atom.loc)) - return + if(!iscarbon(interacting_with.loc)) + return . - var/mob/living/carbon/carbon_wearer = attacked_atom.loc - if(carbon_wearer.glasses != attacked_atom) - return + var/mob/living/carbon/carbon_wearer = interacting_with.loc + if(carbon_wearer.glasses != interacting_with) + return . style_meter = carbon_wearer.AddComponent(/datum/component/style, multitooled) + return . /obj/item/style_meter/Moved(atom/old_loc, Dir, momentum_change) . = ..() @@ -98,15 +99,17 @@ return COMPONENT_CANCEL_CLICK_ALT - -/// Signal proc for when the glasses or the meter is multitooled -/obj/item/style_meter/proc/on_multitool(datum/source, mob/living/user, obj/item/tool, list/recipes) +/obj/item/style_meter/multitool_act(mob/living/user, obj/item/tool) multitooled = !multitooled - if(style_meter) - SEND_SIGNAL(style_meter, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), user, tool, recipes) - else - balloon_alert(user, "meter [multitooled ? "" : "un"]hacked") + balloon_alert(user, "meter [multitooled ? "" : "un"]hacked") + style_meter?.multitooled = multitooled + return ITEM_INTERACT_SUCCESS +/// Redirect multitooling on our glasses to our style meter +/obj/item/style_meter/proc/redirect_multitool(datum/source, mob/living/user, obj/item/tool, ...) + SIGNAL_HANDLER + + return multitool_act(user, tool) /// Unregister signals and just generally clean up ourselves after being removed from glasses /obj/item/style_meter/proc/clean_up(atom/movable/old_location)