new chaplain sect, the Ever-Burning Candle sect (#54618)

* Adds the sect of the Ever Burning candle

* make the burning sacrifice 20 seconds instead of 10

only made it 10 seconds for testing purposes, also make the "unmelting" clothing red instead of blue to be more red candle-ish

* make another check at the end of the candle fuel rite

The candle fuel rite will now check if the sacrifice is still on fire and dead at the end of the rite, you can technically extinguish them and only light them on fire at the last moment but it's fine god won't notice

* make the unmelting wax rite actually fireproof clothing hood/helmets

so yes you can supposedly get 2 fireproof for the price of one, but since hardsuit and hoodie are allegedly just one big connected suit it sort of make sense.
I also took away the forced color from the fireproofed clothing as making it mesh well with most clothing ended badly so now you can only tell its unmelting by the name.

* few improvements to rites

makes a tighter if check for the unmelting was helmet thing. adds a sound effect at the end of each rite, gives the sect a max favor of 10 000 instead of 1000 which I could've sworn was originally the case but apparently not.

* change the for loop

* Do the thing that cobby asks

I still kept the for loop for the candle fuel for reasons cited above. In other news I just learned that the word SPAM came from a Monty python skit

* WHY CAN IAN BE SET ON FIRE AAAAA

* what if we kissed on the burning altar

* change the for loop to an if check for the sacrifice

also added a bunch of early returns which forces me to set chosen sacrifice to null a whole lot more

* updqte sect description
This commit is contained in:
Caldony
2020-11-19 20:28:10 +01:00
committed by GitHub
parent f8a2d6cacd
commit ded1be52a1
2 changed files with 143 additions and 0 deletions
+27
View File
@@ -190,3 +190,30 @@
to_chat(L, "<span class='notice'>You offer [the_cell]'s power to [GLOB.deity], pleasing them.</span>")
qdel(I)
return TRUE
/**** Ever-Burning Candle sect ****/
/datum/religion_sect/candle_sect
name = "Ever-Burning Candle"
desc = "A sect dedicated to candles."
convert_opener = "May you be the wax to keep the Ever-Burning Candle burning, acolyte.<br>Sacrificing burning corpses with a lot of burn damage and candles grants you favor"
alignment = ALIGNMENT_NEUT
max_favor = 10000
desired_items = list(/obj/item/candle)
rites_list = list(/datum/religion_rites/fireproof, /datum/religion_rites/burning_sacrifice, /datum/religion_rites/infinite_candle)
altar_icon_state = "convertaltar-red"
//candle sect bibles don't heal or do anything special apart from the standard holy water blessings
/datum/religion_sect/candle_sect/sect_bless(mob/living/blessed, mob/living/user)
return TRUE
/datum/religion_sect/candle_sect/on_sacrifice(obj/item/candle/offering, mob/living/user)
if(!istype(offering))
return
if(!offering.lit)
to_chat(user, "<span class='notice'>The candle needs to be lit to be offered!</span>")
return
to_chat(user, "<span class='notice'>Another candle for [GLOB.deity]'s collection</span>")
adjust_favor(20, user) //it's not a lot but hey there's a pacifist favor option at least
qdel(offering)
return TRUE
+116
View File
@@ -102,3 +102,119 @@
human2borg.set_species(/datum/species/android)
human2borg.visible_message("<span class='notice'>[human2borg] has been converted by the rite of [name]!</span>")
return TRUE
/*********Ever-Burning Candle**********/
///apply a bunch of fire immunity effect to clothing
/datum/religion_rites/fireproof/proc/apply_fireproof(obj/item/clothing/fireproofed)
fireproofed.name = "unmelting [fireproofed.name]"
fireproofed.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
fireproofed.heat_protection = chosen_clothing.body_parts_covered
fireproofed.resistance_flags |= FIRE_PROOF
/datum/religion_rites/fireproof
name = "Unmelting Wax"
desc = "Grants fire immunity to any piece of clothing."
ritual_length = 15 SECONDS
ritual_invocations = list("And so to support the holder of the Ever-Burning candle...",
"... allow this unworthy apparel to serve you ...",
"... make it strong enough to burn a thousand time and more ...")
invoke_msg = "... Come forth in your new form, and join the unmelting wax of the one true flame!"
favor_cost = 1000
///the piece of clothing that will be fireproofed, only one per rite
var/obj/item/clothing/chosen_clothing
/datum/religion_rites/fireproof/perform_rite(mob/living/user, atom/religious_tool)
for(var/obj/item/clothing/apparel in get_turf(religious_tool))
if(apparel.max_heat_protection_temperature >= FIRE_IMMUNITY_MAX_TEMP_PROTECT)
continue //we ignore anything that is already fireproof
chosen_clothing = apparel //the apparel has been chosen by our lord and savior
return ..()
return FALSE
/datum/religion_rites/fireproof/invoke_effect(mob/living/user, atom/religious_tool)
if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there
if(istype(chosen_clothing,/obj/item/clothing/suit/hooded) || istype(chosen_clothing,/obj/item/clothing/suit/space/hardsuit ))
for(var/obj/item/clothing/head/integrated_helmet in chosen_clothing.contents) //check if the clothing has a hood/helmet integrated and fireproof it if there is one.
apply_fireproof(integrated_helmet)
apply_fireproof(chosen_clothing)
playsound(get_turf(religious_tool), 'sound/magic/fireball.ogg', 50, TRUE)
chosen_clothing = null //our lord and savior no longer cares about this apparel
return TRUE
chosen_clothing = null
to_chat(user, "<span class='warning'>The clothing that was chosen for the rite is no longer on the altar!</span>")
return FALSE
/datum/religion_rites/burning_sacrifice
name = "Candle Fuel"
desc = "Sacrifice a buckled burning corpse for favor, the more burn damage the corpse has the more favor you will receive."
ritual_length = 20 SECONDS
ritual_invocations = list("To feed the fire of the one true flame ...",
"... to make it burn brighter ...",
"... so that it may consume all in its path ...",
"... I offer you this pitiful being ...")
invoke_msg = "... may it join you in the amalgamation of wax and fire, and become one in the black and white scene. "
///the burning corpse chosen for the sacrifice of the rite
var/mob/living/carbon/chosen_sacrifice
/datum/religion_rites/burning_sacrifice/perform_rite(mob/living/user, atom/religious_tool)
if(!ismovable(religious_tool))
to_chat(user, "<span class='warning'>This rite requires a religious device that individuals can be buckled to.</span>")
return FALSE
var/atom/movable/movable_reltool = religious_tool
if(!movable_reltool)
return FALSE
if(!LAZYLEN(movable_reltool.buckled_mobs))
to_chat(user, "<span class='warning'>Nothing is buckled to the altar!</span>")
return FALSE
for(var/corpse in movable_reltool.buckled_mobs)
if(!iscarbon(corpse))// only works with carbon corpse since most normal mobs can't be set on fire.
to_chat(user, "<span class='warning'>Only carbon lifeforms can be properly burned for the sacrifice!</span>")
return FALSE
chosen_sacrifice = corpse
if(chosen_sacrifice.stat != DEAD)
to_chat(user, "<span class='warning'>You can only sacrifice dead bodies, this one is still alive!</span>")
return FALSE
if(!chosen_sacrifice.on_fire)
to_chat(user, "<span class='warning'>This corpse needs to be on fire to be sacrificed!</span>")
return FALSE
return ..()
/datum/religion_rites/burning_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool)
if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right corpse is still buckled
to_chat(user, "<span class='warning'>The right sacrifice is no longer on the altar!</span>")
chosen_sacrifice = null
return FALSE
if(!chosen_sacrifice.on_fire)
to_chat(user, "<span class='warning'>The sacrifice is no longer on fire, it needs to burn until the end of the rite!</span>")
chosen_sacrifice = null
return FALSE
if(chosen_sacrifice.stat != DEAD)
to_chat(user, "<span class='warning'>The sacrifice has to stay dead for the rite to work!</span>")
chosen_sacrifice = null
return FALSE
var/favor_gained = 100 + round(chosen_sacrifice.getFireLoss())
GLOB.religious_sect?.adjust_favor(favor_gained, user)
to_chat(user, "<span class='notice'>[GLOB.deity] absorb the burning corpse and any trace of fire with it. [GLOB.deity] rewards you with [favor_gained] favor.</span>")
chosen_sacrifice.dust(force = TRUE)
playsound(get_turf(religious_tool), 'sound/effects/supermatter.ogg', 50, TRUE)
chosen_sacrifice = null
return TRUE
/datum/religion_rites/infinite_candle
name = "Immortal Candles"
desc = "Creates 5 candles that never run out of wax."
ritual_length = 10 SECONDS
invoke_msg = "please lend us five of your candles so we may bask in your burning glory."
favor_cost = 200
/datum/religion_rites/infinite_candle/invoke_effect(mob/living/user, atom/movable/religious_tool)
var/altar_turf = get_turf(religious_tool)
for(var/i in 1 to 5)
new /obj/item/candle/infinite(altar_turf)
playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE)
return TRUE