Files
vgstation13/code/game/gamemodes/cult/runes.dm
Cael_Aislinn aae42d928a Merge branch 'incremental_tg' r5200 into bs12_with_tgport
Conflicts:
	baystation12.dme
	code/__HELPERS/global_lists.dm
	code/__HELPERS/type2type.dm
	code/__HELPERS/unsorted.dm
	code/datums/datumvars.dm
	code/datums/disease.dm
	code/datums/organs/organ_external.dm
	code/datums/supplypacks.dm
	code/defines/obj.dm
	code/game/area/areas.dm
	code/game/atoms.dm
	code/game/gamemodes/cult/cult_structures.dm
	code/game/gamemodes/cult/runes.dm
	code/game/gamemodes/events.dm
	code/game/gamemodes/events/ninja_equipment.dm
	code/game/gamemodes/events/space_ninja.dm
	code/game/gamemodes/game_mode.dm
	code/game/gamemodes/gameticker.dm
	code/game/hud.dm
	code/game/jobs/access.dm
	code/game/jobs/job/civilian.dm
	code/game/machinery/alarm.dm
	code/game/machinery/cloning.dm
	code/game/machinery/computer/cloning.dm
	code/game/machinery/computer/medical.dm
	code/game/machinery/computer/syndicate_shuttle.dm
	code/game/machinery/telecomms/broadcaster.dm
	code/game/machinery/telecomms/machine_interactions.dm
	code/game/objects/effects/decals/contraband.dm
	code/game/objects/effects/signs.dm
	code/game/objects/items/devices/PDA/PDA.dm
	code/game/objects/items/devices/PDA/cart.dm
	code/game/objects/items/weapons/photography.dm
	code/game/objects/structures/door_assembly.dm
	code/game/objects/structures/window.dm
	code/game/sound.dm
	code/game/verbs/ooc.dm
	code/global.dm
	code/modules/DetectiveWork/detective_work.dm
	code/modules/DetectiveWork/evidence.dm
	code/modules/DetectiveWork/footprints_and_rag.dm
	code/modules/DetectiveWork/scanner.dm
	code/modules/admin/player_panel.dm
	code/modules/admin/verbs/adminhelp.dm
	code/modules/admin/verbs/adminpm.dm
	code/modules/awaymissions/gateway.dm
	code/modules/client/client defines.dm
	code/modules/client/client procs.dm
	code/modules/client/preferences.dm
	code/modules/clothing/spacesuits/rig.dm
	code/modules/mining/machine_processing.dm
	code/modules/mining/machine_stacking.dm
	code/modules/mining/mint.dm
	code/modules/mining/ores_coins.dm
	code/modules/mining/satchel_ore_boxdm.dm
	code/modules/mob/living/carbon/alien/alien.dm
	code/modules/mob/living/carbon/carbon.dm
	code/modules/mob/living/carbon/carbon_defines.dm
	code/modules/mob/living/carbon/human/human_damage.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/mob/living/carbon/human/update_icons.dm
	code/modules/mob/living/living.dm
	code/modules/mob/living/say.dm
	code/modules/mob/mob.dm
	code/modules/mob/mob_cleanup.dm
	code/modules/mob/mob_defines.dm
	code/modules/mob/mob_transformation_simple.dm
	code/modules/mob/new_player/login.dm
	code/modules/mob/new_player/new_player.dm
	code/modules/mob/new_player/preferences_setup.dm
	code/modules/mob/new_player/savefile.dm
	code/modules/mob/new_player/sprite_accessories.dm
	code/modules/paperwork/folders.dm
	code/modules/paperwork/paper.dm
	code/modules/paperwork/photocopier.dm
	code/modules/projectiles/guns/energy/special.dm
	code/modules/projectiles/guns/projectile/automatic.dm
	code/setup.dm
	code/unused/mining/datum_processing_recipe.dm
	code/unused/powerarmor/powerarmor.dm
	code/world.dm
	html/changelog.html
	icons/effects/96x96.dmi
	icons/mob/head.dmi
	icons/mob/items_lefthand.dmi
	icons/mob/items_righthand.dmi
	icons/mob/suit.dmi
	icons/obj/clothing/hats.dmi
	icons/obj/clothing/suits.dmi
	icons/obj/hydroponics.dmi
	icons/obj/items.dmi
	icons/turf/areas.dmi
	icons/turf/walls.dmi
	maps/RandomZLevels/fileList.txt
	maps/RandomZLevels/spacebattle.dmm

Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
2013-01-07 00:23:22 +10:00

