From 369ad867de49ec2fb9a826bc4eaa908911b2423b Mon Sep 17 00:00:00 2001 From: Xhuis Date: Tue, 21 Jun 2016 17:57:53 -0400 Subject: [PATCH] Adds cardboard cutouts --- code/game/objects/items/cardboard_cutouts.dm | 118 ++++++++++++++++++ .../items/stacks/sheets/sheet_types.dm | 3 +- .../items/weapons/storage/uplink_kits.dm | 10 +- code/modules/uplink/uplink_item.dm | 8 ++ icons/obj/cardboard_cutout.dmi | Bin 0 -> 13278 bytes tgstation.dme | 1 + 6 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 code/game/objects/items/cardboard_cutouts.dm create mode 100644 icons/obj/cardboard_cutout.dmi diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm new file mode 100644 index 00000000000..8c09d1da559 --- /dev/null +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -0,0 +1,118 @@ +//Cardboard cutouts! They're man-shaped and can be colored with a crayon to look like a human in a certain outfit, although it's limited, discolored, and obvious to more than a cursory glance. +/obj/item/cardboard_cutout + name = "cardboard cutout" + desc = "A vaguely humanoid cardboard cutout. It's completely blank." + icon = 'icons/obj/cardboard_cutout.dmi' + icon_state = "cutout_basic" + w_class = 4 + var/list/possible_appearances = list("Assistant", "Clown", "Mime", "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", \ + "Ash Walker", "Deathsquad Officer", "Ian") //Possible restyles for the cutout; add an entry in change_appearance() if you add to here + var/pushed_over = FALSE //If the cutout is pushed over and has to be righted + var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version + +/obj/item/cardboard_cutout/attack_hand(mob/living/user) + if(user.a_intent == "help" || pushed_over) + return ..() + user.visible_message("[user] pushes over [src]!", "You push over [src]!") + playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) + name = initial(name) + desc = "[initial(desc)] It's been pushed over." + icon_state = "cutout_pushed_over" + color = initial(color) + pushed_over = TRUE + +/obj/item/cardboard_cutout/attack_self(mob/living/user) + if(!pushed_over) + return + user << "You right [src]." + desc = initial(desc) + icon_state = initial(icon_state) //This resets a cutout to its blank state - this is intentional to allow for resetting + pushed_over = FALSE + +/obj/item/cardboard_cutout/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/toy/crayon)) + change_appearance(I, user) + else + return ..() + +/obj/item/cardboard_cutout/proc/change_appearance(obj/item/toy/crayon/crayon, mob/living/user) + if(!crayon || !user) + return + if(pushed_over) + user << "Right [src] first!" + return + var/new_appearance = input(user, "Choose a new appearance for [src].", "26th Century Deception") as null|anything in possible_appearances + if(!new_appearance || !crayon || !user.canUseTopic(src)) + return + user.visible_message("[user] gives [src] a new look.", "Voila! You give [src] a new look.") + crayon.use_charges(1) + crayon.check_empty(user) + if(!deceptive) + color = "#FFD7A7" + switch(new_appearance) + if("Assistant") + name = "[pick(first_names_male)] [pick(last_names)]" + desc = "A cardboat cutout of an assistant." + icon_state = "cutout_greytide" + if("Clown") + name = pick(clown_names) + desc = "A cardboard cutout of a clown. You get the feeling that it should be in a corner." + icon_state = "cutout_clown" + if("Mime") + name = pick(mime_names) + desc = "...(A cardboard cutout of a mime.)" + icon_state = "cutout_mime" + if("Traitor") + name = "[pick("Unknown", "Captain")]" + desc = "A cardboard cutout of a traitor." + icon_state = "cutout_traitor" + if("Nuke Op") + name = "[pick("Unknown", "COMMS", "Telecomms", "AI", "stealthy op", "STEALTH", "sneakybeaky", "MEDIC", "Medic")]" + desc = "A cardboard cutout of a nuclear operative." + icon_state = "cutout_fluke" + if("Cultist") + name = "Unknown" + desc = "A cardboard cutout of a cultist." + icon_state = "cutout_cultist" + if("Clockwork Cultist") + name = "[pick(first_names_male)] [pick(last_names)]" + desc = "A cardboard cutout of a servant of Ratvar." + icon_state = "cutout_servant" + if("Revolutionary") + name = "Unknown" + desc = "A cardboard cutout of a revolutionary." + icon_state = "cutout_viva" + if("Wizard") + name = "[pick(wizard_first)], [pick(wizard_second)]" + desc = "A cardboard cutout of a wizard." + icon_state = "cutout_wizard" + if("Shadowling") + name = "Unknown" + desc = "A cardboard cutout of a shadowling." + icon_state = "cutout_shadowling" + if("Xenomorph") + name = "alien hunter ([rand(1, 999)])" + desc = "A cardboard cutout of a xenomorph." + icon_state = "cutout_fukken_xeno" + if(prob(25)) + alpha = 75 //Spooky sneaking! + if("Swarmer") + name = "Swarmer ([rand(1, 999)])" + desc = "A cardboard cutout of a swarmer." + icon_state = "cutout_swarmer" + if("Ash Walker") + name = lizard_name(pick(MALE, FEMALE)) + desc = "A cardboard cutout of an ash walker." + icon_state = "cutout_free_antag" + if("Deathsquad Officer") + name = pick(commando_names) + desc = "A cardboard cutout of a death commando." + icon_state = "cutout_deathsquad" + if("Ian") + name = "Ian" + desc = "A cardboard cutout of the HoP's beloved corgi." + icon_state = "cutout_ian" + return 1 + +/obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed + deceptive = TRUE diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 8f3da041c7a..610c45c1057 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -200,9 +200,10 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ new/datum/stack_recipe("folder", /obj/item/weapon/folder), \ new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4), \ + new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5), \ ) -/obj/item/stack/sheet/cardboard //BubbleWrap +/obj/item/stack/sheet/cardboard //BubbleWrap //it's cardboard you fuck name = "cardboard" desc = "Large sheets of card, like boxes folded flat." singular_name = "cardboard sheet" diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 16b344a8db4..ee261497d93 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -104,7 +104,7 @@ /obj/item/weapon/storage/box/syndie_kit name = "box" - desc = "A sleek, sturdy box" + desc = "A sleek, sturdy box." icon_state = "box_of_doom" /obj/item/weapon/storage/box/syndie_kit/imp_freedom @@ -276,4 +276,10 @@ new /obj/item/weapon/throwing_star(src) new /obj/item/weapon/throwing_star(src) new /obj/item/weapon/restraints/legcuffs/bola/tactical(src) - new /obj/item/weapon/restraints/legcuffs/bola/tactical(src) \ No newline at end of file + new /obj/item/weapon/restraints/legcuffs/bola/tactical(src) + +/obj/item/weapon/storage/box/syndie_kit/cutouts/New() + ..() + for(var/i in 1 to 3) + new/obj/item/cardboard_cutout/adaptive(src) + new/obj/item/toy/crayon/rainbow(src) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 3fb6542ce7e..dd8af3a4087 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -711,6 +711,14 @@ var/list/uplink_items = list() // Global list so we only initialize this once. cost = 2 surplus = 30 +/datum/uplink_item/stealthy_tools/cutouts + name = "Adaptive Cardboard Cutouts" + desc = "These cardboard cutouts are coated with a thin material that prevents discoloration and makes the images on them appear more lifelike. This pack contains three as well as a \ + crayon for changing their appearances." + item = /obj/item/weapon/storage/box/syndie_kit/cutouts + cost = 1 + surplus = 20 + //Space Suits and Hardsuits /datum/uplink_item/suits category = "Space Suits and Hardsuits" diff --git a/icons/obj/cardboard_cutout.dmi b/icons/obj/cardboard_cutout.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a329c00555e72face7d36e229a528ff1f6706390 GIT binary patch literal 13278 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 f_0