mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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,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.
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user