-Finished work on the "cult" gamemode. I'll still add features to it later, but it is safe to be put on secret rotation now.

-Added an energy cutlass and made a pirate version of the space suit in preparation for a later nuke update.
-Changeling now ends 15 minutes after changeling death, unless he's ressurected.
-Further fixing of wizarditis teleporting into space.
-Fixed the wise beard sprite.
-Fixed missing sprite for monkeyburgers.
-Fixed Beepsky automatically adding 2 treason points to EVERYONE.
I believe that's everything.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@365 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
uporotiy
2010-11-02 19:13:32 +00:00
parent 18e52e6a09
commit be044b18c8
32 changed files with 294 additions and 146 deletions

View File

@@ -1458,7 +1458,7 @@
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger
name = "monkeyburger"
desc = "The cornerstone of every nutritious breakfast."
icon_state = "burger"
icon_state = "hburger"
amount = 5
heal_amt = 2
@@ -2050,6 +2050,12 @@
/obj/reagent_dispensers/fueltank/blob_act()
explosion(src.loc,0,1,5,7,10)
if(src)
del(src)
/obj/reagent_dispensers/fueltank/ex_act()
explosion(src.loc,-1,0,2)
if(src)
del(src)
/obj/reagent_dispensers/beerkeg

View File

@@ -15,7 +15,7 @@
if(1)
if(prob(2))
affected_mob << "\red You feel like something is moving inside of you"
if(2) //also changes say, see the say.dm
if(2) //also changes say, see say.dm
if(prob(2))
affected_mob << "\red You feel like something is moving inside of you"
if(prob(2))

View File

@@ -106,6 +106,9 @@ STI KALY - blind
if(theareas.Find(AR) || AR.name == "Space") continue
theareas += AR
if(!theareas)
return
var/area/thearea = pick(theareas)
var/datum/effects/system/harmless_smoke_spread/smoke = new /datum/effects/system/harmless_smoke_spread()
@@ -116,6 +119,7 @@ STI KALY - blind
var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type))
if(T.z != affected_mob.z) continue
if(T.name == "space") continue
if(!T.density)
var/clear = 1
for(var/obj/O in T)
@@ -125,6 +129,9 @@ STI KALY - blind
if(clear)
L+=T
if(!L)
return
affected_mob.say("SCYAR NILA [uppertext(thearea.name)]!")
affected_mob.loc = pick(L)
smoke.start()

View File

@@ -657,6 +657,20 @@
icon_state = "syndicate"
item_state = "space_suit_syndicate"
//Themed space suits for different nuke rounds (WIP)
/obj/item/clothing/head/helmet/space/pirate
name = "pirate hat"
desc = "Yarr."
icon_state = "pirate"
item_state = "pirate"
/obj/item/clothing/suit/space/pirate
name = "pirate coat"
desc = "Yarr."
icon_state = "pirate"
item_state = "pirate"
// UNDERS AND BY THAT, NATURALLY I MEAN UNIFORMS/JUMPSUITS
/obj/item/clothing/under

View File

@@ -1072,6 +1072,9 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
w_class = 2.0
flags = FPRINT | TABLEPASS | NOSHIELD
/obj/item/weapon/sword/pirate
name = "energy cutlass"
icon_state = "cutlass0"
/obj/item/weapon/table_parts
name = "table parts"

View File

@@ -41,6 +41,8 @@
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)
var/changelingdeathticker = 0
/datum/game_mode/changeling/announce()
world << "<B>The current game mode is - Changeling!</B>"
world << "<B>There is an alien changeling on the station. Do not let the changeling succeed!</B>"
@@ -152,7 +154,7 @@
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", "wizard", "nuke", "traitor", "malf", "changeling")
possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "changeling", "cult")
possible_modes -= "[ticker.mode]"
var/number = pick(2, 3)
var/i = 0
@@ -176,6 +178,17 @@
command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.")
world << sound('intercept.ogg')
/datum/game_mode/changeling/check_finished()
if(changeling.current.stat==2)
if(changelingdeathticker>=900)
return 1
changelingdeathticker++
if(changeling.current.stat!=2)
if(changelingdeathticker)
changelingdeathticker = 0
return ..()
/datum/game_mode/changeling/declare_completion()
for(var/datum/mind/changeling in changelings)

