From 8fcc1a3e0ee159e646cc0c9fed0f58b0f972f68a Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 8 Dec 2021 16:45:37 -0500 Subject: [PATCH 1/3] Adds the Access Kit --- code/modules/uplink/uplink_items.dm | 50 ++++++++++++++++++ yogstation.dme | 1 + .../infiltrator/items/access_kit.dm | 51 +++++++++++++++++++ yogstation/code/modules/uplink/uplink_item.dm | 43 ---------------- 4 files changed, 102 insertions(+), 43 deletions(-) create mode 100644 yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 0481e69b95a1..16d0e85045a1 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1742,6 +1742,56 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 0 exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration +// Events +/datum/uplink_item/services + category = "Services" + include_modes = list(/datum/game_mode/infiltration, /datum/game_mode/nuclear) + surplus = 0 + restricted = TRUE + +/datum/uplink_item/services/manifest_spoof + name = "Crew Manifest Spoof" + desc = "A button capable of adding a single person to the crew manifest." + item = /obj/item/service/manifest + cost = 15 //Maybe this is too cheap?? + +/datum/uplink_item/services/fake_ion + name = "Fake Ion Storm" + desc = "Fakes an ion storm announcment. A good distraction, especially if the AI is weird anyway." + item = /obj/item/service/ion + cost = 7 + +/datum/uplink_item/services/fake_meteor + name = "Fake Meteor Announcement" + desc = "Fakes an meteor announcment. A good way to get any C4 on the station exterior, or really any small explosion, brushed off as a meteor hit." + item = /obj/item/service/meteor + cost = 7 + +/datum/uplink_item/services/fake_rod + name = "Fake Immovable Rod" + desc = "Fakes an immovable rod announcement. Good for a short-lasting distraction." + item = /obj/item/service/rodgod + cost = 6 //less likely to be believed + +//Infiltrator shit +/datum/uplink_item/infiltration + category = "Infiltration Gear" + include_modes = list(/datum/game_mode/infiltration) + surplus = 0 + +/datum/uplink_item/infiltration/extra_stealthsuit + name = "Extra Chameleon Hardsuit" + desc = "An infiltration hardsuit, capable of changing it's appearance instantly." + item = /obj/item/clothing/suit/space/hardsuit/infiltration + cost = 10 + +/datum/uplink_item/infiltration/access_kit + name = "Access Kit" + desc = "A secret device, reverse engineered by gear retrieved from previous Nanotrasen infiltration missions. Allows you to spoof an ID card to have the assignment and access of a single low-level job." + item = /obj/item/access_kit/syndicate + limited_stock = 1 + cost = 5 + //Race-specific items /datum/uplink_item/race_restricted category = "Species-Restricted" diff --git a/yogstation.dme b/yogstation.dme index 6b71aefde432..bef371d4b5ab 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -3392,6 +3392,7 @@ #include "yogstation\code\modules\antagonists\infiltrator\objectives.dm" #include "yogstation\code\modules\antagonists\infiltrator\outfit.dm" #include "yogstation\code\modules\antagonists\infiltrator\team.dm" +#include "yogstation\code\modules\antagonists\infiltrator\items\access_kit.dm" #include "yogstation\code\modules\antagonists\infiltrator\items\ai_hijack.dm" #include "yogstation\code\modules\antagonists\infiltrator\items\hardsuit.dm" #include "yogstation\code\modules\antagonists\infiltrator\items\services.dm" diff --git a/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm b/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm new file mode 100644 index 000000000000..ac686e8adf24 --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm @@ -0,0 +1,51 @@ +/obj/item/access_kit + name = "access kit (unset)" + desc = "A one-use device that can be used to spoof and grant the access associated with a low-level job." + icon_state = "suspiciousphone" + var/datum/job/job + var/list/available_jobs = list(/datum/job/hydro, /datum/job/janitor, /datum/job/cargo_tech, /datum/job/scientist, /datum/job/doctor, /datum/job/engineer) + +/obj/item/access_kit/interact(mob/user) + . = ..() + if (!ishuman(user)) + return + if (syndicate && !is_syndicate(user)) + to_chat(user, span_warning("You have no idea how to use [src]...")) + return + if (job) + to_chat(user, span_warning("[src] has already been used! Apply it to your ID to use it.")) + return + var/list/radial_menu = list() + for (var/J in available_jobs) + var/datum/job/job = new J + radial_menu[job.title] = get_flat_human_icon("accesskit_[job.type]", job, showDirs = list(SOUTH)) + var/result = show_radial_menu(user, src, radial_menu) + if (!result) + return + job = SSjob.GetJob(result) + name = "access kit ([job.title])" + to_chat(user, span_success("You set up [src] to spoof and grant access to [job.title].")) + +/obj/item/access_kit/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if (syndicate && !is_syndicate(user)) + return + if (!istype(target, /obj/item/card/id)) + return + if (!job) + to_chat(user, span_warning("[src] has not been set to a specific job yet! Use it in-hand to set up the access kit.")) + return + var/obj/item/card/id/id = target + id.assignment = job.title + id.originalassignment = job.title + id.access |= job.minimal_access + id.update_label() + to_chat(user, span_notice("You apply [src] to [id], granting it the access of that job!")) + if (is_infiltrator(user)) + to_chat(user, span_boldnotice("Ensure to properly update your chameleon clothes to reflect that of a [job.title]!")) + do_sparks(5, FALSE, user) + user.dropItemToGround(src) + qdel(src) + +/obj/item/access_kit/syndicate + syndicate = TRUE diff --git a/yogstation/code/modules/uplink/uplink_item.dm b/yogstation/code/modules/uplink/uplink_item.dm index 3189661e9572..723d8113b98d 100644 --- a/yogstation/code/modules/uplink/uplink_item.dm +++ b/yogstation/code/modules/uplink/uplink_item.dm @@ -127,46 +127,3 @@ item = /obj/item/melee/fryingpan/bananium cost = 40 cant_discount = TRUE - -// Events -/datum/uplink_item/services - category = "Services" - include_modes = list(/datum/game_mode/infiltration, /datum/game_mode/nuclear) - surplus = 0 - restricted = TRUE - -/datum/uplink_item/services/manifest_spoof - name = "Crew Manifest Spoof" - desc = "A button capable of adding a single person to the crew manifest." - item = /obj/item/service/manifest - cost = 15 //Maybe this is too cheap?? - -/datum/uplink_item/services/fake_ion - name = "Fake Ion Storm" - desc = "Fakes an ion storm announcment. A good distraction, especially if the AI is weird anyway." - item = /obj/item/service/ion - cost = 7 - -/datum/uplink_item/services/fake_meteor - name = "Fake Meteor Announcement" - desc = "Fakes an meteor announcment. A good way to get any C4 on the station exterior, or really any small explosion, brushed off as a meteor hit." - item = /obj/item/service/meteor - cost = 7 - -/datum/uplink_item/services/fake_rod - name = "Fake Immovable Rod" - desc = "Fakes an immovable rod announcement. Good for a short-lasting distraction." - item = /obj/item/service/rodgod - cost = 6 //less likely to be believed - -//Infiltrator shit -/datum/uplink_item/infiltration - category = "Infiltration Gear" - include_modes = list(/datum/game_mode/infiltration) - surplus = 0 - -/datum/uplink_item/infiltration/extra_stealthsuit - name = "Extra Chameleon Hardsuit" - desc = "An infiltration hardsuit, capable of changing it's appearance instantly." - item = /obj/item/clothing/suit/space/hardsuit/infiltration - cost = 10 From b55e200cfdb5e7043306dbdda35bb79b827bbddf Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 8 Dec 2021 16:57:02 -0500 Subject: [PATCH 2/3] This is what I get for letting Copilot write DM --- .../code/modules/antagonists/infiltrator/items/access_kit.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm b/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm index ac686e8adf24..295f6d517d04 100644 --- a/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm +++ b/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm @@ -24,7 +24,7 @@ return job = SSjob.GetJob(result) name = "access kit ([job.title])" - to_chat(user, span_success("You set up [src] to spoof and grant access to [job.title].")) + to_chat(user, span_notice("You set up [src] to spoof and grant access to [job.title].")) /obj/item/access_kit/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() From 12d79e6f747102862c8aaea93c7b750f354e5add Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 15 Dec 2021 19:40:55 -0500 Subject: [PATCH 3/3] Update yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm Co-authored-by: Hopekz --- .../code/modules/antagonists/infiltrator/items/access_kit.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm b/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm index 295f6d517d04..72b8ad429a37 100644 --- a/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm +++ b/yogstation/code/modules/antagonists/infiltrator/items/access_kit.dm @@ -40,7 +40,7 @@ id.originalassignment = job.title id.access |= job.minimal_access id.update_label() - to_chat(user, span_notice("You apply [src] to [id], granting it the access of that job!")) + to_chat(user, span_notice("You apply [src] to [id], granting it the access of a [job.title]!")) if (is_infiltrator(user)) to_chat(user, span_boldnotice("Ensure to properly update your chameleon clothes to reflect that of a [job.title]!")) do_sparks(5, FALSE, user)