mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 08:29:57 +01:00
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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user