View File

@@ -1,35 +1,36 @@
// 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/datum/mind/sacrifice_target = null
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)
var/list/objectives = list()
var/eldergod = 1 //for the summon god objective
var/const/acolytes_needed = 5 //for the survive objective
/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>"
world << "<B>Some crewmembers are attempting to start a cult!<BR>\nCultists - complete your objectives. Convert crewmembers to your cause by using the convert rune. Remember - there is no you, there is only the cult.<BR>\nPersonnel - Do not let the cult succeed in its mission. Brainwashing them with the chaplain's bible reverts them to whatever CentCom-allowed faith they had.</B>"
/datum/game_mode/cult/pre_setup()
if(prob(50))
objectives += "survive"
objectives += "sacrifice"
else
objectives += "eldergod"
objectives += "sacrifice"
return 1
/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)
if(!cultists_possible)
world << "<B> \red Not enough players for cult game mode. Restarting world in 5 seconds."
sleep(50)
world.Reboot()
@@ -45,22 +46,37 @@
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
if("sacrifice" in objectives)
var/list/possible_targets = get_unconvertables()
if(!possible_targets.len)
for(var/mob/living/carbon/human/player in world)
if(player.mind && !cult.Find(player.mind))
possible_targets += player.mind
if(possible_targets.len > 0)
sacrifice_target = pick(possible_targets)
for(var/datum/mind/cult_mind in cult)
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++
for(var/obj_count = 1,obj_count <= objectives.len,obj_count++)
var/explanation
switch(objectives[obj_count])
if("survive")
explanation = "Our knowledge must live on. Make sure at least [acolytes_needed] acolytes escape on the shuttle to spread their work on an another station."
if("sacrifice")
if(sacrifice_target)
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune (Hell join blood) and three acolytes to do so."
else
explanation = "Free objective."
if("eldergod")
explanation = "Summon Nar-Sie via the use of an appropriate rune. It will only work if nine cultists stand on and around it."
cult_mind.current << "<B>Objective #[obj_count]</B>: [explanation]"
cult_mind.memory += "<B>Objective #[obj_count]</B>: [explanation]<BR>"
cult_mind.current << "The convert rune is join blood self"
cult_mind.memory += "The convert rune is join blood self<BR>"
spawn (rand(waittime_l, waittime_h))
send_intercept()
@@ -80,29 +96,32 @@
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. (still, check your backpack. it may have been a mere bug. if you have a piece of bloody paper, all is well"
cult_mob << "Unfortunately, you weren't able to get a talisman. This is very bad and you should adminhelp immediately. (still, check your backpack. it may have been a mere bug. if you have a piece of bloody paper, all is well)"
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")
var/wordexp
switch(word)
if("1")
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordtravel] is travel..."
wordexp = "[wordtravel] is travel..."
if("2")
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordblood] is blood..."
wordexp = "[wordblood] is blood..."
if("3")
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordjoin] is join..."
wordexp = "[wordjoin] is join..."
if("4")
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordhell] is Hell..."
wordexp = "[wordhell] is Hell..."
if("5")
cult_mob << "\red You remembered one thing from the dark teachings of your master... [worddestr] is destroy..."
wordexp = "[worddestr] is destroy..."
if("6")
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordtech] is technology..."
wordexp = "[wordtech] is technology..."
if("7")
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordself] is self..."
wordexp = "[wordself] is self..."
if("8")
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordsee] is see..."
wordexp = "[wordsee] is see..."
cult_mob << "\red You remembered one thing from the dark teachings of your master... [wordexp]"
cult_mob.mind.store_memory("<B>You remember one thing</B>: [wordexp]", 0, 0)
cultists.Add(cult_mob)
/datum/game_mode/cult/send_intercept()
@@ -134,20 +153,6 @@
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))
@@ -228,29 +233,6 @@
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)
@@ -262,29 +244,38 @@
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
var/cult_fail = 0
if(objectives.Find("survive"))
cult_fail += check_survive() //the proc returns 1 if there are not enough cultists on the shuttle, 0 otherwise
if(objectives.Find("eldergod"))
cult_fail += eldergod //1 by default, 0 if the elder god has been summoned at least once
if(objectives.Find("sacrifice"))
if(!sacrificed.Find(sacrifice_target)) //if the target has been sacrificed, ignore this step. otherwise, add 1 to cult_fail
cult_fail++
return 1
return cult_fail //if any objectives aren't met, failure
/datum/game_mode/cult/proc/check_heads_victory()
for(var/datum/mind/cult_mind in cult)
if(cult_mind.current.stat != 2)
/datum/game_mode/cult/proc/check_survive()
var/acolytes_survived = 0
var/area/shuttle = locate(/area/shuttle/escape/centcom)
for(var/mob/living/carbon/human/C in world)
if(get_turf(C) in shuttle && C.stat!=2 && cult.Find(C.mind))
acolytes_survived++
if(acolytes_survived>=acolytes_needed)
return 0
else
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>"
if(!check_cult_victory())
world << "\red <FONT size = 3><B> The cult wins! It has succeeded in serving its dark masters!</B></FONT>"
else
world << "\red <FONT size = 3><B> The 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)
for(var/datum/mind/cult_nh_mind in cult)
if(cult_nh_mind.current)
text += "[cult_nh_mind.current.real_name]"
if(cult_nh_mind.current.stat == 2)
@@ -297,20 +288,29 @@
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 << "The cultists' objectives were:"
world << text
for(var/obj_count=1,obj_count <= objectives.len,obj_count++)
var/explanation
switch(objectives[obj_count])
if("survive")
if(!check_survive())
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. \green <b>Success!</b>"
else
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. \red Failed."
if("sacrifice")
if(!sacrifice_target)
explanation = "Free objective"
else
if(sacrificed.Find(sacrifice_target))
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. \green <b>Success!</b>"
else
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. \red Failed."
if("eldergod")
if(!eldergod)
explanation = "Summon Nar-Sie. \green <b>Success!</b>"
else
explanation = "Summon Nar-Sie. \red Failed."
world << "<B>Objective #[obj_count]</B>: [explanation]"
return 1

