Improved word attainment for Cult

mind.dm - Added a known words list to the mind datum

cult.dm
-**REDUCED RECOMMENDED_ENEMIES BACK DOWN TO 3** - this was one of those band aide fixes we tried ages ago, I really don't feel cult needs more than 3 starting cultists now. Power of three and all that.
-Cultists get a message when grant_runeword gives them the last rune word
-Remove_cultist nullifies the new cult_words mind list on deconversion (Coming Soon™)

runes.dm
-Convert will now try up to three times to give the converter a new word (in testing this seems plenty to get most of the words)
-Sacrifice is now guarenteed to give a new word if the normal checks are passed for a word to be given
-Sacrificing the sacrifice target will reward the sacrificer with up to three words, previously they got fuck all.
-Upped the probablity for words to be given
--Live humans will always give a word
--Dead humans has been increased from 40 to 60
--Monkeys have been increased from 20 to 30
This commit is contained in:
Malkevin
2013-10-23 00:09:17 +01:00
parent 09ba1c784e
commit c85648853b
3 changed files with 54 additions and 28 deletions
+2
View File
@@ -47,6 +47,8 @@ datum/mind
var/has_been_rev = 0//Tracks if this mind has been a rev or not
var/list/cult_words = list()
var/datum/faction/faction //associated faction
var/datum/changeling/changeling //changeling holder
+5 -1
View File
@@ -24,7 +24,7 @@
protected_jobs = list()
required_players = 15
required_enemies = 3
recommended_enemies = 4
recommended_enemies = 3
uplink_welcome = "Nar-Sie Uplink Console:"
uplink_uses = 10
@@ -204,6 +204,9 @@
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 catch a brief glimmer of the otherside")]... [wordexp]"
cult_mob.mind.store_memory("<B>You remember that</B> [wordexp]", 0, 0)
cult_mob.mind.cult_words += word
if(cult_mob.mind.cult_words.len == allwords.len)
cult_mob << "\green You feel enlightened, as if you have gained all the secrets of the other side."
/datum/game_mode/proc/add_cultist(datum/mind/cult_mind) //BASE
@@ -227,6 +230,7 @@
cult -= cult_mind
cult_mind.current << "\red <FONT size = 3><B>An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.</B></FONT>"
cult_mind.memory = ""
cult_mind.cult_words = initial(cult_mind.cult_words)
update_cult_icons_removed(cult_mind)
cult_mind.current.attack_log += "\[[time_stamp()]\] <font color='red'>Has renounced the cult!</font>"
if(show_message)
+47 -27
View File
@@ -113,9 +113,21 @@ 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
//picking which word to use
if(usr.mind.cult_words.len != ticker.mode.allwords.len) // No point running if they already know everything
var/convert_word
for(var/i=1, i<=3, i++)
convert_word = pick(ticker.mode.grantwords)
if(convert_word in usr.mind.cult_words)
if(i==3) convert_word = null //NOTE: If max loops is changed ensure this condition is changed to match /Mal
else
break
if(!convert_word)
usr << "\red This Convert was unworthy of knowledge of the other side!"
else
usr << "\red The Geometer of Blood is pleased to see his followers grow in numbers."
ticker.mode:grant_runeword(usr, convert_word)
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>"
M << "<font color=\"red\"><b>And not a single fuck was given, exterminate the cult at all costs.</b></font>"
@@ -568,25 +580,25 @@ var/list/sacrificed = list()
else
H.gib()
usr << "\red The Geometer of Blood accepts this sacrifice, your objective is now complete."
usr << "\red He is pleased!"
sac_grant_word()
sac_grant_word()
sac_grant_word() //Little reward for completing the objective
else
usr << "\red Your target's earthly bonds are too strong. You need more cultists to succeed in this ritual."
else
if(cultsinrange.len >= 3)
if(H.stat !=2)
if(prob(80))
usr << "\red The Geometer of Blood accepts this sacrifice."
ticker.mode:grant_runeword(usr)
else
usr << "\red The Geometer of blood accepts this sacrifice."
usr << "\red However, this soul was not enough to gain His favor."
usr << "\red The Geometer of Blood accepts this sacrifice."
sac_grant_word()
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
else
if(prob(40))
if(prob(60))
usr << "\red The Geometer of blood accepts this sacrifice."
ticker.mode:grant_runeword(usr)
sac_grant_word()
else
usr << "\red The Geometer of blood accepts this sacrifice."
usr << "\red However, a mere dead body is not enough to satisfy Him."
@@ -598,9 +610,9 @@ var/list/sacrificed = list()
if(H.stat !=2)
usr << "\red The victim is still alive, you will need more cultists chanting for the sacrifice to succeed."
else
if(prob(40))
if(prob(60))
usr << "\red The Geometer of blood accepts this sacrifice."
ticker.mode:grant_runeword(usr)
sac_grant_word()
else
usr << "\red The Geometer of blood accepts this sacrifice."
usr << "\red However, a mere dead body is not enough to satisfy Him."
@@ -611,20 +623,16 @@ var/list/sacrificed = list()
else
if(cultsinrange.len >= 3)
if(H.stat !=2)
if(prob(80))
usr << "\red The Geometer of Blood accepts this sacrifice."
ticker.mode:grant_runeword(usr)
else
usr << "\red The Geometer of blood accepts this sacrifice."
usr << "\red However, this soul was not enough to gain His favor."
usr << "\red The Geometer of Blood accepts this sacrifice."
sac_grant_word()
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
else
if(prob(40))
if(prob(60))
usr << "\red The Geometer of blood accepts this sacrifice."
ticker.mode:grant_runeword(usr)
sac_grant_word()
else
usr << "\red The Geometer of blood accepts this sacrifice."
usr << "\red However, a mere dead body is not enough to satisfy Him."
@@ -636,9 +644,9 @@ var/list/sacrificed = list()
if(H.stat !=2)
usr << "\red The victim is still alive, you will need more cultists chanting for the sacrifice to succeed."
else
if(prob(40))
if(prob(60))
usr << "\red The Geometer of blood accepts this sacrifice."
ticker.mode:grant_runeword(usr)
sac_grant_word()
else
usr << "\red The Geometer of blood accepts this sacrifice."
usr << "\red However, a mere dead body is not enough to satisfy Him."
@@ -652,19 +660,23 @@ var/list/sacrificed = list()
if(cultsinrange.len >= 3)
sacrificed += M.mind
usr << "\red The Geometer of Blood accepts this sacrifice, your objective is now complete."
usr << "\red He is pleased!"
sac_grant_word()
sac_grant_word()
sac_grant_word() //Little reward for completing the objective
else
usr << "\red Your target's earthly bonds are too strong. You need more cultists to succeed in this ritual."
continue
else
if(prob(20))
if(prob(30))
usr << "\red The Geometer of Blood accepts your meager sacrifice."
ticker.mode:grant_runeword(usr)
sac_grant_word()
else
usr << "\red The Geometer of blood accepts this sacrifice."
usr << "\red However, a mere monkey is not enough to satisfy Him."
else
usr << "\red The Geometer of Blood accepts your meager sacrifice."
if(prob(20))
if(prob(30))
ticker.mode.grant_runeword(usr)
M.gib()
/* for(var/mob/living/carbon/alien/A)
@@ -674,7 +686,7 @@ var/list/sacrificed = list()
if (ticker.mode.name == "cult")
if(prob(75))
usr << "\red The Geometer of Blood accepts your exotic sacrifice."
ticker.mode:grant_runeword(usr)
sac_grant_word()
else
usr << "\red The Geometer of Blood accepts your exotic sacrifice."
usr << "\red However, this alien is not enough to gain His favor."
@@ -683,6 +695,14 @@ var/list/sacrificed = list()
return
return fizzle() */
sac_grant_word() //The proc that which chooses a word rewarded for a successful sacrifice, sacrifices always give a currently unknown word if the normal checks pass
if(usr.mind.cult_words.len != ticker.mode.allwords.len) // No point running if they already know everything
var/convert_word
var/pick_list = ticker.mode.allwords - usr.mind.cult_words
convert_word = pick(pick_list)
ticker.mode:grant_runeword(usr, convert_word)
/////////////////////////////////////////SIXTEENTH RUNE
revealrunes(var/obj/W as obj)