diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index dace178f311..89ea3c624d9 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -110,6 +110,7 @@ #define MAX_BROADCAST_LEN 512 #define MAX_CHARTER_LEN 80 #define MAX_PLAQUE_LEN 144 +#define MAX_LABEL_LEN 64 // Audio/Visual Flags. Used to determine what sense are required to notice a message. #define MSG_VISUAL (1<<0) diff --git a/code/datums/components/label.dm b/code/datums/components/label.dm deleted file mode 100644 index 24b01ee52a3..00000000000 --- a/code/datums/components/label.dm +++ /dev/null @@ -1,95 +0,0 @@ -/** - The label component. - - This component is used to manage labels applied by the hand labeler. - - Atoms can only have one instance of this component, and therefore only one label at a time. - This is to avoid having names like "Backpack (label1) (label2) (label3)". This is annoying and abnoxious to read. - - When a player clicks the atom with a hand labeler to apply a label, this component gets applied to it. - If the labeler is off, the component will be removed from it, and the label will be removed from its name. - */ -/datum/component/label - dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS - /// The name of the label the player is applying to the parent. - var/label_name - -/datum/component/label/Initialize(_label_name) - if(!isatom(parent)) - return COMPONENT_INCOMPATIBLE - - label_name = _label_name - apply_label() - -/datum/component/label/RegisterWithParent() - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(OnAttackby)) - RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(Examine)) - -/datum/component/label/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_EXAMINE)) - -/** - This proc will fire after the parent is hit by a hand labeler which is trying to apply another label. - Since the parent already has a label, it will remove the old one from the parent's name, and apply the new one. -*/ -/datum/component/label/InheritComponent(datum/component/label/new_comp , i_am_original, _label_name) - remove_label() - if(new_comp) - label_name = new_comp.label_name - else - label_name = _label_name - apply_label() - -/** - This proc will trigger when any object is used to attack the parent. - - If the attacking object is not a hand labeler, it will return. - If the attacking object is a hand labeler it will restore the name of the parent to what it was before this component was added to it, and the component will be deleted. - - Arguments: - * source: The parent. - * attacker: The object that is hitting the parent. - * user: The mob who is wielding the attacking object. -*/ -/datum/component/label/proc/OnAttackby(datum/source, obj/item/attacker, mob/user) - SIGNAL_HANDLER - - // If the attacking object is not a hand labeler or its mode is 1 (has a label ready to apply), return. - // The hand labeler should be off (mode is 0), in order to remove a label. - var/obj/item/hand_labeler/labeler = attacker - if(!istype(labeler) || labeler.mode) - return - - remove_label() - playsound(parent, 'sound/items/poster_ripped.ogg', 20, TRUE) - to_chat(user, span_warning("You remove the label from [parent].")) - qdel(src) // Remove the component from the object. - -/** - This proc will trigger when someone examines the parent. - It will attach the text found in the body of the proc to the `examine_list` and display it to the player examining the parent. - - Arguments: - * source: The parent. - * user: The mob exmaining the parent. - * examine_list: The current list of text getting passed from the parent's normal examine() proc. -*/ -/datum/component/label/proc/Examine(datum/source, mob/user, list/examine_list) - SIGNAL_HANDLER - - examine_list += span_notice("It has a label with some words written on it. Use a hand labeler to remove it.") - -/// Applies a label to the name of the parent in the format of: "parent_name (label)" -/datum/component/label/proc/apply_label() - var/atom/owner = parent - owner.name += " ([label_name])" - ADD_TRAIT(owner, TRAIT_HAS_LABEL, REF(src)) - owner.update_appearance(UPDATE_ICON) - -/// Removes the label from the parent's name -/datum/component/label/proc/remove_label() - var/atom/owner = parent - owner.name = replacetext(owner.name, "([label_name])", "") // Remove the label text from the parent's name, wherever it's located. - owner.name = trim(owner.name) // Shave off any white space from the beginning or end of the parent's name. - REMOVE_TRAIT(owner, TRAIT_HAS_LABEL, REF(src)) - owner.update_appearance(UPDATE_ICON) diff --git a/code/datums/components/sticker.dm b/code/datums/components/sticker.dm index 0562f604807..2c87d856da8 100644 --- a/code/datums/components/sticker.dm +++ b/code/datums/components/sticker.dm @@ -13,20 +13,18 @@ var/atom/movable/our_sticker /// Reference to the created overlay, used during component deletion. var/mutable_appearance/sticker_overlay + // Callback invoked when sticker is applied to the parent. + var/datum/callback/stick_callback + // Callback invoked when sticker is peeled (not removed) from the parent. + var/datum/callback/peel_callback -/datum/component/sticker/Initialize(atom/stickering_atom, mob/user, dir = NORTH, px = 0, py = 0) +/datum/component/sticker/Initialize(atom/stickering_atom, dir = NORTH, px = 0, py = 0, datum/callback/stick_callback, datum/callback/peel_callback) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE src.our_sticker = our_sticker - - if(isliving(parent) && !isnull(user)) - var/mob/living/victim = parent - - if(!isnull(victim.client)) - user.log_message("stuck [stickering_atom] to [key_name(victim)]", LOG_ATTACK) - victim.log_message("had [stickering_atom] stuck to them by [key_name(user)]", LOG_ATTACK) - + src.stick_callback = stick_callback + src.peel_callback = peel_callback stick(stickering_atom, px, py) register_turf_signals(dir) @@ -38,19 +36,18 @@ REMOVE_TRAIT(parent, TRAIT_STICKERED, REF(src)) - QDEL_NULL(our_sticker) - QDEL_NULL(sticker_overlay) + our_sticker = null + sticker_overlay = null + stick_callback = null + peel_callback = null return ..() /datum/component/sticker/RegisterWithParent() - if(isliving(parent)) - RegisterSignal(parent, COMSIG_LIVING_IGNITED, PROC_REF(on_ignite)) + RegisterSignal(parent, COMSIG_LIVING_IGNITED, PROC_REF(on_ignite)) RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean)) /datum/component/sticker/UnregisterFromParent() - if(isliving(parent)) - UnregisterSignal(parent, COMSIG_LIVING_IGNITED) - UnregisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT) + UnregisterSignal(parent, list(COMSIG_LIVING_IGNITED, COMSIG_COMPONENT_CLEAN_ACT)) /// Subscribes to `COMSIG_TURF_EXPOSE` if parent atom is a turf. If turf is closed - subscribes to signal /datum/component/sticker/proc/register_turf_signals(dir) @@ -67,10 +64,18 @@ UnregisterSignal(listening_turf, COMSIG_TURF_EXPOSE) +/datum/component/sticker/proc/sticker_gone(...) + SIGNAL_HANDLER + + UnregisterSignal(our_sticker, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED)) + our_sticker = null + qdel(src) + /// Handles overlay creation from supplied atom, adds created icon to the parent object, moves source atom to the nullspace. /datum/component/sticker/proc/stick(atom/movable/stickering_atom, px, py) our_sticker = stickering_atom our_sticker.moveToNullspace() + RegisterSignals(our_sticker, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED), PROC_REF(sticker_gone)) var/atom/parent_atom = parent @@ -79,23 +84,25 @@ sticker_overlay.pixel_z = py - world.icon_size / 2 parent_atom.add_overlay(sticker_overlay) - + stick_callback?.Invoke(parent) ADD_TRAIT(parent, TRAIT_STICKERED, REF(src)) /// Moves stickered atom from the nullspace, deletes component. /datum/component/sticker/proc/peel() var/atom/parent_atom = parent - var/turf/drop_location = isnull(listening_turf) ? parent_atom.drop_location() : listening_turf + var/turf/drop_location = listening_turf || parent_atom.drop_location() + UnregisterSignal(our_sticker, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED)) our_sticker.forceMove(drop_location) our_sticker = null + peel_callback?.Invoke(parent) qdel(src) /datum/component/sticker/proc/on_ignite(datum/source) SIGNAL_HANDLER - qdel(src) + qdel(our_sticker) // which qdels us /datum/component/sticker/proc/on_clean(datum/source, clean_types) SIGNAL_HANDLER @@ -108,4 +115,4 @@ SIGNAL_HANDLER if(exposed_temperature >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - qdel(src) + qdel(our_sticker) // which qdels us diff --git a/code/game/objects/items/stickers.dm b/code/game/objects/items/stickers.dm index a8b800866a4..a02cfd9515e 100644 --- a/code/game/objects/items/stickers.dm +++ b/code/game/objects/items/stickers.dm @@ -80,8 +80,12 @@ if(!isnull(user)) user.do_attack_animation(target, used_item = src) target.balloon_alert(user, "sticker sticked") + var/mob/living/victim = target + if(istype(victim) && !isnull(victim.client)) + user.log_message("stuck [src] to [key_name(victim)]", LOG_ATTACK) + victim.log_message("had [src] stuck to them by [key_name(user)]", LOG_ATTACK) - target.AddComponent(/datum/component/sticker, src, user, get_dir(target, src), px, py) + target.AddComponent(/datum/component/sticker, src, get_dir(target, src), px, py) return TRUE #undef MAX_STICKER_COUNT diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index af3bbb060d5..a971b2b6a74 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -29,6 +29,13 @@ soundloop = new(src, fermenting) soundloop.volume = sound_volume + RegisterSignals(src, list( + SIGNAL_ADDTRAIT(TRAIT_WAS_RENAMED), + SIGNAL_ADDTRAIT(TRAIT_HAS_LABEL), + SIGNAL_REMOVETRAIT(TRAIT_WAS_RENAMED), + SIGNAL_REMOVETRAIT(TRAIT_HAS_LABEL), + ), PROC_REF(update_overlay_on_sig)) + /obj/structure/fermenting_barrel/Destroy() QDEL_NULL(soundloop) return ..() @@ -82,6 +89,10 @@ icon_state = open ? "barrel_open" : "barrel" return ..() +/obj/structure/fermenting_barrel/proc/update_overlay_on_sig() + SIGNAL_HANDLER + update_appearance(UPDATE_ICON) + /obj/structure/fermenting_barrel/update_overlays() . = ..() if(HAS_TRAIT(src, TRAIT_WAS_RENAMED) || HAS_TRAIT(src, TRAIT_HAS_LABEL)) diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index 1aac034191c..9adbcff2dcb 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -1,12 +1,23 @@ +/// A mini-tool used to apply label items onto something to modify its name. /obj/item/hand_labeler //NOVA EDIT - ICON OVERRIDDEN BY AESTHETICS - SEE MODULE name = "hand labeler" desc = "A combined label printer, applicator, and remover, all in a single portable device. Designed to be easy to operate and use." icon = 'icons/obj/service/bureaucracy.dmi' icon_state = "labeler0" - inhand_icon_state = null - var/label = null + item_flags = NOBLUDGEON + w_class = WEIGHT_CLASS_SMALL + drop_sound = 'sound/items/handling/tape_drop.ogg' + pickup_sound = 'sound/items/handling/tape_pickup.ogg' + custom_materials = list( + /datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.25, + ) + /// Tracks the current label text + var/label + /// How many labels are left in the current roll? Also serves as our "max". var/labels_left = 30 - var/mode = 0 + /// Whether we are in label mode + VAR_FINAL/mode = FALSE /obj/item/hand_labeler/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is pointing [src] at [user.p_them()]self. [user.p_Theyre()] going to label [user.p_them()]self as a suicide!")) @@ -36,60 +47,77 @@ return OXYLOSS -/obj/item/hand_labeler/afterattack(atom/A, mob/user,proximity) +/obj/item/hand_labeler/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) . = ..() - if(!proximity) - return - - . |= AFTERATTACK_PROCESSED_ITEM - + if(. & ITEM_INTERACT_ANY_BLOCKER) + return . if(!mode) //if it's off, give up. - return + return . + if(!apply_label(interacting_with, user, modifiers)) + return ITEM_INTERACT_BLOCKING + return ITEM_INTERACT_SUCCESS +/obj/item/hand_labeler/proc/apply_label(atom/interacting_with, mob/living/user, list/modifiers) if(!labels_left) - to_chat(user, span_warning("No labels left!")) - return - if(!label || !length(label)) - to_chat(user, span_warning("No text set!")) - return - if(length(A.name) + length(label) > 64) - to_chat(user, span_warning("Label too big!")) - return - if(ismob(A)) - to_chat(user, span_warning("You can't label creatures!")) // use a collar - return + balloon_alert(user, "no labels left!") + return FALSE + if(!length(label)) + balloon_alert(user, "no text set!") + return FALSE + if(length(interacting_with.name) + length(label) > MAX_LABEL_LEN) + balloon_alert(user, "label too long!") + return FALSE + if(ismob(interacting_with)) + interacting_with.balloon_alert(user, "can't label!") + return FALSE - user.visible_message(span_notice("[user] labels [A] with \"[label]\"."), \ - span_notice("You label [A] with \"[label]\".")) - A.AddComponent(/datum/component/label, label) - playsound(A, 'sound/items/handling/component_pickup.ogg', 20, TRUE) + var/cursor_x = text2num(LAZYACCESS(modifiers, ICON_X)) + var/cursor_y = text2num(LAZYACCESS(modifiers, ICON_Y)) + interacting_with.balloon_alert_to_viewers("labelled") + user.visible_message( + span_notice("[user] labels [interacting_with] with \"[label]\"."), + span_notice("You label [interacting_with] with \"[label]\"."), + ) + var/obj/item/label/stick_label = new(null, label) + stick_label.stick_to_atom(interacting_with, cursor_x, cursor_y) + playsound(interacting_with, 'sound/items/handling/component_pickup.ogg', 20, TRUE) labels_left-- + return TRUE - -/obj/item/hand_labeler/attack_self(mob/user) +/obj/item/hand_labeler/interact(mob/user) + . = ..() + if(.) + return . if(!ISADVANCEDTOOLUSER(user)) to_chat(user, span_warning("You don't have the dexterity to use [src]!")) - return + return . + mode = !mode icon_state = "labeler[mode]" if(mode) to_chat(user, span_notice("You turn on [src].")) //Now let them chose the text. var/str = reject_bad_text(tgui_input_text(user, "Label text", "Set Label", label, MAX_NAME_LEN)) - if(!str) + if(!str || QDELETED(src) || !user.is_holding(src)) to_chat(user, span_warning("Invalid text!")) return label = str to_chat(user, span_notice("You set the text to '[str]'.")) else to_chat(user, span_notice("You turn off [src].")) + return TRUE -/obj/item/hand_labeler/attackby(obj/item/I, mob/user, params) - ..() - if(istype(I, /obj/item/hand_labeler_refill)) - to_chat(user, span_notice("You insert [I] into [src].")) - qdel(I) - labels_left = initial(labels_left) //Yes, it's capped at its initial value +/obj/item/hand_labeler/item_interaction(mob/living/user, obj/item/tool, list/modifiers, is_right_clicking) + . = ..() + if(. & ITEM_INTERACT_ANY_BLOCKER) + return . + if(!istype(tool, /obj/item/hand_labeler_refill)) + return . + + balloon_alert(user, "refilled") + qdel(tool) + labels_left = initial(labels_left) //Yes, it's capped at its initial value + return ITEM_INTERACT_SUCCESS /obj/item/hand_labeler/attackby_storage_insert(datum/storage, atom/storage_holder, mob/user) return !mode @@ -97,15 +125,13 @@ /obj/item/hand_labeler/borg name = "cyborg-hand labeler" -/obj/item/hand_labeler/borg/afterattack(atom/A, mob/user, proximity) - . = ..() - if(!proximity) - return - . |= AFTERATTACK_PROCESSED_ITEM - if(!iscyborg(user)) - return +/obj/item/hand_labeler/borg/apply_label(atom/interacting_with, mob/living/silicon/robot/user, list/modifiers) + if(!istype(user)) + return FALSE - var/mob/living/silicon/robot/borgy = user + . = ..() + if(!.) + return . var/starting_labels = initial(labels_left) var/diff = starting_labels - labels_left @@ -116,8 +142,9 @@ // If the cyborg manages to use a module without a cell, they get the paper // for free. - if(borgy.cell) - borgy.cell.use(cost) + user.cell?.use(cost) + + return . /obj/item/hand_labeler_refill name = "hand labeler paper roll" @@ -128,3 +155,177 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_TINY + throw_range = 3 + throw_speed = 1 + pressure_resistance = 2 + resistance_flags = FLAMMABLE + max_integrity = 100 + item_flags = NOBLUDGEON + +/// The label item applied when labelling something +/obj/item/label + name = "label" + desc = "A strip of paper." + icon = 'icons/obj/toys/stickers.dmi' + icon_state = "label" + throw_range = 1 + throw_speed = 1 + pressure_resistance = 0 + resistance_flags = FLAMMABLE + max_integrity = 30 + drop_sound = 'sound/items/handling/paper_drop.ogg' + pickup_sound = 'sound/items/handling/paper_pickup.ogg' + item_flags = NOBLUDGEON | SKIP_FANTASY_ON_SPAWN + w_class = WEIGHT_CLASS_TINY + + /// The text on the label + var/label_name + /// What atom we're currently stuck to + VAR_FINAL/atom/sticking_to + +/obj/item/label/Initialize(mapload, new_label_name) + . = ..() + if(new_label_name) + update_label_name(new_label_name) + +/obj/item/label/Destroy() + clear_stick_to() + return ..() + +/obj/item/label/update_name(updates) + . = ..() + if(label_name) + name = "label ([label_name])" + +/// Sets the lable_name var and performs any necessary updates to the label's appearance +/obj/item/label/proc/update_label_name(new_label_name) + if(label_name == new_label_name) + return + + if(sticking_to) + remove_label() + label_name = new_label_name + if(sticking_to) + apply_label() + update_appearance(UPDATE_NAME) + +/obj/item/label/vv_edit_var(var_name, var_value) + if(var_name == NAMEOF(src, label_name)) + update_label_name(var_value) + datum_flags |= DF_VAR_EDITED + return TRUE + + return ..() + +/obj/item/label/proc/stick_to_atom(atom/applying_to, stick_px = world.icon_size / 2, stick_py = world.icon_size / 2) + applying_to.AddComponent( \ + /datum/component/sticker, \ + stickering_atom = src, \ + dir = applying_to.dir, \ + px = stick_px, \ + py = stick_py, \ + stick_callback = CALLBACK(src, PROC_REF(on_stick)), \ + peel_callback = CALLBACK(src, PROC_REF(on_peel)), \ + ) + +/// Callback invoked when the label is attached to something +/obj/item/label/proc/on_stick(atom/applying_to) + sticking_to = applying_to + RegisterSignal(sticking_to, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(interacted_with)) + RegisterSignal(sticking_to, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignals(sticking_to, list(SIGNAL_ADDTRAIT(TRAIT_WAS_RENAMED), SIGNAL_REMOVETRAIT(TRAIT_WAS_RENAMED)), PROC_REF(reapply)) + RegisterSignal(sticking_to, COMSIG_QDELETING, PROC_REF(clear_stick_to)) + apply_label() + +/// Callback invoked when the label is removed from something +/obj/item/label/proc/on_peel(atom/peeled_from) + qdel(src) + +/// General purpose / signal proc used to clear references and clean up when removed +/obj/item/label/proc/clear_stick_to(...) + SIGNAL_HANDLER + + if(isnull(sticking_to)) + return + if(!QDELING(sticking_to)) + remove_label() + UnregisterSignal(sticking_to, list( + COMSIG_ATOM_ITEM_INTERACTION, + COMSIG_ATOM_EXAMINE, + SIGNAL_ADDTRAIT(TRAIT_WAS_RENAMED), + SIGNAL_REMOVETRAIT(TRAIT_WAS_RENAMED), + COMSIG_QDELETING, + )) + sticking_to = null + +/** + * This proc will trigger when any object is used to attack the thing we're stuck to. . + * + * If the attacking object is not a hand labeler, it will return. + * If the attacking object is a hand labeler, it will either update the label or remove the label entirely. + * + * Arguments: + * * source: The parent. + * * attacker: The object that is hitting the parent. + * * user: The mob who is wielding the attacking object. +*/ +/obj/item/label/proc/interacted_with(atom/source, mob/living/user, obj/item/tool) + SIGNAL_HANDLER + + // If the attacking object is not a hand labeler or its mode is 1 (has a label ready to apply), return. + // The hand labeler should be off (mode is 0), in order to remove a label. + var/obj/item/hand_labeler/labeler = tool + if(!istype(labeler)) + return NONE + + if(labeler.mode) + if(!length(labeler.label)) + labeler.balloon_alert(user, "no text set!") + return ITEM_INTERACT_BLOCKING + if(labeler.label == label_name) + sticking_to.balloon_alert(user, "already labelled!") + return ITEM_INTERACT_BLOCKING + if(length(initial(sticking_to.name)) + length(labeler.label) > MAX_LABEL_LEN) + sticking_to.balloon_alert(user, "label too long!") + return ITEM_INTERACT_BLOCKING + + update_label_name(labeler.label) + playsound(sticking_to, 'sound/items/handling/component_pickup.ogg', 20, TRUE) + sticking_to.balloon_alert(user, "label renamed") + else + playsound(sticking_to, 'sound/items/poster_ripped.ogg', 20, TRUE) + sticking_to.balloon_alert(user, "label removed") + qdel(src) + return ITEM_INTERACT_SUCCESS + +/** + * This proc will trigger when someone examines the thing we're stuck to. + * It will attach the text found in the body of the proc to the `examine_list` and display it to the player examining the parent. + * + * Arguments: + * * source: The parent. + * * user: The mob exmaining the parent. + * * examine_list: The current list of text getting passed from the parent's normal examine() proc. +*/ +/obj/item/label/proc/on_examine(datum/source, mob/user, list/examine_list) + SIGNAL_HANDLER + + examine_list += span_notice("It has a label with some words written on it. Use a hand labeler to remove it.") + +/// Applies a label to the name of what we're stuck to in the format of: "parent_name (label)" +/obj/item/label/proc/apply_label() + sticking_to.name += " ([label_name])" + ADD_TRAIT(sticking_to, TRAIT_HAS_LABEL, REF(src)) + +/// Removes the label from the name of what we're stuck to +/obj/item/label/proc/remove_label() + sticking_to.name = replacetext(sticking_to.name, "([label_name])", "") // Remove the label text from the parent's name, wherever it's located. + sticking_to.name = trim(sticking_to.name) // Shave off any white space from the beginning or end of the parent's name. + REMOVE_TRAIT(sticking_to, TRAIT_HAS_LABEL, REF(src)) + +/// Used to re-apply the label when the thing we're stuck to is renamed. +/obj/item/label/proc/reapply(...) + SIGNAL_HANDLER + + remove_label() + apply_label() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 27072b8674e..eaa4e8627b7 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -231,10 +231,6 @@ to_chat(user, span_notice("You changed [O] to... well... [O].")) else O.AddComponent(/datum/component/rename, input, O.desc) - var/datum/component/label/label = O.GetComponent(/datum/component/label) - if(label) - label.remove_label() - label.apply_label() to_chat(user, span_notice("You have successfully renamed \the [oldname] to [O].")) ADD_TRAIT(O, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) O.update_appearance(UPDATE_ICON) @@ -257,13 +253,6 @@ return qdel(O.GetComponent(/datum/component/rename)) - - //reapply any label to name - var/datum/component/label/label = O.GetComponent(/datum/component/label) - if(label) - label.remove_label() - label.apply_label() - to_chat(user, span_notice("You have successfully reset [O]'s name and description.")) REMOVE_TRAIT(O, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) O.update_appearance(UPDATE_ICON) diff --git a/icons/obj/toys/stickers.dmi b/icons/obj/toys/stickers.dmi index a2285ebd6d6..37780f5fd6c 100644 Binary files a/icons/obj/toys/stickers.dmi and b/icons/obj/toys/stickers.dmi differ diff --git a/tgstation.dme b/tgstation.dme index a6ac5251bdf..89058ef11a7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1208,7 +1208,6 @@ #include "code\datums\components\jukebox.dm" #include "code\datums\components\keep_me_secure.dm" #include "code\datums\components\knockoff.dm" -#include "code\datums\components\label.dm" #include "code\datums\components\leash.dm" #include "code\datums\components\life_link.dm" #include "code\datums\components\light_eater.dm"