1041 lines
36 KiB
Plaintext

var/list/sacrificed = list()
/obj/effect/rune
/////////////////////////////////////////FIRST RUNE
proc
teleport(var/key)
var/mob/living/user = usr
var/allrunesloc[]
allrunesloc = new/list()
var/index = 0
// var/tempnum = 0
for(var/obj/effect/rune/R in world)
if(R == src)
continue
if(R.word1 == wordtravel && R.word2 == wordself && R.word3 == key && R.z != 2)
index++
allrunesloc.len = index
allrunesloc[index] = R.loc
if(index >= 5)
user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric"
if (istype(user, /mob/living))
user.take_overall_damage(5, 0)
del(src)
if(allrunesloc && index != 0)
if(istype(src,/obj/effect/rune))
user.say("Sas[pick("'","`")]so c'arta forbici!")//Only you can stop auto-muting
else
user.whisper("Sas[pick("'","`")]so c'arta forbici!")
user.visible_message("\red [user] disappears in a flash of red light!", \
"\red You feel as your body gets dragged through the dimension of Nar-Sie!", \
"\red You hear a sickening crunch and sloshing of viscera.")
user.loc = allrunesloc[rand(1,index)]
return
if(istype(src,/obj/effect/rune))
return fizzle() //Use friggin manuals, Dorf, your list was of zero length.
else
call(/obj/effect/rune/proc/fizzle)()
return
itemport(var/key)
// var/allrunesloc[]
// allrunesloc = new/list()
// var/index = 0
// var/tempnum = 0
var/culcount = 0
var/runecount = 0
var/obj/effect/rune/IP = null
var/mob/living/user = usr
for(var/obj/effect/rune/R in world)
if(R == src)
continue
if(R.word1 == wordtravel && R.word2 == wordother && R.word3 == key)
IP = R
runecount++
if(runecount >= 2)
user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric"
if (istype(user, /mob/living))
user.take_overall_damage(5, 0)
del(src)
for(var/mob/living/carbon/C in orange(1,src))
if(iscultist(C) && !C.stat)
culcount++
if(culcount>=3)
user.say("Sas[pick("'","`")]so c'arta forbici tarem!")
user.visible_message("\red You feel air moving from the rune - like as it was swapped with somewhere else.", \
"\red You feel air moving from the rune - like as it was swapped with somewhere else.", \
"\red You smell ozone.")
for(var/obj/O in src.loc)
if(!O.anchored)
O.loc = IP.loc
for(var/mob/M in src.loc)
M.loc = IP.loc
return
return fizzle()
/////////////////////////////////////////SECOND RUNE
tomesummon()
if(istype(src,/obj/effect/rune))
usr.say("N[pick("'","`")]ath reth sh'yro eth d'raggathnor!")
else
usr.whisper("N[pick("'","`")]ath reth sh'yro eth d'raggathnor!")
usr.visible_message("\red Rune disappears with a flash of red light, and in its place now a book lies.", \
"\red You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a book.", \
"\red You hear a pop and smell ozone.")
if(istype(src,/obj/effect/rune))
new /obj/item/weapon/tome(src.loc)
else
new /obj/item/weapon/tome(usr.loc)
del(src)
return
/////////////////////////////////////////THIRD RUNE
convert()
for(var/mob/living/carbon/M in src.loc)
if(iscultist(M))
continue
if(M.stat==2)
continue
usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!")
M.visible_message("\red [M] writhes in pain as the markings below him glow a bloody red.", \
"\red AAAAAAHHHH!.", \
"\red You hear an anguished scream.")
if(is_convertable_to_cult(M.mind))
ticker.mode.add_cultist(M.mind)
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>"
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>"
return 0
return fizzle()
/////////////////////////////////////////FOURTH RUNE
tearreality()
var/cultist_count = 0
for(var/mob/M in range(1,src))
if(iscultist(M) && !M.stat)
M.say("Tok-lyr rqa'nap g[pick("'","`")]lt-ulotf!")
cultist_count += 1
if(cultist_count >= 9)
new /obj/machinery/singularity/narsie/large(src.loc)
if(ticker.mode.name == "cult")
ticker.mode:eldergod = 0
return
else
return fizzle()
/////////////////////////////////////////FIFTH RUNE
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))
usr.say("Ta'gh fara[pick("'","`")]qha fel d'amar det!")
else
usr.whisper("Ta'gh fara[pick("'","`")]qha fel d'amar det!")
playsound(U, 'sound/items/Welder2.ogg', 25, 1)
var/turf/T = get_turf(U)
if(T)
T.hotspot_expose(700,125)
var/rune = src // detaching the proc - in theory
empulse(U, (range_red - 2), range_red)
del(rune)
return
/////////////////////////////////////////SIXTH RUNE
drain()
var/drain = 0
for(var/obj/effect/rune/R in world)
if(R.word1==wordtravel && R.word2==wordblood && R.word3==wordself)
for(var/mob/living/carbon/D in R.loc)
if(D.stat!=2)
var/bdrain = rand(1,25)
D << "\red You feel weakened."
D.take_overall_damage(bdrain, 0)
drain += bdrain
if(!drain)
return fizzle()
usr.say ("Yu[pick("'","`")]gular faras desdae. Havas mithum javara. Umathar uf'kal thenar!")
usr.visible_message("\red Blood flows from the rune into [usr]!", \
"\red The blood starts flowing from the rune and into your frail mortal body. You feel... empowered.", \
"\red You hear a liquid flowing.")
var/mob/living/user = usr
if(user.bhunger)
user.bhunger = max(user.bhunger-2*drain,0)
if(drain>=50)
user.visible_message("\red [user]'s eyes give off eerie red glow!", \
"\red ...but it wasn't nearly enough. You crave, crave for more. The hunger consumes you from within.", \
"\red You hear a heartbeat.")
user.bhunger += drain
src = user
spawn()
for (,user.bhunger>0,user.bhunger--)
sleep(50)
user.take_overall_damage(3, 0)
return
user.heal_organ_damage(drain%5, 0)
drain-=drain%5
for (,drain>0,drain-=5)
sleep(2)
user.heal_organ_damage(5, 0)
return
/////////////////////////////////////////SEVENTH RUNE
seer()
if(usr.loc==src.loc)
usr.say("Rash'tla sektath mal[pick("'","`")]zua. Zasan therium vivira. Itonis al'ra matum!")
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."
else
usr << "\red The world beyond opens to your eyes."
usr.see_invisible = SEE_INVISIBLE_OBSERVER
usr.seer = 1
return
return fizzle()
/////////////////////////////////////////EIGHTH RUNE
raise()
var/mob/living/carbon/human/corpse_to_raise
var/mob/living/carbon/human/body_to_sacrifice
var/is_sacrifice_target = 0
for(var/mob/living/carbon/human/M in src.loc)
if(M.stat == DEAD)
if(ticker.mode.name == "cult" && M.mind == ticker.mode:sacrifice_target)
is_sacrifice_target = 1
else
corpse_to_raise = M
if(M.key)
M.ghostize(1) //kick them out of their body
break
if(!corpse_to_raise)
if(is_sacrifice_target)
usr << "\red The Geometer of blood wants this mortal for himself."
return fizzle()
is_sacrifice_target = 0
find_sacrifice:
for(var/obj/effect/rune/R in world)
if(R.word1==wordblood && R.word2==wordjoin && R.word3==wordhell)
for(var/mob/living/carbon/human/N in R.loc)
if(ticker.mode.name == "cult" && N.mind && N.mind == ticker.mode:sacrifice_target)
is_sacrifice_target = 1
else
if(N.stat!= DEAD)
body_to_sacrifice = N
break find_sacrifice
if(!body_to_sacrifice)
if (is_sacrifice_target)
usr << "\red The Geometer of blood wants that corpse for himself."
else
usr << "\red The sacrifical corpse is not dead. You must free it from this world of illusions before it may be used."
return fizzle()
var/mob/dead/observer/ghost
for(var/mob/dead/observer/O in loc)
if(!O.client) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
ghost = O
break
if(!ghost)
usr << "\red You require a restless spirit which clings to this world. Beckon their prescence with the sacred chants of Nar-Sie."
return fizzle()
for(var/datum/organ/external/affecting in corpse_to_raise.organs)
affecting.heal_damage(1000, 1000)
corpse_to_raise.setToxLoss(0)
corpse_to_raise.setOxyLoss(0)
corpse_to_raise.SetParalysis(0)
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)
// del(corpse_to_raise.handcuffed)
// corpse_to_raise.update_inv_handcuffed(0)
corpse_to_raise.stat = CONSCIOUS
corpse_to_raise.updatehealth()
corpse_to_raise.UpdateDamageIcon()
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!")
corpse_to_raise.visible_message("\red [corpse_to_raise]'s eyes glow with a faint red as he stands up, slowly starting to breathe again.", \
"\red Life... I'm alive again...", \
"\red You hear a faint, slightly familiar whisper.")
body_to_sacrifice.visible_message("\red [body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from his remains!", \
"\red You feel as your blood boils, tearing you apart.", \
"\red You hear a thousand voices, all crying in pain.")
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
/////////////////////////////////////////NINETH RUNE
obscure(var/rad)
var/S=0
for(var/obj/effect/rune/R in orange(rad,src))
if(R!=src)
R:visibility=0
S=1
if(S)
if(istype(src,/obj/effect/rune))
usr.say("Kla[pick("'","`")]atu barada nikt'o!")
for (var/mob/V in viewers(src))
V.show_message("\red The rune turns into gray dust, veiling the surrounding runes.", 3)
del(src)
else
usr.whisper("Kla[pick("'","`")]atu barada nikt'o!")
usr << "\red Your talisman turns into gray dust, veiling the surrounding runes."
for (var/mob/V in orange(1,src))
if(V!=usr)
V.show_message("\red Dust emanates from [usr]'s hands for a moment.", 3)
return
if(istype(src,/obj/effect/rune))
return fizzle()
else
call(/obj/effect/rune/proc/fizzle)()
return
/////////////////////////////////////////TENTH RUNE
ajourney() //some bits copypastaed from admin tools - Urist
if(usr.loc==src.loc)
var/mob/living/carbon/human/L = usr
usr.say("Fwe[pick("'","`")]sh mah erl nyag r'ya!")
usr.visible_message("\red [usr]'s eyes glow blue as \he freezes in place, absolutely motionless.", \
"\red The shadow that is your spirit separates itself from your body. You are now in the realm beyond. While this is a great sight, being here strains your mind and body. Hurry...", \
"\red You hear only complete silence for a moment.")
usr.ghostize(1)
L.ajourn = 1
while(L)
if(L.key)
L.ajourn=0
return
else
L.take_organ_damage(10, 0)
sleep(100)
return fizzle()
/////////////////////////////////////////ELEVENTH RUNE
manifest()
var/obj/effect/rune/this_rune = src
src = null
if(usr.loc!=this_rune.loc)
return this_rune.fizzle()
var/mob/dead/observer/ghost
for(var/mob/dead/observer/O in this_rune.loc)
if(!O.client) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
ghost = O
break
if(!ghost)
return this_rune.fizzle()
usr.say("Gal'h'rfikk harfrandid mud[pick("'","`")]gib!")
var/mob/living/carbon/human/dummy/D = new(this_rune.loc)
usr.visible_message("\red A shape forms in the center of the rune. A shape of... a man.", \
"\red A shape forms in the center of the rune. A shape of... a man.", \
"\red You hear liquid flowing.")
D.real_name = "Unknown"
for(var/obj/item/weapon/paper/P in this_rune.loc)
if(P.info)
D.real_name = copytext(P.info, 1, MAX_NAME_LEN)
break
D.universal_speak = 1
D.status_flags &= ~GODMODE
D.key = ghost.key
if(ticker.mode.name == "cult")
ticker.mode:add_cultist(D.mind)
else
ticker.mode.cult+=D.mind
D.mind.special_role = "Cultist"
D << "<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>"
D << "<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>"
var/mob/living/user = usr
while(this_rune && user && user.stat==CONSCIOUS && user.client && user.loc==this_rune.loc)
user.take_organ_damage(1, 0)
sleep(30)
if(D)
D.visible_message("\red [D] slowly dissipates into dust and bones.", \
"\red You feel pain, as bonds formed between your soul and this homunculus break.", \
"\red You hear faint rustle.")
D.dust()
return
/////////////////////////////////////////TWELFTH RUNE
talisman()//only hide, emp, teleport, deafen, blind and tome runes can be imbued atm
var/obj/item/weapon/paper/newtalisman
var/unsuitable_newtalisman = 0
for(var/obj/item/weapon/paper/P in src.loc)
if(!P.info)
newtalisman = P
break
else
unsuitable_newtalisman = 1
if (!newtalisman)
if (unsuitable_newtalisman)
usr << "\red The blank is tainted. It is unsuitable."
return fizzle()
var/obj/effect/rune/imbued_from
var/obj/item/weapon/paper/talisman/T
for(var/obj/effect/rune/R in orange(1,src))
if(R==src)
continue
if(R.word1==wordtravel && R.word2==wordself) //teleport
T = new(src.loc)
T.imbue = "[R.word3]"
T.info = "[R.word3]"
imbued_from = R
break
if(R.word1==wordsee && R.word2==wordblood && R.word3==wordhell) //tome
T = new(src.loc)
T.imbue = "newtome"
imbued_from = R
break
if(R.word1==worddestr && R.word2==wordsee && R.word3==wordtech) //emp
T = new(src.loc)
T.imbue = "emp"
imbued_from = R
break
if(R.word1==wordblood && R.word2==wordsee && R.word3==worddestr) //conceal
T = new(src.loc)
T.imbue = "conceal"
imbued_from = R
break
if(R.word1==wordhell && R.word2==worddestr && R.word3==wordother) //armor
T = new(src.loc)
T.imbue = "armor"
imbued_from = R
break
if(R.word1==wordblood && R.word2==wordsee && R.word3==wordhide) //reveal
T = new(src.loc)
T.imbue = "revealrunes"
imbued_from = R
break
if(R.word1==wordhide && R.word2==wordother && R.word3==wordsee) //deafen
T = new(src.loc)
T.imbue = "deafen"
imbued_from = R
break
if(R.word1==worddestr && R.word2==wordsee && R.word3==wordother) //blind
T = new(src.loc)
T.imbue = "blind"
imbued_from = R
break
if(R.word1==wordself && R.word2==wordother && R.word3==wordtech) //communicat
T = new(src.loc)
T.imbue = "communicate"
imbued_from = R
break
if(R.word1==wordjoin && R.word2==wordhide && R.word3==wordtech) //communicat
T = new(src.loc)
T.imbue = "runestun"
imbued_from = R
break
if (imbued_from)
for (var/mob/V in viewers(src))
V.show_message("\red The runes turn into dust, which then forms into an arcane image on the paper.", 3)
usr.say("H'drak v[pick("'","`")]loso, mir'kanas verbot!")
del(imbued_from)
del(newtalisman)
else
return fizzle()
/////////////////////////////////////////THIRTEENTH RUNE
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("\red [user] keels over dead, his blood glowing blue as it escapes his body and dissipates into thin air.", \
"\red In the last moment of your humble life, you feel an immense pain as fabric of reality mends... with your blood.", \
"\red You hear faint rustle.")
for(,user.stat==2)
sleep(600)
if (!user)
return
runedec-=10
return
/////////////////////////////////////////FOURTEETH RUNE
// returns 0 if the rune is not used. returns 1 if the rune is used.
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", "")
if(!input)
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/datum/mind/H in ticker.mode.cult)
if (H.current)
H.current << "\red \b [input]"
del(src)
return 1
/////////////////////////////////////////FIFTEENTH RUNE
sacrifice()
var/list/mob/living/carbon/human/cultsinrange = list()
var/list/mob/living/carbon/human/victims = list()
for(var/mob/living/carbon/human/V in src.loc)//Checks for non-cultist humans to sacrifice
if(ishuman(V))
if(!(iscultist(V)))
victims += V//Checks for cult status and mob type
for(var/obj/item/I in src.loc)//Checks for MMIs/brains/Intellicards
if(istype(I,/obj/item/brain))
var/obj/item/brain/B = I
victims += B.brainmob
else if(istype(I,/obj/item/device/mmi))
var/obj/item/device/mmi/B = I
victims += B.brainmob
else if(istype(I,/obj/item/device/aicard))
for(var/mob/living/silicon/ai/A in I)
victims += A
for(var/mob/living/carbon/C in orange(1,src))
if(iscultist(C) && !C.stat)
cultsinrange += C
C.say("Barhah hra zar[pick("'","`")]garis!")
for(var/mob/H in victims)
if (ticker.mode.name == "cult")
if(H.mind == ticker.mode:sacrifice_target)
if(cultsinrange.len >= 3)
sacrificed += H.mind
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
usr << "\red The Geometer of Blood accepts this sacrifice, your objective is now complete."
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."
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
else
if(prob(40))
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, a mere dead body is not enough to satisfy Him."
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
else
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))
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, a mere dead body is not enough to satisfy Him."
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
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."
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
else
if(prob(40))
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, a mere dead body is not enough to satisfy Him."
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
else
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))
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, a mere dead body is not enough to satisfy Him."
if(isrobot(H))
H.dust()//To prevent the MMI from remaining
else
H.gib()
for(var/mob/living/carbon/monkey/M in src.loc)
if (ticker.mode.name == "cult")
if(M.mind == ticker.mode:sacrifice_target)
if(cultsinrange.len >= 3)
sacrificed += M.mind
usr << "\red The Geometer of Blood accepts this sacrifice, your objective is now complete."
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))
usr << "\red The Geometer of Blood accepts your meager sacrifice."
ticker.mode:grant_runeword(usr)
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))
ticker.mode.grant_runeword(usr)
M.gib()
/* 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."
ticker.mode:grant_runeword(usr)
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() */
/////////////////////////////////////////SIXTEENTH RUNE
revealrunes(var/obj/W as obj)
var/go=0
var/rad
var/S=0
if(istype(W,/obj/effect/rune))
rad = 6
go = 1
if (istype(W,/obj/item/weapon/paper/talisman))
rad = 4
go = 1
if (istype(W,/obj/item/weapon/nullrod))
rad = 1
go = 1
if(go)
for(var/obj/effect/rune/R in orange(rad,src))
if(R!=src)
R:visibility=15
S=1
if(S)
if(istype(W,/obj/item/weapon/nullrod))
usr << "\red Arcane markings suddenly glow from underneath a thin layer of dust!"
return
if(istype(W,/obj/effect/rune))
usr.say("Nikt[pick("'","`")]o barada kla'atu!")
for (var/mob/V in viewers(src))
V.show_message("\red The rune turns into red dust, reveaing the surrounding runes.", 3)
del(src)
return
if(istype(W,/obj/item/weapon/paper/talisman))
usr.whisper("Nikt[pick("'","`")]o barada kla'atu!")
usr << "\red Your talisman turns into red dust, revealing the surrounding runes."
for (var/mob/V in orange(1,usr.loc))
if(V!=usr)
V.show_message("\red Red dust emanates from [usr]'s hands for a moment.", 3)
return
return
if(istype(W,/obj/effect/rune))
return fizzle()
if(istype(W,/obj/item/weapon/paper/talisman))
call(/obj/effect/rune/proc/fizzle)()
return
/////////////////////////////////////////SEVENTEENTH RUNE
wall()
usr.say("Khari[pick("'","`")]d! Eske'te tannin!")
src.density = !src.density
var/mob/living/user = usr
user.take_organ_damage(2, 0)
if(src.density)
usr << "\red Your blood flows into the rune, and you feel that the very space over the rune thickens."
else
usr << "\red Your blood flows into the rune, and you feel as the rune releases its grasp on space."
return
/////////////////////////////////////////EIGHTTEENTH RUNE
freedom()
var/mob/living/user = usr
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/list/mob/living/carbon/users = new
for(var/mob/living/carbon/C in orange(1,src))
if(iscultist(C) && !C.stat)
users+=C
if(users.len>=3)
var/mob/living/carbon/cultist = input("Choose the one who you want to free", "Followers of Geometer") as null|anything in (cultists - users)
if(!cultist)
return fizzle()
if (cultist == user) //just to be sure.
return
if(!(cultist.buckled || \
cultist.handcuffed || \
istype(cultist.wear_mask, /obj/item/clothing/mask/muzzle) || \
(istype(cultist.loc, /obj/structure/closet)&&cultist.loc:welded) || \
(istype(cultist.loc, /obj/structure/closet/secure_closet)&&cultist.loc:locked) || \
(istype(cultist.loc, /obj/machinery/dna_scannernew)&&cultist.loc:locked) \
))
user << "\red The [cultist] is already free."
return
cultist.buckled = null
if (cultist.handcuffed)
cultist.handcuffed.loc = cultist.loc
cultist.handcuffed = null
cultist.update_inv_handcuffed()
if (cultist.legcuffed)
cultist.legcuffed.loc = cultist.loc
cultist.legcuffed = null
cultist.update_inv_legcuffed()
if (istype(cultist.wear_mask, /obj/item/clothing/mask/muzzle))
cultist.u_equip(cultist.wear_mask)
if(istype(cultist.loc, /obj/structure/closet)&&cultist.loc:welded)
cultist.loc:welded = 0
if(istype(cultist.loc, /obj/structure/closet/secure_closet)&&cultist.loc:locked)
cultist.loc:locked = 0
if(istype(cultist.loc, /obj/machinery/dna_scannernew)&&cultist.loc:locked)
cultist.loc:locked = 0
for(var/mob/living/carbon/C in users)
user.take_overall_damage(15, 0)
C.say("Khari[pick("'","`")]d! Gual'te nikka!")
del(src)
return fizzle()
/////////////////////////////////////////NINETEENTH RUNE
cultsummon()
var/mob/living/user = usr
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/list/mob/living/carbon/users = new
for(var/mob/living/carbon/C in orange(1,src))
if(iscultist(C) && !C.stat)
users+=C
if(users.len>=3)
var/mob/living/carbon/cultist = input("Choose the one who you want to summon", "Followers of Geometer") as null|anything in (cultists - user)
if(!cultist)
return fizzle()
if (cultist == user) //just to be sure.
return
if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/structure/closet)))
user << "\red You cannot summon the [cultist], for his shackles of blood are strong"
return fizzle()
cultist.loc = src.loc
cultist.lying = 1
cultist.regenerate_icons()
for(var/mob/living/carbon/human/C in orange(1,src))
if(iscultist(C) && !C.stat)
C.say("N'ath reth sh'yro eth d[pick("'","`")]rekkathnor!")
C.take_overall_damage(25, 0)
user.visible_message("\red Rune disappears with a flash of red light, and in its place now a body lies.", \
"\red You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a body.", \
"\red You hear a pop and smell ozone.")
del(src)
return fizzle()
/////////////////////////////////////////TWENTIETH RUNES
deafen()
if(istype(src,/obj/effect/rune))
var/affected = 0
for(var/mob/living/carbon/C in range(7,src))
if (iscultist(C))
continue
var/obj/item/weapon/nullrod/N = locate() in C
if(N)
continue
C.ear_deaf += 50
C.show_message("\red The world around you suddenly becomes quiet.", 3)
affected++
if(prob(1))
C.sdisabilities |= DEAF
if(affected)
usr.say("Sti[pick("'","`")] kaliedir!")
usr << "\red The world becomes quiet as the deafening rune dissipates into fine dust."
del(src)
else
return fizzle()
else
var/affected = 0
for(var/mob/living/carbon/C in range(7,usr))
if (iscultist(C))
continue
var/obj/item/weapon/nullrod/N = locate() in C
if(N)
continue
C.ear_deaf += 30
//talismans is weaker.
C.show_message("\red The world around you suddenly becomes quiet.", 3)
affected++
if(affected)
usr.whisper("Sti[pick("'","`")] kaliedir!")
usr << "\red Your talisman turns into gray dust, deafening everyone around."
for (var/mob/V in orange(1,src))
if(!(iscultist(V)))
V.show_message("\red Dust flows from [usr]'s hands for a moment, and the world suddenly becomes quiet..", 3)
return
blind()
if(istype(src,/obj/effect/rune))
var/affected = 0
for(var/mob/living/carbon/C in viewers(src))
if (iscultist(C))
continue
var/obj/item/weapon/nullrod/N = locate() in C
if(N)
continue
C.eye_blurry += 50
C.eye_blind += 20
if(prob(5))
C.disabilities |= NEARSIGHTED
if(prob(10))
C.sdisabilities |= BLIND
C.show_message("\red Suddenly you see red flash that blinds you.", 3)
affected++
if(affected)
usr.say("Sti[pick("'","`")] kaliesin!")
usr << "\red The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust."
del(src)
else
return fizzle()
else
var/affected = 0
for(var/mob/living/carbon/C in view(2,usr))
if (iscultist(C))
continue
var/obj/item/weapon/nullrod/N = locate() in C
if(N)
continue
C.eye_blurry += 30
C.eye_blind += 10
//talismans is weaker.
affected++
C.show_message("\red You feel a sharp pain in your eyes, and the world disappears into darkness..", 3)
if(affected)
usr.whisper("Sti[pick("'","`")] kaliesin!")
usr << "\red Your talisman turns into gray dust, blinding those who not follow the Nar-Sie."
return
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.
for(var/mob/living/carbon/C in orange(1,src))
if(iscultist(C) && !C.stat)
culcount++
if(culcount>=3)
for(var/mob/living/carbon/M in viewers(usr))
if(iscultist(M))
continue
var/obj/item/weapon/nullrod/N = locate() in M
if(N)
continue
M.take_overall_damage(51,51)
M << "\red Your blood boils!"
if(prob(5))
spawn(5)
M.gib()
for(var/obj/effect/rune/R in view(src))
if(prob(10))
explosion(R.loc, -1, 0, 1, 5)
for(var/mob/living/carbon/human/C in orange(1,src))
if(iscultist(C) && !C.stat)
C.say("Dedo ol[pick("'","`")]btoh!")
C.take_overall_damage(15, 0)
del(src)
else
return fizzle()
return
// WIP rune, I'll wait for Rastaf0 to add limited blood.
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 << "\red Aargh it burns!"
else
M << "\red Rune suddenly ignites, burning you!"
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 << "\red Blood suddenly ignites, burning you!"
var/turf/T = get_turf(B)
T.hotspot_expose(700,125)
del(B)
del(src)
////////// Rune 24 (counting burningblood, which kinda doesnt work yet.)
runestun(var/mob/living/T as mob)
if(istype(src,/obj/effect/rune)) ///When invoked as rune, flash and stun everyone around.
usr.say("Fuu ma[pick("'","`")]jin!")
for(var/mob/living/L in viewers(src))
if(iscarbon(L))
var/mob/living/carbon/C = L
flick("e_flash", C.flash)
if(C.stuttering < 1 && (!(HULK in C.mutations)))
C.stuttering = 1
C.Weaken(1)
C.Stun(1)
C.show_message("\red The rune explodes in a bright flash.", 3)
else if(issilicon(L))
var/mob/living/silicon/S = L
S.Weaken(5)
S.show_message("\red BZZZT... The rune has exploded in a bright flash.", 3)
del(src)
else ///When invoked as talisman, stun and mute the target mob.
usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!")
var/obj/item/weapon/nullrod/N = locate() in T
if(N)
for(var/mob/O in viewers(T, null))
O.show_message(text("\red <B>[] invokes a talisman at [], but they are unaffected!</B>", usr, T), 1)
else
for(var/mob/O in viewers(T, null))
O.show_message(text("\red <B>[] invokes a talisman at []</B>", usr, T), 1)
if(issilicon(T))
T.Weaken(15)
else if(iscarbon(T))
var/mob/living/carbon/C = T
flick("e_flash", C.flash)
if (!(HULK in C.mutations))
C.silent += 15
C.Weaken(25)
C.Stun(25)
return
/////////////////////////////////////////TWENTY-FIFTH RUNE
armor()
var/mob/living/carbon/human/user = usr
if(istype(src,/obj/effect/rune))
usr.say("N'ath reth sh'yro eth d[pick("'","`")]raggathnor!")
else
usr.whisper("N'ath reth sh'yro eth d[pick("'","`")]raggathnor!")
usr.visible_message("\red The rune disappears with a flash of red light, and a set of armor appears on [usr]...", \
"\red You are blinded by the flash of red light! After you're able to see again, you see that you are now wearing a set of armor.")
user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head)
user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit)
user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(user), slot_shoes)
user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back)
//the above update their overlay icons cache but do not call update_icons()
//the below calls update_icons() at the end, which will update overlay icons by using the (now updated) cache
user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) //put in hands or on floor
del(src)
return