View File

@@ -250,7 +250,7 @@
virus_type = /datum/disease/brainrot
if("cold")
virus_type = /datum/disease/cold
if("rhinovirus")
if("retrovirus")
virus_type = /datum/disease/dnaspread
if("flu")
virus_type = /datum/disease/flu

View File

@@ -55,7 +55,7 @@
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", "wizard", "nuke", "traitor", "malf", "changeling")
possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "changeling", "cult")
possible_modes -= "[ticker.mode]"
var/number = pick(2, 3)
var/i = 0

View File

@@ -194,7 +194,7 @@
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", "wizard", "nuke", "traitor", "malf", "changeling")
possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "changeling", "cult")
possible_modes -= "nuke"
var/number = pick(2, 3)
var/i = 0

View File

@@ -167,4 +167,59 @@ datum
else
return 0
/* Isn't suited for global objectives
/*---------CULTIST----------*/
eldergod
explanation_text = "Summon Nar-Sie via the use of an appropriate rune. It will only work if nine cultists stand on and around it."
check_completion()
if(eldergod) //global var, defined in rune4.dm
return 1
return 0
survivecult
var/num_cult
explanation_text = "Our knowledge must live on. Make sure at least 5 acolytes escape on the shuttle to spread their work on an another station."
check_completion()
if(emergency_shuttle.location<2)
return 0
var/cultists_escaped = 0
var/area/shuttle/escape/centcom/C = /area/shuttle/escape/centcom
for(var/turf/T in get_area_turfs(C.type))
for(var/mob/living/carbon/human/H in T)
if(cultists.Find(H))
cultists_escaped++
if(cultists_escaped>=5)
return 1
return 0
sacrifice //stolen from traitor target objective
proc/find_target() //I don't know how to make it work with the rune otherwise, so I'll do it via a global var, sacrifice_target, defined in rune15.dm
var/list/possible_targets = call(/datum/game_mode/cult/proc/get_unconvertables)()
if(possible_targets.len > 0)
sacrifice_target = pick(possible_targets)
if(sacrifice_target && sacrifice_target.current)
explanation_text = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune (Hell join blood) and three acolytes to do so."
else
explanation_text = "Free Objective"
return sacrifice_target
check_completion() //again, calling on a global list defined in rune15.dm
if(sacrifice_target.current in sacrificed)
return 1
else
return 0
/*-------ENDOF CULTIST------*/
*/

