Skip to content

Commit

Permalink
Nanotrasen Career Trainer - REVIVAL (PT1) (#26512)
Browse files Browse the repository at this point in the history
* Nct ID

* Preferences, job creation, access and other stuff

* Sprites, defines, hidden job pref and other stuff!

* Missed a comma

* Sprites updated, clothing code, outfit and id

* Fix a small oops

* Data chip + Sechud icon

* Offstation, access, datachip code, ticket autoresponse and a lot of other stuff.

* Typo, spritesheet fixingg and icon color

* Telebaton removed, not allowed to scan ERT IDs, blacklisted some access

* Applies suggestion

Co-authored-by: Aylong <[email protected]>
Signed-off-by: Pedro <[email protected]>

* Applying Suggestions!

* Forgot to increase the number of slots, oops

* Added a few items that I forgot, applying suggestions.

* Fix check fail?

* Mapping Tools/Icons.

* Office added to all maps, a few modifications to fit.

* Adds ACCESS_TRAINER to who needs it.

* Fixing check fails.

* NCT Beret obj are now where they're supposed to be

* Suggestion

Co-authored-by: Burzah <[email protected]>
Signed-off-by: Pedro <[email protected]>

* Sprites fix + NCT flag

* Code Suggestion

* Sprite update

* Suggestions

* Diagoras Office, conflict fix.

* Day 1 fixes, suggestions.

* bundle rebuild

* Fixing a few issues.

* Mapping review + Suggestions

* Fixed check fail.

* Conflict fix + You shouldn't be able to insert the NCT chip into an id console

* Fix map conflicts

* Plasmaman icons and Kidan icon fix

* Conflict fix?

* A few changes following feedback.

* Small description changed, as per requested feedback.

* Suggestions/Fix

* Forgot some mapping issues

* Suggestions

* Fixed?

* Fix linters

* More fixes

* aaaaaaaaaaa

* Christa's reviews

* Naming stuff

---------

Signed-off-by: Pedro <[email protected]>
Co-authored-by: Aylong <[email protected]>
Co-authored-by: Burzah <[email protected]>
Co-authored-by: DGamerL <[email protected]>
  • Loading branch information
4 people authored Dec 30, 2024
1 parent 2559287 commit b55bef2
Show file tree
Hide file tree
Showing 82 changed files with 2,874 additions and 1,473 deletions.
677 changes: 433 additions & 244 deletions _maps/map_files/stations/boxstation.dmm

Large diffs are not rendered by default.

1,065 changes: 659 additions & 406 deletions _maps/map_files/stations/cerestation.dmm

Large diffs are not rendered by default.

645 changes: 412 additions & 233 deletions _maps/map_files/stations/deltastation.dmm

Large diffs are not rendered by default.

553 changes: 349 additions & 204 deletions _maps/map_files/stations/emeraldstation.dmm

Large diffs are not rendered by default.

962 changes: 600 additions & 362 deletions _maps/map_files/stations/metastation.dmm

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions code/__DEFINES/access_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
#define ACCESS_MINERAL_STOREROOM 76
#define ACCESS_CARGO_BAY 78
#define ACCESS_SUPPLY_SHUTTLE 79
#define ACCESS_TRAINER 80

#define ACCESS_WEAPONS 99 //! Weapon authorization for secbots.

Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/job_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#define JOB_JUDGE (1<<12)
#define JOB_BLUESHIELD (1<<13)
#define JOB_NANO (1<<14)
#define JOB_INSTRUCTOR (1<<15)

#define JOBCAT_MEDSCI (1<<1)

Expand Down
3 changes: 3 additions & 0 deletions code/controllers/subsystem/SSjobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,9 @@ SUBSYSTEM_DEF(jobs)
if(job.admin_only) // No admin positions either.
continue

if(job.mentor_only) // Neither for mentor positions
continue

if(jobban_isbanned(player, job.title))
Debug("GRJ isbanned failed, Player: [player], Job: [job.title]")
continue
Expand Down
18 changes: 17 additions & 1 deletion code/controllers/subsystem/tickets/SSmentor_tickets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets
"Clear Cache" = "To fix a blank screen, go to the 'Special Verbs' tab and press 'Reload UI Resources'. If that fails, clear your BYOND cache (instructions provided with 'Reload UI Resources'). If that still fails, please ask for help again, stating you have already done these steps.",
"Experiment!" = "Experiment! Part of the joy of this game is trying out various things, and dealing with the consequences if/when they go horribly wrong.",
"How to Objectives" = "There are lots of ways to accomplish your objectives as an antagonist. A direct frontal assault may work, provided you can get in and out before backup arrives. Sneaking in can work, too, as long as you're quick and avoid prying eyes. But don't forget roleplaying methods! Tricking your target into a maze of bear traps is much more interesting than just shooting them with a gun. Even if it fails, you and your target (or its guardians) are likely to have more fun this way, and that's the most important part.",
"MHelp was in Russian" = "Привет! Ты попал на английский Paradise сервер. Возможно, ты ошибся. Русский имеет такое название: SS220\[RU]."
"MHelp was in Russian" = "Привет! Ты попал на английский Paradise сервер. Возможно, ты ошибся. Русский имеет такое название: SS220\[RU].",
"NCT Dispatch" = "A Nanotrasen Career Trainer will be assisting you in-game. You should be able to identify them by their green uniform and black coat."
)

