diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index 8abbb2e974b..69cbb5a94e0 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -90,7 +90,7 @@ var/runedec = 0 // destroy see blood - BLOOD BOIL // self other technology - Communication rune //was other hear blood - +// join hide technology - stun rune. Rune color: bright pink. examine() if(!iscultist(usr)) usr << "A strange collection of symbols drawn in blood." @@ -164,6 +164,8 @@ var/runedec = 0 return communicate() if(word1 == wordtravel && word2 == wordother) return itemport(src.word3) + if(word1 == wordjoin && word2 == wordhide && word3 == wordtech) + return runestun() else return fizzle() @@ -260,6 +262,9 @@ var/runedec = 0 if(word1 == wordtravel && word2 == wordother) icon_state = "1" src.icon += rgb(200, 0, 0) + if(word1 == wordjoin && word2 == wordhide && word3 == wordtech) + icon_state = "2" + src.icon += rgb(100, 0, 100) return icon_state="[rand(1,6)]" //random shape and color for dummy runes src.icon -= rgb(255,255,255) @@ -328,35 +333,37 @@ var/runedec = 0

Disable Technology

Invoking this rune creates a strong electromagnetic pulse in a small radius, making it basically analogic to an EMP grenade. You can imbue this rune into a talisman, making it a decent defensive item.

Drain Blood

- This rune instantly heals you of some brute damage at the expense a person placed on top of the rune. Whenever you invoke a drain rune, ALL drain runes in very large radius are activated, draining blood from anyone located on top of those runes. This includes yourself, though the blood you drain from yourself just comes back to you. This might help you identify this rune when studying words. One drain gives up to 25HP per each victim, but you can repeat it if you need more. Draining only works on living people, so you might need to recharge your "Battery" once its empty. Drinking too much blood at once might cause blood hunger.
+ This rune instantly heals you of some brute damage at the expense of a person placed on top of the rune. Whenever you invoke a drain rune, ALL drain runes on the station are activated, draining blood from anyone located on top of those runes. This includes yourself, though the blood you drain from yourself just comes back to you. This might help you identify this rune when studying words. One drain gives up to 25HP per each victim, but you can repeat it if you need more. Draining only works on living people, so you might need to recharge your "Battery" once its empty. Drinking too much blood at once might cause blood hunger.

Raise Dead

- This rune allows for the resurrection of any dead person. You will need a dead human body and a living human sacrifice. Make 2 raise dead runes. Put a living non-braindead human on top of one, and a dead body on the other one. When you invoke the rune, the life force of the living human will be transferred into the dead body, allowing a ghost standing on top of the dead body will enter it, instantly and fully healing it. Use other runes to ensure there is a ghost ready to be resurrected.
+ This rune allows for the resurrection of any dead person. You will need a dead human body and a living human sacrifice. Make 2 raise dead runes. Put a living non-braindead human on top of one, and a dead body on the other one. When you invoke the rune, the life force of the living human will be transferred into the dead body, allowing a ghost standing on top of the dead body to enter it, instantly and fully healing it. Use other runes to ensure there is a ghost ready to be resurrected.

Hide runes

This rune makes all nearby runes completely invisible. They are still there and will work if activated somehow, but you cannot invoke them directly if you do not see them.

Reveal runes

This rune is made to reverse the process of hiding a rune. It reveals all hidden runes in a rather large area around it.

Leave your body

- This rune gently rips your soul out of your body, leaving it intact. You can observe the surroundings as a ghost as well as communicate with other ghosts. Your body takes damage while you are there, so ensure your journey is not too long, or youmight never come back.
+ This rune gently rips your soul out of your body, leaving it intact. You can observe the surroundings as a ghost as well as communicate with other ghosts. Your body takes damage while you are there, so ensure your journey is not too long, or you might never come back.

Manifest a ghost

- Unlike the Raise Dead rune, this rune does not require any special preparations or vessels. Instead of using full lifeforce of a sacrifice, it will drain YOUR lifefirce. Stand on the rune and invoke it. If theres a ghost standing over the rune, it will materialise, and will live as long as you dont move off the rune or die. You can put a paper with a name on it on the rune to make the new body look like that person.
+ Unlike the Raise Dead rune, this rune does not require any special preparations or vessels. Instead of using full lifeforce of a sacrifice, it will drain YOUR lifeforce. Stand on the rune and invoke it. If theres a ghost standing over the rune, it will materialise, and will live as long as you dont move off the rune or die. You can put a paper with a name on the rune to make the new body look like that person.