View File

@@ -142,7 +142,7 @@
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", "wizard", "nuke", "traitor", "malf", "changeling")
possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "cult", "changeling")
possible_modes -= "[ticker.mode]"
var/number = pick(2, 3)
var/i = 0

View File

@@ -150,7 +150,7 @@
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", "wizard", "nuke", "traitor", "malf", "changeling")
possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "changeling", "cult")
possible_modes -= "[ticker.mode]"
var/number = pick(2, 3)
var/i = 0

View File

@@ -236,7 +236,7 @@
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", "wizard", "nuke", "traitor", "malf", "changeling")
possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "changeling", "cult")
possible_modes -= "[ticker.mode]"
var/number = pick(2, 3)
var/i = 0

View File

@@ -611,7 +611,7 @@ Auto Patrol: []"},
if(istype(perp:wear_suit, /obj/item/clothing/suit/wizrobe))
threatcount += 2
if(perp.mutantrace != "none")
if(perp.mutantrace && perp.mutantrace != "none")
threatcount += 2
//Agent cards lower threatlevel when normal idchecking is off.

View File

@@ -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 == "cult" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "confliction")
if(ticker.mode.name == "revolution" || 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)

View File

@@ -49,9 +49,10 @@ var/runedec = 0
// see Hell join - See invisible
// blood join Hell - Raise dead
// blood see destroy - Hide nearby runes
// Hell join blood - Leave your body and ghost around
// Hell travel self - Leave your body and ghost around
// blood see travel - Manifest a ghost into a mortal body
// Hell tech join - Imbue a rune into a talisman
// Hell blood join - Sacrifice rune
examine()
if(!cultists.Find(usr))
@@ -115,12 +116,14 @@ var/runedec = 0
return raise()
if(word1 == wordblood && word2 == wordsee && word3 == worddestr)
return obscure(4)
if(word1 == wordhell && word2 == wordjoin && word3 == wordblood)
if(word1 == wordhell && word2 == wordtravel && word3 == wordself)
return ajourney()
if(word1 == wordblood && word2 == wordsee && word3 == wordtravel)
return manifest()
if(word1 == wordhell && word2 == wordtech && word3 == wordjoin)
return talisman()
if(word1 == wordhell && word2 == wordblood && word3 == wordjoin)
return sacrifice()
else
return fizzle()
@@ -167,7 +170,7 @@ var/runedec = 0
icon_state = "1"
src.icon += rgb(0, 0 , 255)
return
if(word1 == wordhell && word2 == wordjoin && word3 == wordblood)
if(word1 == wordhell && word2 == wordtravel && word3 == wordself)
icon_state = "6"
src.icon += rgb(0, 0 , 255)
return
@@ -178,6 +181,10 @@ var/runedec = 0
icon_state = "3"
src.icon += rgb(0, 0 , 255)
return
if(word1 == wordhell && word2 == wordblood && word3 == wordjoin)
icon_state = "[rand(1,6)]"
src.icon += rgb(255, 255, 255)
return
icon_state="[rand(1,6)]" //random shape and color for dummy runes
src.icon -= rgb(255,255,255)
src.icon += rgb(rand(1,255),rand(1,255),rand(1,255))
@@ -197,6 +204,9 @@ var/runedec = 0
var/C = 0
for(var/obj/rune/N in world)
C++
if (!istype(user.loc,/turf))
user << "\red You do not have enough space to write a proper rune."
return
if (C>=26+runedec) //including the useless rune at the secret room, shouldn't count against the limit of 25 runes - Urist
switch(alert("The cloth of reality can't take that much of a strain. By creating another rune, you risk locally tearing reality apart, which would prove fatal to you. Do you still wish to scribe the rune?",,"Yes","No"))
if("Yes")
@@ -250,7 +260,9 @@ var/runedec = 0
runerandom()
if(user)
var/r
var/list/runes = list("teleport", "tome", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "astral journey", "manifest", "imbue talisman")
if (!istype(user.loc,/turf))
user << "\red You do not have enough space to write a proper rune."
var/list/runes = list("teleport", "tome", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "astral journey", "manifest", "imbue talisman", "sacrifice")
r = input("Choose a rune to scribe", "Rune Scribing") in runes
switch(r)
if("teleport")
@@ -314,8 +326,8 @@ var/runedec = 0
if("astral journey")
var/obj/rune/R = new /obj/rune(user.loc)
R.word1=wordhell
R.word2=wordjoin
R.word3=wordblood
R.word2=wordtravel
R.word3=wordself
R.check_icon()
if("manifest")
var/obj/rune/R = new /obj/rune(user.loc)
@@ -329,6 +341,12 @@ var/runedec = 0
R.word2=wordtech
R.word3=wordjoin
R.check_icon()
if("sacrifice")
var/obj/rune/R = new /obj/rune(user.loc)
R.word1=wordhell
R.word2=wordblood
R.word3=wordjoin
R.check_icon()
/obj/item/weapon/paperscrap
name = "scrap of paper"
@@ -357,7 +375,7 @@ var/runedec = 0
var/uses = 0
attack_self(mob/user as mob)
usr.bruteloss+=20
usr.bruteloss+=10
switch(imbue)
if("newtome")
call(/obj/rune/proc/tomesummon)()

