Borer Tweaks and Changes (#8682)

Spawned borers now get added to the Ghostspawner menu, allowing players to inhabit them even if they didn't catch the original request.
    Borers have gained the ability to survey their host's health, allowing them to better choose when to administer certain chemicals.
    Borers now regenerate chemicals even if their host is unconscious.
    Awakening psionics now take 15 seconds instead of 10, and the host now gets a message about feeling something bad coming on, allowing them to make a dash to safety and or seclusion.
    Skrell returning from Srom no longer eject controlling borers to the lobby by replacing their ckey into the aether.
    Skrell no longer spontaneously die when entering Srom on a map that doesn't have a Srom location.
This commit is contained in:
Geeves
2020-05-15 23:39:32 +03:00
committed by GitHub
parent 250a649977
commit 69746693b5
13 changed files with 143 additions and 51 deletions
+30
View File
@@ -2,6 +2,7 @@
/datum/controller/subsystem/ghostroles
name = "Ghost Roles"
init_order = SS_INIT_JOBS
flags = SS_NO_FIRE
var/list/list/spawnpoints = list() //List of the available spawnpoints by spawnpoint type
@@ -10,6 +11,10 @@
var/list/spawners = list() //List of the available spawner datums
// For special spawners that have mobile or object spawnpoints
var/list/spawn_types = list("Golems", "Borers")
var/list/spawn_atom = list()
/datum/controller/subsystem/ghostroles/Recover()
src.spawnpoints = SSghostroles.spawnpoints
src.spawners = SSghostroles.spawners
@@ -36,6 +41,9 @@
CHECK_TICK
update_spawnpoint_status_by_identifier(identifier)
for(var/spawn_type in spawn_types)
spawn_atom[spawn_type] = list()
//Adds a spawnpoint to the spawnpoint list
/datum/controller/subsystem/ghostroles/proc/add_spawnpoints(var/obj/effect/ghostspawpoint/P)
if(!P.identifier) //If the spawnpoint has no identifier -> Abort
@@ -177,3 +185,25 @@
for(var/i in S.spawnpoints)
update_spawnpoint_status_by_identifier(i)
return
/datum/controller/subsystem/ghostroles/proc/add_spawn_atom(var/ghost_role_name, var/atom/spawn_atom)
if(ghost_role_name && spawn_atom)
var/datum/ghostspawner/G = spawners[ghost_role_name]
if(G)
G.spawn_atoms += spawn_atom
if(length(G.spawn_atoms) == 1)
G.enable()
/datum/controller/subsystem/ghostroles/proc/remove_spawn_atom(var/ghost_role_name, var/atom/spawn_atom)
if(ghost_role_name && spawn_atom)
var/datum/ghostspawner/G = spawners[ghost_role_name]
if(G)
G.spawn_atoms -= spawn_atom
if(!length(G.spawn_atoms))
G.disable()
/datum/controller/subsystem/ghostroles/proc/get_spawn_atoms(var/ghost_role_name)
var/datum/ghostspawner/G = spawners[ghost_role_name]
if(G)
return G.spawn_atoms
return list()