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>
@@ -9633,6 +9633,16 @@
|
||||
icon_state = "redyellowfull"
|
||||
},
|
||||
/area/station/maintenance/apmaint)
|
||||
"bSp" = (
|
||||
/obj/effect/spawner/window/reinforced/polarized/grilled{
|
||||
id = "NCT"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/procedure/trainer_office)
|
||||
"bSq" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
@@ -10970,6 +10980,12 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/maintenance/abandoned_office)
|
||||
"cfS" = (
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 4;
|
||||
icon_state = "darkgreen"
|
||||
},
|
||||
/area/station/procedure/trainer_office)
|
||||
"cfV" = (
|
||||
/obj/item/food/grown/harebell,
|
||||
/turf/simulated/floor/grass,
|
||||
@@ -11034,16 +11050,20 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/starboard)
|
||||
"cgE" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/paper_bin/nanotrasen{
|
||||
pixel_y = -2
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Paper Supplies";
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/obj/machinery/power/apc/important/directional/east,
|
||||
/obj/structure/cable{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/effect/turf_decal/woodsiding{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"cgK" = (
|
||||
/obj/structure/rack{
|
||||
dir = 1
|
||||
@@ -11125,19 +11145,6 @@
|
||||
icon_state = "darkgrey"
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
"chI" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/stack/package_wrap,
|
||||
/obj/item/hand_labeler{
|
||||
pixel_y = 3;
|
||||
pixel_x = 2
|
||||
},
|
||||
/obj/item/hand_labeler,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
"chK" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
@@ -17683,6 +17690,13 @@
|
||||
icon_state = "cult"
|
||||
},
|
||||
/area/station/service/chapel/office)
|
||||
"dzM" = (
|
||||
/obj/structure/filingcabinet,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 9;
|
||||
icon_state = "darkgreen"
|
||||
},
|
||||
/area/station/procedure/trainer_office)
|
||||
"dzR" = (
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 4;
|
||||
@@ -19151,18 +19165,24 @@
|
||||
},
|
||||
/area/station/science/lobby)
|
||||
"dOH" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/folder/red{
|
||||
pixel_x = 8;
|
||||
pixel_y = 6
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/woodsiding{
|
||||
dir = 10
|
||||
},
|
||||
/obj/item/folder/blue{
|
||||
pixel_x = 4;
|
||||
pixel_y = 3
|
||||
/obj/item/flashlight/lamp/green{
|
||||
pixel_y = 8;
|
||||
pixel_x = 5
|
||||
},
|
||||
/obj/item/folder,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/obj/machinery/door_control{
|
||||
id = "nct";
|
||||
name = "Office Door";
|
||||
normaldoorcontrol = 1;
|
||||
req_access = list(80);
|
||||
pixel_y = -2;
|
||||
pixel_x = -7
|
||||
},
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"dOQ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
|
||||
dir = 4
|
||||
@@ -26680,17 +26700,6 @@
|
||||
icon_state = "darkred"
|
||||
},
|
||||
/area/station/security/brig)
|
||||
"fop" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/clothing/suit/corgisuit,
|
||||
/obj/item/clothing/head/corgi{
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/structure/sign/poster/official/love_ian{
|
||||
pixel_y = -32
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"fot" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -30327,6 +30336,23 @@
|
||||
icon_state = "freezerfloor"
|
||||
},
|
||||
/area/station/security/brig)
|
||||
"fZt" = (
|
||||
/obj/machinery/button/windowtint{
|
||||
id = "NCT";
|
||||
pixel_y = 24;
|
||||
pixel_x = 5
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
pixel_y = 24;
|
||||
name = "north bump";
|
||||
pixel_x = -5
|
||||
},
|
||||
/obj/structure/closet,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 5;
|
||||
icon_state = "darkgreen"
|
||||
},
|
||||
/area/station/procedure/trainer_office)
|
||||
"fZK" = (
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -32270,6 +32296,10 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/public/storage/office)
|
||||
"gsr" = (
|
||||
/obj/item/flag/ian,
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"gsu" = (
|
||||
/obj/structure/closet/secure_closet/freezer/fridge/open,
|
||||
/obj/item/organ/internal/liver/nian,
|
||||
@@ -33752,20 +33782,6 @@
|
||||
icon_state = "whiteblue"
|
||||
},
|
||||
/area/station/medical/surgery/primary)
|
||||
"gHY" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
|
||||
/obj/structure/disposalpipe/junction{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
"gId" = (
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -35787,15 +35803,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/aft2)
|
||||
"hde" = (
|
||||
/obj/item/kitchen/sushimat{
|
||||
name = "Prayer Mat"
|
||||
},
|
||||
/obj/item/clothing/suit/ianshirt{
|
||||
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it but it's pretty close. Good for sleeping in. This one in particular looks like it wasnt washed in months"
|
||||
},
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"hdi" = (
|
||||
/obj/structure/sign/poster/official/random{
|
||||
pixel_x = -32
|
||||
@@ -36966,6 +36973,14 @@
|
||||
"hoM" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment/corner{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 1;
|
||||
icon_state = "blue"
|
||||
@@ -37891,6 +37906,14 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/asmaint)
|
||||
"hxK" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/clothing/suit/corgisuit,
|
||||
/obj/item/clothing/head/corgi{
|
||||
pixel_y = 7
|
||||
},
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"hxL" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
@@ -37945,8 +37968,8 @@
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"hye" = (
|
||||
/obj/item/clothing/under/misc/swimsuit/blue,
|
||||
/turf/simulated/floor/beach/away/sand,
|
||||
@@ -39923,10 +39946,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/maintenance/fsmaint2)
|
||||
"hTO" = (
|
||||
/obj/item/flag/ian,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"hUe" = (
|
||||
/obj/effect/spawner/random/blood/maybe,
|
||||
/obj/structure/cable{
|
||||
@@ -41747,6 +41766,15 @@
|
||||
/obj/machinery/atmospherics/portable/canister/air,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/security/fore)
|
||||
"imy" = (
|
||||
/obj/structure/disposalpipe/segment/corner{
|
||||
dir = 2
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 1;
|
||||
icon_state = "blue"
|
||||
},
|
||||
/area/station/hallway/primary/fore/north)
|
||||
"imB" = (
|
||||
/obj/item/kirbyplants,
|
||||
/turf/simulated/floor/plasteel,
|
||||
@@ -44647,6 +44675,9 @@
|
||||
/obj/structure/flora/grass/jungle,
|
||||
/turf/simulated/floor/grass,
|
||||
/area/station/public/dorms)
|
||||
"iPs" = (
|
||||
/turf/simulated/wall,
|
||||
/area/station/procedure/trainer_office)
|
||||
"iPw" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/machinery/camera{
|
||||
@@ -46624,6 +46655,23 @@
|
||||
/obj/structure/cable,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/engineering/atmos/asteroid_maint)
|
||||
"jjE" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/junction/reversed{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
"jjJ" = (
|
||||
/obj/effect/spawner/window/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -48112,8 +48160,12 @@
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/obj/structure/chair/comfy/black{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/woodsiding,
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"jzo" = (
|
||||
/obj/machinery/turretid/stun{
|
||||
control_area = "\improper AI Satellite Atmospherics";
|
||||
@@ -49447,14 +49499,6 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/turret_protected/aisat/interior)
|
||||
"jLq" = (
|
||||
/obj/structure/chair/office,
|
||||
/obj/item/restraints/handcuffs/cable/red,
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/obj/effect/spawner/random/cobweb/right/rare,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"jLr" = (
|
||||
/obj/machinery/firealarm/directional/east,
|
||||
/turf/simulated/floor/plasteel,
|
||||
@@ -50191,6 +50235,17 @@
|
||||
/obj/effect/spawner/window/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/engineering/atmos/distribution)
|
||||
"jSa" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/chair/sofa/left,
|
||||
/obj/effect/turf_decal/woodsiding{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/landmark/start/nanotrasen_career_trainer,
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"jSe" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -62561,13 +62616,15 @@
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/maintenance/apmaint)
|
||||
"muP" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/paper_bin{
|
||||
pixel_y = 15
|
||||
/obj/machinery/disposal,
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/obj/effect/turf_decal/woodsiding{
|
||||
dir = 6
|
||||
},
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"muR" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-4"
|
||||
@@ -63730,6 +63787,17 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/security/fore)
|
||||
"mJo" = (
|
||||
/obj/item/radio/intercom{
|
||||
name = "west bump";
|
||||
pixel_x = -28
|
||||
},
|
||||
/obj/machinery/economy/vending/traindrobe,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 8;
|
||||
icon_state = "darkgreen"
|
||||
},
|
||||
/area/station/procedure/trainer_office)
|
||||
"mJr" = (
|
||||
/obj/structure/flora/ausbushes/lavendergrass,
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
@@ -64051,9 +64119,15 @@
|
||||
/turf/simulated/wall/r_wall,
|
||||
/area/station/science/toxins/mixing)
|
||||
"mMY" = (
|
||||
/obj/effect/spawner/window/reinforced,
|
||||
/obj/effect/spawner/window/reinforced/polarized/grilled{
|
||||
id = "NCT"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d2 = 8;
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/area/station/procedure/trainer_office)
|
||||
"mNe" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/multitool,
|
||||
@@ -64063,6 +64137,16 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/engineering/atmos/distribution)
|
||||
"mNf" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark/start/nanotrasen_career_trainer,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 6;
|
||||
icon_state = "darkgreen"
|
||||
},
|
||||
/area/station/procedure/trainer_office)
|
||||
"mNs" = (
|
||||
/obj/machinery/disposal,
|
||||
/obj/structure/disposalpipe/trunk,
|
||||
@@ -71356,13 +71440,6 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/maintenance/aft)
|
||||
"ofC" = (
|
||||
/obj/structure/closet,
|
||||
/obj/item/toy/plushie/girly_corgi,
|
||||
/obj/item/toy/plushie/robo_corgi,
|
||||
/obj/effect/spawner/random/maintenance,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"ofE" = (
|
||||
/obj/machinery/alarm/directional/west,
|
||||
/turf/simulated/floor/plasteel{
|
||||
@@ -71403,6 +71480,13 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/central/ne)
|
||||
"ogi" = (
|
||||
/obj/structure/closet,
|
||||
/obj/effect/spawner/random/maintenance,
|
||||
/obj/item/toy/plushie/robo_corgi,
|
||||
/obj/item/toy/plushie/girly_corgi,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"ogs" = (
|
||||
/obj/structure/railing,
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
@@ -76491,6 +76575,29 @@
|
||||
icon_state = "bluecorner"
|
||||
},
|
||||
/area/station/hallway/primary/central/west)
|
||||
"pdn" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 2;
|
||||
d2 = 8;
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
|
||||
/obj/structure/disposalpipe/junction{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
"pdw" = (
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
name = "Central Access"
|
||||
@@ -80886,18 +80993,16 @@
|
||||
/turf/space,
|
||||
/area/space/nearstation)
|
||||
"pXA" = (
|
||||
/obj/item/kitchen/knife/shiv{
|
||||
pixel_y = 16;
|
||||
pixel_x = 7
|
||||
/obj/machinery/alarm/directional/west,
|
||||
/obj/machinery/photocopier,
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/stock_parts/cell/high/empty{
|
||||
pixel_y = 12;
|
||||
pixel_x = -7
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 10;
|
||||
icon_state = "darkgreen"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fpmaint)
|
||||
/area/station/procedure/trainer_office)
|
||||
"pXC" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/cable{
|
||||
@@ -86195,34 +86300,12 @@
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
"rcg" = (
|
||||
/obj/structure/closet/crate,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen{
|
||||
pixel_x = -8;
|
||||
pixel_y = 5
|
||||
/obj/structure/chair/sofa/right,
|
||||
/obj/effect/turf_decal/woodsiding{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/pen{
|
||||
pixel_x = 8;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/pen/blue{
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/pen/blue{
|
||||
pixel_x = -3;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/item/pen/multi{
|
||||
pixel_x = -4;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/pen/multi{
|
||||
pixel_x = -6
|
||||
},
|
||||
/obj/item/stack/wrapping_paper,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"rcm" = (
|
||||
/obj/machinery/economy/vending/wallmed/directional/west,
|
||||
/turf/simulated/floor/wood,
|
||||
@@ -86483,16 +86566,6 @@
|
||||
icon_state = "rampbottom"
|
||||
},
|
||||
/area/station/medical/medbay2)
|
||||
"reI" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/stack/sheet/cardboard{
|
||||
amount = 10
|
||||
},
|
||||
/obj/item/dest_tagger{
|
||||
pixel_x = -4
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
"reR" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/fancy/crayons,
|
||||
@@ -88348,16 +88421,18 @@
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/maintenance/assembly_line)
|
||||
"rwZ" = (
|
||||
/obj/machinery/photocopier,
|
||||
/obj/item/radio/intercom{
|
||||
name = "west bump";
|
||||
pixel_x = -28
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/all/procedure/trainer{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/sign/poster/official/random{
|
||||
pixel_y = 32
|
||||
/obj/effect/turf_decal/woodsiding{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/obj/machinery/door/window/reinforced/normal{
|
||||
name = "NCT";
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"rxd" = (
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/central/south)
|
||||
@@ -90127,6 +90202,16 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/interrogation)
|
||||
"rNI" = (
|
||||
/obj/item/flag/nt,
|
||||
/obj/effect/turf_decal/woodsiding{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"rNN" = (
|
||||
/obj/machinery/newscaster/directional/south,
|
||||
/turf/simulated/floor/plasteel{
|
||||
@@ -90862,14 +90947,35 @@
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/central/nw)
|
||||
"rUQ" = (
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
name = "Paper Supplies"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Trainer's Office";
|
||||
id_tag = "nct"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/access/all/procedure/trainer,
|
||||
/obj/effect/mapping_helpers/airlock/polarized{
|
||||
id = "NCT"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/area/station/procedure/trainer_office)
|
||||
"rUU" = (
|
||||
/obj/structure/sign/poster/official/random{
|
||||
pixel_y = -32
|
||||
@@ -99421,7 +99527,9 @@
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/secondary/entry)
|
||||
"tDQ" = (
|
||||
/obj/effect/spawner/random/maintenance,
|
||||
/obj/structure/sign/poster/official/love_ian{
|
||||
pixel_y = -32
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"tDY" = (
|
||||
@@ -101258,8 +101366,14 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 10
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/obj/structure/cable{
|
||||
d1 = 2;
|
||||
d2 = 4;
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"tXh" = (
|
||||
/obj/structure/chair/stool,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -102414,13 +102528,6 @@
|
||||
},
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/security/permabrig)
|
||||
"uiJ" = (
|
||||
/obj/structure/sign/poster/official/love_ian{
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/effect/mapping_helpers/turfs/damage,
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"uiT" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/box/lights/mixed,
|
||||
@@ -107099,6 +107206,14 @@
|
||||
"vfn" = (
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/supply/miningdock)
|
||||
"vft" = (
|
||||
/obj/item/decorations/sticky_decorations/flammable/heart,
|
||||
/obj/item/stack/sheet/wood{
|
||||
name = "Ians Stick";
|
||||
desc = "A large stick covered in bite marks and dried slobber.ss"
|
||||
},
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"vfu" = (
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on{
|
||||
dir = 4
|
||||
@@ -119520,8 +119635,17 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 10
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/fore/north)
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment/corner{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/woodsiding,
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"xEC" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -121653,6 +121777,19 @@
|
||||
/obj/structure/girder,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/asmaint)
|
||||
"ybJ" = (
|
||||
/obj/structure/sign/poster/official/love_ian{
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/item/kitchen/sushimat{
|
||||
name = "Prayer Mat"
|
||||
},
|
||||
/obj/item/clothing/suit/ianshirt{
|
||||
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it but it's pretty close. Good for sleeping in. This one in particular looks like it wasnt washed in months"
|
||||
},
|
||||
/obj/effect/mapping_helpers/turfs/damage,
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"ybL" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 5
|
||||
@@ -122462,6 +122599,14 @@
|
||||
},
|
||||
/turf/simulated/floor/carpet/blue,
|
||||
/area/station/command/office/blueshield)
|
||||
"yjS" = (
|
||||
/obj/item/kirbyplants,
|
||||
/obj/effect/turf_decal/woodsiding{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/firealarm/directional/east,
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/procedure/trainer_office)
|
||||
"yjU" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/visible{
|
||||
dir = 9
|
||||
@@ -148955,17 +149100,17 @@ jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
aZS
|
||||
sik
|
||||
sik
|
||||
sik
|
||||
sik
|
||||
rtG
|
||||
rvy
|
||||
sik
|
||||
vyj
|
||||
rtG
|
||||
sik
|
||||
hjW
|
||||
iPs
|
||||
iPs
|
||||
iPs
|
||||
iPs
|
||||
iPs
|
||||
slw
|
||||
pRV
|
||||
ttR
|
||||
@@ -149212,17 +149357,17 @@ jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
aZS
|
||||
sik
|
||||
bah
|
||||
vqr
|
||||
hTO
|
||||
gsr
|
||||
aSK
|
||||
tDQ
|
||||
fop
|
||||
sik
|
||||
jLq
|
||||
iPs
|
||||
dzM
|
||||
mJo
|
||||
pXA
|
||||
hjW
|
||||
iPs
|
||||
buP
|
||||
vqN
|
||||
dNw
|
||||
@@ -149469,17 +149614,17 @@ jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
sik
|
||||
vgB
|
||||
iOz
|
||||
vtq
|
||||
seW
|
||||
ofC
|
||||
hjW
|
||||
hjW
|
||||
hjW
|
||||
hjW
|
||||
vtq
|
||||
hxK
|
||||
iPs
|
||||
fZt
|
||||
cfS
|
||||
mNf
|
||||
iPs
|
||||
uGP
|
||||
xuN
|
||||
czL
|
||||
@@ -149726,17 +149871,17 @@ jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
sik
|
||||
toV
|
||||
fdc
|
||||
hde
|
||||
aSK
|
||||
hjW
|
||||
hjW
|
||||
seW
|
||||
iOz
|
||||
pXZ
|
||||
iPs
|
||||
rNI
|
||||
rwZ
|
||||
dOH
|
||||
hjW
|
||||
iPs
|
||||
lZK
|
||||
tMO
|
||||
iZd
|
||||
@@ -149983,13 +150128,13 @@ jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
sik
|
||||
iWm
|
||||
fdc
|
||||
aSK
|
||||
cnZ
|
||||
pck
|
||||
hjW
|
||||
iPs
|
||||
rcg
|
||||
hyc
|
||||
jzm
|
||||
@@ -150240,19 +150385,19 @@ jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
jnP
|
||||
sik
|
||||
qXC
|
||||
vft
|
||||
oNy
|
||||
pXZ
|
||||
uiJ
|
||||
hjW
|
||||
chI
|
||||
aSK
|
||||
ybJ
|
||||
iPs
|
||||
jSa
|
||||
tXb
|
||||
xEx
|
||||
rUQ
|
||||
hoM
|
||||
gHY
|
||||
pdn
|
||||
dat
|
||||
lwr
|
||||
mZC
|
||||
@@ -150497,19 +150642,19 @@ aZS
|
||||
aZS
|
||||
aZS
|
||||
jnP
|
||||
jnP
|
||||
sik
|
||||
vEd
|
||||
fck
|
||||
ogi
|
||||
lLd
|
||||
pUl
|
||||
chh
|
||||
reI
|
||||
iPs
|
||||
yjS
|
||||
cgE
|
||||
muP
|
||||
mMY
|
||||
eNi
|
||||
xuN
|
||||
bSp
|
||||
imy
|
||||
jjE
|
||||
slD
|
||||
tnk
|
||||
xtx
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
/area/station/procedure/trainer_office
|
||||
name = "\improper Trainer's Office"
|
||||
icon_state = "procedure_nct"
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 %
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -922,3 +922,41 @@
|
||||
/obj/item/clothing/under/plasmaman/enviroslacks = 60)
|
||||
|
||||
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 = "traindrobe"
|
||||
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!", "What am I supposed to do?")
|
||||
vend_reply = "Thank you for using the TrainDrobe!"
|
||||
products = list(
|
||||
/obj/item/clothing/gloves/color/white = 2,
|
||||
/obj/item/clothing/gloves/color/black = 2,
|
||||
/obj/item/clothing/shoes/laceup = 2,
|
||||
/obj/item/clothing/shoes/black = 2,
|
||||
/obj/item/clothing/shoes/brown = 2,
|
||||
/obj/item/clothing/head/drilltrainer = 2,
|
||||
/obj/item/clothing/under/rank/procedure/nct = 2,
|
||||
/obj/item/clothing/under/rank/procedure/nct/skirt = 2,
|
||||
/obj/item/clothing/suit/storage/nct = 2,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/trainer = 2,
|
||||
/obj/item/clothing/under/plasmaman/trainer = 2,
|
||||
/obj/item/clothing/accessory/armband/procedure = 2,
|
||||
/obj/item/clothing/head/beret/nct/green = 2,
|
||||
/obj/item/clothing/head/beret/nct/black = 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/cargo = 2,
|
||||
/obj/item/clothing/head/beret/black = 2)
|
||||
|
||||
prices = list()
|
||||
|
||||
refill_canister = /obj/item/vending_refill/traindrobe
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
/// Jobs that cannot be the kidnapping target.
|
||||
var/static/list/forbidden_jobs = list(
|
||||
"Captain",
|
||||
"Nanotrasen Career Trainer"
|
||||
)
|
||||
/// Static whitelist of area names that can be used as an extraction zone, structured by difficulty.
|
||||
/// An area's difficulty should be measured in how crowded it generally is, how out of the way it is and so on.
|
||||
|
||||
@@ -1535,6 +1535,17 @@
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel-norm"), ICON_OVERLAY)
|
||||
if(4)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel"), ICON_OVERLAY)
|
||||
if(JOB_INSTRUCTOR)
|
||||
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)
|
||||
switch(backbag)
|
||||
if(2)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "securitypack"), ICON_OVERLAY)
|
||||
if(3)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel-norm"), ICON_OVERLAY)
|
||||
if(4)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel"), ICON_OVERLAY)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_NEARSIGHTED)
|
||||
preview_icon.Blend(new /icon('icons/mob/clothing/eyes.dmi', "glasses"), ICON_OVERLAY)
|
||||
@@ -2036,6 +2047,10 @@
|
||||
if(job.hidden_from_job_prefs)
|
||||
continue
|
||||
|
||||
if(job.mentor_only)
|
||||
if(!check_rights(R_MENTOR | R_ADMIN, FALSE, user))
|
||||
continue
|
||||
|
||||
index += 1
|
||||
if((index >= limit) || (job.title in splitJobs))
|
||||
if((index < limit) && (lastJob != null))
|
||||
@@ -2058,6 +2073,7 @@
|
||||
if(jobban_isbanned(user, job.title))
|
||||
html += "<del class='dark'>[rank]</del></td><td class='bad'><b> \[BANNED]</b></td></tr>"
|
||||
continue
|
||||
|
||||
var/restrictions = job.get_exp_restrictions(user.client)
|
||||
if(restrictions)
|
||||
html += "<del class='dark'>[rank]</del></td><td class='bad'><b> \[[restrictions]]</b></td></tr>"
|
||||
|
||||
@@ -233,7 +233,7 @@
|
||||
/datum/gear/accessory/armband_job/procedure
|
||||
display_name = "Armband, procedure"
|
||||
path = /obj/item/clothing/accessory/armband/procedure
|
||||
allowed_roles = list("Captain", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent")
|
||||
allowed_roles = list("Captain", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Nanotrasen Career Trainer")
|
||||
|
||||
/datum/gear/accessory/armband_job/service
|
||||
display_name = "Armband, service"
|
||||
|
||||
@@ -178,6 +178,26 @@
|
||||
"Drask" = 'icons/mob/clothing/species/drask/head/beret.dmi'
|
||||
)
|
||||
|
||||
//NT Career Trainer
|
||||
/obj/item/clothing/head/beret/nct/black
|
||||
name = "\improper NT Career Trainer's beret"
|
||||
desc = "A beret worn by the mentors and trainers of the Career Training Team. This one is black!"
|
||||
icon_state = "beret_trainerblack"
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/head/beret.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/head/beret.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/beret/nct/green
|
||||
name = "\improper NT Career Trainer's beret"
|
||||
desc = "A beret worn by the mentors and trainers of the Career Training Team. This one is green!"
|
||||
icon_state = "beret_trainergreen"
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/head/beret.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/head/beret.dmi'
|
||||
)
|
||||
|
||||
//Special Roles
|
||||
/obj/item/clothing/head/beret/solgov
|
||||
|
||||
@@ -193,3 +193,14 @@
|
||||
desc = "A cap coroners wear during autopsies. Keeps their hair from falling into the cadavers. It is as dark as the coroner's humor."
|
||||
icon_state = "surgcap_black"
|
||||
dog_fashion = /datum/dog_fashion/head/surgery
|
||||
|
||||
// NT Career Trainer
|
||||
/obj/item/clothing/head/drilltrainer
|
||||
name = "campaign hat"
|
||||
desc = "A wide-brimmed campaign hat with a drill sergeant feel, worn by Career Trainers to project knowledge and guide new employees with classic style."
|
||||
icon_state = "trainercampaign"
|
||||
item_state = "trainercampaign"
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/head.dmi'
|
||||
)
|
||||
|
||||
@@ -359,3 +359,9 @@
|
||||
if(!H.is_in_hands(src) || HAS_TRAIT(H, TRAIT_HANDS_BLOCKED))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/trainer
|
||||
name = "\improper NT Career Trainer envirosuit helmet"
|
||||
desc = "A plasmaman envirohelm designed for the nanotrasen career trainer."
|
||||
icon_state = "trainer_envirohelm"
|
||||
item_state = "trainer_envirohelm"
|
||||
|
||||
@@ -410,3 +410,19 @@
|
||||
item_state = "rdmantle"
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/applicator, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 50, ACID = 50)
|
||||
|
||||
//NT Career Trainer
|
||||
/obj/item/clothing/suit/storage/nct
|
||||
name = "\improper NT Career Trainer's jacket"
|
||||
desc = "A sharp black coat with beige trim around the cuffs and collar, offering a mix of professionalism and approachability."
|
||||
icon_state = "trainercoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
ignore_suitadjust = TRUE
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/suit.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/suit.dmi',
|
||||
"Grey" = 'icons/mob/clothing/species/grey/suit.dmi',
|
||||
)
|
||||
|
||||
@@ -134,3 +134,10 @@
|
||||
item_state = "tacticool_envirosuit"
|
||||
item_color = "tacticool_envirosuit"
|
||||
has_sensor = FALSE
|
||||
|
||||
/obj/item/clothing/under/plasmaman/trainer
|
||||
name = "\improper NT career trainer's envirosuit"
|
||||
desc = "An envirosuit designed for plasmamen employed as the nanotrasen career trainer."
|
||||
icon_state = "trainer_envirosuit"
|
||||
item_state = "trainer_envirosuit"
|
||||
item_color = "trainer_envirosuit"
|
||||
|
||||
@@ -159,3 +159,17 @@
|
||||
icon_state = "iaa_formal_goodman_skirt"
|
||||
item_state = "iaa_formal_goodman_skirt"
|
||||
item_color = "iaa_formal_goodman_skirt"
|
||||
|
||||
/obj/item/clothing/under/rank/procedure/nct
|
||||
name = "\improper NT Career Trainer's uniform"
|
||||
desc = "A neatly pressed olive green shirt paired with black jeans, worn by those dedicated to shaping the future of the workforce."
|
||||
icon_state = "trainer"
|
||||
item_state = "trainer"
|
||||
item_color = "trainer"
|
||||
|
||||
/obj/item/clothing/under/rank/procedure/nct/skirt
|
||||
name = "\improper NT Career Trainer's skirt"
|
||||
desc = "A neatly pressed olive green shirt paired with a sleek black skirt, worn by those committed to mentoring the next generation."
|
||||
icon_state = "trainer_skirt"
|
||||
item_state = "trainer_skirt"
|
||||
item_color = "trainer_skirt"
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
/datum/job/hop,
|
||||
/datum/job/nanotrasenrep,
|
||||
/datum/job/judge,
|
||||
/datum/job/qm
|
||||
/datum/job/qm,
|
||||
/datum/job/nanotrasentrainer
|
||||
)
|
||||
|
||||
/datum/event/bureaucratic_error/announce()
|
||||
|
||||
@@ -492,3 +492,10 @@
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders
|
||||
access = ACCESS_TRADE_SOL
|
||||
|
||||
// -------------------- Procedure access helpers
|
||||
/obj/effect/mapping_helpers/airlock/access/all/procedure
|
||||
icon_state = "access_helper_pro"
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/access/all/procedure/trainer
|
||||
access = ACCESS_TRAINER
|
||||
|
||||
@@ -446,3 +446,10 @@
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/all/supply/mule_bot
|
||||
access = ACCESS_CARGO_BOT
|
||||
|
||||
// -------------------- Procedure access helpers
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/all/procedure
|
||||
icon_state = "access_windoor_pro"
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/all/procedure/trainer
|
||||
access = ACCESS_TRAINER
|
||||
|
||||
@@ -147,6 +147,9 @@
|
||||
if("Assistant")
|
||||
O = new /datum/outfit/plasmaman/assistant
|
||||
|
||||
if("Nanotrasen Career Trainer")
|
||||
O = new /datum/outfit/plasmaman/trainer
|
||||
|
||||
H.equipOutfit(O, visualsOnly)
|
||||
H.internal = H.r_hand
|
||||
H.update_action_buttons_icon()
|
||||
|
||||
@@ -277,6 +277,8 @@
|
||||
return FALSE
|
||||
if(job.get_exp_restrictions(client))
|
||||
return FALSE
|
||||
if(job.mentor_only && !check_rights(R_MENTOR | R_ADMIN, FALSE))
|
||||
return FALSE
|
||||
|
||||
if(GLOB.configuration.jobs.assistant_limit)
|
||||
if(job.title == "Assistant")
|
||||
|
||||
@@ -84,3 +84,8 @@
|
||||
name = "Chinese Supply Crate"
|
||||
contains = list(/obj/item/vending_refill/chinese)
|
||||
containername = "chinese supply crate"
|
||||
|
||||
/datum/supply_packs/vending/trainer
|
||||
name = "TrainDrobe Supply Crate"
|
||||
contains = list(/obj/item/vending_refill/traindrobe)
|
||||
containername = "traindrobe supply crate"
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 250 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 310 KiB After Width: | Height: | Size: 303 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 536 KiB After Width: | Height: | Size: 525 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 33 KiB |
@@ -109,8 +109,8 @@
|
||||
#include "code\__DEFINES\radio_defines.dm"
|
||||
#include "code\__DEFINES\reagents_defines.dm"
|
||||
#include "code\__DEFINES\regex.dm"
|
||||
#include "code\__DEFINES\revolution_defines.dm"
|
||||
#include "code\__DEFINES\resonator_defines.dm"
|
||||
#include "code\__DEFINES\revolution_defines.dm"
|
||||
#include "code\__DEFINES\role_preferences.dm"
|
||||
#include "code\__DEFINES\rolebans.dm"
|
||||
#include "code\__DEFINES\rust.dm"
|
||||
@@ -720,6 +720,7 @@
|
||||
#include "code\game\area\ss13_areas\legal_areas.dm"
|
||||
#include "code\game\area\ss13_areas\maintenance_areas.dm"
|
||||
#include "code\game\area\ss13_areas\medical_areas.dm"
|
||||
#include "code\game\area\ss13_areas\procedure_areas.dm"
|
||||
#include "code\game\area\ss13_areas\public_areas.dm"
|
||||
#include "code\game\area\ss13_areas\science_areas.dm"
|
||||
#include "code\game\area\ss13_areas\security_areas.dm"
|
||||
|
||||