Imbue a talisman

- This rune allows you to imbue the magic of some runes into paper talismans. Create an imbue rune, then an appropriate rune beside it. Put an empty piece of paper on the imbue rune and invoke it. ou will now have a 1-use talisman with the power of the target rune. Using a talisman drains alot of health, so be careful with it. You can imbue a talisman with the following powers: summon tome, reveal, conceal, teleport, tisable technology, communicate, deafen and blind.
+ This rune allows you to imbue the magic of some runes into paper talismans. Create an imbue rune, then an appropriate rune beside it. Put an empty piece of paper on the imbue rune and invoke it. You will now have a one-use talisman with the power of the target rune. Using a talisman drains some health, so be careful with it. You can imbue a talisman with power of the following runes: summon tome, reveal, conceal, teleport, tisable technology, communicate, deafen, blind and stun.

Sacrifice

Sacrifice rune allows you to sacrifice a living thing or a body to the Geometer of Blood. Monkeys and dead humans are the most basic sacrifices, they might or might not be enough to gain His favor. A living human is what a real sacrifice should be, however, you will need 3 people chanting the invocation to sacrifice a living person.

Create a wall

Invoking this rune solidifies the air above it, creating an an invisible wall. To remove the wall, simply invoke the rune again.

Summon cultist

- This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to succesfully invoke it.
+ This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to succesfully invoke it. Invoking it takes heavy strain on the bodies of all chanting cultists.

Free a cultist

- This rune unhandcuffs and unbuckles any cultist, no matter where he is. You need to have 3 people invoking the rune for it to work.
+ This rune unhandcuffs and unbuckles any cultist of your choice, no matter where he is. You need to have 3 people invoking the rune for it to work. Invoking it takes heavy strain on the bodies of all chanting cultists.

Deafen

- This rune temporarily deafens everyone around you, including your fellow cultists, so be careful.
+ This rune temporarily deafens all non-cultists around you.

Blind

- This rune temporarily blinds everyone around you, including your fellow cultists, so be careful.
+ This rune temporarily blinds all non-cultists around you. Very robust. Use together with the deafen rune to leave your enemies completely helpless.

Blood boil

- This rune boils the blood of a person on top of it. The damage is enough to instantly critically hurt any person. You need 2 cultists invoking the rune for it to work.
+ This rune boils the blood all non-cultists in visible range. The damage is enough to instantly critically hurt any person. You need 3 cultists invoking the rune for it to work. This rune is unreliable and may cause unpredicted effects when invoked. It also drains significant amount of your health when succesfully invoked.

Communicate

- Invoking this rune allows you to relay a message to all cultists on the station. + Invoking this rune allows you to relay a message to all cultists on the station and nearby space objects. +

Stun

