From 426b3900010f6161da4e1bf9cea62ec3c1a277a9 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 15 Mar 2023 01:50:11 +0100 Subject: [PATCH] [MIRROR] Adds stickers [MDB IGNORE] (#19856) * Adds stickers (#73892) ## About The Pull Request Adds stickers to the game, purchasable from cargo. They are flammable, applied instantly, and fall off when washed by spacecleaner/showers/soap. They burn instantly if the mob it is attached to is ignited or the turf it is attached to reaches 100+ Celsius ![2023-03-10 13_22_31-Window](https://user-images.githubusercontent.com/70376633/224326335-08848332-f51d-476e-9aaf-c6064ca82c30.png) Syndicate-only stickers on the left, normal on the right ![image](https://user-images.githubusercontent.com/70376633/224433519-a92c6124-392f-4e96-81bf-f51df2ab2e80.png) ![2023-03-10 22_34_42-Window](https://user-images.githubusercontent.com/70376633/224433579-c29d0d39-d544-47f7-baa8-249abe1bbb96.png) ![2023-03-10 22_34_58-Window](https://user-images.githubusercontent.com/70376633/224433599-8c991983-ea6b-4187-b74c-a786b4c4f3b9.png) ## Why It's Good For The Game Stickers probably could be cool if the clown puts googly-eyes on beepsky or smiley faces on the captain Probably good for tile art? look at this guy go ![image](https://user-images.githubusercontent.com/70376633/224326733-add34f1f-0127-4499-8a4d-7caa1ca2ab5c.png) ## Changelog :cl: add: Added stickers, purchasable from cargo /:cl: --------- Co-authored-by: Jacquerel Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> * Adds stickers --------- Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com> Co-authored-by: Jacquerel Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> --- code/game/objects/items/sticker.dm | 226 ++++++++++++++++++ .../items/storage/boxes/service_boxes.dm | 26 ++ .../game/objects/items/storage/uplink_kits.dm | 13 + code/modules/cargo/packs/costumes_toys.dm | 12 + code/modules/uplink/uplink_items/badass.dm | 6 + icons/obj/stickers.dmi | Bin 0 -> 7392 bytes tgstation.dme | 1 + 7 files changed, 284 insertions(+) create mode 100644 code/game/objects/items/sticker.dm create mode 100644 icons/obj/stickers.dmi diff --git a/code/game/objects/items/sticker.dm b/code/game/objects/items/sticker.dm new file mode 100644 index 00000000000..3a3ad99cbfd --- /dev/null +++ b/code/game/objects/items/sticker.dm @@ -0,0 +1,226 @@ +/// parent type for all other stickers. do not spawn directly +/obj/item/sticker + name = "sticker" + desc = "A sticker with some strong adhesive on the back, sticks to stuff!" + item_flags = NOBLUDGEON | XENOMORPH_HOLDABLE //funny + resistance_flags = FLAMMABLE + icon = 'icons/obj/stickers.dmi' + w_class = WEIGHT_CLASS_TINY + throw_range = 3 + vis_flags = VIS_INHERIT_DIR | VIS_INHERIT_PLANE | VIS_INHERIT_LAYER + ///The overlay we apply to things we stick to + var/mutable_appearance/sticker_overlay + ///A list of icon_states to pick an icon_state on Initialize, provided it is not null. + var/list/icon_states + ///The thing we are attached to + var/atom/attached + ///The turf our COMSIG_TURF_EXPOSE is registered to, so we can unregister it later. + var/turf/signal_turf + /// If the sticker should be disincluded from normal sticker boxes. + var/contraband = FALSE + +/obj/item/sticker/Initialize(mapload) + . = ..() + if(icon_states) + icon_state = pick(icon_states) + pixel_y = rand(-3,3) + pixel_x = rand(-3,3) + +/obj/item/sticker/afterattack(atom/target, mob/living/user, prox, params) + . = ..() + if(!prox) + return + if(!isliving(target) && !isobj(target) && !isturf(target)) + return + var/list/parameters = params2list(params) + if(!LAZYACCESS(parameters, ICON_X) || !LAZYACCESS(parameters, ICON_Y)) + return + var/divided_size = world.icon_size / 2 + var/px = text2num(LAZYACCESS(parameters, ICON_X)) - divided_size + var/py = text2num(LAZYACCESS(parameters, ICON_Y)) - divided_size + . |= AFTERATTACK_PROCESSED_ITEM + user.do_attack_animation(target) + stick(target,user,px,py) + return . + +///Sticks this sticker to the target, with the pixel offsets being px and py. +/obj/item/sticker/proc/stick(atom/target, mob/living/user, px,py) + sticker_overlay = mutable_appearance(icon, icon_state , layer = target.layer + 1, appearance_flags = RESET_COLOR | PIXEL_SCALE) + sticker_overlay.pixel_x = px + sticker_overlay.pixel_y = py + target.add_overlay(sticker_overlay) + attached = target + if(isliving(target) && user) + var/mob/living/victim = target + if(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) + register_signals(user) + moveToNullspace() + +///Makes this sticker move from nullspace and cut the overlay from the object it is attached to, silent for no visible message. +/obj/item/sticker/proc/peel(datum/source) + SIGNAL_HANDLER + if(!attached) + return + attached.cut_overlay(sticker_overlay) + sticker_overlay = null + forceMove(attached.drop_location()) + pixel_y = rand(-4,1) + pixel_x = rand(-3,3) + unregister_signals() + attached = null + +///Registers signals to the object it is attached to +/obj/item/sticker/proc/register_signals(mob/living/user) + if(isturf(attached)) + //register signals on the users turf instead because we can assume they are on flooring sticking it to a wall so it should burn (otherwise it would fruitlessly check wall temperature) + signal_turf = (user && isclosedturf(attached)) ? get_turf(user) : attached + RegisterSignal(signal_turf, COMSIG_TURF_EXPOSE, PROC_REF(on_turf_expose)) + RegisterSignal(attached, COMSIG_LIVING_IGNITED, PROC_REF(on_ignite)) + RegisterSignal(attached, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(peel)) + RegisterSignal(attached, COMSIG_PARENT_QDELETING, PROC_REF(on_attached_qdel)) + +//Unregisters signals from the object it is attached to +/obj/item/sticker/proc/unregister_signals(datum/source) + SIGNAL_HANDLER + UnregisterSignal(attached, list(COMSIG_COMPONENT_CLEAN_ACT, COMSIG_LIVING_IGNITED, COMSIG_PARENT_QDELETING)) + if(signal_turf) + UnregisterSignal(signal_turf, COMSIG_TURF_EXPOSE) + signal_turf = null + +/obj/item/sticker/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + if(!. && prob(50)) + stick(hit_atom,rand(-7,7),rand(-7,7)) + attached.balloon_alert_to_viewers("the sticker lands on its sticky side!") + +///Signal handler for COMSIG_TURF_EXPOSE, deletes this sticker if the temperature is above 100C and it is flammable +/obj/item/sticker/proc/on_turf_expose(datum/source, datum/gas_mixture/air, exposed_temperature) + SIGNAL_HANDLER + if(!(resistance_flags & FLAMMABLE) || exposed_temperature <= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + return + peel() + qdel(src) + +///Signal handler for COMSIG_LIVING_IGNITED, deletes this sticker, if it is flammable +/obj/item/sticker/proc/on_ignite(datum/source) + SIGNAL_HANDLER + if(!(resistance_flags & FLAMMABLE)) + return + peel() + qdel(src) + +/// Signal handler for COMSIG_PARENT_QDELETING, deletes this sticker if the attached object is deleted +/obj/item/sticker/proc/on_attached_qdel(datum/source) + SIGNAL_HANDLER + qdel(src) + +/obj/item/sticker/smile + name = "smiley sticker" + icon_state = "smile" + +/obj/item/sticker/frown + name = "frowny sticker" + icon_state = "frown" + +/obj/item/sticker/left_arrow + name = "left arrow sticker" + icon_state = "larrow" + +/obj/item/sticker/right_arrow + name = "right arrow sticker" + icon_state = "rarrow" + +/obj/item/sticker/star + name = "star sticker" + icon_state = "star1" + icon_states = list("star1","star2") + +/obj/item/sticker/heart + name = "heart sticker" + icon_state = "heart" + +/obj/item/sticker/googly + name = "googly eye sticker" + icon_state = "googly1" + icon_states = list("googly1","googly2") + +/obj/item/sticker/rev + name = "blue R sticker" + desc = "A sticker of FUCK THE SYSTEM, the galaxy's premiere hardcore punk band." + icon_state = "revhead" + +/obj/item/sticker/pslime + name = "slime plushie sticker" + icon_state = "pslime" + +/obj/item/sticker/pliz + name = "lizard plushie sticker" + icon_state = "plizard" + +/obj/item/sticker/pbee + name = "bee plushie sticker" + icon_state = "pbee" + +/obj/item/sticker/psnake + name = "snake plushie sticker" + icon_state = "psnake" + +/obj/item/sticker/robot + name = "bot sticker" + icon_state = "tile" + icon_states = list("tile","medbot","clean") + +/obj/item/sticker/toolbox + name = "toolbox sticker" + icon_state = "toolbox" + +/obj/item/sticker/clown + name = "clown sticker" + icon_state = "honkman" + +/obj/item/sticker/mime + name = "mime sticker" + icon_state = "silentman" + +/obj/item/sticker/assistant + name = "assistant sticker" + icon_state = "tider" + +/obj/item/sticker/syndicate + name = "syndicate sticker" + icon_state = "synd" + contraband = TRUE + +/obj/item/sticker/syndicate/c4 + name = "C-4 sticker" + icon_state = "c4" + +/obj/item/sticker/syndicate/bomb + name = "syndicate bomb sticker" + icon_state = "sbomb" + +/obj/item/sticker/syndicate/apc + name = "broken APC sticker" + icon_state = "milf" + +/obj/item/sticker/syndicate/larva + name = "larva sticker" + icon_state = "larva" + +/obj/item/sticker/syndicate/cult + name = "bloody paper sticker" + icon_state = "cult" + +/obj/item/sticker/syndicate/flash + name = "flash sticker" + icon_state = "flash" + +/obj/item/sticker/syndicate/op + name = "operative sticker" + icon_state = "newcop" + +/obj/item/sticker/syndicate/trap + name = "bear trap sticker" + icon_state = "trap" diff --git a/code/game/objects/items/storage/boxes/service_boxes.dm b/code/game/objects/items/storage/boxes/service_boxes.dm index 2791d3e8c62..1b60b2947ba 100644 --- a/code/game/objects/items/storage/boxes/service_boxes.dm +++ b/code/game/objects/items/storage/boxes/service_boxes.dm @@ -203,3 +203,29 @@ /obj/item/storage/box/party_poppers/PopulateContents() for(var/i in 1 to 5) new /obj/item/reagent_containers/spray/chemsprayer/party(src) + +/obj/item/storage/box/stickers + name = "box of stickers" + desc = "A box full of random stickers. Do give to the clown." + +/obj/item/storage/box/stickers/proc/generate_non_contraband_stickers_list() + . = list() + for(var/obj/item/sticker/sticker_type as anything in subtypesof(/obj/item/sticker)) + if(!initial(sticker_type.contraband)) + . += sticker_type + return . +/obj/item/storage/box/stickers/PopulateContents() + var/static/list/non_contraband + if(!non_contraband) + non_contraband = generate_non_contraband_stickers_list() + for(var/i in 1 to rand(4,8)) + var/type = pick(non_contraband) + new type(src) + +/obj/item/storage/box/stickers/googly + name = "box of googly eye stickers" + desc = "Turn anything and everything into something vaguely alive!" + +/obj/item/storage/box/stickers/googly/PopulateContents() + for(var/i in 1 to 6) + new /obj/item/sticker/googly(src) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 8b519550fc4..c44669ad1ce 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -607,6 +607,19 @@ group.register(i) desc += " The implants are registered to the \"[group.name]\" group." +/obj/item/storage/box/syndie_kit/stickers + name = "sticker kit" + +/obj/item/storage/box/syndie_kit/stickers/Initialize(mapload) + . = ..() + atom_storage.max_slots = 8 + +/obj/item/storage/box/syndie_kit/stickers/PopulateContents() + var/list/types = subtypesof(/obj/item/sticker/syndicate) + for(var/i in 1 to atom_storage.max_slots) + var/type = pick(types) + new type(src) + /obj/item/storage/box/syndie_kit/pinata name = "weapons grade pinata kit" desc = "Contains a weapons grade pinata and 2 belts for carrying its contents." diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index e50a1305ff3..1b337ed2e11 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -294,6 +294,18 @@ cardpacktype = pick(subtypesof(/obj/item/cardpack)) new cardpacktype(C) +/datum/supply_pack/costumes_toys/stickers + name = "Sticker Pack Crate" + desc = "This crate contains a random assortment of stickers." + cost = CARGO_CRATE_VALUE * 3 + contains = list() + +/datum/supply_pack/costumes_toys/stickers/fill(obj/structure/closet/crate/crate) + for(var/i in 1 to rand(1,2)) + new /obj/item/storage/box/stickers(crate) + if(prob(30)) // a pair of googly eyes because funny + new /obj/item/storage/box/stickers/googly(crate) + /datum/supply_pack/constumes_toys/pinata name = "Corgi Pinata Kit" desc = "This crate contains a pinata full of candy, a blindfold and a bat for smashing it." diff --git a/code/modules/uplink/uplink_items/badass.dm b/code/modules/uplink/uplink_items/badass.dm index 1b02566f9d3..7e8ec01edde 100644 --- a/code/modules/uplink/uplink_items/badass.dm +++ b/code/modules/uplink/uplink_items/badass.dm @@ -78,3 +78,9 @@ purchasable_from = ALL progression_minimum = 110 MINUTES item = /obj/item/storage/box/syndie_kit/centcom_costume + +/datum/uplink_item/badass/stickers + name = "Syndicate Sticker Pack" + desc = "Contains 8 random stickers precisely engineered to resemble suspicious objects, which may or may not be useful for fooling crew." + item = /obj/item/storage/box/syndie_kit/stickers + cost = 1 diff --git a/icons/obj/stickers.dmi b/icons/obj/stickers.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ddc759fe0e3ddbf04fe443c48c6d6d0d48500539 GIT binary patch literal 7392 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 Ang9R* literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 0a597bca746..17acf43b94a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1899,6 +1899,7 @@ #include "code\game\objects\items\singularityhammer.dm" #include "code\game\objects\items\skub.dm" #include "code\game\objects\items\spear.dm" +#include "code\game\objects\items\sticker.dm" #include "code\game\objects\items\tail_pin.dm" #include "code\game\objects\items\taster.dm" #include "code\game\objects\items\teleportation.dm"