View File

@@ -0,0 +1,18 @@
var/list/sacrificed = list()
/obj/rune/proc/sacrifice()
var/culcount = 0
for(var/mob/living/carbon/human/C in orange(1,src))
if(cultists.Find(C))
culcount++
if(culcount>=3)
for(var/mob/living/carbon/human/S in src.loc)
if(ticker.mode.name == "cult")
if(S == ticker.mode:sacrifice_target.current)//Iunno, check if it's a target
sacrificed += S.mind
S.gib(1)
usr << "\red The Geometer of Blood accepts this sacrifice."
else
usr << "\red The Geometer of Blood does not accept this sacrifice."
return
return fizzle()

View File

@@ -3,13 +3,16 @@
if(cultists.Find(M))
return fizzle()
else
if(ticker.mode.name == "cult")
var/list/uncons = call(/datum/game_mode/cult/proc/get_unconvertables)()
if(M.mind in uncons)
return fizzle()
ticker.mode:add_cultist(M.mind)
usr.say("Mah'weyh pleggh at e'ntrath!")
cultists.Add(M)
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>"
if(ticker.mode.name == "cult")
ticker.mode:add_cultist(M.mind)
cultists.Add(M)
return
return fizzle()

View File

@@ -11,7 +11,8 @@
S.desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees."
S.pixel_x = -89
S.pixel_y = -85
message_admins("<h1><font color=\"purple\"><b><u>[key_name_admin(usr)] has summoned a Tear in the Fabric of Reality!", 1)
if(ticker.mode.name == "cult")
ticker.mode:eldergod = 0
return
else
return fizzle()

View File

