Nanotrasen Career Trainer - REVIVAL (PT1) (#26512)

* 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 <69762909+AyIong@users.noreply.github.com>
Signed-off-by: Pedro <79126660+LetXxx@users.noreply.github.com>

* 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 <116982774+Burzah@users.noreply.github.com>
Signed-off-by: Pedro <79126660+LetXxx@users.noreply.github.com>

* 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 <79126660+LetXxx@users.noreply.github.com>
Co-authored-by: Aylong <69762909+AyIong@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
Pedro
2024-12-30 21:13:52 +00:00
committed by GitHub
co-authored by Aylong Burzah DGamerL
parent 2559287298
commit b55bef2ed2
82 changed files with 2880 additions and 1479 deletions
+4
View File
@@ -422,6 +422,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/newplayer_start) //Without this you sp
name = "Warden"
icon_state = "Warden"
/obj/effect/landmark/start/nanotrasen_career_trainer
name ="Nanotrasen Career Trainer"
icon_state = "NCT"
/obj/effect/landmark/start/set_tag()
tag = "start*[name]"
@@ -172,3 +172,8 @@
desc = "Integrated encryption key."
icon_state = "cap_cypherkey"
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1, "Procedure" = 1)
/obj/item/encryptionkey/headset_nct
name = "NCT Radio Encryption Key"
icon_state = "com_cypherkey"
channels = list("Procedure" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1)
@@ -308,6 +308,13 @@
item_state = "headset"
ks2type = /obj/item/encryptionkey/heads/ntrep
/obj/item/radio/headset/headset_nct
name = "\improper Nanotrasen 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/heads/magistrate
name = "magistrate's headset"
desc = "The headset of the Magistrate."
+60 -2
View File
@@ -620,6 +620,13 @@
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS, ACCESS_NTREP)
/obj/item/card/id/nct
name = "\improper Nanotrasen Career Trainer ID"
registered_name = "Nanotrasen Career Trainer"
icon_state = "nctrainer"
access = list(ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_CARGO, ACCESS_CONSTRUCTION, ACCESS_COURT, ACCESS_EVA, ACCESS_TRAINER, ACCESS_MAINT_TUNNELS,
ACCESS_MEDICAL, ACCESS_RESEARCH, ACCESS_SEC_DOORS, ACCESS_THEATRE, ACCESS_INTERNAL_AFFAIRS)
/obj/item/card/id/blueshield
name = "Blueshield ID"
registered_name = "Blueshield"
@@ -776,6 +783,55 @@
/obj/item/card/id/data
icon_state = "data"
/obj/item/card/id/nct_data_chip
name = "\improper NCT Trainee Access Chip"
desc = "A small electronic access token that allows its user to copy the access of their Trainee. Only accessible by NT Career Trainers!"
icon_state = "nct_chip"
assignment = "Nanotrasen Career Trainer"
var/registered_user = null
var/trainee = null
/obj/item/card/id/nct_data_chip/examine(mob/user)
. = ..()
. += "<br>The current registered Trainee is: <b>[trainee]</b>"
. += "<span class='notice'>Use in hand to reset the assigned trainee and access.</span>"
. += "<span class='purple'>The datachip is unable to copy any access that has been deemed high-risk by Nanotrasen Officials. That includes some, if not most, head related access permissions.</span>"
/obj/item/card/id/nct_data_chip/activate_self(mob/user)
if(..())
return
if(!trainee)
return
var/response = tgui_alert(user, "Would you like to remove [trainee] as your current active Trainee?", "Choose", list("Yes", "No"))
if(response == "Yes")
trainee = null
icon_state = "nct_chip"
access = list()
/obj/item/card/id/nct_data_chip/interact_with_atom(atom/target, mob/living/user, list/modifiers)
if(!istype(target, /obj/item/card/id))
return
if(!(isliving(user) && user.mind))
return
if(user.mind.current != registered_user)
to_chat(user, "<span class='notice'>You do not have access to use this NCT Trainee Access Chip!</span>")
return
if(istype(target, /obj/item/card/id/ert))
to_chat(user, "<span class='warning'>The chip's screen blinks red as you attempt scanning this ID.</span>")
return
var/obj/item/card/id/I = target
to_chat(user, "<span class='notice'>The chip's microscanners activate as you scan [I.registered_name]'s ID, copying its access.</span>")
access = I.access
access.Remove(ACCESS_AI_UPLOAD, ACCESS_ARMORY, ACCESS_CAPTAIN, ACCESS_CE, ACCESS_RD, ACCESS_HOP, ACCESS_QM, ACCESS_CMO, ACCESS_HOS, ACCESS_NTREP,
ACCESS_MAGISTRATE, ACCESS_BLUESHIELD, ACCESS_HEADS_VAULT, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE,
ACCESS_CHANGE_IDS, ACCESS_MINISAT)
trainee = I.registered_name
icon_state = "nct_chip_active"
// Decals
/obj/item/id_decal
name = "identification card decal"
@@ -829,10 +885,10 @@
override_name = 1
/proc/get_station_card_skins()
return list("data","id","gold","silver","security","detective","warden","internalaffairsagent","medical","coroner","chemist","virologist","paramedic","psychiatrist","geneticist","research","roboticist","quartermaster","cargo","shaftminer","engineering","atmostech","captain","HoP","HoS","CMO","RD","CE","assistant","clown","mime","botanist","librarian","chaplain","bartender","chef","janitor","rainbow","prisoner","explorer")
return list("data", "id", "gold", "silver", "security", "detective", "warden", "internalaffairsagent", "medical", "coroner", "chemist", "virologist", "paramedic", "psychiatrist", "geneticist", "research", "roboticist", "quartermaster", "cargo", "shaftminer", "engineering", "atmostech", "captain", "HoP", "HoS", "CMO", "RD", "CE", "assistant", "clown", "mime", "botanist", "librarian", "chaplain", "bartender", "chef", "janitor", "rainbow", "prisoner", "explorer", "nct")
/proc/get_centcom_card_skins()
return list("centcom","blueshield","magistrate","ntrep","ERT_leader","ERT_empty","ERT_security","ERT_engineering","ERT_medical","ERT_janitorial","ERT_paranormal","deathsquad","commander","syndie","TDred","TDgreen")
return list("centcom", "blueshield", "magistrate", "ntrep", "ERT_leader", "ERT_empty", "ERT_security", "ERT_engineering", "ERT_medical", "ERT_janitorial", "ERT_paranormal", "deathsquad", "commander", "syndie", "TDred", "TDgreen")
/proc/get_all_card_skins()
return get_station_card_skins() + get_centcom_card_skins()
@@ -853,6 +909,8 @@
return "Security Officer"
if("internalaffairsagent")
return "Internal Affairs Agent"
if("nct")
return "Nanotrasen Career Trainer"
if("atmostech")
return "Life Support Specialist"
if("HoP")
@@ -996,6 +996,39 @@
title = "Science Standard Operating Procedures"
wiki_article_title = "Standard_Operating_Procedure_(Science)"
/obj/item/book/manual/sop_ntinstructor
name = "Career Trainer SOP"
desc = "A set of guidelines for Instructors."
icon_state = "sop_legal"
author = "Nanotrasen"
title = "Instructor SOP"
pages = list({"
<html>
<head>
<style>
h1 {font-size: 15px; margin: 15px 0px 5px;}
li {margin: 2px 0px 2px 15px;}
ul {list-style: none; margin: 5px; padding: 0px;}
ol {margin: 5px; padding: 0px 15px;}
</style>
</head>
<body>
<h1><U><B>Instructor SOP</B></U></h1><BR>
<p>
<ol>
<li>NT Career Trainers are to wear their company-provided uniform and <b>jacket OR their issued beret/hat</b> at all times while on duty. They are free to choose a beret that best matches their primary field of knowledge if they so desire. Additionally, Identifying equipment SHOULD not be distributed to crew members. </li>
<li>NT Career Trainers are to be available to all Crewmembers, regardless of Department. You may not only assist a singular Department. </li>
<li>NT Career Trainers are not to do a Trainee's work for them. </li>
<li>NT Career Trainers are to use NCT Data Chips only to acquire the access necessary for providing training. They are not to use said access for other purposes. </li>
<li>In the event of a lost or stolen NCT Data Chip, the NT Career Trainer is to report the incident to their local Nanotrasen Representative or Station Captain. </li>
<li>NT Career Trainers are permitted to carry a flash for self-defense.</li>
</ol>
</body>
</html>
"})
//* MANUAL SPAWNERS *// (and space Law)
/obj/item/book/manual/random
@@ -223,3 +223,7 @@
/obj/item/vending_refill/lawdrobe
machine_name = "LawDrobe"
icon_state = "refill_clothes"
/obj/item/vending_refill/traindrobe
machine_name = "TrainDrobe"
icon_state = "refill_clothes"
+1 -1
View File
@@ -198,7 +198,7 @@
/obj/item/toy/figure/crew/iaa,
/obj/item/toy/figure/crew/dsquad,
/obj/item/storage/box/scratch_cards)
job_list = list("Captain", "Magistrate", "Nanotrasen Representative", "Blueshield", "Internal Affairs Agent")
job_list = list("Captain", "Magistrate", "Nanotrasen Representative", "Blueshield", "Internal Affairs Agent", "Nanotrasen Career Trainer")
/obj/item/envelope/misc
possible_contents = list(/obj/item/clothing/under/misc/assistantformal,