mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
polishing cult
This commit is contained in:
@@ -67,6 +67,7 @@
|
||||
var/list/sacrificed = list() //contains the mind of the sacrifice target ONCE the sacrifice objective has been completed
|
||||
var/mass_convert = 0 //set to 1 if the convert objective has been accomplised once that round
|
||||
var/spilled_blood = 0 //set to 1 if the bloodspill objective has been accomplised once that round
|
||||
var/max_spilled_blood = 0 //highest quantity of blood covered tiles during the round
|
||||
var/bonus = 0 //set to 1 if the cult has completed the bonus (third phase) objective (harvest, hijack, massacre)
|
||||
|
||||
var/harvest_target = 10
|
||||
@@ -104,6 +105,7 @@
|
||||
return (cult.len > 0)
|
||||
|
||||
/datum/game_mode/cult/proc/blood_check()
|
||||
max_spilled_blood = (max(bloody_floors.len,max_spilled_blood))
|
||||
if((objectives[current_objective] == "bloodspill") && (bloody_floors.len >= spilltarget) && !spilled_blood)
|
||||
spilled_blood = 1
|
||||
additional_phase()
|
||||
@@ -125,6 +127,7 @@
|
||||
if("convert")
|
||||
explanation = "We must increase our influence before we can summon Nar-Sie. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
|
||||
if("bloodspill")
|
||||
spilltarget = 100 + rand(0,player_list.len * 3)
|
||||
explanation = "We must prepare this place for the Geometer of Blood's coming. Spill blood and gibs over [spilltarget] floor tiles."
|
||||
if("sacrifice")
|
||||
explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for his blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune (Hell Blood Join) to perform the ritual."
|
||||
@@ -167,10 +170,13 @@
|
||||
new_objective = pick_objective()
|
||||
else
|
||||
message_admins("There are over twice more unconvertables than there are cultists ([cult.len] cultists for [unconvertables.len]) unconvertables! Nar-Sie objective unlocked.")
|
||||
log_admin("There are over twice more unconvertables than there are cultists ([cult.len] cultists for [unconvertables.len]) unconvertables! Nar-Sie objective unlocked.")
|
||||
else
|
||||
message_admins("The Cult has already completed [prenarsie_objectives] objectives! Nar-Sie objective unlocked.")
|
||||
log_admin("The Cult has already completed [prenarsie_objectives] objectives! Nar-Sie objective unlocked.")
|
||||
else
|
||||
message_admins("There are less than 4 cultists! Nar-Sie objective unlocked.")
|
||||
log_admin("There are less than 4 cultists! Nar-Sie objective unlocked.")
|
||||
|
||||
if(!sacrificed.len && (new_objective != "sacrifice"))
|
||||
sacrifice_target = null
|
||||
@@ -187,6 +193,7 @@
|
||||
if("convert")
|
||||
explanation = "We must increase our influence before we can summon Nar-Sie. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
|
||||
if("bloodspill")
|
||||
spilltarget = 100 + rand(0,player_list.len * 3)
|
||||
explanation = "We must prepare this place for the Geometer of Blood's coming. Spread blood and gibs over [spilltarget] of the Station's floor tiles."
|
||||
if("sacrifice")
|
||||
explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for his blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune (Hell Blood Join) to perform the ritual."
|
||||
@@ -196,6 +203,11 @@
|
||||
cult_mind.current << "<B>Objective #[current_objective]</B>: [explanation]"
|
||||
cult_mind.memory += "<B>Objective #[current_objective]</B>: [explanation]<BR>"
|
||||
|
||||
message_admins("New Cult Objective: [new_objective]")
|
||||
log_admin("New Cult Objective: [new_objective]")
|
||||
|
||||
blood_check()//in case there are already enough blood covered tiles when the objective is given.
|
||||
|
||||
/datum/game_mode/cult/proc/second_phase()
|
||||
narsie_condition_cleared = 1
|
||||
|
||||
@@ -231,6 +243,9 @@
|
||||
cult_mind.current << "<B>Objective #[current_objective]</B>: [explanation]"
|
||||
cult_mind.memory += "<B>Objective #[current_objective]</B>: [explanation]<BR>"
|
||||
|
||||
message_admins("Last Cult Objective: [last_objective]")
|
||||
log_admin("Last Cult Objective: [last_objective]")
|
||||
|
||||
/datum/game_mode/cult/post_setup()
|
||||
modePlayer += cult
|
||||
|
||||
@@ -262,6 +277,7 @@
|
||||
possible_objectives |= "sacrifice"
|
||||
else
|
||||
message_admins("Didn't find a suitable sacrifice target...what the hell? Shout at Deity.")
|
||||
log_admin("Didn't find a suitable sacrifice target...what the hell? Shout at Deity.")
|
||||
|
||||
if(!mass_convert)
|
||||
var/living_crew = 0
|
||||
@@ -279,14 +295,17 @@
|
||||
if((living_cultists * 2) < total)
|
||||
if (total < 15)
|
||||
message_admins("There are [total] players, too little for the mass convert objective!")
|
||||
log_admin("There are [total] players, too little for the mass convert objective!")
|
||||
else if (total > 50)
|
||||
message_admins("There are [total] players, too many for the mass convert objective!")
|
||||
log_admin("There are [total] players, too many for the mass convert objective!")
|
||||
else
|
||||
possible_objectives |= "convert"
|
||||
convert_target = round(total / 2)
|
||||
|
||||
if(!possible_objectives.len)//No more possible objectives, time to summon Nar-Sie
|
||||
message_admins("No suitable objectives left! Nar-Sie objective unlocked.")
|
||||
log_admin("No suitable objectives left! Nar-Sie objective unlocked.")
|
||||
return "eldergod"
|
||||
else
|
||||
return pick(possible_objectives)
|
||||
@@ -316,19 +335,18 @@
|
||||
/datum/game_mode/cult/proc/memoize_cult_objectives(var/datum/mind/cult_mind)
|
||||
cult_mind.current << "The convert rune is Join Blood Self"
|
||||
cult_mind.memory += "The convert rune is Join Blood Self<BR>"
|
||||
for(var/obj_count = 1,obj_count <= objectives.len,obj_count++)
|
||||
var/explanation
|
||||
switch(objectives[obj_count])
|
||||
if("convert")
|
||||
explanation = "We must increase our influence before we can summon Nar-Sie. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
|
||||
if("bloodspill")
|
||||
explanation = "We must prepare this place for the Geometer of Blood's coming. Spill blood and gibs over [spilltarget] floor tiles."
|
||||
if("sacrifice")
|
||||
explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for his blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune (Hell Blood Join) to perform the ritual."
|
||||
if("eldergod")
|
||||
explanation = "Summon Nar-Sie via the use of the Tear Reality rune (Hell Join Self). You will need 9 cultists standing on and around the rune to summon Him."
|
||||
cult_mind.current << "<B>Objective #[obj_count]</B>: [explanation]"
|
||||
cult_mind.memory += "<B>Objective #[obj_count]</B>: [explanation]<BR>"
|
||||
var/explanation
|
||||
switch(objectives[current_objective])
|
||||
if("convert")
|
||||
explanation = "We must increase our influence before we can summon Nar-Sie. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
|
||||
if("bloodspill")
|
||||
explanation = "We must prepare this place for the Geometer of Blood's coming. Spill blood and gibs over [spilltarget] floor tiles."
|
||||
if("sacrifice")
|
||||
explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for his blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune (Hell Blood Join) to perform the ritual."
|
||||
if("eldergod")
|
||||
explanation = "Summon Nar-Sie via the use of the Tear Reality rune (Hell Join Self). You will need 9 cultists standing on and around the rune to summon Him."
|
||||
cult_mind.current << "<B>Objective #[current_objective]</B>: [explanation]"
|
||||
cult_mind.memory += "<B>Objective #[current_objective]</B>: [explanation]<BR>"
|
||||
|
||||
|
||||
/datum/game_mode/proc/equip_cultist(mob/living/carbon/human/mob)
|
||||
@@ -534,10 +552,10 @@
|
||||
|
||||
if("bloodspill")//cover a large portion of the station in blood
|
||||
if(obj_count < objectives.len)
|
||||
explanation = "Cover [spilltarget] tiles of the station in blood ([bloody_floors.len] tiles covered at round end). <font color='green'><B>Success!</B></font>"
|
||||
explanation = "Cover [spilltarget] tiles of the station in blood (The peak number of covered tiles was: [max_spilled_blood]). <font color='green'><B>Success!</B></font>"
|
||||
feedback_add_details("cult_objective","cult_bloodspill|SUCCESS")
|
||||
else
|
||||
explanation = "Cover [spilltarget] tiles of the station in blood ([bloody_floors.len] tiles covered). <font color='red'><B>Fail!</B></font>"
|
||||
explanation = "Cover [spilltarget] tiles of the station in blood (The peak number of covered tiles was: [max_spilled_blood]). <font color='red'><B>Fail!</B></font>"
|
||||
feedback_add_details("cult_objective","cult_bloodspill|FAIL")
|
||||
|
||||
if("sacrifice")//sacrifice a high value target
|
||||
|
||||
@@ -196,6 +196,11 @@
|
||||
M << "<span class='sinister'>You can now speak and understand the forgotten tongue of the occult.</span>"
|
||||
M.add_language("Cult")
|
||||
log_admin("[usr]([ckey(usr.key)]) has converted [M] ([ckey(M.key)]) to the cult at [M.loc.x], [M.loc.y], [M.loc.z]")
|
||||
if(M.client)
|
||||
spawn(100)//10 seconds sounds good
|
||||
if(M && !M.client)
|
||||
message_admins("[M] ([ckey(M.key)]) ghosted/disconnected shortly after having been converted to the cult!")
|
||||
log_admin("[usr]([ckey(usr.key)]) ghosted/disconnected shortly after having been converted to the cult!")
|
||||
return 1
|
||||
else
|
||||
M << "<span class='sinister'>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root.</span>"
|
||||
@@ -994,8 +999,28 @@
|
||||
for(var/mob/living/C in orange(1,src))
|
||||
if(iscultist(C) && !C.stat)
|
||||
users+=C
|
||||
|
||||
var/list/possible_targets = list()
|
||||
for(var/mob/living/carbon/cultistarget in (cultists - users))
|
||||
if (cultistarget.handcuffed)
|
||||
possible_targets += cultistarget
|
||||
else if (cultistarget.legcuffed)
|
||||
possible_targets += cultistarget
|
||||
else if (istype(cultistarget.wear_mask, /obj/item/clothing/mask/muzzle))
|
||||
possible_targets += cultistarget
|
||||
else if (istype(cultistarget.loc, /obj/structure/closet)&&cultistarget.loc:welded)
|
||||
possible_targets += cultistarget
|
||||
else if (istype(cultistarget.loc, /obj/structure/closet/secure_closet)&&cultistarget.loc:locked)
|
||||
possible_targets += cultistarget
|
||||
else if (istype(cultistarget.loc, /obj/machinery/dna_scannernew)&&cultistarget.loc:locked)
|
||||
possible_targets += cultistarget
|
||||
|
||||
if(!possible_targets.len)
|
||||
user << "<span class='warning'>None of the cultists are currently under restraints.</span>"
|
||||
return fizzle()
|
||||
|
||||
if(users.len>=3)
|
||||
var/mob/living/carbon/cultist = input("Choose the one who you want to free", "Followers of Geometer") as null|anything in (cultists - users)
|
||||
var/mob/living/carbon/cultist = input("Choose the one who you want to free", "Followers of Geometer") as null|anything in possible_targets
|
||||
if(!cultist)
|
||||
return fizzle()
|
||||
if (cultist == user) //just to be sure.
|
||||
@@ -1030,6 +1055,14 @@
|
||||
user.take_overall_damage(10, 0)
|
||||
C.say("Khari[pick("'","`")]d! Gual'te nikka!")
|
||||
qdel(src)
|
||||
else
|
||||
var/text = "<span class='sinister'>The following cultists are currently under restraints:</span>"
|
||||
for(var/mob/living/carbon/cultist in possible_targets)
|
||||
text += "<br><b>[cultist]</b>"
|
||||
user << text
|
||||
user.say("Khari[pick("'","`")]d!")
|
||||
return
|
||||
|
||||
return fizzle()
|
||||
|
||||
/////////////////////////////////////////NINETEENTH RUNE
|
||||
@@ -1063,10 +1096,24 @@
|
||||
if(iscultist(C) && !C.stat)
|
||||
C.say("N'ath reth sh'yro eth d[pick("'","`")]rekkathnor!")
|
||||
C.take_overall_damage(15, 0)
|
||||
if(C != cultist)
|
||||
C << "<span class='warning'>Your body take its toll as you drag your fellow cultist through dimensions.</span>"
|
||||
else
|
||||
C << "<span class='warning'>You feel a sharp pain as your body gets dragged through dimensions.</span>"
|
||||
user.visible_message("<span class='warning'>The rune disappears with a flash of red light, and in its place now a body lies.</span>", \
|
||||
"<span class='warning'>You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a body.</span>", \
|
||||
"<span class='warning'>You hear a pop and smell ozone.</span>")
|
||||
qdel(src)
|
||||
else
|
||||
var/text = "<span class='sinister'>The following individuals are living and conscious followers of the Geometer of Blood:</span>"
|
||||
for(var/mob/living/L in player_list)
|
||||
if(L.stat != DEAD)
|
||||
if(L.mind in ticker.mode.cult)
|
||||
text += "<br><b>[L]</b>"
|
||||
user << text
|
||||
user.say("N'ath reth!")
|
||||
return
|
||||
|
||||
return fizzle()
|
||||
|
||||
/////////////////////////////////////////TWENTIETH RUNES
|
||||
|
||||
@@ -32,7 +32,7 @@ var/global/list/blood_list = list()
|
||||
if(ticker.mode && ticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/mode_ticker = ticker.mode
|
||||
var/turf/T = get_turf(src)
|
||||
if(T)
|
||||
if(T && (T.z == map.zMainStation))
|
||||
if(locate(T) in mode_ticker.bloody_floors)
|
||||
mode_ticker.bloody_floors -= T
|
||||
mode_ticker.blood_check()
|
||||
@@ -52,14 +52,12 @@ var/global/list/blood_list = list()
|
||||
|
||||
if(ticker && ticker.mode && ticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/mode_ticker = ticker.mode
|
||||
if((mode_ticker.objectives[mode_ticker.current_objective] == "bloodspill") && !mode_ticker.narsie_condition_cleared)
|
||||
var/turf/T = get_turf(src)
|
||||
if(T && (T.z == map.zMainStation))//F I V E T I L E S
|
||||
if(locate("\ref[T]") in mode_ticker.bloody_floors)
|
||||
else
|
||||
mode_ticker.bloody_floors += T
|
||||
mode_ticker.bloody_floors[T] = T
|
||||
mode_ticker.blood_check()
|
||||
var/turf/T = get_turf(src)
|
||||
if(T && (T.z == map.zMainStation))//F I V E T I L E S
|
||||
if(!(locate("\ref[T]") in mode_ticker.bloody_floors))
|
||||
mode_ticker.bloody_floors += T
|
||||
mode_ticker.bloody_floors[T] = T
|
||||
mode_ticker.blood_check()
|
||||
|
||||
if(istype(src, /obj/effect/decal/cleanable/blood/gibs))
|
||||
return
|
||||
|
||||
@@ -1627,6 +1627,7 @@
|
||||
var/datum/game_mode/cult/mode_ticker = ticker.mode
|
||||
mode_ticker.bypass_phase()
|
||||
message_admins("Admin [key_name_admin(usr)] has unlocked the Cult's next objective.")
|
||||
log_admin("Admin [key_name_admin(usr)] has unlocked the Cult's next objective.")
|
||||
check_antagonists()
|
||||
|
||||
else if(href_list["cult_mindspeak"])
|
||||
|
||||
Reference in New Issue
Block a user