mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 23:58:07 +01:00
@@ -19,6 +19,26 @@
|
||||
if(mind.current == ticker.mode.sacrifice_target) return 0
|
||||
return 1
|
||||
|
||||
/proc/cultist_commune(var/mob/living/user, var/clear = 0, var/say = 0, var/message)
|
||||
if(!message)
|
||||
return
|
||||
if(say)
|
||||
user.say("O bidai nabora se[pick("'","`")]sma!")
|
||||
else
|
||||
user.whisper("O bidai nabora se[pick("'","`")]sma!")
|
||||
sleep(10)
|
||||
if(say)
|
||||
user.say(message)
|
||||
else
|
||||
user.whisper(message)
|
||||
for(var/mob/M in mob_list)
|
||||
if(iscultist(M) || (M in dead_mob_list))
|
||||
if(clear)
|
||||
M << "<span class='boldannounce'><i>Acolyte [user]:</i> [message]</span>"
|
||||
else
|
||||
M << "<span class='ghostalert'><i>Acolyte ???:</i> [message]</span>"
|
||||
|
||||
|
||||
|
||||
/datum/game_mode/cult
|
||||
name = "cult"
|
||||
|
||||
@@ -42,28 +42,23 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
return
|
||||
|
||||
if(ishuman(usr) || ismonkey(usr)) //Damage only applies to humans and monkeys, to allow constructs to communicate
|
||||
usr.visible_message("<span class='warning'>[usr.name] starts clawing at his arms like a mad man!</span>", "<span class='warning'>You start clawing at his arms like a mad man!</span>")
|
||||
apply_damage(25,BRUTE, "l_arm")
|
||||
apply_damage(25,BRUTE, "r_arm")
|
||||
usr.visible_message("<span class='warning'>[usr.name] starts clawing at \his arms with \his fingernails!</span>", "<span class='warning'>You begin slicing open your arms with your fingers!</span>")
|
||||
apply_damage(10,BRUTE, "l_arm")
|
||||
apply_damage(10,BRUTE, "r_arm")
|
||||
sleep(50)
|
||||
if(usr.incapacitated())
|
||||
return //Hard to drawn intrinsic symbols when you're bleeding out in your cell.
|
||||
var/turf/location = loc
|
||||
if(istype(location, /turf/simulated)) // tearing your arms apart is going to spill a bit of blood, in fact thats the idea
|
||||
location.add_blood(usr) // TO-DO change this to a badly drawn rune
|
||||
apply_damage(15,BRUTE, "l_arm") // does a metric fuck ton of damage because this meant to be an emergency method of communication.
|
||||
apply_damage(15,BRUTE, "r_arm")
|
||||
apply_damage(10,BRUTE, "l_arm") // does a metric fuck ton of damage because this meant to be an emergency method of communication.
|
||||
apply_damage(10,BRUTE, "r_arm")
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
usr.visible_message("<span class='warning'>[usr.name] paints strange symbols with their own blood.</span>", "<span class='warning'>You paint strange symbols with your own blood.</span>")
|
||||
usr.visible_message("<span class='warning'>[usr.name] paints strange symbols with their own blood.</span>", "<span class='warning'>You paint a messy rune with your own blood.</span>")
|
||||
sleep(20)
|
||||
|
||||
usr.say("O bidai nabora se[pick("'","`")]sma!")
|
||||
sleep(10)
|
||||
usr.say("[input]")
|
||||
for(var/mob/M in mob_list)
|
||||
if((M.mind && (M.mind in ticker.mode.cult)) || (M in dead_mob_list))
|
||||
M << "<span class='boldannounce'>[input]</span>"
|
||||
cultist_commune(usr, 0, 1, input)
|
||||
return
|
||||
|
||||
|
||||
@@ -186,8 +181,6 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
return emp(src.loc,3)
|
||||
if(word1 == wordtravel && word2 == wordblood && word3 == wordself)
|
||||
return drain()
|
||||
if(word1 == wordsee && word2 == wordhell && word3 == wordjoin)
|
||||
return seer()
|
||||
if(word1 == wordblood && word2 == wordjoin && word3 == wordhell)
|
||||
return raise()
|
||||
if(word1 == wordhide && word2 == wordsee && word3 == wordblood)
|
||||
@@ -518,7 +511,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
return
|
||||
M.take_organ_damage(0,rand(5,20)) //really lucky - 5 hits for a crit
|
||||
M.visible_message("<span class='danger'>[user] beats [M] with the arcane tome!</span>", \
|
||||
"<span class='userdanger'>You feel searing heat inside!</span>")
|
||||
"<span class='userdanger'>[user] beats you with the tome, and you feel a searing heat inside you!</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/tome/attack_self(mob/living/user as mob)
|
||||
@@ -544,11 +537,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "")
|
||||
if(!input)
|
||||
return
|
||||
usr.whisper("O bidai nabora se[pick("'","`")]sma!")
|
||||
usr.whisper("[input]")
|
||||
for(var/datum/mind/H in ticker.mode.cult)
|
||||
if (H.current)
|
||||
H.current << "<span class='boldannounce'>[input]</span>"
|
||||
cultist_commune(user, 1, 0, input)
|
||||
return
|
||||
if("Notes")
|
||||
if(usr.get_active_hand() != src)
|
||||
@@ -690,7 +679,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
var/r
|
||||
if (!istype(user.loc,/turf))
|
||||
user << "<span class='danger'>You do not have enough space to write a proper rune.</span>"
|
||||
var/list/runes = list("teleport", "itemport", "tome", "armor", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "reveal", "astral journey", "manifest", "imbue talisman", "sacrifice", "wall", "freedom", "cultsummon", "deafen", "blind", "bloodboil", "communicate", "stun", "summon shell")
|
||||
var/list/runes = list("teleport", "itemport", "tome", "armor", "convert", "tear in reality", "emp", "drain", "raise", "obscure", "reveal", "astral journey", "manifest", "imbue talisman", "sacrifice", "wall", "freedom", "cultsummon", "deafen", "blind", "bloodboil", "communicate", "stun", "summon shell")
|
||||
r = input("Choose a rune to scribe", "Rune Scribing") in runes //not cancellable.
|
||||
var/obj/effect/rune/R = new /obj/effect/rune
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
@@ -754,12 +743,6 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
R.word3=wordself
|
||||
R.loc = user.loc
|
||||
R.check_icon()
|
||||
if("seer")
|
||||
R.word1=wordsee
|
||||
R.word2=wordhell
|
||||
R.word3=wordjoin
|
||||
R.loc = user.loc
|
||||
R.check_icon()
|
||||
if("raise")
|
||||
R.word1=wordblood
|
||||
R.word2=wordjoin
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
var/list/sacrificed = list()
|
||||
|
||||
/obj/effect/rune
|
||||
/////////////////////////////////////////FIRST RUNE
|
||||
|
||||
|
||||
///Teleport: Teleports the user to a random teleport rune with the same rune. Can be imbued into a talisman.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/teleport(var/key)
|
||||
var/mob/living/user = usr
|
||||
var/allrunesloc[]
|
||||
@@ -37,6 +41,7 @@ var/list/sacrificed = list()
|
||||
return
|
||||
|
||||
|
||||
//Subtype of teleport, teleports any items and mobs on top of the rune rather than the user themselves
|
||||
/obj/effect/rune/proc/itemport(var/key)
|
||||
// var/allrunesloc[]
|
||||
// allrunesloc = new/list()
|
||||
@@ -76,7 +81,9 @@ var/list/sacrificed = list()
|
||||
|
||||
return fizzle(user)
|
||||
|
||||
/////////////////////////////////////////SECOND RUNE
|
||||
|
||||
///Summon Tome: Summons a completely untranslated tome.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/tomesummon()
|
||||
if(istype(src,/obj/effect/rune))
|
||||
@@ -94,8 +101,8 @@ var/list/sacrificed = list()
|
||||
return
|
||||
|
||||
|
||||
///Convert: The primary method of gaining new followers. Requires three cultists, doesn't work on loyalty implanted people, captains, or chaplains.
|
||||
|
||||
/////////////////////////////////////////THIRD RUNE
|
||||
|
||||
/obj/effect/rune/proc/convert()
|
||||
var/list/mob/living/cultsinrange = list()
|
||||
@@ -117,22 +124,6 @@ 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>"
|
||||
/*//convert no longer gives words
|
||||
//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 << "<span class='boldannounce'>And not a single fuck was given, exterminate the cult at all costs.</span>"
|
||||
@@ -147,8 +138,8 @@ var/list/sacrificed = list()
|
||||
return fizzle()
|
||||
|
||||
|
||||
///Summon Nar-Sie: Summons the avatar of Nar-Sie to wreak havoc on the station. Will turn walls and floors to cult version and make anyone it touches into a harvester.
|
||||
|
||||
/////////////////////////////////////////FOURTH RUNE
|
||||
|
||||
/obj/effect/rune/proc/tearreality()
|
||||
var/list/mob/living/carbon/human/cultist_count = list()
|
||||
@@ -189,7 +180,9 @@ var/list/sacrificed = list()
|
||||
else
|
||||
return fizzle()
|
||||
|
||||
/////////////////////////////////////////FIFTH RUNE
|
||||
|
||||
///EMP: Lets out a large EMP blast
|
||||
|
||||
|
||||
/obj/effect/rune/proc/emp(var/U,var/range_red) //range_red - var which determines by which number to reduce the default emp range, U is the source loc, needed because of talisman emps which are held in hand at the moment of using and that apparently messes things up -- Urist
|
||||
if(istype(src,/obj/effect/rune))
|
||||
@@ -204,7 +197,7 @@ var/list/sacrificed = list()
|
||||
empulse(U, (range_red - 2), range_red)
|
||||
qdel(rune)
|
||||
|
||||
/////////////////////////////////////////SIXTH RUNE
|
||||
///Blood Drain: Deals 1-25 damage to someone on top of it and heals an equivalent amount of brute damage to the user. Can be stacked. Too much blood drain = blood hunger that must be sated.
|
||||
|
||||
/obj/effect/rune/proc/drain()
|
||||
var/drain = 0
|
||||
@@ -244,32 +237,9 @@ var/list/sacrificed = list()
|
||||
return
|
||||
|
||||
|
||||
///Raise Dead: Requires two corpses. Brings one to life and gibs the other.
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////SEVENTH RUNE
|
||||
|
||||
/obj/effect/rune/proc/seer()
|
||||
if(usr.loc==src.loc)
|
||||
usr.say("Rash'tla sektath mal[pick("'","`")]zua. Zasan therium vivira. Itonis al'ra matum!")
|
||||
var/mob/living/carbon/human/user = usr
|
||||
if(user.see_invisible!=25 || (istype(user) && user.glasses)) //check for non humans
|
||||
user << "<span class='danger'>The world beyond flashes your eyes but disappears quickly, as if something is disrupting your vision.</span>"
|
||||
else
|
||||
user << "<span class='danger'>The world beyond opens to your eyes.</span>"
|
||||
var/see_temp = user.see_invisible
|
||||
user.see_invisible = SEE_INVISIBLE_OBSERVER
|
||||
user.seer = 1
|
||||
while(user.loc==src.loc)
|
||||
sleep(30)
|
||||
user.seer = 0
|
||||
user.see_invisible = see_temp
|
||||
return
|
||||
return fizzle()
|
||||
|
||||
/////////////////////////////////////////EIGHTH RUNE
|
||||
|
||||
/obj/effect/rune/proc/raise()
|
||||
var/mob/living/carbon/human/corpse_to_raise
|
||||
var/mob/living/carbon/human/body_to_sacrifice
|
||||
@@ -328,40 +298,31 @@ var/list/sacrificed = list()
|
||||
corpse_to_raise.SetStunned(0)
|
||||
corpse_to_raise.SetWeakened(0)
|
||||
corpse_to_raise.radiation = 0
|
||||
// corpse_to_raise.buckled = null
|
||||
// if(corpse_to_raise.handcuffed)
|
||||
// qdel(corpse_to_raise.handcuffed)
|
||||
// corpse_to_raise.update_inv_handcuffed(0)
|
||||
corpse_to_raise.stat = CONSCIOUS
|
||||
corpse_to_raise.updatehealth()
|
||||
corpse_to_raise.update_damage_overlays(0)
|
||||
|
||||
corpse_to_raise.key = ghost.key //the corpse will keep its old mind! but a new player takes ownership of it (they are essentially possessed)
|
||||
//This means, should that player leave the body, the original may re-enter
|
||||
usr.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!")
|
||||
if(usr.real_name == "Herbert West")
|
||||
usr.say("To life, to life, I bring them!")
|
||||
else
|
||||
usr.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!")
|
||||
corpse_to_raise.visible_message("<span class='danger'>[corpse_to_raise]'s eyes glow with a faint red as he stands up, slowly starting to breathe again.</span>", \
|
||||
"<span class='danger'>Life... I'm alive again...</span>", \
|
||||
"<span class='italics'>You hear a faint, slightly familiar whisper.</span>")
|
||||
body_to_sacrifice.visible_message("<span class='danger'>[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from his remains!</span>", \
|
||||
"<span class='danger'>You feel as your blood boils, tearing you apart.</span>", \
|
||||
"<span class='userdanger'>You feel a horrible sensation of being torn apart, and--</span>", \
|
||||
"<span class='italics'>You hear a thousand voices, all crying in pain.</span>")
|
||||
body_to_sacrifice.gib()
|
||||
|
||||
// if(ticker.mode.name == "cult")
|
||||
// ticker.mode:add_cultist(corpse_to_raise.mind)
|
||||
// else
|
||||
// ticker.mode.cult |= corpse_to_raise.mind
|
||||
|
||||
corpse_to_raise << "<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>"
|
||||
corpse_to_raise << "<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>"
|
||||
return
|
||||
|
||||
|
||||
///Veil: Makes all surrounding runes invisible. They cannot be used directly but still used indirectly (i.e. teleport...)
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////NINETH RUNE
|
||||
|
||||
/obj/effect/rune/proc/obscure(var/rad)
|
||||
var/S=0
|
||||
for(var/obj/effect/rune/R in orange(rad,src))
|
||||
@@ -388,7 +349,9 @@ var/list/sacrificed = list()
|
||||
call(/obj/effect/rune/proc/fizzle)()
|
||||
return
|
||||
|
||||
/////////////////////////////////////////TENTH RUNE
|
||||
|
||||
///Astral Journey: Lets a player explore around as a ghost but does 10 brute damage for every tick they are like that. If they are moved from the rune they cannot return.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/ajourney() //some bits copypastaed from admin tools - Urist
|
||||
if(usr.loc==src.loc)
|
||||
@@ -409,10 +372,9 @@ var/list/sacrificed = list()
|
||||
return fizzle()
|
||||
|
||||
|
||||
///Manifest: User must be standing on rune. When invoked, makes a culted human spawn. The user takes damage depending on how many humans there are. If the user moves, all manifested humans are killed.
|
||||
|
||||
|
||||
/////////////////////////////////////////ELEVENTH RUNE
|
||||
|
||||
/obj/effect/rune/proc/manifest()
|
||||
var/obj/effect/rune/this_rune = src
|
||||
src = null
|
||||
@@ -458,11 +420,9 @@ var/list/sacrificed = list()
|
||||
return
|
||||
|
||||
|
||||
///Imbue Talisman: Put a compatible rune near this one and a paper on top of the imbue rune. Activate, and the compatible rune will be imbued into the paper.
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////TWELFTH RUNE
|
||||
|
||||
/obj/effect/rune/proc/talisman()//only hide, emp, teleport, deafen, blind and tome runes can be imbued atm
|
||||
var/obj/item/weapon/paper/newtalisman
|
||||
var/unsuitable_newtalisman = 0
|
||||
@@ -542,52 +502,24 @@ var/list/sacrificed = list()
|
||||
else
|
||||
return fizzle()
|
||||
|
||||
/////////////////////////////////////////THIRTEENTH RUNE
|
||||
|
||||
/obj/effect/rune/proc/mend()
|
||||
var/mob/living/user = usr
|
||||
src = null
|
||||
user.say("Uhrast ka'hfa heldsagen ver[pick("'","`")]lot!")
|
||||
user.take_overall_damage(200, 0)
|
||||
runedec+=10
|
||||
user.visible_message("<span class='danger'>[user] keels over dead, his blood glowing blue as it escapes his body and dissipates into thin air.</span>", \
|
||||
"<span class='danger'>In the last moment of your humble life, you feel an immense pain as fabric of reality mends... with your blood.</span>", \
|
||||
"<span class='italics'>You hear faint rustle.</span>")
|
||||
for(,user.stat==2)
|
||||
sleep(600)
|
||||
if (!user)
|
||||
return
|
||||
runedec-=10
|
||||
return
|
||||
///Communicate: Static communication rune. Somewhat pointless with free communications with tomes.
|
||||
|
||||
|
||||
/////////////////////////////////////////FOURTEETH RUNE
|
||||
|
||||
// returns 0 if the rune is not used. returns 1 if the rune is used.
|
||||
/obj/effect/rune/proc/communicate()
|
||||
. = 1 // Default output is 1. If the rune is deleted it will return 1
|
||||
var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "")
|
||||
var/input = stripped_input(usr, "Please enter a message to tell to the other acolytes.", "Voice of Blood", "")
|
||||
if(!input)
|
||||
if (istype(src))
|
||||
if(istype(src))
|
||||
fizzle()
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
if(istype(src,/obj/effect/rune))
|
||||
usr.say("O bidai nabora se[pick("'","`")]sma!")
|
||||
else
|
||||
usr.whisper("O bidai nabora se[pick("'","`")]sma!")
|
||||
|
||||
if(istype(src,/obj/effect/rune))
|
||||
usr.say("[input]")
|
||||
else
|
||||
usr.whisper("[input]")
|
||||
for(var/mob/M in mob_list)
|
||||
if((M.mind && (M.mind in ticker.mode.cult)) || (M in dead_mob_list))
|
||||
M << "<span class='userdanger'>[input]</span>"
|
||||
cultist_commune(usr , 1, 1, input)
|
||||
return 1
|
||||
|
||||
/////////////////////////////////////////FIFTEENTH RUNE
|
||||
|
||||
///Sacrifice: Gibs a target as an offering. Gives tome words as a reward and if the target has a mind, spawns a soul shard with their shade contained within.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/sacrifice()
|
||||
var/list/mob/living/carbon/human/cultsinrange = list()
|
||||
@@ -705,21 +637,6 @@ var/list/sacrificed = list()
|
||||
stone_or_gib(M)
|
||||
for(var/mob/victim in src.loc) //TO-DO: Move the shite above into the mob's own sac_act - see /mob/living/simple_animal/pet/corgi/sac_act for an example
|
||||
victim.sac_act(src, victim) //Sacrifice procs are now seperate per mob, this allows us to allow sacrifice on as many mob types as we want without making an already clunky system worse
|
||||
/* for(var/mob/living/carbon/alien/A)
|
||||
for(var/mob/K in cultsinrange)
|
||||
K.say("Barhah hra zar'garis!")
|
||||
A.dust() /// A.gib() doesnt work for some reason, and dust() leaves that skull and bones thingy which we dont really need.
|
||||
if (ticker.mode.name == "cult")
|
||||
if(prob(75))
|
||||
usr << "\red The Geometer of Blood accepts your exotic sacrifice."
|
||||
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."
|
||||
else
|
||||
usr << "\red The Geometer of Blood accepts your exotic sacrifice."
|
||||
return
|
||||
return fizzle() */
|
||||
|
||||
/obj/effect/rune/proc/sac_grant_word(var/mob/living/C) //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(C.mind.cult_words.len != ticker.mode.allwords.len) // No point running if they already know everything
|
||||
@@ -739,7 +656,8 @@ var/list/sacrificed = list()
|
||||
T.gib()
|
||||
|
||||
|
||||
/////////////////////////////////////////SIXTEENTH RUNE
|
||||
///Reveal: Reverses the Veil rune's effect, revealing all hidden runes.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/revealrunes(var/obj/W as obj)
|
||||
var/go=0
|
||||
@@ -783,7 +701,9 @@ var/list/sacrificed = list()
|
||||
call(/obj/effect/rune/proc/fizzle)()
|
||||
return
|
||||
|
||||
/////////////////////////////////////////SEVENTEENTH RUNE
|
||||
|
||||
///Wall: Makes the rune dense and uncrossable. You can invoke it again to make it normal again. Deals 2 brute damage when used.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/wall()
|
||||
usr.say("Khari[pick("'","`")]d! Eske'te tannin!")
|
||||
@@ -796,9 +716,11 @@ var/list/sacrificed = list()
|
||||
usr << "<span class='danger'>Your blood flows into the rune, and you feel as the rune releases its grasp on space.</span>"
|
||||
return
|
||||
|
||||
/////////////////////////////////////////EIGHTTEENTH RUNE
|
||||
|
||||
/obj/effect/rune/proc/freedom()
|
||||
///Free Cultist: If the cultist is not walking free, makes it so.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/freedom() //MURICA ;_;7
|
||||
var/mob/living/user = usr
|
||||
var/list/mob/living/cultists = new
|
||||
for(var/datum/mind/H in ticker.mode.cult)
|
||||
@@ -847,7 +769,9 @@ var/list/sacrificed = list()
|
||||
qdel(src)
|
||||
return fizzle(user)
|
||||
|
||||
/////////////////////////////////////////NINETEENTH RUNE
|
||||
|
||||
///Summon Cultist: Requires 3 cultists, summons a cultist to the rune's location and does 25 brute to all users.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/cultsummon()
|
||||
var/mob/living/user = usr
|
||||
@@ -881,7 +805,9 @@ var/list/sacrificed = list()
|
||||
qdel(src)
|
||||
return fizzle(user)
|
||||
|
||||
/////////////////////////////////////////TWENTIETH RUNES
|
||||
|
||||
///Deafen: Makes all nearby non-cultists deaf.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/deafen()
|
||||
if(istype(src,/obj/effect/rune))
|
||||
@@ -923,6 +849,10 @@ var/list/sacrificed = list()
|
||||
V.show_message("<span class='danger'>Dust flows from [usr]'s hands for a moment, and the world suddenly becomes quiet..</span>", 3)
|
||||
return
|
||||
|
||||
|
||||
///Blind: Makes all non-cultists nearby blind. Combine with Deafen to make the entire shuttle go into a panic and laugh as they bumble around.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/blind()
|
||||
if(istype(src,/obj/effect/rune))
|
||||
var/affected = 0
|
||||
@@ -965,15 +895,11 @@ var/list/sacrificed = list()
|
||||
return
|
||||
|
||||
|
||||
///Blood Boil: Every non-cultist nearby will take 51 burn and 51 brute damage. 5% chance for them to gib as well. Users will take 15 brute. 10% chance for the rune to blow up.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/bloodboil() //cultists need at least one DANGEROUS rune. Even if they're all stealthy.
|
||||
/*
|
||||
var/list/mob/living/carbon/cultists = new
|
||||
for(var/datum/mind/H in ticker.mode.cult)
|
||||
if (istype(H.current,/mob/living/carbon))
|
||||
cultists+=H.current
|
||||
*/
|
||||
var/culcount = 0 //also, wording for it is old wording for obscure rune, which is now hide-see-blood.
|
||||
// var/list/cultboil = list(cultists-usr) //and for this words are destroy-see-blood.
|
||||
var/culcount = 0
|
||||
for(var/mob/living/carbon/C in orange(1,src))
|
||||
if(iscultist(C) && !C.stat)
|
||||
culcount++
|
||||
@@ -1001,35 +927,9 @@ var/list/sacrificed = list()
|
||||
return fizzle()
|
||||
return
|
||||
|
||||
// WIP rune, I'll wait for Rastaf0 to add limited blood.
|
||||
|
||||
/obj/effect/rune/proc/burningblood()
|
||||
var/culcount = 0
|
||||
for(var/mob/living/carbon/C in orange(1,src))
|
||||
if(iscultist(C) && !C.stat)
|
||||
culcount++
|
||||
if(culcount >= 5)
|
||||
for(var/obj/effect/rune/R in world)
|
||||
if(R.blood_DNA == src.blood_DNA)
|
||||
for(var/mob/living/M in orange(2,R))
|
||||
M.take_overall_damage(0,15)
|
||||
if (R.invisibility>M.see_invisible)
|
||||
M << "<span class='danger'>Aargh it burns!</span>"
|
||||
else
|
||||
M << "<span class='danger'>Rune suddenly ignites, burning you!</span>"
|
||||
var/turf/T = get_turf(R)
|
||||
T.hotspot_expose(700,125)
|
||||
for(var/obj/effect/decal/cleanable/blood/B in world)
|
||||
if(B.blood_DNA == src.blood_DNA)
|
||||
for(var/mob/living/M in orange(1,B))
|
||||
M.take_overall_damage(0,5)
|
||||
M << "<span class='danger'>Blood suddenly ignites, burning you!</span>"
|
||||
var/turf/T = get_turf(B)
|
||||
T.hotspot_expose(700,125)
|
||||
qdel(B)
|
||||
qdel(src)
|
||||
///Stun: Everyone nearby would be stunned for a -very- short time. If used in a talisman, it stuns and mutes a single target.
|
||||
|
||||
////////// Rune 24 (counting burningblood, which kinda doesnt work yet.)
|
||||
|
||||
/obj/effect/rune/proc/runestun(var/mob/living/T as mob)
|
||||
if(istype(src,/obj/effect/rune)) ///When invoked as rune, flash and stun everyone around.
|
||||
@@ -1047,7 +947,7 @@ var/list/sacrificed = list()
|
||||
else if(issilicon(L))
|
||||
var/mob/living/silicon/S = L
|
||||
S.Weaken(5)
|
||||
S.show_message("<span class='danger'>BZZZT... The rune has exploded in a bright flash.</span>", 3)
|
||||
S.show_message("<span class='danger'>!@(%* BZZZZZT !@(%!)$</span>", 3)
|
||||
qdel(src)
|
||||
else ///When invoked as talisman, stun and mute the target mob.
|
||||
usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!")
|
||||
@@ -1070,7 +970,9 @@ var/list/sacrificed = list()
|
||||
C.Stun(10)
|
||||
return
|
||||
|
||||
/////////////////////////////////////////TWENTY-FIFTH RUNE
|
||||
|
||||
///Armor: The user will be armed with cultist garb, a trophy rack, and a high-damage sword. If items are in these slots, they will not be equipped and simply deleted.
|
||||
|
||||
|
||||
/obj/effect/rune/proc/armor()
|
||||
var/mob/living/carbon/human/user = usr
|
||||
@@ -1091,6 +993,10 @@ var/list/sacrificed = list()
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
///Summon Shell: Summons a construct shell if there's four plasteel sheets on top of the rune
|
||||
|
||||
|
||||
/obj/effect/rune/proc/summon_shell() // Summons a construct shell
|
||||
for(var/obj/item/stack/sheet/plasteel/PS in src.loc) //I could probably combine the amounts but I'm too lazy to compensate for others' lazyness
|
||||
if(PS.amount >= 4) // may need increasing?
|
||||
|
||||
Reference in New Issue
Block a user