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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nanotrasen Career Trainers + Procedure Department #22424

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions code/__DEFINES/access_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
#define ACCESS_MINISAT 75
#define ACCESS_MINERAL_STOREROOM 76
#define ACCESS_NETWORK 77
#define ACCESS_TRAINER 78

#define ACCESS_WEAPONS 99 //Weapon authorization for secbots

Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/departments_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@
#define DEPARTMENT_ASSISTANT "Assistant"
#define DEPARTMENT_SILICON "Silicon"
#define DEPARTMENT_COMMAND "Command"
#define DEPARTMENT_PROCEDURE "Procedure"
1 change: 1 addition & 0 deletions code/__DEFINES/job_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,4 @@
#define JOB_ASSISTANT (1<<13)
#define JOB_EXPLORER (1<<14)
#define JOB_BARBER (1<<15)
#define JOB_INSTRUCTOR (1<<16)
3 changes: 3 additions & 0 deletions code/controllers/subsystem/SSjobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,9 @@ SUBSYSTEM_DEF(jobs)
if(job.admin_only) // No admin positions either.
continue

if(job.mentor_only) // You should need to PICK this role.
continue

if(jobban_isbanned(player, job.title))
Debug("GRJ isbanned failed, Player: [player], Job: [job.title]")
continue
Expand Down
12 changes: 12 additions & 0 deletions code/datums/datacore.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ GLOBAL_LIST_EMPTY(PDA_Manifest)
var/med[0]
var/sci[0]
var/ser[0]
var/pro[0]
var/sup[0]
var/bot[0]
var/misc[0]
Expand Down Expand Up @@ -71,6 +72,12 @@ GLOBAL_LIST_EMPTY(PDA_Manifest)
if(depthead && ser.len != 1)
ser.Swap(1, ser.len)

if(real_rank in GLOB.procedure_positions)
pro[++pro.len] = list("name" = name, "rank" = rank, "active" = isactive)
department = 1
if(depthead & pro.len != 1)
pro.Swap(1, pro.len)

if(real_rank in GLOB.supply_positions)
sup[++sup.len] = list("name" = name, "rank" = rank, "active" = isactive)
department = 1
Expand All @@ -92,6 +99,7 @@ GLOBAL_LIST_EMPTY(PDA_Manifest)
"med" = med,\
"sci" = sci,\
"ser" = ser,\
"pro" = pro,\
"sup" = sup,\
"bot" = bot,\
"misc" = misc\
Expand Down Expand Up @@ -365,6 +373,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/centcom.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
17 changes: 15 additions & 2 deletions code/game/jobs/departments.dm
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,21 @@
)
head_of_staff = "Captain"

/datum/station_department/procedure
department_name = DEPARTMENT_PROCEDURE

account_starting_balance = DEPARTMENT_BALANCE_LOW
account_base_pay = DEPARTMENT_BASE_PAY_LOW
account_access = list(ACCESS_CAPTAIN, ACCESS_MAGISTRATE, ACCESS_NTREP)
department_roles = list(
"Captain",
"Nanotrasen Representative",
"Magistrate",
"Internal Affairs Agent",
"Nanotrasen Career Trainer"
)
head_of_staff = "Captain"

/datum/station_department/security
department_name = DEPARTMENT_SECURITY

Expand Down Expand Up @@ -123,13 +138,11 @@
"Chef",
"Janitor",
"Librarian",
"Internal Affairs Agent",
"Chaplain",
"Clown",
"Mime",
"Barber",
"Magistrate",
"Nanotrasen Representative",
"Blueshield",
"Explorer"
)
Expand Down
2 changes: 2 additions & 0 deletions code/game/jobs/job/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
var/is_medical
var/is_science
var/is_security
var/is_procedure

//If you have use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.)
var/minimal_player_age = 0
Expand All @@ -66,6 +67,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
51 changes: 51 additions & 0 deletions code/game/jobs/job/supervisor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
selection_color = "#ccccff"
req_admin_notify = 1
is_command = TRUE
is_procedure = TRUE
department_account_access = TRUE
access = list() //See get_access()
minimal_access = list() //See get_access()
Expand Down Expand Up @@ -111,6 +112,7 @@
department_flag = JOBCAT_ENGSEC
total_positions = 1
spawn_positions = 1
is_procedure = TRUE
supervisors = "the command staff"
department_head = list("Captain")
selection_color = "#ddddff"
Expand Down Expand Up @@ -212,6 +214,7 @@
selection_color = "#ddddff"
req_admin_notify = TRUE
is_legal = TRUE
is_procedure = TRUE
transfer_allowed = FALSE
minimal_player_age = 30
exp_map = list(EXP_TYPE_SECURITY = 6000) // 100 hours baby
Expand Down Expand Up @@ -256,6 +259,7 @@
total_positions = 2
spawn_positions = 2
is_legal = 1
is_procedure = TRUE
supervisors = "the magistrate"
department_head = list("Captain")
selection_color = "#ddddff"
Expand Down Expand Up @@ -287,3 +291,50 @@
implants = list(/obj/item/implant/mindshield)
satchel = /obj/item/storage/backpack/satchel_sec
dufflebag = /obj/item/storage/backpack/duffel/security

/datum/job/ntcareertrainer
title = "Nanotrasen Career Trainer"
flag = JOB_INSTRUCTOR
department_flag = JOBCAT_SUPPORT
total_positions = 2
spawn_positions = 2
is_procedure = TRUE
supervisors = "the nanotrasen representative"
department_head = list("Captain")
selection_color = "#ddddff"
access = list(ACCESS_TRAINER, ACCESS_EVA, ACCESS_LAWYER, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING)
minimal_access = list(ACCESS_TRAINER, ACCESS_EVA, ACCESS_LAWYER, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING)
mentor_only = TRUE
transfer_allowed = FALSE
outfit = /datum/outfit/job/ntcareertrainer

