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
This commit is contained in:
uporotiy
2010-10-13 17:16:00 +00:00
parent 1909ee2e91
commit 118320e84a
9 changed files with 122 additions and 45 deletions
+1
View File
@@ -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
+51 -2
View File
@@ -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"
+1 -42
View File
@@ -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()*/
return fizzle() //Use friggin manuals, Dorf, your list was of zero length.
+17
View File
@@ -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()
+23
View File
@@ -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()
+6 -1
View File
@@ -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()
+10
View File
@@ -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()
@@ -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)