@@ -3,8 +3,6 @@
usr.say("Rash'tla sektath mal'zua. Zasan therium vivira. Itonis al'ra matum!")
if(usr.see_invisible!=0 && usr.see_invisible!=15)
usr << "\red The world beyond flashes your eyes but disappears quickly, as if something is disrupting your vision."
if(usr.see_invisible==15)
return fizzle()
else
usr << "\red The world beyond opens to your eyes."
usr.see_invisible = 15

View File

@@ -1,4 +1,8 @@
/obj/item/weapon/paper/talisman/proc/supply(var/key)
if (!src.uses)
del(src)
return
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>"
@@ -17,10 +21,6 @@
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")

View File

@@ -18,18 +18,24 @@ STUN BATON
/obj/item/weapon/sword/attack_self(mob/user as mob)
if ((user.mutations & 16) && prob(50))
user << "\red You accidentally cut yourself with the Sword."
user << "\red You accidentally cut yourself with [src]."
user.bruteloss += 5
user.fireloss +=5
src.active = !( src.active )
if (src.active)
user << "\blue The sword is now active."
user << "\blue [src] is now active."
src.force = 30
if(istype(src,/obj/item/weapon/sword/pirate))
src.icon_state = "cutlass1"
else
src.icon_state = "sword1"
src.w_class = 4
else
user << "\blue The sword can now be concealed."
user << "\blue [src] can now be concealed."
src.force = 3
if(istype(src,/obj/item/weapon/sword/pirate))
src.icon_state = "cutlass0"
else
src.icon_state = "sword0"
src.w_class = 2
src.add_fingerprint(user)

View File

@@ -271,7 +271,8 @@ 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=cult'>Cult</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>
@@ -1149,7 +1150,7 @@ var/showadminmessages = 1
viral_outbreak()
message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1)
else
var/list/viruses = list("fake gbs","gbs","magnitis","wizarditis",/*"beesease",*/"brain rot","cold","rhinovirus","flu")
var/list/viruses = list("fake gbs","gbs","magnitis","wizarditis",/*"beesease",*/"brain rot","cold","retrovirus","flu")
var/V = input("Choose the virus to spread", "BIOHAZARD") in viruses
viral_outbreak(V)
message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1)
@@ -1329,14 +1330,6 @@ var/showadminmessages = 1
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

View File

@@ -66,7 +66,7 @@
if(cultists.Find(corpse) && corpse.ajourn==1 && corpse.health>-100) //checks if it's an astral-journeying cultistm if it is and he's not on an astral journey rune, re-entering won't work
var/S=0
for(var/obj/rune/R in world)
if(corpse.loc==R.loc && R.word1 == wordhell && R.word2 == wordjoin && R.word3 == wordblood)
if(corpse.loc==R.loc && R.word1 == wordhell && R.word2 == wordtravel && R.word3 == wordself)
S=1
if(!S)
usr << "\red The astral cord that ties your body and your spirit has been severed. You are likely to wander the realm beyond until your body is finally dead and thus reunited with you."

View File

@@ -385,6 +385,7 @@
#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\rune15.dm"
#include "code\game\magic\cultist\rune2.dm"
#include "code\game\magic\cultist\rune3.dm"
#include "code\game\magic\cultist\rune4.dm"

View File

@@ -46,6 +46,18 @@
<h4>Changelog</h4>
<h5>Thursday, November 2, 19:11(GMT)</h5>
<ul>
<li>Finished work on the "cult" gamemode. I'll still add features to it later, but it is safe to be put on secret rotation now.</li>
<li>Added an energy cutlass and made a pirate version of the space suit in preparation for a later nuke update.</li>
<li>Changeling now ends 15 minutes after changeling death, unless he's ressurected.</li>
<li>Further fixing of wizarditis teleporting into space.</li>
<li>Fixed the wise beard sprite.</li>
<li>Fixed missing sprite for monkeyburgers.</li>
<li>Fixed Beepsky automatically adding 2 treason points to EVERYONE.</li>
</ul>
<h5>Thursday, October 28, 19:30(GMT)</h5>
<ul>
<li>Sleepers and disposals now require two seconds to climb inside</li>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB