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..72b8ad429a37 --- /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_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) + . = ..() + 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 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) + 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