Merge pull request #1351 from Sabbat/Tome-Rework

Tome rework (don't merge)
This commit is contained in:
Aranclanos
2013-10-05 19:39:40 -07:00
4 changed files with 104 additions and 62 deletions
+4 -4
View File
@@ -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 <FONT size = 3><B>You have been brainwashed! You are no longer a cultist!</B></FONT>"
memory = ""
message_admins("[key_name_admin(usr)] has de-cult'ed [current].")
@@ -605,8 +605,8 @@ datum/mind
current << "<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>"
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 << "<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>"
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 << "<B>Objective #1</B>: [explanation]"
+27 -25
View File
@@ -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 << "<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>"
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)<BR>"
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("<B>You remember that</B> [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)
+70 -32
View File
@@ -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",
<h3>Teleport self</h3>
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.<br>
<h3>Teleport other</h3>
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.<br>
Teleport other allows for teleportation for any movable object to another rune with the same third word. <br>
<h3>Summon new tome</h3>
Invoking this rune summons a new arcane tome.
<h3>Convert a person</h3>
@@ -385,7 +388,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
<h3>Summon cultist</h3>
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.<br>
<h3>Free a cultist</h3>
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.<br>
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.<br>
<h3>Deafen</h3>
This rune temporarily deafens all non-cultists around you.<br>
<h3>Blind</h3>
@@ -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 = {"
<br><b>Word translation notes</b> <br>
[words[1]] is <a href='byond://?src=\ref[src];number=1;action=change'>[words[words[1]]]</A> <A href='byond://?src=\ref[src];number=1;action=clear'>Clear</A><BR>
@@ -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."
+3 -1
View File
@@ -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 << "<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>"
usr << "\red The Geometer of Blood is pleased to see his followers grow in numbers."
ticker.mode:grant_runeword(usr)
return 1
else
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>"
@@ -1035,3 +1036,4 @@ var/list/sacrificed = list()
del(src)
return