diff --git a/code/datums/mind.dm b/code/datums/mind.dm index bce844da53c..e639bd179a9 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -591,7 +591,7 @@ datum/mind special_role = null var/datum/game_mode/cult/cult = ticker.mode if (istype(cult)) - cult.memoize_cult_objectives(src) + cult.memorize_cult_objectives(src) current << "\red You have been brainwashed! You are no longer a cultist!" memory = "" message_admins("[key_name_admin(usr)] has de-cult'ed [current].") @@ -605,8 +605,8 @@ datum/mind current << "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." var/datum/game_mode/cult/cult = ticker.mode if (istype(cult)) - cult.memoize_cult_objectives(src) - message_admins("[key_name_admin(usr)] has de-cult'ed [current].") + cult.memorize_cult_objectives(src) + message_admins("[key_name_admin(usr)] has cult'ed [current].") log_admin("[key_name_admin(usr)] has cult'ed [current].") if("tome") var/mob/living/carbon/human/H = current @@ -1055,7 +1055,7 @@ datum/mind current << "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." var/datum/game_mode/cult/cult = ticker.mode if (istype(cult)) - cult.memoize_cult_objectives(src) + cult.memorize_cult_objectives(src) else var/explanation = "Summon Nar-Sie via the use of the appropriate rune (Hell join self). It will only work if nine cultists stand on and around it." current << "Objective #1: [explanation]" diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 0b9680a5d98..d0f9658d697 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -3,7 +3,7 @@ /datum/game_mode var/list/datum/mind/cult = list() var/list/allwords = list("travel","self","see","hell","blood","join","tech","destroy", "other", "hide") - + var/list/grantwords = list("travel", "see", "hell", "tech", "destroy", "other", "hide") /proc/iscultist(mob/living/M as mob) return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.cult) @@ -35,8 +35,8 @@ var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) var/list/startwords = list("blood","join","self","hell") - var/list/secondwords = list("travel","see","tech","destroy", "other", "hide") - + var/list/secondwords = list("travel", "see", "tech", "destroy", "other", "hide") + var/list/objectives = list() var/eldergod = 1 //for the summon god objective @@ -92,11 +92,11 @@ for(var/datum/mind/cult_mind in cult) equip_cultist(cult_mind.current) - grant_runeword(cult_mind.current) - grant_secondword(cult_mind.current) +// grant_runeword(cult_mind.current) +// grant_secondword(cult_mind.current) update_cult_icons_added(cult_mind) cult_mind.current << "\blue You are a member of the cult!" - memoize_cult_objectives(cult_mind) + memorize_cult_objectives(cult_mind) cult_mind.special_role = "Cultist" spawn (rand(waittime_l, waittime_h)) @@ -104,7 +104,7 @@ ..() -/datum/game_mode/cult/proc/memoize_cult_objectives(var/datum/mind/cult_mind) +/datum/game_mode/cult/proc/memorize_cult_objectives(var/datum/mind/cult_mind) for(var/obj_count = 1,obj_count <= objectives.len,obj_count++) var/explanation switch(objectives[obj_count]) @@ -119,9 +119,11 @@ explanation = "Summon Nar-Sie via the use of the appropriate rune (Hell join self). It will only work if nine cultists stand on and around it." cult_mind.current << "Objective #[obj_count]: [explanation]" cult_mind.memory += "Objective #[obj_count]: [explanation]
" - cult_mind.current << "The convert rune is join blood self" - cult_mind.memory += "The convert rune is join blood self
" - + cult_mind.current << "The Geometer of Blood grants you the knowledge to convert non-believers. (Join Blood Self)" + cult_mind.memory += "The Geometer of Blood grants you the knowledge to convert non-believers. (Join Blood Self)
" + grant_runeword(cult_mind.current,"join") + grant_runeword(cult_mind.current,"blood") + grant_runeword(cult_mind.current,"self") /datum/game_mode/proc/equip_cultist(mob/living/carbon/human/mob) if(!istype(mob)) @@ -149,26 +151,26 @@ mob.update_icons() return 1 -/datum/game_mode/cult/proc/grant_secondword(mob/living/carbon/human/cult_mob, var/word) - if (!word) - if(secondwords.len > 0) - word=pick(secondwords) - secondwords -= word - grant_runeword(cult_mob,word) -/datum/game_mode/cult/grant_runeword(mob/living/carbon/human/cult_mob, var/word) - if (!word) - if(startwords.len > 0) - word=pick(startwords) - startwords -= word - return ..(cult_mob,word) +//datum/game_mode/cult/proc/grant_secondword(mob/living/carbon/human/cult_mob, var/word) +// if (!word) +// if(secondwords.len > 0) +// word=pick(secondwords) +// secondwords -= word +// grant_runeword(cult_mob,word) +//datum/game_mode/cult/grant_runeword(mob/living/carbon/human/cult_mob, var/word) +// if (!word) +// if(startwords.len > 0) +// word=pick(startwords) +// startwords -= word +// return ..(cult_mob,word) /datum/game_mode/proc/grant_runeword(mob/living/carbon/human/cult_mob, var/word) if(!wordtravel) runerandom() if (!word) - word=pick(allwords) + word=pick(grantwords) var/wordexp switch(word) if("travel") @@ -195,7 +197,7 @@ // wordexp = "[wordfree] is free..." if("hide") wordexp = "[wordhide] is hide..." - cult_mob << "\red [pick("You remember something from the dark teachings of your master","You hear a dark voice on the wind","Black blood oozes into your vision and forms into symbols","You have a vision of a [pick("crow","raven","vulture","parrot")] it squawks","You catch a brief glimmer of the otherside")]... [wordexp]" + cult_mob << "\red [pick("You remember something from the dark teachings of your master","You hear a dark voice on the wind","Black blood oozes into your vision and forms into symbols","You catch a brief glimmer of the otherside")]... [wordexp]" cult_mob.mind.store_memory("You remember that [wordexp]", 0, 0) @@ -211,8 +213,8 @@ /datum/game_mode/cult/add_cultist(datum/mind/cult_mind) //INHERIT if (!..(cult_mind)) + memorize_cult_objectives(cult_mind) return - memoize_cult_objectives(cult_mind) /datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, show_message = 1) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index d74578198e4..ddd0ca0be09 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -194,6 +194,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", if(word1 == wordjoin && word2 == wordhide && word3 == wordtech) return runestun() else + user.take_overall_damage(30, 0) + user << "\red You feel the life draining from you, as if Lord Nar-Sie is displeased with you." return fizzle() @@ -289,6 +291,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", if(word1 == wordtravel && word2 == wordother) icon_state = "1" src.icon += rgb(200, 0, 0) + return if(word1 == wordjoin && word2 == wordhide && word3 == wordtech) icon_state = "2" src.icon += rgb(100, 0, 100) @@ -355,7 +358,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",

