Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions code/modules/uplink/uplink_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions yogstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
@@ -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
43 changes: 0 additions & 43 deletions yogstation/code/modules/uplink/uplink_item.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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