polishing cult

This commit is contained in:
DeityLink
2015-06-30 07:51:02 +02:00
parent 71b0b35fca
commit 2e4bddd847
4 changed files with 89 additions and 25 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"])