mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Added the very basis of cultist mode, it doesn't have proper objectives yet, but at least I can catch some bugs via playtesting, hopefully.
Wizards now shout a spell when they're casting - not corresponding to the spell itself, though, it's a placeholder until granny finishes his voice acting. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@336 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -483,6 +483,10 @@
|
||||
if ((src.occupant.mind in ticker.mode:revolutionaries) || (src.occupant.mind in ticker.mode:head_revolutionaries))
|
||||
ticker.mode:add_revolutionary(src.occupant.mind)
|
||||
ticker.mode:update_all_rev_icons() //So the icon actually appears
|
||||
if ("cult")
|
||||
if (src.occupant.mind in ticker.mode:cult)
|
||||
ticker.mode:add_cultist(src.occupant.mind)
|
||||
ticker.mode:update_all_cult_icons() //So the icon actually appears
|
||||
if ("changeling")
|
||||
if (src.occupant.mind in ticker.mode:changelings)
|
||||
src.occupant.make_changeling()
|
||||
|
||||
@@ -0,0 +1,313 @@
|
||||
// To add a rev to the list of revolutionaries, make sure it's rev (with if(ticker.mode.name == "revolution)),
|
||||
// then call ticker.mode:add_revolutionary(_THE_PLAYERS_MIND_)
|
||||
// nothing else needs to be done, as that proc will check if they are a valid target.
|
||||
// Just make sure the converter is a head before you call it!
|
||||
// To remove a rev (from brainwashing or w/e), call ticker.mode:remove_revolutionary(_THE_PLAYERS_MIND_),
|
||||
// this will also check they're not a head, so it can just be called freely
|
||||
// If the rev icons start going wrong for some reason, ticker.mode:update_all_rev_icons() can be called to correct them.
|
||||
// If the game somtimes isn't registering a win properly, then ticker.mode.check_win() isn't being called somewhere.
|
||||
|
||||
/datum/game_mode/cult
|
||||
name = "cult"
|
||||
config_tag = "cult"
|
||||
|
||||
var/list/datum/mind/cult = list()
|
||||
var/finished = 0
|
||||
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
|
||||
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
|
||||
|
||||
|
||||
/datum/game_mode/cult/announce()
|
||||
world << "<B>The current game mode is - Cult!</B>"
|
||||
world << "<B>Some crewmembers are attempting to start a cult!<BR>\nCultists - Kill the Captain, HoP, RD, CE and HoS. Convert other crewmembers (excluding the heads, security officers and chaplain) to your cause by using the convert rune. Remember - there is no you, there is only the cult.<BR>\nPersonnel - Protect the heads. Destroy the cult either via killing the cultists or brainwashing them with the chaplain's bible.</B>"
|
||||
|
||||
/datum/game_mode/cult/post_setup()
|
||||
|
||||
var/list/cultists_possible = list()
|
||||
cultists_possible = get_possible_cultists()
|
||||
var/list/heads = list()
|
||||
heads = get_living_heads()
|
||||
var/cultists_number = 0
|
||||
|
||||
if(!cultists_possible || !heads)
|
||||
world << "<B> \red Not enough players for cult game mode. Restarting world in 5 seconds."
|
||||
sleep(50)
|
||||
world.Reboot()
|
||||
return
|
||||
|
||||
if(cultists_possible.len >= 3)
|
||||
cultists_number = 3
|
||||
else
|
||||
cultists_number = cultists_possible.len
|
||||
|
||||
while(cultists_number > 0)
|
||||
cult += pick(cultists_possible)
|
||||
cultists_possible -= cult
|
||||
cultists_number--
|
||||
|
||||
for(var/datum/mind/cult_mind in cult)
|
||||
for(var/datum/mind/head_mind in heads)
|
||||
var/datum/objective/assassinate/cult_obj = new
|
||||
cult_obj.owner = cult_mind
|
||||
cult_obj.find_target_by_role(head_mind.assigned_role)
|
||||
cult_mind.objectives += cult_obj
|
||||
|
||||
equip_cultist(cult_mind.current)
|
||||
update_cult_icons_added(cult_mind)
|
||||
|
||||
for(var/datum/mind/cult_mind in cult)
|
||||
var/obj_count = 1
|
||||
cult_mind.current << "\blue You are a member of the cult!"
|
||||
for(var/datum/objective/objective in cult_mind.objectives)
|
||||
cult_mind.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
obj_count++
|
||||
|
||||
spawn (rand(waittime_l, waittime_h))
|
||||
send_intercept()
|
||||
|
||||
/datum/game_mode/cult/proc/equip_cultist(mob/living/carbon/human/cult_mob)
|
||||
if(!istype(cult_mob))
|
||||
return
|
||||
spawn (0)
|
||||
var/obj/item/weapon/paper/talisman/supply/T = null
|
||||
cult_mob.equip_if_possible(new /obj/item/weapon/paper/talisman/supply(cult_mob), cult_mob.slot_l_store)
|
||||
if (!T && istype(cult_mob.l_store, /obj/item/weapon/storage))
|
||||
var/obj/item/weapon/storage/S = cult_mob.l_store
|
||||
var/list/L = S.return_inv()
|
||||
for (var/obj/item/weapon/paper/talisman/supply/foo in L)
|
||||
T = foo
|
||||
break
|
||||
if (!T)
|
||||
cult_mob << "Unfortunately, you weren't able to get a talisman. This is very bad and you should adminhelp immediately."
|
||||
else
|
||||
cult_mob << "You have a talisman in your backpack, one that will help you start the cult on this station. Use it well and remember - there are others."
|
||||
if(!wordtravel)
|
||||
runerandom()
|
||||
var/word=pick("1","2","3","4","5","6","7","8")
|
||||
switch(word)
|
||||
if("1")
|
||||
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordtravel] is travel..."
|
||||
if("2")
|
||||
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordblood] is blood..."
|
||||
if("3")
|
||||
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordjoin] is join..."
|
||||
if("4")
|
||||
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordhell] is Hell..."
|
||||
if("5")
|
||||
cult_mob << "\red You remembered one thing from the dark teachings of your master... [worddestr] is destroy..."
|
||||
if("6")
|
||||
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordtech] is technology..."
|
||||
if("7")
|
||||
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordself] is self..."
|
||||
if("8")
|
||||
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordsee] is see..."
|
||||
|
||||
/datum/game_mode/cult/send_intercept()
|
||||
var/intercepttext = "<FONT size = 3><B>Cent. Com. Update</B> Requested staus information:</FONT><HR>"
|
||||
intercepttext += "<B> Cent. Com has recently been contacted by the following syndicate affiliated organisations in your area, please investigate any information you may have:</B>"
|
||||
|
||||
var/list/possible_modes = list()
|
||||
possible_modes.Add("revolution", "cult", "wizard", "nuke", "traitor", "malf", "changeling")
|
||||
possible_modes -= "[ticker.mode]"
|
||||
var/number = pick(2, 3)
|
||||
var/i = 0
|
||||
for(i = 0, i < number, i++)
|
||||
possible_modes.Remove(pick(possible_modes))
|
||||
possible_modes.Insert(rand(possible_modes.len), "[ticker.mode]")
|
||||
|
||||
var/datum/intercept_text/i_text = new /datum/intercept_text
|
||||
for(var/A in possible_modes)
|
||||
intercepttext += i_text.build(A, pick(cult))
|
||||
|
||||
for (var/obj/machinery/computer/communications/comm in world)
|
||||
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
|
||||
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
|
||||
intercept.name = "paper- 'Cent. Com. Status Summary'"
|
||||
intercept.info = intercepttext
|
||||
|
||||
comm.messagetitle.Add("Cent. Com. Status Summary")
|
||||
comm.messagetext.Add(intercepttext)
|
||||
|
||||
command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.")
|
||||
world << sound('intercept.ogg')
|
||||
|
||||
|
||||
/datum/game_mode/cult/check_win()
|
||||
if(check_cult_victory())
|
||||
finished = 1
|
||||
else if(check_heads_victory())
|
||||
finished = 2
|
||||
return
|
||||
|
||||
/datum/game_mode/cult/check_finished()
|
||||
if(finished != 0)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/datum/game_mode/cult/proc/add_cultist(datum/mind/cult_mind)
|
||||
var/list/uncons = get_unconvertables()
|
||||
if(!(cult_mind in cult) && !(cult_mind in uncons))
|
||||
cult += cult_mind
|
||||
update_cult_icons_added(cult_mind)
|
||||
|
||||
/datum/game_mode/cult/proc/remove_cultist(datum/mind/cult_mind)
|
||||
if(cult_mind in cult)
|
||||
cult -= cult_mind
|
||||
cult_mind.current << "\red <FONT size = 3><B>You have been brainwashed! You are no longer a cultist!</B></FONT>"
|
||||
update_cult_icons_removed(cult_mind)
|
||||
for(var/mob/living/M in view(cult_mind.current))
|
||||
M << "<FONT size = 3>[cult_mind.current] looks like they just reverted to their old faith!</FONT>"
|
||||
|
||||
/datum/game_mode/cult/proc/update_all_cult_icons()
|
||||
spawn(0)
|
||||
for(var/datum/mind/cultist in cult)
|
||||
if(cultist.current)
|
||||
if(cultist.current.client)
|
||||
for(var/image/I in cultist.current.client.images)
|
||||
if(I.icon_state == "cult")
|
||||
del(I)
|
||||
|
||||
for(var/datum/mind/cultist in cult)
|
||||
if(cultist.current)
|
||||
if(cultist.current.client)
|
||||
for(var/datum/mind/cultist_1 in cult)
|
||||
if(cultist_1.current)
|
||||
var/I = image('mob.dmi', loc = cultist_1.current, icon_state = "cult")
|
||||
cultist.current.client.images += I
|
||||
|
||||
/datum/game_mode/cult/proc/update_cult_icons_added(datum/mind/cult_mind)
|
||||
spawn(0)
|
||||
for(var/datum/mind/cultist in cult)
|
||||
if(cultist.current)
|
||||
if(cultist.current.client)
|
||||
var/I = image('mob.dmi', loc = cult_mind.current, icon_state = "cult")
|
||||
cultist.current.client.images += I
|
||||
if(cult_mind.current)
|
||||
if(cult_mind.current.client)
|
||||
var/image/J = image('mob.dmi', loc = cultist.current, icon_state = "cult")
|
||||
cult_mind.current.client.images += J
|
||||
|
||||
/datum/game_mode/cult/proc/update_cult_icons_removed(datum/mind/cult_mind)
|
||||
spawn(0)
|
||||
for(var/datum/mind/cultist in cult)
|
||||
if(cultist.current)
|
||||
if(cultist.current.client)
|
||||
for(var/image/I in cultist.current.client.images)
|
||||
if(I.loc == cult_mind.current)
|
||||
del(I)
|
||||
|
||||
if(cult_mind.current)
|
||||
if(cult_mind.current.client)
|
||||
for(var/image/I in cult_mind.current.client.images)
|
||||
if(I.icon_state == "cult")
|
||||
del(I)
|
||||
|
||||
/datum/game_mode/cult/proc/get_possible_cultists()
|
||||
var/list/candidates = list()
|
||||
|
||||
for(var/mob/living/carbon/human/player in world)
|
||||
if(player.client)
|
||||
if(player.be_syndicate)
|
||||
candidates += player.mind
|
||||
|
||||
if(candidates.len < 1)
|
||||
for(var/mob/living/carbon/human/player in world)
|
||||
if(player.client)
|
||||
candidates += player.mind
|
||||
|
||||
var/list/uncons = get_unconvertables()
|
||||
for(var/datum/mind/mind in uncons)
|
||||
candidates -= mind
|
||||
|
||||
if(candidates.len < 1)
|
||||
return null
|
||||
else
|
||||
return candidates
|
||||
|
||||
/datum/game_mode/cult/proc/get_living_heads()
|
||||
var/list/heads = list()
|
||||
|
||||
for(var/mob/living/carbon/human/player in world)
|
||||
if(player.mind)
|
||||
var/role = player.mind.assigned_role
|
||||
if(role in list("Captain", "Head of Security", "Head of Personnel", "Chief Engineer", "Research Director"))
|
||||
heads += player.mind
|
||||
|
||||
return heads
|
||||
|
||||
|
||||
/datum/game_mode/cult/proc/get_all_heads()
|
||||
var/list/heads = list()
|
||||
|
||||
for(var/mob/player in world)
|
||||
if(player.mind)
|
||||
var/role = player.mind.assigned_role
|
||||
if(role in list("Captain", "Head of Security", "Head of Personnel", "Chief Engineer", "Research Director"))
|
||||
heads += player.mind
|
||||
|
||||
return heads
|
||||
|
||||
/datum/game_mode/cult/proc/get_unconvertables()
|
||||
var/list/ucs = list()
|
||||
for(var/mob/living/carbon/human/player in world)
|
||||
if(player.mind)
|
||||
var/role = player.mind.assigned_role
|
||||
if(role in list("Captain", "Head of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Security Officer", "Detective", "AI", "Chaplain"))
|
||||
ucs += player.mind
|
||||
|
||||
return ucs
|
||||
|
||||
/datum/game_mode/cult/proc/check_cult_victory()
|
||||
for(var/datum/mind/cult_mind in cult)
|
||||
for(var/datum/objective/objective in cult_mind.objectives)
|
||||
if(!(objective.check_completion()))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
/datum/game_mode/cult/proc/check_heads_victory()
|
||||
for(var/datum/mind/cult_mind in cult)
|
||||
if(cult_mind.current.stat != 2)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/game_mode/cult/declare_completion()
|
||||
|
||||
var/text = ""
|
||||
if(finished == 1)
|
||||
world << "\red <FONT size = 3><B> The heads of staff were killed! The cult win!</B></FONT>"
|
||||
else if(finished == 2)
|
||||
world << "\red <FONT size = 3><B> The heads of staff managed to stop the cult!</B></FONT>"
|
||||
|
||||
world << "<FONT size = 2><B>The cultists were: </B></FONT>"
|
||||
for(var/datum/mind/cult_nh_mind in cultists)
|
||||
if(cult_nh_mind.current)
|
||||
text += "[cult_nh_mind.current.real_name]"
|
||||
if(cult_nh_mind.current.stat == 2)
|
||||
text += " (Dead)"
|
||||
else
|
||||
text += " (Survived!)"
|
||||
else
|
||||
text += "[cult_nh_mind.key] (character destroyed)"
|
||||
text += ", "
|
||||
|
||||
world << text
|
||||
|
||||
world << "<FONT size = 2><B>The heads of staff were: </B></FONT>"
|
||||
var/list/heads = list()
|
||||
heads = get_all_heads()
|
||||
for(var/datum/mind/head_mind in heads)
|
||||
text = ""
|
||||
if(head_mind.current)
|
||||
text += "[head_mind.current.real_name]"
|
||||
if(head_mind.current.stat == 2)
|
||||
text += " (Dead)"
|
||||
else
|
||||
text += " (Survived!)"
|
||||
else
|
||||
text += "[head_mind.key] (character destroyed)"
|
||||
|
||||
world << text
|
||||
|
||||
return 1
|
||||
@@ -28,6 +28,10 @@
|
||||
src.text = ""
|
||||
src.build_rev(correct_mob)
|
||||
return src.text
|
||||
if("cult")
|
||||
src.text = ""
|
||||
src.build_cult(correct_mob)
|
||||
return src.text
|
||||
if("wizard")
|
||||
src.text = ""
|
||||
src.build_wizard(correct_mob)
|
||||
@@ -85,6 +89,33 @@
|
||||
src.text += "discovered the following set of fingerprints ([fingerprints]) on sensitive materials, and their owner should be closely observed."
|
||||
src.text += "However, these could also belong to a current Cent. Com employee, so do not act on this without reason."
|
||||
|
||||
/datum/intercept_text/proc/build_cult(correct_mob)
|
||||
var/name_1 = pick(src.org_names_1)
|
||||
var/name_2 = pick(src.org_names_2)
|
||||
var/traitor_name
|
||||
var/traitor_job
|
||||
var/prob_right_dude = rand(prob_correct_person_lower, prob_correct_person_higher)
|
||||
var/prob_right_job = rand(prob_correct_job_lower, prob_correct_job_higher)
|
||||
if(prob(prob_right_job))
|
||||
if (correct_mob)
|
||||
traitor_job = correct_mob:assigned_role
|
||||
else
|
||||
var/list/job_tmp = get_all_jobs()
|
||||
job_tmp.Remove("Captain", "Chaplain", "Security Officer", "Detective", "Head Of Security", "Head of Personnel", "Chief Engineer", "Research Director")
|
||||
traitor_job = pick(job_tmp)
|
||||
if(prob(prob_right_dude) && ticker.mode == "cult")
|
||||
traitor_name = correct_mob:current
|
||||
else
|
||||
traitor_name = src.pick_mob()
|
||||
|
||||
src.text += "<BR><BR>It has been brought to our attention that the [name_1] [name_2] have stumbled upon some dark secrets. They apparently want to spread the dangerous knowledge on as many stations as they can.<BR>"
|
||||
src.text += "Based on our intelligence, we are [prob_right_job]% sure that if true, someone doing the job of [traitor_job] on your station may have been converted "
|
||||
src.text += "and instilled with the idea of the flimsiness of the real world, seeking to destroy it. "
|
||||
if(prob(prob_right_dude))
|
||||
src.text += "<BR> In addition, we are [prob_right_dude]% sure that [traitor_name] may have also some in to contact with this "
|
||||
src.text += "organisation."
|
||||
src.text += "<BR>However, if this information is acted on without substantial evidence, those responsible will face severe repercussions."
|
||||
|
||||
/datum/intercept_text/proc/build_rev(correct_mob)
|
||||
var/name_1 = pick(src.org_names_1)
|
||||
var/name_2 = pick(src.org_names_2)
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
spawn(400)
|
||||
usr.verbs += /client/proc/mutate
|
||||
usr.say("BIRUZ BENNAR")
|
||||
if(!usr.miming)
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('vs_chant_conj_hm.wav','vs_chant_conj_lm.wav','vs_chant_ench_hm.wav','vs_chant_ench_lm.wav','vs_chant_evoc_hm.wav','vs_chant_evoc_lm.wav','vs_chant_illu_hm.wav','vs_chant_illu_lm.wav','vs_chant_necr_hm.wav','vs_chant_necr_lm.wav'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('vs_chant_conj_hf.wav','vs_chant_conj_lf.wav','vs_chant_ench_hf.wav','vs_chant_ench_lf.wav','vs_chant_evoc_hf.wav','vs_chant_evoc_lf.wav','vs_chant_illu_hf.wav','vs_chant_illu_lf.wav','vs_chant_necr_hf.wav','vs_chant_necr_lf.wav'), 100, 1)
|
||||
usr << text("\blue You feel strong! Your mind expands!")
|
||||
if (!(usr.mutations & 8))
|
||||
usr.mutations |= 8
|
||||
|
||||
@@ -30,6 +30,12 @@
|
||||
A = input("Area to jump to", "BOOYEA", A) in theareas
|
||||
var/area/thearea = theareas[A]
|
||||
usr.say("SCYAR NILA [uppertext(A)]")
|
||||
if(!usr.miming)
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('vs_chant_conj_hm.wav','vs_chant_conj_lm.wav','vs_chant_ench_hm.wav','vs_chant_ench_lm.wav','vs_chant_evoc_hm.wav','vs_chant_evoc_lm.wav','vs_chant_illu_hm.wav','vs_chant_illu_lm.wav','vs_chant_necr_hm.wav','vs_chant_necr_lm.wav'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('vs_chant_conj_hf.wav','vs_chant_conj_lf.wav','vs_chant_ench_hf.wav','vs_chant_ench_lf.wav','vs_chant_evoc_hf.wav','vs_chant_evoc_lf.wav','vs_chant_illu_hf.wav','vs_chant_illu_lf.wav','vs_chant_necr_hf.wav','vs_chant_necr_lf.wav'), 100, 1)
|
||||
|
||||
|
||||
var/datum/effects/system/harmless_smoke_spread/smoke = new /datum/effects/system/harmless_smoke_spread()
|
||||
smoke.set_up(5, 0, usr.loc)
|
||||
|
||||
@@ -20,6 +20,13 @@
|
||||
|
||||
usr.say("NEC CANTIO")
|
||||
|
||||
if(!usr.miming)
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('vs_chant_conj_hm.wav','vs_chant_conj_lm.wav','vs_chant_ench_hm.wav','vs_chant_ench_lm.wav','vs_chant_evoc_hm.wav','vs_chant_evoc_lm.wav','vs_chant_illu_hm.wav','vs_chant_illu_lm.wav','vs_chant_necr_hm.wav','vs_chant_necr_lm.wav'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('vs_chant_conj_hf.wav','vs_chant_conj_lf.wav','vs_chant_ench_hf.wav','vs_chant_ench_lf.wav','vs_chant_evoc_hf.wav','vs_chant_evoc_lf.wav','vs_chant_illu_hf.wav','vs_chant_illu_lf.wav','vs_chant_necr_hf.wav','vs_chant_necr_lf.wav'), 100, 1)
|
||||
|
||||
|
||||
var/turf/myturf = get_turf(usr)
|
||||
|
||||
var/obj/overlay/pulse = new/obj/overlay ( myturf )
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
spawn(600)
|
||||
usr.verbs += /mob/proc/kill
|
||||
usr.say("EI NATH")
|
||||
if(!usr.miming)
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('vs_chant_conj_hm.wav','vs_chant_conj_lm.wav','vs_chant_ench_hm.wav','vs_chant_ench_lm.wav','vs_chant_evoc_hm.wav','vs_chant_evoc_lm.wav','vs_chant_illu_hm.wav','vs_chant_illu_lm.wav','vs_chant_necr_hm.wav','vs_chant_necr_lm.wav'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('vs_chant_conj_hf.wav','vs_chant_conj_lf.wav','vs_chant_ench_hf.wav','vs_chant_ench_lf.wav','vs_chant_evoc_hf.wav','vs_chant_evoc_lf.wav','vs_chant_illu_hf.wav','vs_chant_illu_lf.wav','vs_chant_necr_hf.wav','vs_chant_necr_lf.wav'), 100, 1)
|
||||
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
|
||||
s.set_up(4, 1, M)
|
||||
s.start()
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
spawn(100)
|
||||
usr.verbs += /client/proc/knock
|
||||
usr.say("AULIE OXIN FIERA")
|
||||
if(!usr.miming)
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('vs_chant_conj_hm.wav','vs_chant_conj_lm.wav','vs_chant_ench_hm.wav','vs_chant_ench_lm.wav','vs_chant_evoc_hm.wav','vs_chant_evoc_lm.wav','vs_chant_illu_hm.wav','vs_chant_illu_lm.wav','vs_chant_necr_hm.wav','vs_chant_necr_lm.wav'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('vs_chant_conj_hf.wav','vs_chant_conj_lf.wav','vs_chant_ench_hf.wav','vs_chant_ench_lf.wav','vs_chant_evoc_hf.wav','vs_chant_evoc_lf.wav','vs_chant_illu_hf.wav','vs_chant_illu_lf.wav','vs_chant_necr_hf.wav','vs_chant_necr_lf.wav'), 100, 1)
|
||||
for(var/obj/machinery/door/G in oview(3))
|
||||
spawn(1)
|
||||
G.open()
|
||||
|
||||
@@ -30,6 +30,11 @@
|
||||
var/forcefield
|
||||
var/mob/living/carbon/human/G = usr
|
||||
G.say("TARCOL MINTI ZHERI")
|
||||
if(!usr.miming)
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('vs_chant_conj_hm.wav','vs_chant_conj_lm.wav','vs_chant_ench_hm.wav','vs_chant_ench_lm.wav','vs_chant_evoc_hm.wav','vs_chant_evoc_lm.wav','vs_chant_illu_hm.wav','vs_chant_illu_lm.wav','vs_chant_necr_hm.wav','vs_chant_necr_lm.wav'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('vs_chant_conj_hf.wav','vs_chant_conj_lf.wav','vs_chant_ench_hf.wav','vs_chant_ench_lf.wav','vs_chant_evoc_hf.wav','vs_chant_evoc_lf.wav','vs_chant_illu_hf.wav','vs_chant_illu_lf.wav','vs_chant_necr_hf.wav','vs_chant_necr_lf.wav'), 100, 1)
|
||||
forcefield = new /obj/forcefield(locate(usr.x,usr.y,usr.z))
|
||||
spawn (300)
|
||||
del (forcefield)
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
spawn(300)
|
||||
usr.verbs += /client/proc/blind
|
||||
usr.say("STI KALY!")
|
||||
if(!usr.miming)
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('vs_chant_conj_hm.wav','vs_chant_conj_lm.wav','vs_chant_ench_hm.wav','vs_chant_ench_lm.wav','vs_chant_evoc_hm.wav','vs_chant_evoc_lm.wav','vs_chant_illu_hm.wav','vs_chant_illu_lm.wav','vs_chant_necr_hm.wav','vs_chant_necr_lm.wav'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('vs_chant_conj_hf.wav','vs_chant_conj_lf.wav','vs_chant_ench_hf.wav','vs_chant_ench_lf.wav','vs_chant_evoc_hf.wav','vs_chant_evoc_lf.wav','vs_chant_illu_hf.wav','vs_chant_illu_lf.wav','vs_chant_necr_hf.wav','vs_chant_necr_lf.wav'), 100, 1)
|
||||
var/obj/overlay/B = new /obj/overlay( M.loc )
|
||||
B.icon_state = "blspell"
|
||||
B.icon = 'wizard.dmi'
|
||||
|
||||
@@ -391,7 +391,7 @@
|
||||
if(ticker.mode.name == "blob" || ticker.mode.name == "Corporate Restructuring" || ticker.mode.name == "sandbox")
|
||||
user << "Under directive 7-10, [station_name()] is quarantined until further notice."
|
||||
return
|
||||
if(ticker.mode.name == "revolution" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "confliction")
|
||||
if(ticker.mode.name == "revolution" || ticker.mode.name == "cult" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "confliction")
|
||||
user << "Centcom will not allow the shuttle to be called."
|
||||
return
|
||||
if(ticker.mode.name == "nuclear emergency" && world.time < 6000)
|
||||
|
||||
@@ -351,6 +351,7 @@ var/runedec = 0
|
||||
/obj/item/weapon/paper/talisman
|
||||
icon_state = "papertalisman"
|
||||
var/imbue = null
|
||||
var/uses = 0
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
usr.bruteloss+=20
|
||||
@@ -363,6 +364,14 @@ var/runedec = 0
|
||||
call(/obj/rune/proc/obscure)(2)
|
||||
if("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar")
|
||||
call(/obj/rune/proc/teleport)(imbue)
|
||||
if(src)
|
||||
if("communicate")
|
||||
call(/obj/rune/proc/communicate)()
|
||||
if("supply")
|
||||
supply()
|
||||
if(src && src.imbue!="supply")
|
||||
del(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/talisman/supply
|
||||
imbue = "supply"
|
||||
uses = 3
|
||||
@@ -10,6 +10,7 @@
|
||||
del(P)
|
||||
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(src.loc)
|
||||
T.imbue = "[R.word3]"
|
||||
T.info = "[R.word3]"
|
||||
del(R)
|
||||
del(src)
|
||||
usr.say("H'drak v'loso, mir'kanas verbot!")
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/obj/rune/proc/communicate()
|
||||
if(istype(src,/obj/rune))
|
||||
usr.say("O bidai nabora se'sma!")
|
||||
else
|
||||
usr.whisper("O bidai nabora se'sma!")
|
||||
var/input = input(usr, "Please choose a message to tell to the other acolytes.", "hssss", "")
|
||||
if(!input)
|
||||
return fizzle()
|
||||
if(istype(src,/obj/rune))
|
||||
usr.say("[input]")
|
||||
else
|
||||
usr.whisper("[input]")
|
||||
for(var/mob/living/carbon/human/H in cultists)
|
||||
H << "\red \b [input]"
|
||||
return
|
||||
@@ -8,6 +8,8 @@
|
||||
for (var/mob/V in viewers(src))
|
||||
V.show_message("\red [M] writhes in pain as the markings below him glow a bloody red.", 3, "\red You hear an anguished scream.", 2)
|
||||
M << "<font color=\"purple\"><b><i>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.</b></i></font>"
|
||||
M<< "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>"
|
||||
M << "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>"
|
||||
if(ticker.mode.name == "cult")
|
||||
ticker.mode:add_cultist(M.mind)
|
||||
return
|
||||
return fizzle()
|
||||
@@ -0,0 +1,44 @@
|
||||
/obj/item/weapon/paper/talisman/proc/supply(var/key)
|
||||
var/dat = "<B>There are [src.uses] bloody runes on the parchment.</B><BR>"
|
||||
dat += "Please choose the chant to be imbued into the fabric of reality.<BR>"
|
||||
dat += "<HR>"
|
||||
dat += "<A href='?src=\ref[src];rune=newtome'>N'ath reth sh'yro eth d'raggathnor!</A> - Allows you to summon a new arcane tome.<BR>"
|
||||
dat += "<A href='?src=\ref[src];rune=teleport'>Sas'so c'arta forbici!</A> - Allows you to move to a rune with the same last word.<BR>"
|
||||
dat += "<A href='?src=\ref[src];rune=emp'>Ta'gh fara'qha fel d'amar det!</A> - Allows you to destroy technology in a short range.<BR>"
|
||||
dat += "<A href='?src=\ref[src];rune=conceal'>Kla'atu barada nikt'o!</A> - Allows you to conceal the runes you placed on the floor.<BR>"
|
||||
dat += "<A href='?src=\ref[src];rune=communicate'>O bidai nabora se'sma!</A> - Allows you to coordinate with others of your cult.<BR>"
|
||||
usr << browse(dat, "window=id_com;size=350x200")
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/talisman/Topic(href, href_list)
|
||||
if (!src)
|
||||
return
|
||||
|
||||
if (usr.stat || usr.restrained() || !in_range(src, usr))
|
||||
return
|
||||
|
||||
if (!src.uses)
|
||||
del(src)
|
||||
return
|
||||
|
||||
if (href_list["rune"])
|
||||
switch(href_list["rune"])
|
||||
if("newtome")
|
||||
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
|
||||
T.imbue = "newtome"
|
||||
if("teleport")
|
||||
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
|
||||
T.imbue = "[pick("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar")]"
|
||||
T.info = "[T.imbue]"
|
||||
if("emp")
|
||||
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
|
||||
T.imbue = "emp"
|
||||
if("conceal")
|
||||
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
|
||||
T.imbue = "conceal"
|
||||
if("communicate")
|
||||
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
|
||||
T.imbue = "communicate"
|
||||
src.uses--
|
||||
supply()
|
||||
return
|
||||
@@ -44,6 +44,8 @@
|
||||
// return
|
||||
|
||||
if (M.stat !=2)
|
||||
if (ticker.mode.name == "cult" && prob(10))
|
||||
ticker.mode:remove_cultist(M.mind)
|
||||
if ((istype(M, /mob/living/carbon/human) && prob(60)))
|
||||
bless(M)
|
||||
for(var/mob/O in viewers(M, null))
|
||||
|
||||
@@ -265,7 +265,7 @@ var/showadminmessages = 1
|
||||
<A href='?src=\ref[src];c_mode2=blob'>Blob</A><br>
|
||||
<A href='?src=\ref[src];c_mode2=sandbox'>Sandbox</A><br>
|
||||
<A href='?src=\ref[src];c_mode2=revolution'>Revolution</A><br>
|
||||
<A href='?src=\ref[src];c_mode2=malfunction'>AI Malfunction</A><br>
|
||||
<A href='?src=\ref[src];c_mode2=cult'>Cult</A><br> <A href='?src=\ref[src];c_mode2=malfunction'>AI Malfunction</A><br>
|
||||
<A href='?src=\ref[src];c_mode2=deathmatch'>Death Commando Deathmatch</A><br>
|
||||
<A href='?src=\ref[src];c_mode2=confliction'>Confliction (TESTING)</A><br>
|
||||
<A href='?src=\ref[src];c_mode2=ctf'>Capture The Flag (Beta)</A><br><br>
|
||||
@@ -302,6 +302,8 @@ var/showadminmessages = 1
|
||||
master_mode = "wizard"
|
||||
if("revolution")
|
||||
master_mode = "revolution"
|
||||
if("cult")
|
||||
master_mode = "cult"
|
||||
if("malfunction")
|
||||
master_mode = "malfunction"
|
||||
if("deathmatch")
|
||||
@@ -663,6 +665,10 @@ var/showadminmessages = 1
|
||||
else if(M.mind in current_mode:revolutionaries)
|
||||
alert("Is a Revolutionary!")
|
||||
return
|
||||
if("cult")
|
||||
if(M.mind in current_mode:cult)
|
||||
alert("Is a Cultist!")
|
||||
return
|
||||
if("wizard")
|
||||
if(current_mode:wizard && M.mind == current_mode:wizard)
|
||||
var/datum/mind/antagonist = M.mind
|
||||
@@ -1310,6 +1316,23 @@ var/showadminmessages = 1
|
||||
dat += "There are no wizards."
|
||||
*/
|
||||
|
||||
if("cult")
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Cultists</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode:cult)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td></tr>"
|
||||
dat += "</table><table cellspacing=5><tr><td><B>Target(s)</B></td><td></td><td><B>Location</B></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode:get_living_heads())
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>"
|
||||
var/turf/mob_loc = get_turf_loc(M)
|
||||
dat += "<td>[mob_loc.loc]</td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
else // i'll finish this later
|
||||
if(ticker.mode.traitors.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Traitors</B></td><td></td><td></td></tr>"
|
||||
@@ -1963,6 +1986,9 @@ var/showadminmessages = 1
|
||||
if("revolution")
|
||||
if(M.mind in (ticker.mode:head_revolutionaries + ticker.mode:revolutionaries))
|
||||
return 1
|
||||
if("cult")
|
||||
if(M.mind in ticker.mode:cult)
|
||||
return 1
|
||||
if("malfunction")
|
||||
if(M.mind in ticker.mode:malf_ai)
|
||||
return 1
|
||||
|
||||
@@ -42,4 +42,7 @@
|
||||
if(ticker.mode.name == "revolution")
|
||||
if ((src.mind in ticker.mode:revolutionaries) || (src.mind in ticker.mode:head_revolutionaries))
|
||||
ticker.mode:update_rev_icons_added(src.mind)
|
||||
if(ticker.mode.name == "cult")
|
||||
if (src.mind in ticker.mode:cult)
|
||||
ticker.mode:update_cult_icons_added(src.mind)
|
||||
..()
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#define FILE_DIR "code/game/gamemodes/blob"
|
||||
#define FILE_DIR "code/game/gamemodes/changeling"
|
||||
#define FILE_DIR "code/game/gamemodes/ctf"
|
||||
#define FILE_DIR "code/game/gamemodes/cult"
|
||||
#define FILE_DIR "code/game/gamemodes/deathmatch"
|
||||
#define FILE_DIR "code/game/gamemodes/extended"
|
||||
#define FILE_DIR "code/game/gamemodes/malfunction"
|
||||
@@ -118,6 +119,7 @@
|
||||
#define FILE_DIR "sound/machines"
|
||||
#define FILE_DIR "sound/misc"
|
||||
#define FILE_DIR "sound/piano"
|
||||
#define FILE_DIR "sound/spells"
|
||||
#define FILE_DIR "sound/voice"
|
||||
#define FILE_DIR "sound/weapons"
|
||||
// END_FILE_DIR
|
||||
@@ -269,6 +271,7 @@
|
||||
#include "code\game\gamemodes\changeling\changeling_powers.dm"
|
||||
#include "code\game\gamemodes\ctf\ctf.dm"
|
||||
#include "code\game\gamemodes\ctf\ctf_items.dm"
|
||||
#include "code\game\gamemodes\cult\cult.dm"
|
||||
#include "code\game\gamemodes\deathmatch\deathmatch.dm"
|
||||
#include "code\game\gamemodes\extended\extended.dm"
|
||||
#include "code\game\gamemodes\malfunction\Malf_Modules.dm"
|
||||
@@ -380,6 +383,7 @@
|
||||
#include "code\game\magic\cultist\rune11.dm"
|
||||
#include "code\game\magic\cultist\rune12.dm"
|
||||
#include "code\game\magic\cultist\rune13.dm"
|
||||
#include "code\game\magic\cultist\rune14.dm"
|
||||
#include "code\game\magic\cultist\rune2.dm"
|
||||
#include "code\game\magic\cultist\rune3.dm"
|
||||
#include "code\game\magic\cultist\rune4.dm"
|
||||
@@ -388,6 +392,7 @@
|
||||
#include "code\game\magic\cultist\rune7.dm"
|
||||
#include "code\game\magic\cultist\rune8.dm"
|
||||
#include "code\game\magic\cultist\rune9.dm"
|
||||
#include "code\game\magic\cultist\specialtalisman.dm"
|
||||
#include "code\game\objects\assemblies.dm"
|
||||
#include "code\game\objects\blood.dm"
|
||||
#include "code\game\objects\bomb.dm"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user