Splits off Exploration and Science

- Removes all Science access from explorers
- Removes Gateway access from HoS and RD
- Removes Science comms from explorer headsets
- Adds Command comms to Pathfinder headset
- Refactors edited Southern Cross files into _vr files in the main code.
- Moves Exploration Equipment Vendor to the expedition shuttle.
- Moves the Chemical Analyzer in science to Exploration Prep
- Removes general science access from the Xenobiology office and equipment rooms
- Removes RD access to Explorer comms
- Adds Airlock and EVA access to explorers
- Increases number of pilot slots by 2

SOP notes:
- Pathfinder will be able to fire subordinates.
- Pathfinder will not be a full head.
- Field Medic will remain as a hybrid Medical/Explo role.
- Research Directors will no longer be exempted from the general rule that heads of staff should not attend expeditions.
- Exploration is still strongly encouraged to get volunteers from other departments, including Science.
This commit is contained in:
Unknown
2020-04-25 20:36:21 -04:00
parent d9b837dab1
commit 9dec57c97f
12 changed files with 527 additions and 28 deletions

View File

@@ -0,0 +1,134 @@
var/const/PATHFINDER =(1<<11)
var/const/EXPLORER =(1<<12)
var/const/PILOT =(1<<13)
var/const/SAR =(1<<14)
/obj/item/weapon/card/id/medical/sar
assignment = "Field Medic"
rank = "Field Medic"
icon_state = "cyan"
primary_color = rgb(47,189,189)
secondary_color = rgb(127,223,223)
/obj/item/weapon/card/id/explorer
name = "identification card"
desc = "A card issued to station exploration staff."
icon_state = "cyan"
primary_color = rgb(47,189,189)
secondary_color = rgb(127,223,223)
/obj/item/weapon/card/id/explorer/head
name = "identification card"
desc = "A card which represents discovery of the unknown."
icon_state = "cyanGold"
primary_color = rgb(47,189,189)
secondary_color = rgb(127,223,223)
/datum/department/planetside
name = DEPARTMENT_PLANET
color = "#bab421"
sorting_order = 2 // Same as cargo in importance.
/datum/job/pathfinder
title = "Pathfinder"
flag = PATHFINDER
departments = list(DEPARTMENT_PLANET)
departments_managed = list(DEPARTMENT_PLANET)
sorting_order = 1 // above the other explorers
department_flag = MEDSCI
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the colony director"
selection_color = "#d6d05c"
economic_modifier = 8
minimal_player_age = 7
pto_type = PTO_EXPLORATION
access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway)
minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway)
outfit_type = /decl/hierarchy/outfit/job/pathfinder
job_description = "The Pathfinder's job is to lead and manage expeditions, and is the primary authority on all off-station expeditions."
/datum/alt_title/pathfinder
title = "Pathfinder"
/datum/job/pilot
title = "Pilot"
flag = PILOT
departments = list(DEPARTMENT_PLANET)
department_flag = MEDSCI
faction = "Station"
total_positions = 4
spawn_positions = 4
supervisors = "the pathfinder"
selection_color = "#999440"
economic_modifier = 5
minimal_player_age = 3
pto_type = PTO_EXPLORATION
access = list(access_pilot)
minimal_access = list(access_pilot)
outfit_type = /decl/hierarchy/outfit/job/pilot
job_description = "A Pilot flies the various shuttles in the Virgo-Erigone System."
/datum/alt_title/pilot
title = "Pilot"
/datum/job/explorer
title = "Explorer"
flag = EXPLORER
departments = list(DEPARTMENT_PLANET)
department_flag = MEDSCI
faction = "Station"
total_positions = 3
spawn_positions = 3
supervisors = "the pathfinder"
selection_color = "#999440"
economic_modifier = 6
pto_type = PTO_EXPLORATION
access = list(access_explorer, access_external_airlocks, access_eva)
minimal_access = list(access_explorer, access_external_airlocks, access_eva)
outfit_type = /decl/hierarchy/outfit/job/explorer2
job_description = "An Explorer searches for interesting things, and returns them to the station."
/datum/alt_title/explorer
title = "Explorer"
/datum/job/sar
title = "Field Medic"
flag = SAR
departments = list(DEPARTMENT_PLANET)
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the pathfinder"
selection_color = "#999440"
economic_modifier = 6
minimal_player_age = 3
pto_type = PTO_EXPLORATION
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_eva, access_maint_tunnels, access_external_airlocks, access_pilot)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_pilot)
outfit_type = /decl/hierarchy/outfit/job/medical/sar
job_description = "A Field medic works as the field doctor of expedition teams."
/datum/alt_title/field_medic
title = "Field Medic"
/datum/job/offduty_exploration
title = "Off-duty Explorer"
latejoin_only = TRUE
timeoff_factor = -1
total_positions = -1
faction = "Station"
departments = list(DEPARTMENT_OFFDUTY)
supervisors = "nobody! Enjoy your time off"
selection_color = "#999440"
access = list(access_maint_tunnels, access_external_airlocks)
minimal_access = list(access_maint_tunnels, access_external_airlocks)
outfit_type = /decl/hierarchy/outfit/job/assistant/explorer
job_description = "Off-duty crew has no responsibilities or authority and is just there to spend their well-deserved time off."
pto_type = PTO_EXPLORATION
/datum/alt_title/offduty_exp
title = "Off-duty Explorer"

