From 118320e84af2ea223ff14a760b142a9a9fc47ecf Mon Sep 17 00:00:00 2001 From: uporotiy Date: Wed, 13 Oct 2010 17:16:00 +0000 Subject: [PATCH] Added three new runes, more work on cultists, as always. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@274 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/mob/mob.dm | 1 + code/game/magic/cultist/ritual.dm | 53 +++++++++++++++++++++- code/game/magic/cultist/rune1.dm | 43 +----------------- code/game/magic/cultist/rune10.dm | 17 +++++++ code/game/magic/cultist/rune11.dm | 23 ++++++++++ code/game/magic/cultist/rune7.dm | 7 ++- code/game/magic/cultist/rune9.dm | 10 ++++ code/modules/mob/dead/observer/observer.dm | 10 ++++ goonstation.dme | 3 ++ 9 files changed, 122 insertions(+), 45 deletions(-) create mode 100644 code/game/magic/cultist/rune10.dm create mode 100644 code/game/magic/cultist/rune11.dm create mode 100644 code/game/magic/cultist/rune9.dm diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index 0da77bf06fb..3ef735d483f 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -54,6 +54,7 @@ var/real_name = null var/blinded = null var/bhunger = 0 + var/ajourn = 0 var/rejuv = null var/druggy = 0 var/confused = 0 diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index cb0d58f8675..4b96e0ef769 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -31,6 +31,7 @@ var/worddestr = null anchored = 1 icon = 'magic.dmi' icon_state = "1" + var/visibility = 0 var @@ -46,6 +47,9 @@ var/worddestr = null // travel blood self - Drain blood // 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 +// blood see travel - Manifest a ghost into a mortal body examine() if(!cultists.Find(usr)) @@ -70,7 +74,8 @@ var/worddestr = null return if(!word1 || !word2 || !word3 || prob(usr.brainloss)) return fizzle() - + if(!src.visibility) + src.visibility=1 if(word1 == wordtravel && word2 == wordself) return teleport(src.word3) if(word1 == wordsee && word2 == wordblood && word3 == wordhell) @@ -106,6 +111,14 @@ var/worddestr = null return seer() if(word1 == wordblood && word2 == wordjoin && word3 == wordhell) return raise() + if(word1 == wordblood && word2 == wordsee && word3 == worddestr) + return obscure(4) + if(word1 == wordhell && word2 == wordjoin && word3 == wordblood) + return ajourney() + if(word1 == wordblood && word2 == wordsee && word3 == wordtravel) + return manifest() + /*if(word1 == wordtech && word2 == wordhell && word3 == wordjoin) + return egenerate(5000)*/ else return fizzle() @@ -148,6 +161,18 @@ var/worddestr = null icon_state = "3" src.icon += rgb(255, 255 , 255) return + if(word1 == wordblood && word2 == wordsee && word3 == worddestr) + icon_state = "3" + src.icon += rgb(-255, 255 , -255) + return + if(word1 == wordhell && word2 == wordjoin && word3 == wordblood) + icon_state = "2" + src.icon += rgb(-255, 255 , -255) + return + if(word1 == wordblood && word2 == wordsee && word3 == wordtravel) + icon_state = "2" + src.icon += rgb(-255, -255 , 255) + return icon_state = "1" /obj/item/weapon/tome @@ -218,7 +243,7 @@ var/worddestr = null runerandom() if(user) var/r - var/list/runes = list("teleport", "tome", "convert", "tear in reality", "emp", "drain", "seer", "raise") + var/list/runes = list("teleport", "tome", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "astral journey", "manifest"/*, "generate energy"*/) r = input("Choose a rune to scribe", "Rune Scribing") in runes switch(r) if("teleport") @@ -273,6 +298,30 @@ var/worddestr = null R.word2=wordjoin R.word3=wordhell R.check_icon() + if("obscure") + var/obj/rune/R = new /obj/rune(user.loc) + R.word1=wordblood + R.word2=wordsee + R.word3=worddestr + R.check_icon() + if("astral journey") + var/obj/rune/R = new /obj/rune(user.loc) + R.word1=wordhell + R.word2=wordjoin + R.word3=wordblood + R.check_icon() + if("manifest") + var/obj/rune/R = new /obj/rune(user.loc) + R.word1=wordblood + R.word2=wordsee + R.word3=wordtravel + R.check_icon() + /*if("generate energy") + var/obj/rune/R = new /obj/rune(user.loc) + R.word1=wordtech + R.word2=wordhell + R.word3=wordjoin + R.check_icon()*/ /obj/item/weapon/paperscrap name = "scrap of paper" diff --git a/code/game/magic/cultist/rune1.dm b/code/game/magic/cultist/rune1.dm index 8958efbf9c7..7bed41a686b 100644 --- a/code/game/magic/cultist/rune1.dm +++ b/code/game/magic/cultist/rune1.dm @@ -1,15 +1,4 @@ /obj/rune/proc/teleport(var/key) -/* for(var/obj/rune/R in world) - if(R == src) - continue - if(R.word3 == key && R.word1 == src.word1 && R.word2 == src.word2) - usr.say("Sas'so c'arta forbici!") - for (var/mob/V in viewers(src)) - V.show_message("\red [usr] disappears in a flash of red light!", 3, "\red You hear a sickening crunch and sloshing of viscera.", 2) - usr.loc = R.loc - return - return fizzle()*/ - var/allrunesloc[] allrunesloc = new/list() var/index = 0 @@ -27,34 +16,4 @@ V.show_message("\red [usr] disappears in a flash of red light!", 3, "\red You hear a sickening crunch and sloshing of viscera.", 2) usr.loc = allrunesloc[rand(1,index)] return - return fizzle() //Use friggin manuals, Dorf, your list was of zero length. - -/* var/allrunesx[] - var/allrunesy[] - var/allrunesz[] - allrunesx = new/list() - allrunesy = new/list() - allrunesz = new/list() - var/tempnum - var/count = 0 - for(var/obj/rune/R in world) - if(R == src) - continue - if(R.word3 == key && R.word1 == src.word1 && R.word2 == src.word2) - count++ - allrunesx.len = count - allrunesy.len = count - allrunesz.len = count - allrunesx[count] = R.x - allrunesy[count] = R.y - allrunesz[count] = R.z - if(allrunesx && allrunesy && allrunesz) - usr.say("Sas'so c'arta forbici!") - for (var/mob/V in viewers(src)) - V.show_message("\red [usr] disappears in a flash of red light!", 3, "\red You hear a sickening crunch and sloshing of viscera.", 2) - tempnum = rand(1,count) - usr.x = allrunesx[tempnum] - usr.y = allrunesy[tempnum] - usr.z = allrunesz[tempnum] - return - return fizzle()*/ \ No newline at end of file + return fizzle() //Use friggin manuals, Dorf, your list was of zero length. \ No newline at end of file diff --git a/code/game/magic/cultist/rune10.dm b/code/game/magic/cultist/rune10.dm new file mode 100644 index 00000000000..84bd1a9f418 --- /dev/null +++ b/code/game/magic/cultist/rune10.dm @@ -0,0 +1,17 @@ +/obj/rune/proc/ajourney() //some bits copypastaed from admin tools - Urist + if(usr.loc==src.loc) + var/mob/living/carbon/human/L = usr + usr.say("Fwe'sh mah erl nyag r'ya!") + usr.ghostize() + usr << "\red The shadow that is your spirit separates itself from your body. You are now in the realm beyond. While this it's a great sight, being here strains your mind and body. Hurry." + for (var/mob/V in viewers(src)) + if(V!=usr) + V.show_message("\red [usr]'s eyes glow blue as \he freezes in place, absolutely motionless.", 3, "\red You hear only complete silence for a moment.", 2) + for(L.ajourn=1,L.ajourn) + sleep(10) + if(L.key) + L.ajourn=0 + return + else + L.bruteloss++ + return fizzle() \ No newline at end of file diff --git a/code/game/magic/cultist/rune11.dm b/code/game/magic/cultist/rune11.dm new file mode 100644 index 00000000000..5e2094c7469 --- /dev/null +++ b/code/game/magic/cultist/rune11.dm @@ -0,0 +1,23 @@ +/obj/rune/proc/manifest() + if(usr.loc==src.loc) + for(var/mob/dead/observer/O in src.loc) + usr.say("Gal'h'rfikk harfrandid mud'gib!") //H'drak v'loso, mir'kanas verbot + var/mob/living/carbon/human/dummy/D = new /mob/living/carbon/human/dummy(src.loc) + for (var/mob/V in viewers(D)) + V.show_message("\red A shape forms in the center of the rune. A shape of... a man.", 3, "", 2) + D.real_name = "Unknown" + for(var/obj/item/weapon/paper/P in src.loc) + if(length(P.info)<=24) + D.real_name = P.info + D.universal_speak = 1 + D.nodamage = 0 + D.key = O.key + del(O) + for(,usr.loc==src.loc) + sleep(30) + usr.bruteloss++ + D.gib(1) + for (var/mob/V in viewers(D)) + V.show_message("\red [D] explodes in a pile of gore.", 3, "\red \b SPLORCH", 2) + return + return fizzle() \ No newline at end of file diff --git a/code/game/magic/cultist/rune7.dm b/code/game/magic/cultist/rune7.dm index cce33b093e3..d6798fee561 100644 --- a/code/game/magic/cultist/rune7.dm +++ b/code/game/magic/cultist/rune7.dm @@ -1,7 +1,12 @@ /obj/rune/proc/seer() if(usr.loc==src.loc) usr.say("Rash'tla sektath mal'zua. Zasan therium vivira. Itonis al'ra matum!") - usr << "\red The world beyond opens to your eyes." + 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 return return fizzle() \ No newline at end of file diff --git a/code/game/magic/cultist/rune9.dm b/code/game/magic/cultist/rune9.dm new file mode 100644 index 00000000000..6806b4f9643 --- /dev/null +++ b/code/game/magic/cultist/rune9.dm @@ -0,0 +1,10 @@ +/obj/rune/proc/obscure(var/rad) + var/S=0 + for(var/obj/rune/R in orange(rad,src)) + if(R!=src) + R.visibility=0 + S=1 + if(S) + usr.say("Kla'atu barada nikt'o!") + return + return fizzle() \ No newline at end of file diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 93f248c9aec..8eeac098e34 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -63,6 +63,16 @@ src.client.clear_admin_verbs() src.client.holder.state = 1 src.client.update_admins(rank) + 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) + 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." + return + if(corpse.ajourn) + corpse.ajourn=0 src.client.mob = corpse del(src) diff --git a/goonstation.dme b/goonstation.dme index 962fd47851c..12b0b1205cc 100644 --- a/goonstation.dme +++ b/goonstation.dme @@ -371,6 +371,8 @@ #include "code\game\magic\musician.dm" #include "code\game\magic\cultist\ritual.dm" #include "code\game\magic\cultist\rune1.dm" +#include "code\game\magic\cultist\rune10.dm" +#include "code\game\magic\cultist\rune11.dm" #include "code\game\magic\cultist\rune2.dm" #include "code\game\magic\cultist\rune3.dm" #include "code\game\magic\cultist\rune4.dm" @@ -378,6 +380,7 @@ #include "code\game\magic\cultist\rune6.dm" #include "code\game\magic\cultist\rune7.dm" #include "code\game\magic\cultist\rune8.dm" +#include "code\game\magic\cultist\rune9.dm" #include "code\game\objects\assemblies.dm" #include "code\game\objects\blood.dm" #include "code\game\objects\bomb.dm"