mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
some small Cult fixes, QoL, and Sacrifice reroll rework (#21937)
* CultTweaks * sacrifice remix
This commit is contained in:
@@ -160,8 +160,8 @@ var/veil_thickness = CULT_PROLOGUE
|
||||
logo_state = "cult-logo"
|
||||
hud_icons = list("cult-logo")
|
||||
var/list/bloody_floors = list()
|
||||
var/target_change = FALSE
|
||||
var/change_cooldown = 0
|
||||
//var/target_change = FALSE
|
||||
//var/change_cooldown = 0
|
||||
var/cult_win = FALSE
|
||||
var/warning = FALSE
|
||||
|
||||
@@ -203,8 +203,10 @@ var/veil_thickness = CULT_PROLOGUE
|
||||
initialize_cultwords()
|
||||
AppendObjective(/datum/objective/bloodcult_reunion)
|
||||
|
||||
/*
|
||||
/datum/faction/bloodcult/process()
|
||||
..()
|
||||
|
||||
if (change_cooldown > 0)
|
||||
change_cooldown -= 1 SECONDS
|
||||
if (change_cooldown <= 0)
|
||||
@@ -224,6 +226,7 @@ var/veil_thickness = CULT_PROLOGUE
|
||||
if (target_change)
|
||||
target_change = FALSE
|
||||
change_cooldown = SACRIFICE_CHANGE_COOLDOWN
|
||||
*/
|
||||
|
||||
/datum/faction/bloodcult/proc/progress(var/new_act,var/A)
|
||||
//This proc is called to update the faction's current objectives, and veil thickness
|
||||
@@ -300,22 +303,29 @@ var/veil_thickness = CULT_PROLOGUE
|
||||
AppendObjective(new_obj)
|
||||
for(var/datum/role/cultist/C in members)
|
||||
var/mob/M = C.antag.current
|
||||
if (M)
|
||||
if (M && iscultist(M))
|
||||
to_chat(M,"<span class='danger'>[new_obj.name]</span><b>: [new_obj.explanation_text]</b>")
|
||||
//ACT 1
|
||||
if (istype(new_obj,/datum/objective/bloodcult_followers))
|
||||
to_chat(M,"<b>As our ritual progresses through its Acts, the veil gets thinner, and dormant runes awaken. Summon a tome (<span class='danger'>See Blood Hell</span>) to see the available runes and learn their uses.</b>")
|
||||
//ACT 2
|
||||
if (istype(new_obj,/datum/objective/bloodcult_sacrifice))
|
||||
var/datum/objective/bloodcult_sacrifice/O = new_obj
|
||||
if (M == O.sacrifice_target)
|
||||
to_chat(M,"<b>There is no greater honor than purposefuly relinquishing your body for the coming of Nar-Sie, but you may wait for another target to be selected should you be afraid of death.</b>")
|
||||
else if (iscultist(O.sacrifice_target))
|
||||
to_chat(M,"<b>Chance has rolled its dice, and one of ours was selected. If for whatever reasons you do not want to take their life, you will have to wait for a new selection.</b>")
|
||||
if (O.sacrifice_target)
|
||||
if (M == O.sacrifice_target)
|
||||
to_chat(M,"<b>There is no greater honor than purposefuly relinquishing your body for the coming of Nar-Sie.</b>")
|
||||
to_chat(M,"<b>Should the target's body be annihilated, or should they flee the station, you may commune with Nar-Sie at an altar to have him designate a new target.</b>")
|
||||
else
|
||||
to_chat(M,"<b>There are no elligible targets aboard the station, how did you guys even manage that one?</b>")//if there's literally no humans aboard the station
|
||||
to_chat(M,"<b>Commune with Nar-Sie at an altar to have him designate a new target.</b>")
|
||||
|
||||
for (var/datum/role/cultist/C in members)
|
||||
C.update_cult_hud()
|
||||
|
||||
for (var/obj/structure/cult/spire/S in cult_spires)
|
||||
for (var/obj/structure/cult/spire/S in cult_spires)//spires update their appearance on Act 2 and 3, signaling new available tattoos.
|
||||
S.upgrade()
|
||||
|
||||
for (var/obj/effect/rune/R in rune_list)
|
||||
for (var/obj/effect/rune/R in rune_list)//runes now available will start pulsing
|
||||
R.update_icon()
|
||||
|
||||
if (istype(new_obj,/datum/objective/bloodcult_bloodbath))
|
||||
|
||||
@@ -591,6 +591,22 @@
|
||||
if (CULT_ACT_I)
|
||||
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>The conversion rune is <span class='danger'>Join Blood Self</span>, but you now have many new runes at your disposal to help you in your task, therefore I recommend you first summon an Arcane Tome to easily scribe them. The rune that conjures a tome is <span class='danger'>See Blood Hell</span>.</span></span>")
|
||||
if (CULT_ACT_II)
|
||||
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
|
||||
if (cult)
|
||||
var/datum/objective/bloodcult_sacrifice/O = locate() in cult.objective_holder.objectives
|
||||
if (O && !O.IsFulfilled())
|
||||
if (!O.sacrifice_target || !O.sacrifice_target.loc)//if there's no target or its body was destroyed, immediate reroll
|
||||
replace_target()
|
||||
return
|
||||
else
|
||||
var/turf/T = get_turf(O.sacrifice_target)
|
||||
if (T.z != STATION_Z)//if the target fled the station, offer to reroll the target. May or not add penalties for that later.
|
||||
var/choice = alert(user,"The target has fled the station, do you wish for another sacrifice target to be selected?","[name]","Yes","No")
|
||||
if (choice == "Yes")
|
||||
replace_target()
|
||||
return
|
||||
else
|
||||
to_chat(user,"<b>\The [O.sacrifice_target] is still aboard the station.</b>")
|
||||
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>To perform the sacrifice, you'll have to forge a cult blade first. It doesn't matter if the target is alive of not, lay their body down on the altar and plant the blade on their stomach. Next, touch the altar to perform the next step of the ritual. The more of you, the quicker it will be done.</span></span>")
|
||||
if (CULT_ACT_III)
|
||||
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>The crew is now aware of our presence, prepare to draw blood. Your priority is to spill as much blood as you can all over the station, bloody trails left by foot steps count toward this goal. How you obtain the blood, I leave to your ambition, but remember that if the crew destroys every blood stones, you will be doomed.</span></span>")
|
||||
@@ -620,6 +636,26 @@
|
||||
var/obj/item/device/soulstone/gem/gem = new (loc)
|
||||
gem.pixel_y = 4
|
||||
|
||||
/obj/structure/cult/altar/proc/replace_target()
|
||||
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
|
||||
if (cult)
|
||||
var/datum/objective/bloodcult_sacrifice/O = locate() in cult.objective_holder.objectives
|
||||
if (O && !O.IsFulfilled())
|
||||
if (O.replace_target())
|
||||
for(var/datum/role/cultist/C in cult.members)
|
||||
var/mob/M = C.antag.current
|
||||
if (M && iscultist(M))
|
||||
to_chat(M,"<b>A new target has been assigned. [O.explanation_text]</b>")
|
||||
if (M == O.sacrifice_target)
|
||||
to_chat(M,"<b>There is no greater honor than purposefuly relinquishing your body for the coming of Nar-Sie.</b>")
|
||||
to_chat(M,"<b>Should the target's body be annihilated, or should they flee the station, you may commune with Nar-Sie at an altar to have him designate a new target.</b>")
|
||||
else
|
||||
for(var/datum/role/cultist/C in cult.members)
|
||||
var/mob/M = C.antag.current
|
||||
if (M && iscultist(M))
|
||||
to_chat(M,"<b>There are no elligible targets aboard the station, how did you guys even manage that one?</b>")//if there's literally no humans aboard the station
|
||||
to_chat(M,"<b>There needs to be humans aboard the station, cultist or not, for a target to be selected.</b>")
|
||||
|
||||
/obj/structure/cult/altar/noncultist_act(var/mob/user)//Non-cultists can still remove blades planted on altars.
|
||||
if(is_locking(lock_type))
|
||||
var/mob/M = get_locked(lock_type)[1]
|
||||
@@ -694,9 +730,9 @@
|
||||
|
||||
|
||||
/obj/structure/cult/altar/dance_start()//This is executed at the end of the sacrifice ritual
|
||||
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
|
||||
if (cult)
|
||||
cult.change_cooldown = max(cult.change_cooldown,60 SECONDS)
|
||||
//var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
|
||||
//if (cult)
|
||||
// cult.change_cooldown = max(cult.change_cooldown,60 SECONDS)
|
||||
. = ..()//true if the ritual was successful
|
||||
altar_task = ALTARTASK_NONE
|
||||
update_icon()
|
||||
@@ -720,7 +756,7 @@
|
||||
M.gib()
|
||||
var/turf/T = loc
|
||||
|
||||
cult = find_active_faction_by_type(/datum/faction/bloodcult)
|
||||
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
|
||||
if (cult)
|
||||
cult.progress(CULT_ACT_III,T)
|
||||
else
|
||||
|
||||
@@ -933,7 +933,8 @@
|
||||
if (victim.mind)
|
||||
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
|
||||
if (cult)
|
||||
cult.progress(CULT_ACT_II)
|
||||
spawn(5)//waiting half a second to make sure that the sacrifice objective won't designate a victim that just refused conversion
|
||||
cult.progress(CULT_ACT_II)
|
||||
else
|
||||
message_admins("Blood Cult: A conversion ritual occured...but we cannot find the cult faction...")//failsafe in case of admin varedit fuckery
|
||||
cult_risk(activator)//risk of exposing the cult early if too many conversions
|
||||
@@ -973,6 +974,7 @@
|
||||
|
||||
message_admins("BLOODCULT: [key_name(victim)] refused conversion by [key_name(converter)], and died.")
|
||||
log_admin("BLOODCULT: [key_name(victim)] refused conversion by [key_name(converter)], and died.")
|
||||
to_chat(converter, "<span class='sinister'>\The [victim] was pulled through the veil, their body was devoured by Nar-Sie and their possession stored inside this coffer.</span>")
|
||||
|
||||
playsound(R, 'sound/effects/convert_failure.ogg', 75, 0, -4)
|
||||
conversion.icon_state = ""
|
||||
@@ -985,10 +987,13 @@
|
||||
victim.take_blood(cup, cup.volume)//Up to 60u
|
||||
cup.on_reagent_change()//so we get the reagentsfillings overlay
|
||||
new/obj/item/weapon/skull(coffer)
|
||||
to_chat(converter, "<span class='sinister'>Inside you may also find a cup filled with a portion of the blood left in their body, along with their skull to potentially use in a resurrection ritual.</span>")
|
||||
if (isslime(victim))
|
||||
cup.reagents.add_reagent(SLIMEJELLY, 50)
|
||||
to_chat(converter, "<span class='sinister'>Inside you may also find a cup filled with a slimy substance.</span>")
|
||||
if (isalien(victim))//w/e
|
||||
cup.reagents.add_reagent(RADIUM, 50)
|
||||
to_chat(converter, "<span class='sinister'>Inside you may also find a cup filled with a green radioactive liquid.</span>")
|
||||
|
||||
for(var/obj/item/weapon/implant/loyalty/I in victim)
|
||||
I.implanted = 0
|
||||
|
||||
@@ -50,15 +50,15 @@
|
||||
target_role = (sacrifice_target.mind.assigned_role=="MODE") ? "" : ", the ([sacrifice_target.mind.assigned_role]),"
|
||||
if (iscultist(sacrifice_target))
|
||||
target_role = ", the cultist,"
|
||||
explanation_text = "The Sacrifice: Nar-Sie requires the flesh of [sacrifice_target.real_name][target_role] to breach reality. Sacrifice them at an altar using a cult blade. If you feel merciful for their soul, you may use an empty soul blade instead."
|
||||
explanation_text = "The Sacrifice: Nar-Sie requires the flesh of [sacrifice_target.real_name][target_role] to breach reality. Sacrifice them at an altar using a cult blade. If you feel merciful for their soul, you may use an empty soul blade."
|
||||
message_admins("Blood Cult: ACT II has begun, the sacrifice target is [sacrifice_target.real_name][target_role].")
|
||||
log_admin("Blood Cult: ACT II has begun, the sacrifice target is [sacrifice_target.real_name][target_role].")
|
||||
var/datum/faction/bloodcult/cult = faction
|
||||
cult.target_change = TRUE
|
||||
//var/datum/faction/bloodcult/cult = faction
|
||||
//cult.target_change = TRUE
|
||||
return TRUE
|
||||
else
|
||||
sleep(60 SECONDS)//kind of a failsafe should the entire server cooperate to cause this to occur, but that shouldn't logically ever happen anyway.
|
||||
return PostAppend()
|
||||
// else
|
||||
// sleep(60 SECONDS)//kind of a failsafe should the entire server cooperate to cause this to occur, but that shouldn't logically ever happen anyway.
|
||||
// return PostAppend()
|
||||
|
||||
/datum/objective/bloodcult_sacrifice/proc/replace_target()
|
||||
sacrifice_target = find_target()
|
||||
@@ -68,15 +68,16 @@
|
||||
target_role = (sacrifice_target.mind.assigned_role=="MODE") ? "" : ", the ([sacrifice_target.mind.assigned_role]),"
|
||||
if (iscultist(sacrifice_target))
|
||||
target_role = ", the cultist,"
|
||||
explanation_text = "The Sacrifice: Nar-Sie requires the flesh of [sacrifice_target.real_name][target_role] to breach reality. Sacrifice them at an altar using a cult blade. If you feel merciful for their soul, you may use an empty soul blade instead."
|
||||
explanation_text = "The Sacrifice: Nar-Sie requires the flesh of [sacrifice_target.real_name][target_role] to breach reality. Sacrifice them at an altar using a cult blade. If you feel merciful for their soul, you may use an empty soul blade."
|
||||
message_admins("Blood Cult: The cult didn't sacrifice their target in time, a new target has been assigned, the new sacrifice target is [sacrifice_target.real_name][target_role].")
|
||||
log_admin("Blood Cult: The cult didn't sacrifice their target in time, a new target has been assigned, the new sacrifice target is [sacrifice_target.real_name][target_role].")
|
||||
var/datum/faction/bloodcult/cult = faction
|
||||
cult.target_change = TRUE
|
||||
//var/datum/faction/bloodcult/cult = faction
|
||||
//cult.target_change = TRUE
|
||||
return TRUE
|
||||
else
|
||||
sleep(60 SECONDS)//kind of a failsafe should the entire server cooperate to cause this to occur, but that shouldn't logically ever happen anyway.
|
||||
return replace_target()
|
||||
return FALSE
|
||||
// else
|
||||
// sleep(60 SECONDS)//kind of a failsafe should the entire server cooperate to cause this to occur, but that shouldn't logically ever happen anyway.
|
||||
// return replace_target()
|
||||
|
||||
/datum/objective/bloodcult_sacrifice/proc/find_target()
|
||||
var/list/possible_targets = list()
|
||||
|
||||
@@ -117,7 +117,8 @@
|
||||
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='sinister'>[custom]</span>")
|
||||
if (GREET_CONVERTED)
|
||||
to_chat(antag.current, "<span class='sinister'>You feel like you've broken past the veil of reality, your mind has seen worlds from beyond this plane, you've listened to the words of the Geometer of Blood for what felt like both an instant and ages, and now share both his knowledge and his ambition.</span>")
|
||||
to_chat(antag.current, "<span class='sinister'>The Cult of Nar-Sie now counts you as its newest member. Your fellow cultists will guide you. You remember the last three words that Nar-Sie spoke to you: <span class='danger'>See Blood Hell</span></span>")
|
||||
to_chat(antag.current, "<span class='sinister'>The Cult of Nar-Sie now counts you as its newest member. Your fellow cultists will guide you.</span>")
|
||||
to_chat(antag.current,"<b>The first thing you might want to do is to summon a tome (<span class='danger'>See Blood Hell</span>) to see the available runes and learn their uses.</b>")
|
||||
if (GREET_PAMPHLET)
|
||||
to_chat(antag.current, "<span class='sinister'>Wow, that pamphlet was very convincing, in fact you're like totally a cultist now, hail Nar-Sie!</span>")//remember, debug item
|
||||
if (GREET_SOULSTONE)
|
||||
|
||||
Reference in New Issue
Block a user