if(GLOB.configuration.url.github_url)
Expand Down Expand Up @@ -71,6 +72,21 @@ GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets
if(message_key == null)
T.staffAssigned = null //if they cancel we dont need to hold this ticket anymore
return
if(message_key == "NCT Dispatch")
var/nct_active = list()
for(var/mob/living/carbon/human/trainer as anything in GLOB.human_list) // Let's check if we have any active NCTs
if(trainer.mind?.assigned_role != "Nanotrasen Career Trainer")
continue
nct_active += trainer
if(!length(nct_active))
to_chat(usr, "There are no active NCTs. Autoresponse canceled.") // If we don't, don't solve the ticket and then send feedback.
return
var/mob/living/carbon/human/trainee = get_mob_by_ckey(T.client_ckey)
for(var/mob/living/carbon/human/nct as anything in nct_active)
if(!locate(/obj/item/radio/headset) in list(nct.l_ear, nct.r_ear)) // If the NCT doesn't have a headset, ignore it.
continue
to_chat(nct, "<span class='notice'>Incoming priority transmission from Nanotrasen Training Center. Request information as follows: </span><span class='specialnotice'>Career Trainer, we've received a request from an employee. [trainee.p_their(TRUE)] name is [trainee.real_name], [trainee.p_theyre()] a [trainee.mind.assigned_role]. See if [trainee.p_they()] need [trainee.p_s()] any help.</span>")
SEND_SOUND(nct, 'sound/effects/headset_message.ogg')

