mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 05:51:56 +01:00
Odin Ghost Role Update (#10220)
* Odin Ghost Role Update * Overhauls Odin Access according to the existing access levels * Overhauls the get_cetncom_access proc * Fixes nt ghost roles having complete access to everything (instead of just the station) * Updates get_cetncom_access with actually used roles * Updates jobs in get_all_centcom_jobs * Adds a bartender / chef job to the odin * Adds a janitor job to the odin * Adds a medical doctor / pharmacist job to the odin * * Add two hooks that are called when a emergency/crew transfer is called * Add a chance that the odin chef / bartender role is enabled upon crew transfer * Locks down the odin and spawns in the checkpoint security if a crew transfer / emergency shuttle under certain conditions * * Increases the chef-count to 2 * Removes the produce from the chef-backpack as they have a vending machine full of it. * * Changes the time when the lockdown occurs / the spawnpoints are enabled to after the transfer shuttle has departed. * * Let CCIA enable (some of) those roles. * Galoshes for the Janitor * * Add logging Co-authored-by: Werner <Arrow768@users.noreply.github.com>
This commit is contained in:
@@ -177,6 +177,8 @@
|
||||
|
||||
//Proc to enable the ghostspawner
|
||||
/datum/ghostspawner/proc/enable()
|
||||
if(usr)
|
||||
log_and_message_admins("has enabled the ghostspawner [src.name]")
|
||||
enabled = TRUE
|
||||
if(enable_dmessage)
|
||||
for(var/mob/abstract/observer/O in player_list)
|
||||
|
||||
@@ -60,8 +60,8 @@
|
||||
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL)
|
||||
allow_appearance_change = APPEARANCE_PLASTICSURGERY
|
||||
|
||||
assigned_role = "Emergency Response Team Commander"
|
||||
special_role = "ERT Commander"
|
||||
assigned_role = "CCIA Agent"
|
||||
special_role = "CCIA Agent"
|
||||
respawn_flag = null
|
||||
|
||||
mob_name = null
|
||||
@@ -126,6 +126,113 @@
|
||||
req_perms = R_CCIAA
|
||||
max_count = 3
|
||||
|
||||
/datum/ghostspawner/human/admin/odindoc
|
||||
short_name = "odindoc"
|
||||
name = "Odin Medical Doctor"
|
||||
desc = "Provide medical assistance for those arriving on the Odin."
|
||||
|
||||
enabled = FALSE
|
||||
spawnpoints = list("OdinDoctor")
|
||||
req_perms = null
|
||||
req_perms_edit = R_CCIAA
|
||||
max_count = 4
|
||||
|
||||
//Vars related to human mobs
|
||||
outfit = /datum/outfit/admin/nt/odindoc
|
||||
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL)
|
||||
allow_appearance_change = APPEARANCE_PLASTICSURGERY
|
||||
|
||||
assigned_role = "Odin Medical Doctor"
|
||||
special_role = "Odin Medical Doctor"
|
||||
respawn_flag = null
|
||||
|
||||
mob_name = null
|
||||
|
||||
/datum/ghostspawner/human/admin/odinpharm
|
||||
short_name = "odinpharm"
|
||||
name = "Odin Pharmacist"
|
||||
desc = "Provide medication for the Doctors on the Odin and those in need."
|
||||
|
||||
enabled = FALSE
|
||||
spawnpoints = list("OdinPharm")
|
||||
req_perms = null
|
||||
req_perms_edit = R_CCIAA
|
||||
max_count = 1
|
||||
|
||||
outfit = /datum/outfit/admin/nt/odinpharm
|
||||
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL)
|
||||
allow_appearance_change = APPEARANCE_PLASTICSURGERY
|
||||
|
||||
assigned_role = "Odin Pharmacist"
|
||||
special_role = "Odin Pharmacist"
|
||||
respawn_flag = null
|
||||
|
||||
mob_name = null
|
||||
|
||||
/datum/ghostspawner/human/admin/odinchef
|
||||
short_name = "odinchef"
|
||||
name = "Odin Chef"
|
||||
desc = "Feed starving crew members on the Odin."
|
||||
|
||||
enabled = FALSE
|
||||
spawnpoints = list("OdinChef")
|
||||
req_perms = null
|
||||
req_perms_edit = R_CCIAA
|
||||
max_count = 2
|
||||
|
||||
outfit = /datum/outfit/admin/nt/odinchef
|
||||
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI)
|
||||
allow_appearance_change = APPEARANCE_PLASTICSURGERY
|
||||
|
||||
assigned_role = "Odin Chef"
|
||||
special_role = "Odin Chef"
|
||||
respawn_flag = null
|
||||
|
||||
mob_name = null
|
||||
|
||||
/datum/ghostspawner/human/admin/odinbartender
|
||||
short_name = "odinbartender"
|
||||
name = "Odin Bartender"
|
||||
desc = "Ensure enough drinks are available to the crew on the Odin."
|
||||
|
||||
enabled = FALSE
|
||||
spawnpoints = list("OdinBartender")
|
||||
req_perms = null
|
||||
req_perms_edit = R_CCIAA
|
||||
max_count = 1
|
||||
|
||||
outfit = /datum/outfit/admin/nt/odinbartender
|
||||
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI)
|
||||
allow_appearance_change = APPEARANCE_PLASTICSURGERY
|
||||
|
||||
assigned_role = "Odin Bartender"
|
||||
special_role = "Odin Bartender"
|
||||
respawn_flag = null
|
||||
|
||||
mob_name = null
|
||||
|
||||
/datum/ghostspawner/human/admin/odinjanitor
|
||||
short_name = "odinjanitor"
|
||||
name = "Odin Sanitation Specialist"
|
||||
desc = "You are a expert in your field. A true authority. The crew looks to you when they get into a sticky situation. You are a janitor on the Odin."
|
||||
|
||||
enabled = FALSE
|
||||
spawnpoints = list("OdinJanitor")
|
||||
req_perms = null
|
||||
max_count = 1
|
||||
|
||||
outfit = /datum/outfit/admin/nt/odinjanitor
|
||||
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI)
|
||||
allow_appearance_change = APPEARANCE_PLASTICSURGERY
|
||||
|
||||
assigned_role = "Sanitation Specialist"
|
||||
special_role = "Sanitation Specialist"
|
||||
respawn_flag = null
|
||||
|
||||
mob_name = null
|
||||
mob_name_prefix = "Spec. "
|
||||
mob_name_pick_message = "Pick a callsign or last-name."
|
||||
|
||||
/datum/ghostspawner/human/admin/tcflsentinel
|
||||
short_name = "tcflsentinel"
|
||||
name = "TCFL Sentinel"
|
||||
@@ -202,3 +309,35 @@
|
||||
M.ghostize(1)
|
||||
verbs -= /client/proc/despawn
|
||||
qdel(M)
|
||||
|
||||
|
||||
|
||||
/hook/shuttle_moved/proc/setup_odin_for_shuttle(var/obj/effect/shuttle_landmark/start_location, var/obj/effect/shuttle_landmark/destination)
|
||||
if(start_location.landmark_tag != "nav_emergency_start")
|
||||
return TRUE
|
||||
|
||||
if(emergency_shuttle.evac)
|
||||
if(get_security_level() != "green" )
|
||||
var/datum/wifi/sender/door/wifi_sender = new("odin_arrivals_lockdown", SSghostroles)
|
||||
wifi_sender.activate("close")
|
||||
qdel(wifi_sender)
|
||||
|
||||
if(prob(80))
|
||||
var/datum/ghostspawner/G = SSghostroles.get_spawner("checkpointsec")
|
||||
G.enable()
|
||||
return TRUE
|
||||
else
|
||||
if(get_security_level() == "green" && prob(70))
|
||||
var/datum/ghostspawner/G = SSghostroles.get_spawner("odinchef")
|
||||
G.enable()
|
||||
G = SSghostroles.get_spawner("odinbartender")
|
||||
G.enable()
|
||||
if(get_security_level() == "blue")
|
||||
var/datum/wifi/sender/door/wifi_sender = new("odin_arrivals_lockdown", SSghostroles)
|
||||
wifi_sender.activate("close")
|
||||
qdel(wifi_sender)
|
||||
|
||||
if(prob(50))
|
||||
var/datum/ghostspawner/G = SSghostroles.get_spawner("checkpointsec")
|
||||
G.enable()
|
||||
return TRUE
|
||||
|
||||
Reference in New Issue
Block a user