mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-11 08:06:33 +01:00
aae24b1ab2
## About The Pull Request Adds a new chaplain sect, the sect of the Dream God This sect gains favor from dreaming and blessing dreamers. Their blessing only works on sleeping mobs - hitting a sleeping mob with your bible will cause it to start dreaming, and if it's already dreaming, grant favor. Either way, the mob is healed. For 0 favor, you can **Banish Nightmare** - offering a Nightmare's corpse rewards favor for banishing bad dreams. If the Nightmare has a heart, you are rewarded with a special **Sacred Heart** which heals you while dreaming and sleeping. You can also offer a Nightmare's heart on its own without the body attached. For 0 favor, you can **Deaconize Dreamers** - you can deaconize up to 3 dreamers. For 50 favor, you can have a **Dream Portent** - This rite immediately makes you fall asleep, and grants you a dream related to something going on in the round. It may provide insight into something you otherwise don't know about. If you take damage, the effect ends early. <img width="374" height="126" alt="image" src="https://github.com/user-attachments/assets/7c4e12fe-8456-411c-9d39-691e4ac2312d" /> For 100 favor, you can **Dream Projection** - this rite allows you to pick one of your deacons, and forces you to become an imaginary friend of that deacon. For the duration of the effect you are asleep. If you are woken up or take damage, the effect ends. If the deacon dies, the effect ends early. <img width="492" height="294" alt="image" src="https://github.com/user-attachments/assets/4e2f6810-15cd-41af-a69f-daa6ddca671a" /> For 200 favor, you can give you and your followers **Dream Protection** - While sleeping and dreaming all damage taken is reduced. For 200 favor, you can start a **Slumber Party** - All nearby mobs (who can't block magic and some other asterisks) fall asleep and share a dream. This form of sleep heals the mob rapidly (also heals holy people even more). ## Why It's Good For The Game A new sect for chaplains to sink their teeth into. This one brings a unique niche, focused around sleeping and fortune telling. ## Changelog 🆑 Melbert add: Adds the Sect of the Dream God, a new option for chaplains. /🆑
92 lines
4.3 KiB
Plaintext
92 lines
4.3 KiB
Plaintext
/**
|
|
* Deaconize
|
|
* Makes a sentient, non-cult member of the station into a Holy person, able to use bibles & other chap gear.
|
|
* Is a one-time use ability, given to all sects that don't have their own variation of it.
|
|
*/
|
|
/datum/religion_rites/deaconize
|
|
name = "Deaconize"
|
|
desc = "Converts someone to your sect. They must be willing, so the first invocation will instead prompt them to join. \
|
|
They will gain the same holy abilities as you, this is a one-time use so make sure they are worthy!"
|
|
ritual_length = 30 SECONDS
|
|
ritual_invocations = list(
|
|
"A good, honorable person has been brought here by faith ...",
|
|
"With their hands ready to serve ...",
|
|
"Heart ready to listen ...",
|
|
"And soul ready to follow ...",
|
|
"May we offer our own hand in return ..."
|
|
)
|
|
invoke_msg = "And use them to the best of our abilities."
|
|
rite_flags = RITE_ALLOW_MULTIPLE_PERFORMS | RITE_ONE_TIME_USE
|
|
|
|
///The person currently being deaconized.
|
|
var/mob/living/carbon/human/potential_deacon
|
|
|
|
/datum/religion_rites/deaconize/Destroy()
|
|
potential_deacon = null
|
|
return ..()
|
|
|
|
/datum/religion_rites/deaconize/perform_rite(mob/living/user, atom/religious_tool)
|
|
if(!ismovable(religious_tool))
|
|
to_chat(user, span_warning("This rite requires a religious device that individuals can be buckled to."))
|
|
return FALSE
|
|
var/atom/movable/movable_reltool = religious_tool
|
|
if(!movable_reltool)
|
|
return FALSE
|
|
var/mob/living/carbon/human/possible_deacon = locate() in movable_reltool.buckled_mobs
|
|
if(!possible_deacon)
|
|
to_chat(user, span_warning("Nothing is buckled to the [movable_reltool]!"))
|
|
return FALSE
|
|
if(!is_valid_for_deacon(possible_deacon, user))
|
|
return FALSE
|
|
//no one invited or this is not the invited person
|
|
if(!potential_deacon || (possible_deacon != potential_deacon))
|
|
INVOKE_ASYNC(src, PROC_REF(invite_deacon), possible_deacon)
|
|
to_chat(user, span_notice("They have been offered the oppertunity to join our ranks. Wait for them to decide and try again."))
|
|
return FALSE
|
|
return ..()
|
|
|
|
/datum/religion_rites/deaconize/invoke_effect(mob/living/carbon/human/user, atom/movable/religious_tool)
|
|
. = ..()
|
|
if(!(potential_deacon in religious_tool.buckled_mobs)) //checks one last time if the right corpse is still buckled
|
|
to_chat(user, span_warning("[potential_deacon] is no longer on the altar!"))
|
|
return FALSE
|
|
if(potential_deacon.stat != CONSCIOUS)
|
|
to_chat(user, span_warning("[potential_deacon] has to be conscious for the rite to work!"))
|
|
return FALSE
|
|
if(!potential_deacon.mind)
|
|
to_chat(user, span_warning("[potential_deacon]'s mind appears to be elsewhere!"))
|
|
return FALSE
|
|
if(IS_CULTIST(potential_deacon))//what the fuck?!
|
|
to_chat(user, span_warning("[GLOB.deity] has seen a true, dark evil in [potential_deacon]'s heart, and they have been smitten!"))
|
|
playsound(get_turf(religious_tool), 'sound/effects/pray.ogg', 50, TRUE)
|
|
potential_deacon.gib(DROP_ORGANS|DROP_BODYPARTS)
|
|
return FALSE
|
|
var/datum/brain_trauma/special/honorbound/honor = user.has_trauma_type(/datum/brain_trauma/special/honorbound)
|
|
if(honor && (potential_deacon in honor.guilty))
|
|
honor.guilty -= potential_deacon
|
|
to_chat(user, span_notice("[GLOB.deity] has bound [potential_deacon] to the code! They are now a holy role! (albeit the lowest level of such)"))
|
|
potential_deacon.mind.set_holy_role(HOLY_ROLE_DEACON)
|
|
GLOB.religious_sect.on_conversion(potential_deacon)
|
|
playsound(get_turf(religious_tool), 'sound/effects/pray.ogg', 50, TRUE)
|
|
return TRUE
|
|
|
|
///Helper if the passed possible_deacon is valid to become a deacon or not.
|
|
/datum/religion_rites/deaconize/proc/is_valid_for_deacon(mob/living/carbon/human/possible_deacon, mob/living/user)
|
|
if(possible_deacon.stat != CONSCIOUS)
|
|
to_chat(user, span_warning("[possible_deacon] needs to be alive and conscious to join!"))
|
|
return FALSE
|
|
if(possible_deacon.mind && possible_deacon.mind.holy_role)
|
|
to_chat(user, span_warning("[possible_deacon] is already a member of the religion!"))
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/**
|
|
* Async proc that waits for a response on joining the sect.
|
|
* If they accept, the deaconize rite can now recruit them instead of just offering more invites.
|
|
*/
|
|
/datum/religion_rites/deaconize/proc/invite_deacon(mob/living/carbon/human/invited)
|
|
var/ask = tgui_alert(invited, "Join [GLOB.deity]? You will be expected to follow the Chaplain's order.", "Invitation", list("Yes", "No"), 60 SECONDS)
|
|
if(ask != "Yes")
|
|
return
|
|
potential_deacon = invited
|