SEND_SOUND(returnClient(N), sound('sound/effects/adminhelp.ogg'))
to_chat_safe(returnClient(N), "<span class='[span_class]'>[key_name_hidden(C)] is autoresponding with:</span> <span class='adminticketalt'>[response_phrases[message_key]]</span>") //for this we want the full value of whatever key this is to tell the player so we do response_phrases[message_key]
Expand Down
4 changes: 4 additions & 0 deletions code/datums/datacore.dm
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,10 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
if("Nanotrasen Representative")
clothes_s = new /icon('icons/mob/clothing/under/centcom.dmi', "officer_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "laceups"), ICON_UNDERLAY)
if("Nanotrasen Career Trainer")
clothes_s = new /icon('icons/mob/clothing/under/procedure.dmi', "trainer_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "laceups"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/clothing/suit.dmi', "trainercoat"), ICON_OVERLAY)
if("Blueshield")
clothes_s = new /icon('icons/mob/clothing/under/centcom.dmi', "officer_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "jackboots"), ICON_UNDERLAY)
Expand Down
7 changes: 7 additions & 0 deletions code/datums/outfits/plasmamen_outfits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -188,5 +188,12 @@

/datum/outfit/plasmaman/assistant
name = "Assistant Plasmaman"

head = /obj/item/clothing/head/helmet/space/plasmaman/assistant
uniform = /obj/item/clothing/under/plasmaman/assistant

/datum/outfit/plasmaman/trainer
name = "Plasmaman Career Trainer"

head = /obj/item/clothing/head/helmet/space/plasmaman/trainer
uniform = /obj/item/clothing/under/plasmaman/trainer
3 changes: 2 additions & 1 deletion code/datums/station_traits/positive_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,8 @@
/datum/job/judge = /obj/item/organ/internal/cyberimp/arm/telebaton,
/datum/job/explorer = /obj/item/organ/internal/cyberimp/arm/toolset,
/datum/job/nanotrasenrep = /obj/item/organ/internal/heart/cybernetic/upgraded,
/datum/job/blueshield = /obj/item/organ/internal/cyberimp/arm/flash
/datum/job/blueshield = /obj/item/organ/internal/cyberimp/arm/flash,
/datum/job/nanotrasentrainer = /obj/item/organ/internal/heart/cybernetic/upgraded
)

/datum/station_trait/cybernetic_revolution/New()
Expand Down
4 changes: 4 additions & 0 deletions code/game/area/ss13_areas/procedure_areas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

/area/station/procedure/trainer_office
name = "\improper Trainer's Office"
icon_state = "procedure_nct"
2 changes: 1 addition & 1 deletion code/game/gamemodes/changeling/changeling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","E
name = "changeling"
config_tag = "changeling"
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Trans-Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Trans-Solar Federation General", "Nanotrasen Career Trainer")
species_to_mindflayer = list("Machine")
required_players = 15
required_enemies = 1
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/revolution/revolution.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
/datum/game_mode/revolution
name = "revolution"
config_tag = "revolution"
restricted_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Blueshield", "Nanotrasen Representative", "Magistrate", "Quartermaster")
restricted_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Blueshield", "Nanotrasen Representative", "Magistrate", "Quartermaster", "Nanotrasen Career Trainer")
required_players = 20
required_enemies = 1
recommended_enemies = 3
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/traitor/traitor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "traitor"
config_tag = "traitor"
restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Trans-Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Trans-Solar Federation General", "Nanotrasen Career Trainer")
required_players = 0
required_enemies = 1
recommended_enemies = 4
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/trifecta/trifecta.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/datum/game_mode/trifecta
name = "Trifecta"
config_tag = "trifecta"
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Trans-Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Trans-Solar Federation General", "Nanotrasen Career Trainer")
restricted_jobs = list("Cyborg")
secondary_restricted_jobs = list("AI")
required_players = 25
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/vampire/vampire_gamemode.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "vampire"
config_tag = "vampire"
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Chaplain", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Trans-Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Chaplain", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Trans-Solar Federation General", "Nanotrasen Career Trainer")
species_to_mindflayer = list("Machine")
required_players = 15
required_enemies = 1
Expand Down
6 changes: 4 additions & 2 deletions code/game/jobs/access.dm
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@
ACCESS_INTERNAL_AFFAIRS, ACCESS_LIBRARY, ACCESS_MAGISTRATE, ACCESS_MAINT_TUNNELS, ACCESS_HEADS_VAULT, ACCESS_MEDICAL, ACCESS_MIME,
ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_NTREP, ACCESS_PARAMEDIC, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_ENGINE_EQUIP, ACCESS_PSYCHIATRIST, ACCESS_QM, ACCESS_RD, ACCESS_RC_ANNOUNCE, ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_RESEARCH, ACCESS_SECURITY,
ACCESS_SURGERY, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_THEATRE, ACCESS_TCOMSAT, ACCESS_TOX_STORAGE, ACCESS_VIROLOGY, ACCESS_WEAPONS, ACCESS_XENOBIOLOGY)
ACCESS_SURGERY, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_THEATRE, ACCESS_TCOMSAT, ACCESS_TOX_STORAGE, ACCESS_VIROLOGY, ACCESS_WEAPONS, ACCESS_XENOBIOLOGY, ACCESS_TRAINER)

/proc/get_all_centcom_access()
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_SECURITY, ACCESS_CENT_SHUTTLES, ACCESS_CENT_SPECOPS, ACCESS_CENT_SPECOPS_COMMANDER, ACCESS_CENT_COMMANDER)
Expand All @@ -126,7 +126,7 @@
if(REGION_ALL)
return get_all_accesses()
if(REGION_GENERAL) //station general
return list(ACCESS_KITCHEN, ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_INTERNAL_AFFAIRS, ACCESS_MAGISTRATE, ACCESS_CLOWN, ACCESS_MIME)
return list(ACCESS_KITCHEN, ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_INTERNAL_AFFAIRS, ACCESS_MAGISTRATE, ACCESS_CLOWN, ACCESS_MIME, ACCESS_TRAINER)
if(REGION_SECURITY) //security
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS)
if(REGION_MEDBAY) //medbay
Expand Down Expand Up @@ -302,6 +302,8 @@
return "AI Satellite"
if(ACCESS_WEAPONS)
return "Weapon Permit"
if(ACCESS_TRAINER)
return "Nanotrasen Career Trainer"

