mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 12:35:33 +01:00
Merge pull request #1351 from Sabbat/Tome-Rework
Tome rework (don't merge)
This commit is contained in:
+4
-4
@@ -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]"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user