View File

@@ -5,11 +5,11 @@
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage,
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva, access_network)
access_RC_announce, access_keycard_auth, access_tcomsat, access_xenoarch, access_eva, access_network)
minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage,
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva, access_network)
access_RC_announce, access_keycard_auth, access_tcomsat, access_xenoarch, access_eva, access_network)
/datum/job/scientist
spawn_positions = 5

View File

@@ -5,11 +5,11 @@
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory,
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
access_research, access_engine, access_mining, access_construction, access_mailsorting,
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks)
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_external_airlocks)
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory,
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
access_research, access_engine, access_mining, access_construction, access_mailsorting,
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks)
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_external_airlocks)
/datum/job/warden
pto_type = PTO_SECURITY

View File

@@ -17,10 +17,33 @@
/obj/item/device/encryptionkey/heads/rd
name = "research director's encryption key"
icon_state = "rd_cypherkey"
channels = list("Command" = 1, "Science" = 1, "Explorer" = 1)
channels = list("Command" = 1, "Science" = 1)
/obj/item/device/encryptionkey/ert
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1, "Explorer" = 1)
/obj/item/device/encryptionkey/omni //Literally only for the admin intercoms
channels = list("Mercenary" = 1, "Raider" = 1, "Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1, "Explorer" = 1)
/obj/item/device/encryptionkey/pathfinder
name = "pathfinder radio encryption key"
icon_state = "com_cypherkey"
channels = list("Command" = 1, "Explorer" = 1)
/obj/item/device/encryptionkey/pilot
name = "pilot's encryption key"
icon_state = "cypherkey"
channels = list("Explorer" = 1)
/obj/item/device/encryptionkey/explorer
name = "explorer radio encryption key"
icon_state = "rob_cypherkey"
channels = list("Explorer" = 1)
/obj/item/device/encryptionkey/sar
name = "sar's encryption key"
icon_state = "med_cypherkey"
channels = list("Medical" = 1, "Explorer" = 1)
/obj/item/device/encryptionkey/talon
channels = list("Talon" = 1)

View File

@@ -48,4 +48,66 @@
M.mob_radio.forceMove(M.loc)
M.mob_radio = null
return
..()
..()
/obj/item/device/radio/headset/pathfinder
name = "pathfinder's headset"
desc = "Headset used by pathfinders for exploring. Access to the explorer and command channels."
icon_state = "exp_headset"
adhoc_fallback = TRUE
ks2type = /obj/item/device/encryptionkey/pathfinder
/obj/item/device/radio/headset/pathfinder/alt
name = "pathfinder's bowman headset"
desc = "Bowman headset used by pathfinders for exploring. Access to the explorer and command channels."
icon_state = "exp_headset_alt"
/obj/item/device/radio/headset/pilot
name = "pilot's headset"
desc = "A headset used by pilots, has access to the explorer channel."
icon_state = "pilot_headset"
adhoc_fallback = TRUE
ks2type = /obj/item/device/encryptionkey/pilot
/obj/item/device/radio/headset/pilot/alt
name = "pilot's bowman headset"
desc = "A bowman headset used by pilots, has access to the explorer channel."
icon_state = "pilot_headset_alt"
/obj/item/device/radio/headset/explorer
name = "explorer's headset"
desc = "Headset used by explorers for exploring. Access to the explorer channel."
icon_state = "exp_headset"
adhoc_fallback = TRUE
ks2type = /obj/item/device/encryptionkey/explorer
/obj/item/device/radio/headset/explorer/alt
name = "explorer's bowman headset"
desc = "Bowman headset used by explorers for exploring. Access to the explorer channel."
icon_state = "exp_headset_alt"
/obj/item/device/radio/headset/sar
name = "fm radio headset"
desc = "A headset for field medics."
icon_state = "sar_headset"
adhoc_fallback = TRUE
ks2type = /obj/item/device/encryptionkey/sar
/obj/item/device/radio/headset/sar/alt
name = "fm radio bowman headset"
desc = "A bowman headset for field medics."
icon_state = "sar_headset_alt"
/obj/item/device/radio/headset/volunteer
name = "volunteer's headset"
desc = "A headset used by volunteers to expedition teams, has access to the exploration channel."
icon_state = "pilot_headset"
adhoc_fallback = TRUE
ks2type = /obj/item/device/encryptionkey/pilot
/obj/item/device/radio/headset/talon
name = "talon headset"
desc = "A headset for communication between the crew of the ITV Talon."
adhoc_fallback = TRUE
icon_state = "pilot_headset"
ks2type = /obj/item/device/encryptionkey/talon

View File

@@ -0,0 +1,216 @@
//Gun Cabinets
/obj/structure/closet/secure_closet/guncabinet/sidearm
name = "emergency weapon cabinet"
req_one_access = list(access_armory,access_captain)
starts_with = list(
/obj/item/weapon/gun/energy/gun = 4)
/obj/structure/closet/secure_closet/guncabinet/rifle
name = "rifle cabinet"
req_one_access = list(access_explorer,access_brig)
starts_with = list(
/obj/item/ammo_magazine/clip/c762/hunter = 9,
/obj/item/weapon/gun/projectile/shotgun/pump/rifle = 2)
/obj/structure/closet/secure_closet/guncabinet/rifle/Initialize()
if(prob(85))
starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle
else
starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever
return ..()
/obj/structure/closet/secure_closet/guncabinet/phase
name = "explorer weapon cabinet"
req_one_access = list(access_explorer,access_brig)
starts_with = list(
/obj/item/weapon/gun/energy/phasegun = 2,
/obj/item/weapon/gun/energy/phasegun/pistol,
/obj/item/weapon/cell/device/weapon = 2,
/obj/item/clothing/accessory/permit/gun/planetside)
//Explorer Lockers
/obj/structure/closet/secure_closet/explorer
name = "explorer locker"
icon = 'icons/obj/closet_vr.dmi'
icon_state = "secureexp1"
icon_closed = "secureexp"
icon_locked = "secureexp1"
icon_opened = "secureexpopen"
icon_broken = "secureexpbroken"
icon_off = "secureexpoff"
req_access = list(access_explorer)
starts_with = list(
/obj/item/clothing/under/explorer,
/obj/item/clothing/suit/storage/hooded/explorer,
/obj/item/clothing/mask/gas/explorer,
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/clothing/gloves/black,
/obj/item/device/radio/headset/explorer,
/obj/item/device/radio/headset/explorer/alt,
/obj/item/device/flashlight,
/obj/item/device/gps/explorer,
/obj/item/weapon/storage/box/flare,
/obj/item/device/geiger,
/obj/item/weapon/cell/device,
/obj/item/device/radio,
/obj/item/stack/marker_beacon/thirty,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/item/weapon/material/knife/machete,
/obj/item/clothing/accessory/holster/machete,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
/obj/item/device/cataloguer)
/obj/structure/closet/secure_closet/explorer/Initialize()
if(prob(50))
starts_with += /obj/item/weapon/storage/backpack
else
starts_with += /obj/item/weapon/storage/backpack/satchel/norm
return ..()
//SAR Lockers
/obj/structure/closet/secure_closet/sar
name = "field medic locker"
desc = "Supplies for a wilderness first responder."
icon_state = "medical1"
icon_closed = "medical"
icon_locked = "medical1"
icon_opened = "medicalopen"
icon_broken = "medicalbroken"
icon_off = "medicaloff"
req_access = list(access_medical_equip)
starts_with = list(
/obj/item/weapon/storage/backpack/dufflebag/emt,
/obj/item/weapon/storage/box/autoinjectors,
/obj/item/weapon/storage/box/syringes,
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,
/obj/item/weapon/storage/belt/medical/emt,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/item/weapon/gun/energy/locked/frontier/holdout,
/obj/item/clothing/mask/gas/explorer,
/obj/item/clothing/suit/storage/hooded/explorer/medic,
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar,
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/device/radio/headset/sar,
/obj/item/device/radio/headset/sar/alt,
/obj/item/weapon/cartridge/medical,
/obj/item/device/flashlight,
/obj/item/weapon/tank/emergency/oxygen/engi,
/obj/item/clothing/glasses/hud/health,
/obj/item/device/healthanalyzer,
/obj/item/device/radio/off,
/obj/random/medical,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood = 2,
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 2,
/obj/item/weapon/tool/crowbar,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/storage/box/freezer,
/obj/item/clothing/accessory/storage/white_vest,
/obj/item/taperoll/medical,
/obj/item/device/gps/medical,
/obj/item/device/geiger,
/obj/item/bodybag/cryobag,
/obj/item/device/cataloguer/compact)
//Pilot Locker
/obj/structure/closet/secure_closet/pilot
name = "pilot locker"
req_access = list(access_pilot)
starts_with = list(
/obj/item/weapon/storage/backpack/parachute,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/item/weapon/gun/energy/locked/frontier/holdout,
/obj/item/clothing/head/pilot,
/obj/item/clothing/under/rank/pilot1,
/obj/item/clothing/suit/storage/toggle/bomber/pilot,
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/clothing/mask/gas/half,
/obj/item/clothing/shoes/black,
/obj/item/clothing/gloves/fingerless,
/obj/item/device/radio/headset/pilot,
/obj/item/device/radio/headset/pilot/alt,
/obj/item/device/flashlight,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,
/obj/item/weapon/storage/box/flare,
/obj/item/weapon/cell/device,
/obj/item/device/radio,
/obj/item/device/gps/explorer,
/obj/item/device/cataloguer/compact)
/obj/structure/closet/secure_closet/pilot/Initialize()
if(prob(50))
starts_with += /obj/item/weapon/storage/backpack
else
starts_with += /obj/item/weapon/storage/backpack/satchel/norm
return ..()
/obj/structure/closet/secure_closet/pathfinder
name = "pathfinder locker"
icon = 'icons/obj/closet_vr.dmi'
icon_state = "secureexp1"
icon_closed = "secureexp"
icon_locked = "secureexp1"
icon_opened = "secureexpopen"
icon_broken = "secureexpbroken"
icon_off = "secureexpoff"
req_access = list(access_gateway)
starts_with = list(
/obj/item/clothing/under/explorer,
/obj/item/clothing/suit/storage/hooded/explorer,
/obj/item/clothing/mask/gas/explorer,
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/clothing/gloves/black,
/obj/item/device/radio/headset/pathfinder,
/obj/item/device/radio/headset/pathfinder/alt,
/obj/item/device/flashlight,
/obj/item/device/gps/explorer,
/obj/item/weapon/storage/box/flare,
/obj/item/weapon/storage/box/explorerkeys,
/obj/item/device/geiger,
/obj/item/weapon/cell/device,
/obj/item/device/radio,
/obj/item/device/bluespaceradio/tether_prelinked,
/obj/item/stack/marker_beacon/thirty,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/item/weapon/material/knife/machete/deluxe,
/obj/item/weapon/gun/energy/locked/frontier/carbine,
/obj/item/clothing/accessory/holster/machete,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
/obj/item/device/cataloguer/compact/pathfinder)
/obj/structure/closet/secure_closet/pathfinder/Initialize()
if(prob(50))
starts_with += /obj/item/weapon/storage/backpack
else
starts_with += /obj/item/weapon/storage/backpack/satchel/norm
return ..()
//Exotic Seeds Crate
/obj/structure/closet/crate/hydroponics/exotic
name = "exotic seeds crate"
desc = "All you need to destroy that pesky planet."
starts_with = list(
/obj/item/seeds/random = 6,
/obj/item/seeds/replicapod = 2,
/obj/item/seeds/ambrosiavulgarisseed = 2,
/obj/item/seeds/kudzuseed,
/obj/item/seeds/libertymycelium,
/obj/item/seeds/reishimycelium)