Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nanotrasen Career Trainer - REVIVAL (PT1) #26512

Merged
merged 73 commits into from
Dec 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
3990e46
Nct ID
LetXxx Aug 14, 2024
9dd1de7
Preferences, job creation, access and other stuff
LetXxx Aug 14, 2024
91a616c
Sprites, defines, hidden job pref and other stuff!
LetXxx Aug 14, 2024
a57679a
Missed a comma
LetXxx Aug 14, 2024
e2e45e0
Sprites updated, clothing code, outfit and id
LetXxx Aug 15, 2024
a5f506a
Fix a small oops
LetXxx Aug 15, 2024
1ecfd50
Data chip + Sechud icon
LetXxx Aug 15, 2024
afa8329
Offstation, access, datachip code, ticket autoresponse and a lot of o…
LetXxx Aug 15, 2024
18163c2
Typo, spritesheet fixingg and icon color
LetXxx Aug 16, 2024
a2fc402
Telebaton removed, not allowed to scan ERT IDs, blacklisted some access
LetXxx Aug 17, 2024
95f198c
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Aug 17, 2024
d929f6d
Applies suggestion
LetXxx Aug 17, 2024
c2769f6
Applying Suggestions!
LetXxx Aug 17, 2024
37d2f38
Merge branch 'Trainer' of https://github.com/PeLuSoares/Paradise into…
LetXxx Aug 17, 2024
e358cb8
Forgot to increase the number of slots, oops
LetXxx Aug 17, 2024
453f575
Added a few items that I forgot, applying suggestions.
LetXxx Aug 17, 2024
f921de3
Fix check fail?
LetXxx Aug 17, 2024
76f24b4
Merge branch 'master' into Trainer
LetXxx Aug 19, 2024
9d5bc8d
Mapping Tools/Icons.
LetXxx Aug 19, 2024
8b3f207
Office added to all maps, a few modifications to fit.
LetXxx Aug 20, 2024
12f4e95
Adds ACCESS_TRAINER to who needs it.
LetXxx Aug 20, 2024
2c954db
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Aug 20, 2024
a516fdd
Fixing check fails.
LetXxx Aug 20, 2024
7d7b3e6
NCT Beret obj are now where they're supposed to be
LetXxx Aug 20, 2024
faa89a0
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Aug 25, 2024
b4c0ad4
Suggestion
LetXxx Aug 25, 2024
e832a11
Sprites fix + NCT flag
LetXxx Aug 26, 2024
0f7b3f3
Merge branch 'Trainer' of https://github.com/PeLuSoares/Paradise into…
LetXxx Aug 26, 2024
b386a44
Go away conflict!
LetXxx Aug 26, 2024
69a0049
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Aug 29, 2024
3e628ff
Code Suggestion
LetXxx Aug 29, 2024
7494cfc
Sprite update
LetXxx Aug 31, 2024
0e49d86
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 3, 2024
83132be
Suggestions
LetXxx Sep 11, 2024
47f1296
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 12, 2024
cde4a92
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 13, 2024
7643b8f
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 13, 2024
850c20a
Diagoras Office, conflict fix.
LetXxx Sep 13, 2024
4e9f348
Merge branch 'master' into Trainer
LetXxx Sep 13, 2024
33368e7
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 14, 2024
74ee286
Merge branch 'Trainer' of https://github.com/PeLuSoares/Paradise into…
LetXxx Sep 14, 2024
e9be425
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 17, 2024
1f73be2
Day 1 fixes, suggestions.
LetXxx Sep 18, 2024
feb52aa
Merge branch 'master' into pr/LetXxx/26512
Burzah Sep 18, 2024
7e3d50a
bundle rebuild
Burzah Sep 18, 2024
f0a1a8d
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 20, 2024
7baba58
Fixing a few issues.
LetXxx Sep 20, 2024
bb8a67c
Mapping review + Suggestions
LetXxx Sep 21, 2024
159c2ce
Fixed check fail.
LetXxx Sep 21, 2024
3ebbd40
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 21, 2024
59465bd
Conflict fix + Suggestion
LetXxx Sep 24, 2024
c8b34f8
Conflict fix + You shouldn't be able to insert the NCT chip into an i…
LetXxx Sep 24, 2024
5c670c5
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Sep 24, 2024
7c9f504
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Oct 29, 2024
af9a0b7
Fix map conflicts
LetXxx Oct 29, 2024
7981461
Plasmaman icons and Kidan icon fix
LetXxx Oct 30, 2024
6706a17
Conflict fix?
LetXxx Oct 30, 2024
5cdfd26
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Nov 7, 2024
b2d346a
A few changes following feedback.
LetXxx Nov 7, 2024
5cb2a76
Small description changed, as per requested feedback.
LetXxx Nov 8, 2024
607d58e
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Dec 1, 2024
99d3741
Suggestions/Fix
LetXxx Dec 1, 2024
4c0440a
Forgot some mapping issues
LetXxx Dec 1, 2024
90c849e
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
LetXxx Dec 10, 2024
c9c93a3
Suggestions
LetXxx Dec 10, 2024
4987981
Fixed?
LetXxx Dec 10, 2024
caef1ba
Merge remote-tracking branch 'upstream' into pr/26512
DGamerL Dec 30, 2024
e3e249f
Merge remote-tracking branch 'upstream' into pr/26512
DGamerL Dec 30, 2024
2c4e3eb
Fix linters
DGamerL Dec 30, 2024
61b8118
More fixes
DGamerL Dec 30, 2024
aa80c2f
aaaaaaaaaaa
DGamerL Dec 30, 2024
38b47a4
Christa's reviews
LetXxx Dec 30, 2024
f4b2c3f
Naming stuff
LetXxx Dec 30, 2024
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
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"

LetXxx marked this conversation as resolved.
Show resolved Hide resolved
head = /obj/item/clothing/head/helmet/space/plasmaman/assistant
uniform = /obj/item/clothing/under/plasmaman/assistant

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

LetXxx marked this conversation as resolved.
Show resolved Hide resolved
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
LetXxx marked this conversation as resolved.
Show resolved Hide resolved
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
Loading