+ Unlike other runes, this ons is supposed to be used in talisman form. When invoked directly, it simply releases some dark energy, briefly stunning everyone around. When imbued into a talisman, you can force all of its energy into one person, stunning him so hard he cant even speak. However, effect wears off rather fast.
"} @@ -458,7 +465,7 @@ var/runedec = 0 var/r if (!istype(user.loc,/turf)) user << "\red You do not have enough space to write a proper rune." - var/list/runes = list("teleport", "itemport", "tome", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "reveal", "astral journey", "manifest", "imbue talisman", "sacrifice", "wall", "freedom", "cultsummon", "deafen", "blind", "bloodboil", "communicate") + var/list/runes = list("teleport", "itemport", "tome", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "reveal", "astral journey", "manifest", "imbue talisman", "sacrifice", "wall", "freedom", "cultsummon", "deafen", "blind", "bloodboil", "communicate", "stun") r = input("Choose a rune to scribe", "Rune Scribing") in runes //not cancellable. var/obj/rune/R = new /obj/rune if(istype(user, /mob/living/carbon/human)) @@ -606,7 +613,12 @@ var/runedec = 0 R.word3=wordtech R.loc = user.loc R.check_icon() - + if("stun") + R.word1=wordjoin + R.word2=wordhide + R.word3=wordtech + R.loc = user.loc + R.check_icon() /obj/item/weapon/paperscrap name = "scrap of paper" icon_state = "scrap" @@ -652,12 +664,25 @@ var/runedec = 0 call(/obj/rune/proc/deafen)() if("blind") call(/obj/rune/proc/blind)() + if("runestun") + user << "\red To use this talisman, attack your target directly." if("supply") supply() - if(src && src.imbue!="supply") + if(src && src.imbue!="supply" && src.imbue!="runestun") del(src) return + attack(mob/living/carbon/T as mob, mob/living/user as mob) + if(imbue == "runestun") + user.take_organ_damage(5, 0) + call(/obj/rune/proc/runestun)(T) + del(src) + else + ..() ///If its some other talisman, use the generic attack code, is this supposed to work this way? + + + + /obj/item/weapon/paper/talisman/supply imbue = "supply" uses = 3 diff --git a/code/game/magic/cultist/runes.dm b/code/game/magic/cultist/runes.dm index e6bb307df66..4bb722d7e0a 100644 --- a/code/game/magic/cultist/runes.dm +++ b/code/game/magic/cultist/runes.dm @@ -151,7 +151,6 @@ var/list/sacrificed = list() 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) @@ -238,7 +237,7 @@ var/list/sacrificed = list() if (corpse_is_target) usr << "\red The Geometer of blood wants this mortal for himself." return fizzle() - + var/sacrifice_is_target = 0 find_sacrifice: @@ -258,12 +257,12 @@ var/list/sacrificed = list() else usr << "\red You need a dead corpse as source of energy to put soul in new body." return fizzle() - + for(var/mob/dead/observer/O in src.loc) if(!O.client) continue ghost = O - + if (!ghost) usr << "\red You do not feel an ethernal immaterial soul here." return fizzle() @@ -379,7 +378,7 @@ var/list/sacrificed = list() break if(!ghost) return this_rune.fizzle() - + usr.say("Gal'h'rfikk harfrandid mud'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.", \ @@ -440,7 +439,7 @@ var/list/sacrificed = list() if (unsuitable_newtalisman) usr << "\red The blank is tainted. It is unsuitable." return fizzle() - + var/obj/rune/imbued_from var/obj/item/weapon/paper/talisman/T for(var/obj/rune/R in orange(1,src)) @@ -487,13 +486,17 @@ var/list/sacrificed = list() 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'loso, mir'kanas verbot!") del(imbued_from) del(newtalisman) - del(src) else return fizzle() @@ -867,6 +870,10 @@ var/list/sacrificed = list() for(var/obj/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.say("Dedo ol'btoh!") + C.take_overall_damage(15, 0) del(src) else return fizzle() @@ -899,3 +906,31 @@ var/list/sacrificed = list() T.hotspot_expose(700,125) del(B) del(src) + +////////// Rune 24 (counting burningblood, which kinda doesnt work yet.) + + runestun(var/mob/living/carbon/T as mob) + if(istype(src,/obj/rune)) ///When invoked as rune, flash and stun everyone around. + usr.say("Fuu ma'jin!") + for(var/mob/living/carbon/C in viewers(src)) + flick("e_flash", C.flash) + if (C.weakened < 1 && (!(C.mutations & HULK))) //Copied this off baton code + C.weakened = 1 + if (C.stuttering < 1 && (!(C.mutations & HULK))) + C.stuttering = 1 + if (C.stunned < 1 && (!(C.mutations & HULK))) + C.stunned = 1 + C.show_message("\red The rune explodes 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''!") + for(var/mob/O in viewers(T, null)) + O.show_message(text("\red [] invokes a talisman at []", usr, T), 1) + flick("e_flash", T.flash) + if (!(T.mutations & HULK)) + T.silent += 5 + if (!(T.mutations & HULK)) + T.weakened += 15 + if (!(T.mutations & HULK)) + T.stunned += 15 + return \ No newline at end of file diff --git a/code/game/magic/cultist/specialtalisman.dm b/code/game/magic/cultist/specialtalisman.dm index 1eafdaa4f3e..6197f064df3 100644 --- a/code/game/magic/cultist/specialtalisman.dm +++ b/code/game/magic/cultist/specialtalisman.dm @@ -11,6 +11,7 @@ dat += "Ta'gh fara'qha fel d'amar det! - Allows you to destroy technology in a short range.
" dat += "Kla'atu barada nikt'o! - Allows you to conceal the runes you placed on the floor.
" dat += "O bidai nabora se'sma! - Allows you to coordinate with others of your cult.
" + dat += "Fuu ma'jin - Allows you to stun a person by attacking them with the talisman.
" usr << browse(dat, "window=id_com;size=350x200") return @@ -39,6 +40,9 @@ if("communicate") var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) T.imbue = "communicate" + if("runestun") + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + T.imbue = "runestun" src.uses-- supply() return \ No newline at end of file diff --git a/code/game/objects/storage/bible.dm b/code/game/objects/storage/bible.dm index 7f913edaecb..868d518c5ac 100644 --- a/code/game/objects/storage/bible.dm +++ b/code/game/objects/storage/bible.dm @@ -44,7 +44,9 @@ // return if (M.stat !=2) - if (prob(10)) + if (prob(20)) + M << "\red The power of [src.deity_name] clears your mind of heresy!" + user << "\red You see how [M]'s eyes become clear, the cult no longer holds control over him!" if(M.mind in ticker.mode.cult) if (ticker.mode.name == "cult") ticker.mode:remove_cultist(M.mind) diff --git a/icons/changelog.html b/icons/changelog.html index 8db925f80e1..a7feeb264e3 100644 --- a/icons/changelog.html +++ b/icons/changelog.html @@ -45,6 +45,37 @@ Stuff which is in development and not yet visible to players or just code relate (is. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit tho. Thanks. --> +14 May 2011, late friday 13 update. +
  • K0000 updated: +
      +
    • Cult updates:
    • +
    • New rune! Stun rune. When used as rune, briefly stuns everyone around (including cultists). When imbued into a talisman, hit someone to stun and briefly mute them. Spawnable with the starter talisman.
    • +
    • Imbue rune doesnt disappear after succesful invocation, only the source rune.
    • +
    • Chaplain's bible now has 20% chance to convert a cultist (was 10%), and gives a message on success.
    • +
    • Also, wrapping paper is back! Find it in the mailroom.
    • +
    +
  • + +
  • NEO updated: +
      +
    • Beginning of armor overhaul. Armor now has slightly better defence against melee, and weaker against shots. More coming soon...someday
    • +
    • Cyborgs finally drop their MMI when gibbed like they were supposed to back when I added MMIs. Round- start cyborgs use whatever name you have selected for your character for the brain that gets spawned for them.
    • +
    +
  • + +
  • Darem updated: +
      +
    • Chemistry update
    • +
    • In containers where there isn't a perfect ratio of reagents, reactions won't consume ALL of the related reagents (so if you mix 10 anti-toxin with 20 inaprovaline, you get 10 tricordrazine and 10 inaprovaline rather then just 10 tricodrazine)
    • +
    • Catalysts: some reactions might need presence of an element, while not directly consuming it.
    • +
    • Reactions changed to use catalysts: all recipes that require Universal Enzyme now require 5 units of the enzyme but the enzyme isn't consumed (So Tofu, Cheese, Moonshine, Wine, Vodka, and Kahlua recipes). +
    +
  • +
  • Errorage updated: +
      +
    • Smooth tables: Tables now automatically determine which direction and sprite they'll use. They will connect to any adjacent table unless there is a window between them (regular, reinforced, tinted, whichever)
    • +
    +
  • 7 May 2011, Mother's day?
  • Agouri updated: @@ -56,7 +87,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • Erro updated:
    • New sprites for thermited walls and girders. Rework of thermited walls. Thermited walls leave a remnant damaged wall, crowbar it to scrap it.
    • -
    • More colors for the lightfloors
    • +
    • More colors for the lightfloors CANCELLED/POSTPONED
  • diff --git a/maps/tgstation.2.0.7.dmm b/maps/tgstation.2.0.7.dmm index 01afb358f04..ccf707d6363 100644 --- a/maps/tgstation.2.0.7.dmm +++ b/maps/tgstation.2.0.7.dmm @@ -2606,8 +2606,8 @@ "aYf" = (/obj/machinery/atmospherics/pipe/simple,/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/plating,/area/maintenance/port) "aYg" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/sorting) "aYh" = (/turf/simulated/floor,/area/quartermaster/sorting) -"aYi" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/sorting) -"aYj" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/device/destTagger,/obj/item/device/destTagger{pixel_x = 5; pixel_y = 4},/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/sorting) +"aYi" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/table{icon_state = "tabledir"; dir = 10; pixel_x = 2},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/sorting) +"aYj" = (/obj/table{dir = 2; icon_state = "tabledir"},/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/sorting) "aYk" = (/obj/table{dir = 2; icon_state = "tabledir"},/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/quartermaster/sorting) "aYl" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/hallway/primary/central) "aYm" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/wall/r_wall,/area/crew_quarters/captain)