mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
## About The Pull Request Adds a small new lavaland ruin, the Watchers' Grave.   You will need to figure out yourself how to find a way through the walls surrounding it (it's not very hard). This is mostly just atmospheric but also serves as a delivery vehicle for a unique item; an orphaned Watcher egg. (That's kind of it in terms of loot, unless you count a handful of lavaland mob corpses and mushrooms). You can either eat this (it's an egg), throw it at someone to spawn an angry watcher, or keep hold of it for a while and see what happens. <details>  That's right it's your very own baby watcher. It orbits your head and shoots at lavaland creatures for unimpressive damage. It won't ever intentionally shoot a player but they might walk in front of it, as it doesn't hurt very much they will probably forgive you. If you die it will continue circling your corpse to guard it against predation. </details> In creating this ruin I also added a new component called "corpse description". It provides some extra examine text to a corpse which is removed permanently if the mob is revived. There's a field you can varedit on corpse spawners (or make a subtype) which will automatically apply it to spawned corpses. You can use it for environmental storytelling. Or admins can use it to make fun of how you died. Also I fixed basic mobs runtiming when examined by ghosts. ## Why It's Good For The Game More variety in map generation. It's cute. Adds a tool that mappers might like. ## Changelog 🆑 add: Adds a new lavaland ruin where you can find a unique egg. /🆑
45 lines
1.8 KiB
Plaintext
45 lines
1.8 KiB
Plaintext
/**
|
|
* Adds examine text to something which is removed when receiving specified signals, by default the revive signal.
|
|
* The default settings are set up to be applied to a corpse to add some kind of immersive storytelling text which goes away upon revival.
|
|
*/
|
|
/datum/component/temporary_description
|
|
/// What do we display on examine?
|
|
var/description_text = ""
|
|
/// What do we display if examined by a clown? Usually only applied if this is put on a corpse, but go nuts.
|
|
var/naive_description = ""
|
|
/// When are we removed?
|
|
var/list/removal_signals
|
|
|
|
/datum/component/temporary_description/Initialize(
|
|
description_text = "There's something unusual about them.",
|
|
naive_description = "",
|
|
list/removal_signals = list(COMSIG_LIVING_REVIVE),
|
|
)
|
|
. = ..()
|
|
if (!isatom(parent))
|
|
return COMPONENT_INCOMPATIBLE
|
|
if (!description_text)
|
|
stack_trace("[type] applied to [parent] with empty description, which is pointless.")
|
|
src.description_text = description_text
|
|
src.naive_description = naive_description
|
|
if (length(removal_signals))
|
|
src.removal_signals = removal_signals
|
|
|
|
/datum/component/temporary_description/RegisterWithParent()
|
|
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined))
|
|
RegisterSignals(parent, removal_signals, PROC_REF(remove_component))
|
|
|
|
/datum/component/temporary_description/UnregisterFromParent()
|
|
UnregisterSignal(parent, removal_signals + COMSIG_ATOM_EXAMINE)
|
|
|
|
/datum/component/temporary_description/proc/on_examined(atom/corpse, mob/thing_inspector, list/examine_list)
|
|
SIGNAL_HANDLER
|
|
if (naive_description && HAS_MIND_TRAIT(thing_inspector, TRAIT_NAIVE))
|
|
examine_list += span_notice(naive_description)
|
|
return
|
|
examine_list += span_notice(description_text)
|
|
|
|
/datum/component/temporary_description/proc/remove_component()
|
|
SIGNAL_HANDLER
|
|
qdel(src) // It wouldn't be immersive if the circumstances of my grisly death remained after I was revived
|