Files
kiwistation/code/modules/religion/rites.dm
T
moo 72b7a266b3 Adds Religious Sects and Basic Technophile Sect for Proof of Concept (#49434)
* このコミットの中が未来です

* Adds Rites

* 💻

* remove bible global

* last minute code changes 😏

* review brah

* waaa_fb

* 

Review stuff, Doc stuff, You can now coax a user to the platform for !!FUN!!

* Update code/modules/religion/religion_sects.dm

Co-authored-by: spookydonut <github@spooksoftware.com>
2020-03-06 11:11:52 +08:00

78 lines
3.1 KiB
Plaintext

/datum/religion_rites
/// name of the religious rite
var/name = "religious rite"
/// Description of the religious rite
var/desc = "immm gonna rooon"
/// length it takes to complete the ritual
var/ritual_length = (10 SECONDS) //total length it'll take
/// list of invocations said (strings) throughout the rite
var/list/ritual_invocations //strings that are by default said evenly throughout the rite
/// message when you invoke
var/invoke_msg
var/favor_cost = 0
///Called to perform the invocation of the rite, with args being the performer and the altar where it's being performed. Maybe you want it to check for something else?
/datum/religion_rites/proc/perform_rite(mob/living/user, obj/structure/altar_of_gods/AOG)
if(GLOB.religious_sect?.favor < favor_cost)
to_chat(user, "<span class='warning'>This rite requires more favor!</span>")
return FALSE
to_chat(user, "<span class='notice'>You begin to perform the rite of [name]...</span>")
if(!ritual_invocations)
if(do_after(user, target = user, delay = ritual_length))
return TRUE
return FALSE
var/first_invoke = TRUE
for(var/i in ritual_invocations)
if(first_invoke) //instant invoke
user.say(i)
first_invoke = FALSE
continue
if(!ritual_invocations.len) //we divide so we gotta protect
return FALSE
if(!do_after(user, target = user, delay = ritual_length/ritual_invocations.len))
return FALSE
user.say(i)
if(!do_after(user, target = user, delay = ritual_length/ritual_invocations.len)) //because we start at 0 and not the first fraction in invocations, we still have another fraction of ritual_length to complete
return FALSE
if(invoke_msg)
user.say(invoke_msg)
return TRUE
///Does the thing if the rite was successfully performed. return value denotes that the effect successfully (IE a harm rite does harm)
/datum/religion_rites/proc/invoke_effect(mob/living/user, obj/structure/altar_of_gods/AOG)
GLOB.religious_sect.on_riteuse(user,AOG)
return TRUE
/*********Technophiles**********/
/datum/religion_rites/synthconversion
name = "Synthetic Conversion"
desc = "Convert a human-esque individual into a (superior) Android."
ritual_length = 1 MINUTES
ritual_invocations = list("By the inner workings of our god...",
"... We call upon you, in the face of adversity...",
"... to complete us, removing that which is undesirable...")
invoke_msg = "... Arise, our champion! Become that which your soul craves, live in the world as your true form!!"
favor_cost = 500
/datum/religion_rites/synthconversion/perform_rite(mob/living/user, obj/structure/altar_of_gods/AOG)
if(!AOG?.buckled_mobs?.len)
return FALSE
return ..()
/datum/religion_rites/synthconversion/invoke_effect(mob/living/user, obj/structure/altar_of_gods/AOG)
if(!AOG?.buckled_mobs?.len)
return FALSE
var/mob/living/carbon/human/human2borg
for(var/i in AOG.buckled_mobs)
if(istype(i,/mob/living/carbon/human))
human2borg = i
break
if(!human2borg)
return FALSE
human2borg.set_species(/datum/species/android)
human2borg.visible_message("<span class='notice'>[human2borg] has been converted by the rite of [name]!</span>")
return TRUE