/proc/get_centcom_access_desc(A)
switch(A)
Expand Down
1 change: 1 addition & 0 deletions code/game/jobs/job/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
var/hidden_from_job_prefs = FALSE // if true, job preferences screen never shows this job.

var/admin_only = 0
var/mentor_only = 0
var/spawn_ert = 0
var/syndicate_command = 0

Expand Down
77 changes: 75 additions & 2 deletions code/game/jobs/job/supervisor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,8 @@
ACCESS_SECURITY,
ACCESS_SUPPLY_SHUTTLE,
ACCESS_THEATRE,
ACCESS_WEAPONS
ACCESS_WEAPONS,
ACCESS_TRAINER
)
blacklisted_disabilities = list(DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP)
outfit = /datum/outfit/job/nanotrasenrep
Expand Down Expand Up @@ -276,7 +277,8 @@
ACCESS_RC_ANNOUNCE,
ACCESS_SEC_DOORS,
ACCESS_SECURITY,
ACCESS_WEAPONS
ACCESS_WEAPONS,
ACCESS_TRAINER
)
blacklisted_disabilities = list(DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP)
outfit = /datum/outfit/job/judge
Expand Down Expand Up @@ -349,3 +351,74 @@
bio_chips = list(/obj/item/bio_chip/mindshield)
satchel = /obj/item/storage/backpack/satchel_sec
dufflebag = /obj/item/storage/backpack/duffel/security

/datum/job/nanotrasentrainer
title = "Nanotrasen Career Trainer"
flag = JOB_INSTRUCTOR
department_flag = JOBCAT_ENGSEC
total_positions = 2
spawn_positions = 2
supervisors = "the Nanotrasen Representative"
department_head = list("Captain")
selection_color = "#ddddff"
mentor_only = TRUE
job_department_flags = DEP_FLAG_COMMAND
transfer_allowed = FALSE
access = list(
ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_CARGO,
ACCESS_MAILSORTING,
ACCESS_CONSTRUCTION,
ACCESS_COURT,
ACCESS_EVA,
ACCESS_MAINT_TUNNELS,
ACCESS_MEDICAL,
ACCESS_RESEARCH,
ACCESS_SEC_DOORS,
ACCESS_THEATRE,
ACCESS_INTERNAL_AFFAIRS,
ACCESS_TRAINER
)
blacklisted_disabilities = list(DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP)
outfit = /datum/outfit/job/nct
important_information = "Your job is to try to assist as many crew members as possible regardless of department. You are NOT permitted to give command staff advice on any command SOP questions or aid in legal advice."

/datum/outfit/job/nct
name = "Nanotrasen Career Trainer"
jobtype = /datum/job/nanotrasentrainer
uniform = /obj/item/clothing/under/rank/procedure/nct
suit = /obj/item/clothing/suit/storage/nct
gloves = /obj/item/clothing/gloves/color/white
shoes = /obj/item/clothing/shoes/centcom
head = /obj/item/clothing/head/beret/nct/green
glasses = /obj/item/clothing/glasses/hud/skills/sunglasses
l_ear = /obj/item/radio/headset/headset_nct
id = /obj/item/card/id/nct
l_pocket = /obj/item/card/id/nct_data_chip
r_pocket = /obj/item/flash
pda = /obj/item/pda/heads/ntrep
backpack = /obj/item/storage/backpack/satchel

backpack_contents = list(
/obj/item/pinpointer/crew = 1,
/obj/item/healthanalyzer/advanced = 1,
/obj/item/book/manual/sop_ntinstructor,
/obj/item/laser_pointer/blue = 1
)

bio_chips = list(/obj/item/bio_chip/mindshield)

/datum/outfit/job/nct/post_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
if(visualsOnly)
return

var/obj/item/card/id/nct_data_chip/I = H.l_store
I.registered_user = H.mind.current
I.registered_name = H.real_name
var/icon/newphoto = get_id_photo(H, "Nanotrasen Career Trainer")
I.photo = newphoto