/datum/outfit/job/ntcareertrainer
name = "Nanotrasen Career Trainer"
jobtype = /datum/job/ntcareertrainer

uniform = /obj/item/clothing/under/rank/centcom/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
l_ear = /obj/item/radio/headset/headset_ntc
glasses = /obj/item/clothing/glasses/hud/skills/sunglasses
id = /obj/item/card/id/nct
l_pocket = /obj/item/card/id/nct_data_chip
pda = /obj/item/pda/heads/ntrep
implants = list(/obj/item/implant/mindshield)
backpack = /obj/item/storage/backpack/satchel
backpack_contents = list(
/obj/item/pinpointer/crew = 1,
/obj/item/healthanalyzer/advanced = 1,
/obj/item/laser_pointer/blue = 1
)
/datum/outfit/job/ntcareertrainer/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
8 changes: 7 additions & 1 deletion code/game/jobs/job_globals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ GLOBAL_LIST_INIT(command_head_positions, list(
"Quartermaster"
))

GLOBAL_LIST_INIT(procedure_positions, list(
"Captain",
"Nanotrasen Representative",
"Magistrate",
"Internal Affairs Agent",
"Nanotrasen Career Trainer"
))

GLOBAL_LIST_INIT(engineering_positions, list(
"Chief Engineer",
Expand Down Expand Up @@ -63,7 +70,6 @@ GLOBAL_LIST_INIT(support_positions, list(
"Chef",
"Janitor",
"Librarian",
"Internal Affairs Agent",
"Chaplain",
"Clown",
"Mime",
Expand Down
1 change: 1 addition & 0 deletions code/game/machinery/computer/card.dm
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/datum/job/ntspecops/solgovspecops,
/datum/job/assistant,
/datum/job/syndicateofficer,
/datum/job/ntcareertrainer,
/datum/job/explorer // blacklisted so that HOPs don't try prioritizing it, then wonder why that doesn't work
)
// Jobs that appear in the list, and you can prioritize, but not open/close slots for
Expand Down
4 changes: 4 additions & 0 deletions code/game/machinery/guestpass.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@
my_terminal_id = ++global_terminal_id

/obj/machinery/computer/guestpass/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/card/id/nct_data_chip))
to_chat(user, "<span class='warning'>The [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
4 changes: 3 additions & 1 deletion code/game/machinery/tcomms/nttc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@
"Forensic Technician" = "secradio",
"Head of Security" = "secradio",
"Human Resources Agent" = "secradio",
"Internal Affairs Agent" = "secradio",
"Magistrate" = "secradio",
"Security Officer" = "secradio",
"Warden" = "secradio",
Expand Down Expand Up @@ -127,6 +126,9 @@
"Journalist" = "srvradio",
"Librarian" = "srvradio",
"Mime" = "srvradio",
// Procedure
"Internal Affairs Agent" = "proradio",
"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
29 changes: 29 additions & 0 deletions code/game/machinery/vendors/wardrobe_vendors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -747,3 +747,32 @@
/obj/item/clothing/accessory/lawyers_badge = 50)

refill_canister = /obj/item/vending_refill/lawdrobe

/obj/machinery/economy/vending/traindrobe
name = "\improper TrainDrobe"
desc = "This wardrobe dispenses the attire of Nanotrasen's finest teaching force."
icon_state = "trainerdrobe"
icon_lightmask = "base_drobe"
icon_panel = "drobe"
icon_broken = "base_drobe"
icon_off = "base_drobe"
category = VENDOR_TYPE_CLOTHING
ads_list = list("You're gonna LEARN today!")
vend_reply = "Thank you for using the TrainDrobe!"
products = list(
/obj/item/clothing/under/rank/centcom/nct = 2,
/obj/item/clothing/head/beret/nct = 2,
/obj/item/clothing/gloves/color/white = 2,
/obj/item/clothing/shoes/laceup = 2,
/obj/item/clothing/shoes/black = 2,
/obj/item/clothing/shoes/brown = 2,
/obj/item/clothing/head/beret/sec = 2,
/obj/item/clothing/head/beret/med = 2,
/obj/item/clothing/head/beret/sci = 2,
/obj/item/clothing/head/beret/eng = 2,
/obj/item/clothing/head/beret/atmos = 2
// /obj/item/clothing/head/beret/black = 2 // Service?
// /obj/item/clothing/head/beret/sup // Supply, when its in.
)
prices = list()
refill_canister = /obj/item/vending_refill/traindrobe
5 changes: 5 additions & 0 deletions code/game/objects/items/devices/radio/encryptionkey.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@
icon_state = "sec_cypherkey"
channels = list("Security" = 1, "Procedure" = 1)

/obj/item/encryptionkey/headset_nct
name = "NCT Radio Encryption Key"
icon_state = "com_cypherkey"
channels = list("Procedure" = 1, "Security" = 0, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0)

/obj/item/encryptionkey/headset_eng
name = "Engineering Radio Encryption Key"
icon_state = "eng_cypherkey"
Expand Down
7 changes: 7 additions & 0 deletions code/game/objects/items/devices/radio/headset.dm
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,13 @@
icon_state = "sec_headset_alt"
item_state = "sec_headset_alt"

/obj/item/radio/headset/headset_ntc
name = "NT career trainer radio headset"
desc = "This is used by your well-taught corporate training team."
icon_state = "com_headset"
item_state = "headset"
ks2type = /obj/item/encryptionkey/headset_nct

/obj/item/radio/headset/headset_eng
name = "engineering radio headset"
desc = "When the engineers wish to chat like girls."
Expand Down