Revenant Gamemode (#10851)

Added a new wave defense gamemode, Revenants, wherein the station crew have to defend themselves from an endless wave of humanoid bluespace creatures.

Ported the icon from Baystation, it's their blueforged, but I tweaked the mob's alpha values a tad. Baystation12/Baystation12#21669
This commit is contained in:
Geeves
2021-01-15 18:44:28 +02:00
committed by GitHub
parent 51640d6d1b
commit 93e070371c
39 changed files with 392 additions and 153 deletions
@@ -0,0 +1,45 @@
/datum/ghostspawner/revenant
short_name = MODE_REVENANT
name = "Revenant"
desc = "A creature borne of bluespace, you are here to wreak havoc and put an end to bluespace experimentation, one station at a time."
tags = list("Antagonist")
observers_only = TRUE
show_on_job_select = FALSE
enabled = FALSE
landmark_name = "Revenant"
max_count = 0
spawn_mob = /mob/living/carbon/human/revenant
respawn_flag = ANIMAL
var/has_fired = FALSE
/datum/ghostspawner/revenant/spawn_mob(mob/user)
var/turf/T = select_spawnlocation()
var/mob/living/carbon/human/revenant/R
if(T)
R = new /mob/living/carbon/human/revenant(T)
else
to_chat(user, SPAN_WARNING("Unable to find any spawn point."))
return
if(R)
announce_ghost_joinleave(user, FALSE, "They are now a [name].")
R.ckey = user.ckey
revenants.add_antagonist(R.mind, TRUE, TRUE, FALSE, TRUE, TRUE)
if(!has_fired)
INVOKE_ASYNC(src, .proc/play_ambience, R)
return R
/datum/ghostspawner/revenant/proc/play_ambience(var/mob/living/carbon/human/H)
for(var/m in player_list - H)
var/mob/M = m
if(M.ear_deaf)
continue
M.playsound_simple(get_turf(M), 'sound/ambience/tension/tension.ogg', 75, FALSE)
to_chat(M, FONT_LARGE(SPAN_CULT("A faint hum coming from the station walls fills your ears...")))
has_fired = TRUE
@@ -4,6 +4,8 @@
desc = "Infest crew, reproduce, repeat."
tags = list("Antagonist")
observers_only = TRUE
loc_type = GS_LOC_ATOM
atom_add_message = "A borer has been birthed!"
+6
View File
@@ -2,7 +2,10 @@
var/short_name = null
var/name = null
var/desc = null
var/observers_only = FALSE
var/show_on_job_select = TRUE // Determines if the ghost spawner role is considered unique or not.
var/welcome_message = null
var/list/tags = list() //Tags associated with that spawner
@@ -71,6 +74,9 @@
if(!is_alien_whitelisted(user, req_species_whitelist))
return "Missing Species Whitelist"
if(observers_only && !isobserver(user))
return "Observers Only"
return FALSE
//Return a error message if the user CANT spawn. Otherwise FALSE