mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +01:00
adds the proteon orb. (heretic requirement) (#27705)
* adds the proteon orb. * oops * Update code/datums/components/ghost_direct_control.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Charlie Nolan <funnyman3595@gmail.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> * revert that * Update code/game/objects/structures/monster_spawner.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> * lewcs stuff * Update code/game/objects/structures/monster_spawner.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> * Update monster_spawner.dm --------- Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Charlie Nolan <funnyman3595@gmail.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/spawner/syndicate
|
||||
name = "warp beacon"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
@@ -74,3 +75,87 @@
|
||||
name = "basilisk den"
|
||||
desc = "A den housing a nest of basilisks, bring a coat."
|
||||
mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk)
|
||||
|
||||
/obj/structure/spawner/sentient
|
||||
var/role_name = "A sentient mob"
|
||||
var/assumed_control_message = "You are a sentient mob from a badly coded spawner"
|
||||
|
||||
/obj/structure/spawner/sentient/Initialize(mapload)
|
||||
. = ..()
|
||||
notify_ghosts("\A [name] has been created in \the [get_area(src)]!", source = src, title = "Sentient Spawner Created", flashwindow = FALSE
|
||||
)
|
||||
|
||||
/obj/structure/spawner/sentient/on_mob_spawn(mob/created_mob)
|
||||
created_mob.AddComponent(\
|
||||
/datum/component/ghost_direct_control,\
|
||||
role_name = src.role_name,\
|
||||
assumed_control_message = src.assumed_control_message,\
|
||||
after_assumed_control = CALLBACK(src, PROC_REF(became_player_controlled)),\
|
||||
)
|
||||
|
||||
/obj/structure/spawner/sentient/proc/became_player_controlled(mob/proteon)
|
||||
return
|
||||
|
||||
/obj/structure/spawner/sentient/proteon_spawner
|
||||
name = "eldritch gateway"
|
||||
desc = "A dizzying structure that somehow links into Nar'Sie's own domain. The screams of the damned echo continously."
|
||||
icon = 'icons/obj/cult.dmi'
|
||||
icon_state = "hole"
|
||||
light_power = 2
|
||||
light_color = LIGHT_COLOR_RED
|
||||
max_integrity = 50
|
||||
density = FALSE
|
||||
max_mobs = 2
|
||||
spawn_time = 15 SECONDS
|
||||
mob_types = list(/mob/living/simple_animal/hostile/construct/proteon/hostile)
|
||||
spawn_text = "arises from"
|
||||
faction = list("cult")
|
||||
role_name = "A proteon cult construct"
|
||||
assumed_control_message = null
|
||||
/// The GPS inside the spawner, lets security find them, especially if someone is space basing them.
|
||||
var/obj/item/gps/internal/proteon/gps
|
||||
|
||||
/obj/structure/spawner/sentient/proteon_spawner/Initialize(mapload)
|
||||
. = ..()
|
||||
GLOB.proteon_portals += src
|
||||
gps = new /obj/item/gps/internal/proteon(src)
|
||||
|
||||
/obj/structure/spawner/sentient/proteon_spawner/Destroy()
|
||||
GLOB.proteon_portals -= src
|
||||
QDEL_NULL(gps)
|
||||
return ..()
|
||||
|
||||
/obj/structure/spawner/sentient/proteon_spawner/examine_status(mob/user)
|
||||
if(IS_CULTIST(user) || !isliving(user))
|
||||
return "<span class='cult'>It's at <b>[round(obj_integrity * 100 / max_integrity)]%</b> stability.</span>"
|
||||
return ..()
|
||||
|
||||
/obj/structure/spawner/sentient/proteon_spawner/examine(mob/user)
|
||||
. = ..()
|
||||
if(!IS_CULTIST(user) && isliving(user))
|
||||
var/mob/living/living_user = user
|
||||
living_user.adjustBrainLoss(5)
|
||||
. += "<span class='userdanger'>The voices of the damned echo relentlessly in your mind, continously rebounding on the walls of your self the more you focus on [src]. Your head pounds, better keep away...</span>"
|
||||
else
|
||||
. += "<span class='cult'>The gateway will create one weak proteon construct every [spawn_time * 0.1] seconds, up to a total of [max_mobs], that may be controlled by the spirits of the dead.</span>"
|
||||
|
||||
/obj/structure/spawner/sentient/proteon_spawner/became_player_controlled(mob/living/simple_animal/hostile/construct/proteon/hostile/proteon)
|
||||
proteon.mind.add_antag_datum(/datum/antagonist/cultist)
|
||||
proteon.add_filter("awoken_proteon", 3, list("type" = "outline", "color" = LIGHT_COLOR_RED, "size" = 2))
|
||||
visible_message("<span class='cult'>[proteon] awakens, glowing an eerie red as it stirs from its stupor!</span>")
|
||||
addtimer(CALLBACK(src, PROC_REF(remove_wake_outline), proteon), 8 SECONDS)
|
||||
|
||||
/obj/structure/spawner/sentient/proteon_spawner/proc/remove_wake_outline(mob/proteon)
|
||||
proteon.remove_filter("awoken_proteon")
|
||||
proteon.add_filter("sentient_proteon", 3, list("type" = "outline", "color" = LIGHT_COLOR_RED, "size" = 2, "alpha" = 40))
|
||||
|
||||
/obj/structure/spawner/sentient/proteon_spawner/obj_destruction(damage_flag)
|
||||
playsound(src, 'sound/hallucinations/veryfar_noise.ogg', 75)
|
||||
visible_message("<span class='cult'><b>[src] completely falls apart, the screams of the damned reaching a feverous pitch before slowly fading away into nothing.</b></span>")
|
||||
return ..()
|
||||
|
||||
/obj/item/gps/internal/proteon
|
||||
local = FALSE // Let security find the cult bases in space with it.
|
||||
icon_state = null
|
||||
gpstag = "Eldritch Signal"
|
||||
desc = "You (can)'t just BSA a hole into hell!"
|
||||
|
||||
Reference in New Issue
Block a user