/datum/outfit/job/nct/on_mind_initialize(mob/living/carbon/human/H)
. = ..()
H.mind.offstation_role = TRUE
3 changes: 2 additions & 1 deletion code/game/jobs/job_globals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ GLOBAL_LIST_INIT(command_positions, list(
"Quartermaster",
"Nanotrasen Representative",
"Magistrate",
"Blueshield"
"Blueshield",
"Nanotrasen Career Trainer"
))

/// Only roles that are command of departments, for revolution and similar stuff
Expand Down
21 changes: 16 additions & 5 deletions code/game/machinery/computer/card.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/datum/job/nanotrasenrep,
/datum/job/chaplain,
/datum/job/officer,
/datum/job/qm
/datum/job/qm,
/datum/job/nanotrasentrainer
)

//The scaling factor of max total positions in relation to the total amount of people on board the station in %
Expand Down Expand Up @@ -154,17 +155,19 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/obj/machinery/computer/card/attackby__legacy__attackchain(obj/item/card/id/id_card, mob/user, params)
if(!istype(id_card))
return ..()
if(istype(id_card, /obj/item/card/id/nct_data_chip))
return ..()

if(!scan && check_access(id_card))
user.drop_item()
id_card.forceMove(src)
scan = id_card
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
else if(!modify)
user.drop_item()
id_card.forceMove(src)
modify = id_card
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)

SStgui.update_uis(src)
attack_hand(user)
Expand Down Expand Up @@ -425,14 +428,18 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
else if(Adjacent(usr))
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/card/id))
if(istype(I, /obj/item/card/id/nct_data_chip))
playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 50, FALSE)
to_chat(usr, "<span class='warning'>The data chip doesn't fit!</span>")
return FALSE
if(!check_access(I))
playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 50, 0)
playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 50, FALSE)
to_chat(usr, "<span class='warning'>This card does not have access.</span>")
return FALSE
usr.drop_item()
I.forceMove(src)
scan = I
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
return
if("modify") // inserting or removing the ID you plan to modify
if(modify)
Expand All @@ -451,6 +458,10 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
else if(Adjacent(usr))
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/card/id))
if(istype(I, /obj/item/card/id/nct_data_chip))
playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 50, FALSE)
to_chat(usr, "<span class='warning'>The data chip doesn't fit!</span>")
return FALSE
usr.drop_item()
I.forceMove(src)
modify = I
Expand Down
3 changes: 3 additions & 0 deletions code/game/machinery/guestpass.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@
my_terminal_id = ++global_terminal_id

/obj/machinery/computer/guestpass/attackby__legacy__attackchain(obj/item/I, mob/user, params)
if(istype(I, /obj/item/card/id/nct_data_chip))
to_chat(user, "<span class='warning'>[I] does not seem compatible with this terminal!</span>")
return
if(istype(I, /obj/item/card/id))
if(!scan)
if(user.drop_item())
Expand Down
3 changes: 2 additions & 1 deletion code/game/machinery/machine_frame.dm
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,8 @@ to destroy them and players will be able to make replacements.
"BarDrobe" = /obj/machinery/economy/vending/bardrobe,
"HydroDrobe" = /obj/machinery/economy/vending/hydrodrobe,
"JaniDrobe" = /obj/machinery/economy/vending/janidrobe,
"LawDrobe" = /obj/machinery/economy/vending/lawdrobe)
"LawDrobe" = /obj/machinery/economy/vending/lawdrobe,
"TrainDrobe" = /obj/machinery/economy/vending/traindrobe)
var/static/list/unique_vendors = list(
"ShadyCigs Ultra" = /obj/machinery/economy/vending/cigarette/beach,
"SyndiMed Plus" = /obj/machinery/economy/vending/wallmed/syndicate)
Expand Down
2 changes: 2 additions & 0 deletions code/game/machinery/tcomms/nttc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@
"Journalist" = "srvradio",
"Librarian" = "srvradio",
"Mime" = "srvradio",
// Procedure
"Nanotrasen Career Trainer" = "proradio",
)
/// List of Command jobs
var/list/heads = list("Captain", "Head of Personnel", "Nanotrasen Representative", "Blueshield", "Chief Engineer", "Chief Medical Officer", "Research Director", "Head of Security", "Magistrate", "Quartermaster", "AI")
Expand Down
Loading

0 comments on commit b55bef2

Please sign in to comment.