Teleport self

Teleport rune is a special rune, as it only needs two words, with the third word being destination. Basically, when you have two runes with the same destination, invoking one will teleport you to the other one. If there are more than 2 runes, you will be teleported to a random one. Runes with different third words will create separate networks. You can imbue this rune into a talisman, giving you a great escape mechanism.

Teleport other

- Teleport other allows for teleportation for any movable object to another rune with the same third word. You need 3 cultists chanting the invocation for this rune to work.
+ Teleport other allows for teleportation for any movable object to another rune with the same third word.

Summon new tome

Invoking this rune summons a new arcane tome.

Convert a person

@@ -385,7 +388,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",

Summon cultist

This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to succesfully invoke it. Invoking it takes heavy strain on the bodies of all chanting cultists.

Free a cultist

- This rune unhandcuffs and unbuckles any cultist of your choice, no matter where he is. You need to have 3 people invoking the rune for it to work. Invoking it takes heavy strain on the bodies of all chanting cultists.
+ This rune unhandcuffs and unbuckles any cultist of your choice, no matter where he is. Invoking it takes heavy strain on the bodies of all chanting cultists.

Deafen

This rune temporarily deafens all non-cultists around you.

Blind

@@ -415,9 +418,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", words[words[number]] = words[number] if("change") words[words[number]] = input("Enter the translation for [words[number]]", "Word notes") in engwords - for (var/w in words) - if ((words[w] == words[words[number]]) && (w != words[number])) - words[w] = w + for (var/entry in words) + if ((words[entry] == words[words[number]]) && (entry != words[number])) + words[entry] = entry notedat = {"
Word translation notes
[words[1]] is [words[words[1]]] Clear
@@ -534,29 +537,63 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", if(usr.get_active_hand() != src) return - var/w1 - var/w2 - var/w3 - var/list/english = list() - for (var/w in words) - english+=words[w] - if(usr) - w1 = input("Write your first rune:", "Rune Scribing") in english - for (var/w in words) - if (words[w] == w1) - w1 = w - if(usr) - w2 = input("Write your second rune:", "Rune Scribing") in english - for (var/w in words) - if (words[w] == w2) - w2 = w - if(usr) - w3 = input("Write your third rune:", "Rune Scribing") in english - for (var/w in words) - if (words[w] == w3) - w3 = w + var/list/dictionary = list( + "convert" = list("join","blood","self"), + "wall" = list("destroy","travel","self"), + "blood boil" = list("destroy","see","blood"), + "blood drain" = list("travel","blood","self"), + "raise dead" = list("blood","join","hell"), + "summon narsie" = list("hell","join","self"), + "communicate" = list("self","other","technology"), + "emp" = list("destroy","see","technology"), + "manifest" = list("blood","see","travel"), + "summon tome" = list("see","blood","hell"), + "see invisible" = list("see","hell","join"), + "hide" = list("hide","see","blood"), + "reveal" = list("blood","see","hide"), + "astral journey" = list("hell","travel","self"), + "imbue" = list("hell","technology","join"), + "sacrifice" = list("hell","blood","join"), + "summon cultist" = list("join","other","self"), + "free cultist" = list("travel","technology","other"), + "deafen" = list("hide","other","see"), + "blind" = list("destroy","see","other"), + "stun" = list("join","hide","technology"), + "armor" = list("hell","destroy","other"), + "teleport" = list("travel","self"), + "teleport other" = list("travel","other") + ) - if(usr.get_active_hand() != src) + + var/list/scribewords = list("none") + + var/list/english = list() + + for (var/entry in words) + if (words[entry] != entry) + english+=list(words[entry] = entry) + + for (var/entry in dictionary) + var/list/required = dictionary[entry] + if (length(english&required) == required.len) + scribewords += entry + + var/chosen_rune = null + + + if(usr) + chosen_rune = input ("Choose a rune to scribe.") in scribewords + if (!chosen_rune) + return + if (chosen_rune == "none") + user << "\red You decide against scribing a rune, perhaps you should take this time to study your notes." + return + if (chosen_rune == "teleport") + dictionary[chosen_rune] += input ("Choose a destination word") in english + if (chosen_rune == "teleport other") + dictionary[chosen_rune] += input ("Choose a destination word") in english + + if(user.get_active_hand() != src) return for (var/mob/V in viewers(src)) @@ -569,9 +606,10 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", var/mob/living/carbon/human/H = user var/obj/effect/rune/R = new /obj/effect/rune(user.loc) user << "\red You finish drawing the arcane markings of the Geometer." - R.word1 = w1 - R.word2 = w2 - R.word3 = w3 + var/list/required = dictionary[chosen_rune] + R.word1 = english[required[1]] + R.word2 = english[required[2]] + R.word3 = english[required[3]] R.check_icon() R.blood_DNA = list() R.blood_DNA[H.dna.unique_enzymes] = H.dna.blood_type @@ -590,8 +628,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", // return // for(var/mob/M in nearby) // if(M == user) - for(var/w in words) - words[w] = T.words[w] + for(var/entry in words) + words[entry] = T.words[entry] user << "You copy the translation notes from your tome." diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index b6cb92a5df3..925300219ee 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -77,7 +77,6 @@ var/list/sacrificed = list() return fizzle() - /////////////////////////////////////////SECOND RUNE tomesummon() @@ -114,6 +113,8 @@ var/list/sacrificed = list() M.mind.special_role = "Cultist" M << "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." M << "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." + usr << "\red The Geometer of Blood is pleased to see his followers grow in numbers." + ticker.mode:grant_runeword(usr) return 1 else M << "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." @@ -1035,3 +1036,4 @@ var/list/sacrificed = list() del(src) return +