From bf8c12758bf06327be71e4814715e9aa231671df Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 00:07:33 -0400 Subject: [PATCH 01/93] Update mob_helpers.dm --- code/modules/mob/mob_helpers.dm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 75a6afd8309..e0b1e175b21 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -127,7 +127,7 @@ if(rand(1,2)==2) if(lowertext(newletter)=="o") newletter="u" - if(lowertext(newletter)=="s") + if(lowertext(newletter)=="t") newletter="ch" if(lowertext(newletter)=="a") newletter="ah" @@ -135,15 +135,15 @@ newletter="oo" if(lowertext(newletter)=="c") newletter=" NAR " - if(lowertext(newletter)=="t") + if(lowertext(newletter)=="s") newletter=" SIE " if(rand(1,4)==4) if(newletter==" ") - newletter=" GLORY " + newletter=" no hope... " if(newletter=="H") - newletter=" HAIL " + newletter=" IT COMES... " - switch(rand(1,10)) + switch(rand(1,15)) if(1) newletter="'" if(2) @@ -152,6 +152,8 @@ newletter="fth" if(4) newletter="nglu" + if(5) + newletter="glor" newphrase+="[newletter]";counter-=1 return newphrase From 16b0a2a01454b5e359094b14b7fbbf96df7d3439 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 00:08:15 -0400 Subject: [PATCH 02/93] Update runes.dm --- code/game/gamemodes/cult/runes.dm | 76 +++++++++++++++---------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2904f067736..68462938164 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -200,7 +200,7 @@ var/list/teleport_runes = list() "Your vision blurs, and you suddenly appear somewhere else.") user.forceMove(get_turf(selected_rune)) - +/* var/list/teleport_other_runes = list() //Rite of Forced Translocation: Warps the target to a random teleport rune with the same keyword. /obj/effect/rune/teleport_other @@ -271,12 +271,11 @@ var/list/teleport_other_runes = list() icon_state = "5" color = rgb(0, 0, 255) - /obj/effect/rune/summon_tome/invoke(mob/living/user) visible_message("A frayed tome materializes on the surface of [src], which dissolves into nothing.") new /obj/item/weapon/tome(get_turf(src)) qdel(src) - +*/ //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert @@ -310,6 +309,7 @@ var/list/teleport_other_runes = list() new_cultist.visible_message("[new_cultist] writhes in pain as the markings below them glow a bloody red!", \ "AAAAAAAAAAAAAA-") ticker.mode.add_cultist(new_cultist.mind) + new /obj/item/weapon/tome(get_turf(src)) new_cultist.mind.special_role = "Cultist" new_cultist << "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 something evil takes root." @@ -416,7 +416,7 @@ var/list/teleport_other_runes = list() //Ritual of Dimensional Rending: Calls forth the avatar of Nar-Sie upon the station. /obj/effect/rune/narsie - cultist_name = "Call Forth The Geometer" + cultist_name = "Summon Nar-Sie" cultist_desc = "Tears apart dimensional barriers, calling forth the avatar of the Geometer." invocation = null req_cultists = 9 @@ -573,7 +573,7 @@ var/list/teleport_other_runes = list() if(M.stat == DEAD) M.visible_message("[M] twitches.") - +/* //Rite of Obscurity: Turns all runes within a 3-tile radius invisible or reveals them again. /obj/effect/rune/hide_runes cultist_name = "Veil Runes" @@ -619,7 +619,7 @@ var/list/teleport_other_runes = list() invocation = "By'o isit!" icon_state = "4" color = rgb(0, 150, 0) - +*/ /obj/effect/rune/make_runes_fake/invoke(mob/living/user) visible_message("[src] flares brightly, then slowly dulls and appears mundane.") for(var/obj/effect/rune/R in range(3,src)) @@ -732,7 +732,7 @@ var/list/teleport_other_runes = list() var/mob/living/carbon/C = user C.apply_damage(2, BRUTE, pick("l_arm", "r_arm")) - +/* //Rite of the Shadowed Mind: Deafens, blinds and mutes all non-cultists nearby. /obj/effect/rune/deafen cultist_name = "Debilitate" @@ -770,6 +770,7 @@ var/list/teleport_other_runes = list() M.Stun(3) M.flash_eyes(1,1) qdel(src) +*/ //Rite of Joined Souls: Summons a single cultist. /obj/effect/rune/summon cultist_name = "Summon Cultist" @@ -813,7 +814,7 @@ var/list/teleport_other_runes = list() //Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. /obj/effect/rune/imbue - cultist_name = "Bind Talisman" + cultist_name = "Create Talisman" cultist_desc = "Transforms papers and valid runes into talismans." invocation = null //no talisman made, no invocation. icon_state = "3" @@ -822,6 +823,9 @@ var/list/teleport_other_runes = list() /obj/effect/rune/imbue/invoke(mob/living/user) var/turf/T = get_turf(src) var/list/papers_on_rune = list() + var/entered_talisman_name + var/obj/item/weapon/paper/talisman/talisman_type + var/list/possible_talismans = list() for(var/obj/item/weapon/paper/P in T) if(!P.info) papers_on_rune.Add(P) @@ -831,37 +835,32 @@ var/list/teleport_other_runes = list() log_game("Talisman Imbue rune failed - no blank papers on rune") return var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) - var/list/nearby_runes = list() - for(var/obj/effect/rune/R in orange(1,src)) - nearby_runes.Add(R) - if(!nearby_runes.len) - user << "There are no runes near [src]!" - fail_invoke() - log_game("Talisman Imbue rune failed - no nearby runes") + for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) + var/obj/item/weapon/paper/talisman/J = I + if(initial(J.cultist_name)) + possible_talismans.Add(initial(J.cultist_name)) //This is to allow the menu to let cultists select talismans by name + entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return - var/obj/effect/rune/picked_rune = pick(nearby_runes) - var/list/split_rune_type = splittext("[picked_rune.type]", "/") - var/imbue_type = split_rune_type[split_rune_type.len] - var/talisman_type = text2path("/obj/item/weapon/paper/talisman/[imbue_type]") - if(ispath(talisman_type)) - user.say("H'drak v'loso, mir'kanas verbot!") - var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) - if(istype(picked_rune, /obj/effect/rune/teleport)) - var/obj/effect/rune/teleport/TR = picked_rune - var/obj/item/weapon/paper/talisman/teleport/TT = TA - TT.keyword = TR.keyword - else - user << "The chosen rune was not a valid target!" - fail_invoke() - log_game("Talisman Imbue rune failed - chosen rune invalid") + for(var/I in typesof(/obj/item/weapon/paper/talisman)) + var/obj/effect/rune/J = I + if(initial(J.cultist_name) == entered_talisman_name) + talisman_type = J + user.say("H'drak v'loso, mir'kanas verbot!") + visible_message("Dark power begins to channel into the paper!.") + if(!do_after(user, 150, target = get_turf(user))) return - visible_message("[picked_rune] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") + var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) + if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) + var/the_keyword = stripped_input(usr, "Please enter a keyword for the talisman.", "Enter Keyword", "") + var/obj/item/weapon/paper/talisman/teleport/TELE = TA + TELE.keyword = the_keyword + visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) - qdel(picked_rune) qdel(src) //Rite of Fabrication: Creates a construct shell out of 5 metal sheets. /obj/effect/rune/construct_shell - cultist_name = "Fabricate Shell" + cultist_name = "Summon Construct Shell" cultist_desc = "Turns five plasteel sheets into an empty construct shell, suitable for containing a soul shard." invocation = null //see below; doesn't say the invocation unless there's enough sheets. icon_state = "5" @@ -887,7 +886,7 @@ var/list/teleport_other_runes = list() log_game("Construct Shell rune failed - not enough plasteel sheets") return - +/* //Rite of Arming: Creates cult robes, a trophy rack, and a cult sword on the rune. /obj/effect/rune/armor cultist_name = "Summon Armaments" @@ -904,9 +903,9 @@ var/list/teleport_other_runes = list() user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) qdel(src) +*/ - -//Rite of Leeching: Deals brute damage to the target and heals the same amount to the invoker. +/*Rite of Leeching: Deals brute damage to the target and heals the same amount to the invoker. /obj/effect/rune/leeching cultist_name = "Drain Life" cultist_desc = "Drains the life of the target on the rune, restoring it to the user." @@ -934,7 +933,7 @@ var/list/teleport_other_runes = list() target << "You feel extremely weak." user.visible_message("Blood flows from the rune into [user]!", \ "[target]'s blood flows into you, healing your wounds and revitalizing your spirit.") - +*/ //Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby /obj/effect/rune/blood_boil @@ -1008,7 +1007,7 @@ var/list/teleport_other_runes = list() for(var/obj/I in new_human) new_human.unEquip(I) new_human.dust() - +/* //Rite of Dimensional Corruption: Stops time around the rune for all non-cultists. /obj/effect/rune/timestop cultist_name = "Time Stop" @@ -1045,3 +1044,4 @@ var/list/teleport_other_runes = list() if(iscultist(M) || M.null_rod_check()) immune |= M ..() +*/ From bd3ec37e6701f3594b0f9b7a9d7e4ef6f0f54c83 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 00:08:52 -0400 Subject: [PATCH 03/93] Update talisman.dm --- code/game/gamemodes/cult/talisman.dm | 30 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 022a4869d40..cf491cc6a66 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -160,7 +160,7 @@ Rite of Disorientation if(iscultist(user) && keyword) user << "Keyword: [keyword]" -//Rite of Knowledge: Same as rune, but has two uses +//Rite of Knowledge: Has two uses /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." @@ -211,7 +211,7 @@ Rite of Disorientation cultist_name = "Talisman of Disguising" cultist_desc = "A talisman that will make nearby runes appear fake." invocation = "By'o nar'nar!" - health_cost = 3 + health_cost = 0 /obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user) user.visible_message("Dust flows from [user]s hand.", \ @@ -236,14 +236,21 @@ Rite of Disorientation cultist_name = "Talisman of Stunning" cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly." invocation = "Fuu ma'jin!" - health_cost = 15 + health_cost = 12 //Rite of Arming: Equips cultist armor on the user, where available /obj/item/weapon/paper/talisman/armor cultist_name = "Talisman of Arming" cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." invocation = "N'ath reth sh'yro eth draggathnor!" - health_cost = 3 + health_cost = 0 + +//Rite of Horrors: Breaks the mind of the victim with nightmarish hallucinations +/obj/item/weapon/paper/talisman/horror + cultist_name = "Talisman of Horrors" + cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." + invocation = "Na' Md'lo 'Nab!" + health_cost = 0 /obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) if(iscultist(user)) @@ -261,15 +268,15 @@ Rite of Disorientation target.visible_message("[target]'s holy weapon absorbs the talisman's light!", \ "Your holy weapon absorbs the blinding light!") else - target.Weaken(9) - target.Stun(9) + target.Weaken(10) + target.Stun(10) target.flash_eyes(1,1) if(issilicon(target)) var/mob/living/silicon/S = target S.emp_act(1) if(iscarbon(target)) var/mob/living/carbon/C = target - C.silent += 4 + C.silent += 5 C.stuttering += 15 C.cultslurring += 15 C.Jitter(15) @@ -286,3 +293,12 @@ Rite of Disorientation user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) + +/obj/item/weapon/paper/talisman/horror/attack(mob/living/target, mob/living/user) + if(iscultist(user)) + user.visible_message("You disturb [target] with visons of the end!") + if(iscarbon(target)) + var/mob/living/carbon/H = target + H.reagents.add_reagent("mindbreaker", 30) + qdel(src) + return From 2e62fe6139f87939583a9bde3980ba797aa74be5 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 00:09:45 -0400 Subject: [PATCH 04/93] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 43 +++++++++++++++++------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 7ba0a4c788f..34a3dc508d6 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -109,21 +109,24 @@ This file contains the arcane tome files as well as innate cultist emergency com have many different names, and almost all of them are known as Rites. The only rune that is not a Rite is the Ritual of Dimensional Rending, which can only be performed with nine cultists and calls \ forth the avatar of the Geometer herself (so long as she consents).

A rune's name and effects can be revealed by examining the rune.


" - text += "Teleport
The Rite of Translocation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, the rune will \ + text += "Imbue Talisman
The Rite of Talisman Creation is one of the most important. It is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ + invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" + + text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, the rune will \ search for other Rites of Translocation with the same keyword. Assuming one is found, the user will be instantaneously transported to the location of the other rune. If more than two runes are scribed \ with the same keyword, it will choose randomly between all eligible runes and send the invoker to one of them.

" - text += "Teleport Other
The Rite of Forced Translocation, like the Rite of Translocation, works by teleporting the person on the rune to one of the \ +// text += "Teleport Other
The Rite of Forced Translocation, like the Rite of Translocation, works by teleporting the person on the rune to one of the \ same keyword. However, this rune will only work on people other than the user, allowing the user to send any living creature somewhere else.

" - text += "Summon Tome
The Rite of Knowledge is a simplistic rune. When invoked, it will summon a single arcane tome to the rune's location before vanishing. \ +// text += "Summon Tome
The Rite of Knowledge is a simplistic rune. When invoked, it will summon a single arcane tome to the rune's location before vanishing. \

" - text += "Convert
The Rite of Enlightment is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ + text += "Convert
The Rite of Conversion is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ be unable to be converted. People the Geometer wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.

" - text += "Sacrifice
The Rite of Tribute is used to offer sacrifice to the Geometer. Simply place any living creature upon the rune and invoke it (this will not \ + text += "Sacrifice
The Rite of Sacrifice is used to offer tribute to the Geometer. Simply place any living creature upon the rune and invoke it (this will not \ target cultists!). If this creature has a mind, a soul shard will be created and the creature's soul transported to it. This rune is required if the cult's objectives include the sacrifice of a crew \ member.

" @@ -131,13 +134,13 @@ This file contains the arcane tome files as well as innate cultist emergency com the rune and the offering body adjacent to it. When the rune is invoked, the body to be sacrificed will turn to dust, the life force flowing into the revival target. Assuming the target is not moved \ within a few seconds, they will be brought back to life, healed of all ailments.

" - text += "Veil Runes
The Rite of Obscurity is a rite that will cause all nearby runes to become invisible. The runes will still be considered by other rites \ +// text += "Veil Runes
The Rite of Obscurity is a rite that will cause all nearby runes to become invisible. The runes will still be considered by other rites \ (such as the Rite of Translocation) but will be unusuable directly.(such as the Rite of Translocation) but will be unusuable directly. Use the same rite once more to reveal these runes once more.

" - text += "Reveal Runes
The Rite of True Sight is the foil of the Rite of Obscurity. It will turn all invisible runes visible once more, in addition to causing \ +// text += "Reveal Runes
The Rite of True Sight is the foil of the Rite of Obscurity. It will turn all invisible runes visible once more, in addition to causing \ all spirits nearby to become visible.

" - text += "Disguise Runes
Many crewmen enjoy drawing runes in crayon that resemble spell circles in order to play pranks on their fellow crewmen. The Rite of \ +// text += "Disguise Runes
Many crewmen enjoy drawing runes in crayon that resemble spell circles in order to play pranks on their fellow crewmen. The Rite of \ False Truths takes advantage of this very joke. When invoked, all nearby runes will appear dull, precisely resembling those drawn in crayon. They still cannot be cleaned by conventional means, so \ anyone trying to clean up the rune may become suspicious as it does not respond.

" @@ -153,30 +156,27 @@ This file contains the arcane tome files as well as innate cultist emergency com rune will draw a small amount of life force from the user and make the space above the rune completely dense, rendering it impassable to all but the most complex means. The rune may be invoked again to \ undo this effect and allow passage again.

" - text += "Debilitate
The Rite of the Shadowed Mind is simple. When invoked, it will cause all non-cultists that can see its rune to become deaf, blind and mute for a \ +// text += "Debilitate
The Rite of the Shadowed Mind is simple. When invoked, it will cause all non-cultists that can see its rune to become deaf, blind and mute for a \ considerable amount of time.

" - text += "Stun
Though the Rite of Blazing Light is weak when invoked normally, using it in conjuction with the Rite of Binding makes it much more powerful. \ +// text += "Stun
Though the Rite of Blazing Light is weak when invoked normally, using it in conjuction with the Rite of Binding makes it much more powerful. \ This rune will cause any non-cultists that can see the rune to become disoriented, disabling them for a short time.

" text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers.

" - text += "Imbue Talisman
The Rite of Binding is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ - invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" - text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place five sheets of plasteel on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" - text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ +// text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" - text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" +// text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. Use with caution

" - text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ +// text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ As it is invoked, it will rend and reshape reality around itself, stopping time for all those who don't follow the teachings of the Geometer. However, it requires more than one ritual soul as a \ catalyst, and its power is bound to overflow and hurt its casters.

" @@ -185,7 +185,7 @@ This file contains the arcane tome files as well as innate cultist emergency com to reality is fragile - you must remain on top of the rune, and you will slowly take damage. Upon stepping off the rune, the spirits will dissipate, dropping their items to the ground. You may manifest \ multiple spirits with one rune, but you will rapidly take damage in doing so.

" - text += "Call Forth The Geometer
There is only one way to summon the avatar of Nar-Sie, and that is the Ritual of Dimensional Rending. This ritual, in \ + text += "Summon Nar-Sie
There is only one way to summon the avatar of Nar-Sie, and that is the Ritual of Dimensional Rending. This ritual, in \ comparison to other runes, is very large, requiring a 3x3 space of empty tiles to create. To invoke the rune, nine cultists must stand on the rune, so that all of them are within its circle. Then, \ simply invoke it. A brief tearing will be heard as the barrier between dimensions is torn open, and the avatar will come forth.


" @@ -208,6 +208,11 @@ This file contains the arcane tome files as well as innate cultist emergency com talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." + text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ + be equipped will not be summoned.

" + + text += "Talisman of Horrors
The Rite of Horror will breaks your victim's mind with visions of the endtimes.

" + var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) popup.open() @@ -246,11 +251,11 @@ This file contains the arcane tome files as well as innate cultist emergency com if(iscarbon(user)) var/mob/living/carbon/C = user C.apply_damage(0.1, BRUTE, pick("l_arm", "r_arm")) - if("Call Forth The Geometer" == entered_rune_name) + if("Summon Nar-Sie" == entered_rune_name) C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) var/area/A = get_area(src) var/locname = initial(A.name) - priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual before it reaches a critical point.","Central Command Higher Dimensionsal Affairs") + priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg') if(!do_after(user, 500, target = get_turf(user))) return if(!do_after(user, 50, target = get_turf(user))) From 8931986dcbdcacbfd5475773146b0a201e131d65 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 08:43:33 -0400 Subject: [PATCH 05/93] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 34a3dc508d6..bf9bc0bd313 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -256,11 +256,17 @@ This file contains the arcane tome files as well as innate cultist emergency com var/area/A = get_area(src) var/locname = initial(A.name) priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg') - if(!do_after(user, 500, target = get_turf(user))) + for(var/turf/B in orange (1, get_turf(user))) + var/turf/O = B + var/N = /obj/machinery/shield + N.color = 'red' + N.health = 100 + O.ChangeTurf(N) + if(!do_after(user, 400, target = get_turf(user))) return if(!do_after(user, 50, target = get_turf(user))) return - user.visible_message("[user] creates a strange circle in their own blood.", \ + user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") var/obj/effect/rune/R = new rune_to_scribe(get_turf(user)) if(chosen_keyword) From 07876d977a68c08bc98731d705cf2d9643f66ad1 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 09:50:10 -0400 Subject: [PATCH 06/93] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index bf9bc0bd313..78c81face8d 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -212,7 +212,7 @@ This file contains the arcane tome files as well as innate cultist emergency com be equipped will not be summoned.

" text += "Talisman of Horrors
The Rite of Horror will breaks your victim's mind with visions of the endtimes.

" - + var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) popup.open() @@ -223,7 +223,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() - for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) + for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed - /obj/effect/rune) var/obj/effect/rune/R = T if(initial(R.cultist_name)) possible_runes.Add(initial(R.cultist_name)) //This is to allow the menu to let cultists select runes by name rather than by object path. I don't know a better way to do this @@ -255,19 +255,21 @@ This file contains the arcane tome files as well as innate cultist emergency com C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) var/area/A = get_area(src) var/locname = initial(A.name) - priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg') - for(var/turf/B in orange (1, get_turf(user))) - var/turf/O = B - var/N = /obj/machinery/shield - N.color = 'red' - N.health = 100 - O.ChangeTurf(N) + priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual before it reaches a critical point.","Central Command Higher Dimensionsal Affairs") + for(var/turf/B in orange (1, user)) + var/obj/machinery/shield/N = new(B) + N.color = "red" + N.health = 60 if(!do_after(user, 400, target = get_turf(user))) + for(var/obj/machinery/shield/U in orange (1, user)) + qdel(U) return if(!do_after(user, 50, target = get_turf(user))) return - user.visible_message("[user] creates a strange circle in their own blood.", \ + user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") + for(var/obj/machinery/shield/S in orange (1, user)) + qdel(S) var/obj/effect/rune/R = new rune_to_scribe(get_turf(user)) if(chosen_keyword) R.keyword = chosen_keyword From cd89d37e67703412bc031188dbf833ddca86fb7e Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 16:48:34 -0400 Subject: [PATCH 07/93] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 78c81face8d..7995613bbb4 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -89,7 +89,7 @@ This file contains the arcane tome files as well as innate cultist emergency com open_tome(user) /obj/item/weapon/tome/proc/open_tome(mob/user) - var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") + var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome","Cancel") switch(choice) if("Read Tome") read_tome(user) @@ -100,6 +100,8 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!input) return cultist_commune(user, 1, 0, input) + if("Cancel") + return /obj/item/weapon/tome/proc/read_tome(mob/user) var/text = "" @@ -112,15 +114,8 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Imbue Talisman
The Rite of Talisman Creation is one of the most important. It is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" - text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, the rune will \ - search for other Rites of Translocation with the same keyword. Assuming one is found, the user will be instantaneously transported to the location of the other rune. If more than two runes are scribed \ - with the same keyword, it will choose randomly between all eligible runes and send the invoker to one of them.

" - -// text += "Teleport Other
The Rite of Forced Translocation, like the Rite of Translocation, works by teleporting the person on the rune to one of the \ - same keyword. However, this rune will only work on people other than the user, allowing the user to send any living creature somewhere else.

" - -// text += "Summon Tome
The Rite of Knowledge is a simplistic rune. When invoked, it will summon a single arcane tome to the rune's location before vanishing. \ -

" + text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, search for other Rites of Translocation. \ + If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

".

" text += "Convert
The Rite of Conversion is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ @@ -165,7 +160,7 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers.

" - text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place five sheets of plasteel on top of the rune \ + text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" // text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ @@ -174,7 +169,7 @@ This file contains the arcane tome files as well as innate cultist emergency com // text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ - massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. Use with caution

" + massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" // text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ As it is invoked, it will rend and reshape reality around itself, stopping time for all those who don't follow the teachings of the Geometer. However, it requires more than one ritual soul as a \ @@ -255,7 +250,7 @@ This file contains the arcane tome files as well as innate cultist emergency com C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) var/area/A = get_area(src) var/locname = initial(A.name) - priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual before it reaches a critical point.","Central Command Higher Dimensionsal Affairs") + priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensionsal Affairs", 'sound/AI/spanomalies.ogg') for(var/turf/B in orange (1, user)) var/obj/machinery/shield/N = new(B) N.color = "red" From 07ec6c1b1f52f68250393f8388d9b7179affe97a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 17:16:41 -0400 Subject: [PATCH 08/93] Selected Joan improvements --- code/game/gamemodes/cult/runes.dm | 334 ++++++------------------------ 1 file changed, 67 insertions(+), 267 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 68462938164..75b1da5556f 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -163,119 +163,54 @@ var/list/teleport_runes = list() //Rite of Translocation: Warps the user to a random teleport rune with the same keyword. /obj/effect/rune/teleport cultist_name = "Teleport" - cultist_desc = "Warps the user to a random rune of the same keyword." + cultist_desc = "Warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" color = rgb(0, 0, 255) req_keyword = 1 + var/listkey -/obj/effect/rune/teleport/New() +/obj/effect/rune/teleport/New(loc, set_keyword) ..() teleport_runes.Add(src) + var/area/A = get_area(src) + var/locname = initial(A.name) + listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" + teleport_runes["[listkey]"] = src /obj/effect/rune/teleport/Destroy() - teleport_runes.Remove(src) - ..() + teleport_runes.Remove(listkey) + return ..() /obj/effect/rune/teleport/invoke(mob/living/user) - var/list/potential_runes = list() - for(var/obj/effect/rune/teleport/T in teleport_runes) - if(T.keyword == src.keyword && T != src && (T.z <= ZLEVEL_SPACEMAX)) - potential_runes.Add(T) + for(var/R in teleport_runes) + var/obj/effect/rune/teleport/T = teleport_runes[R] + if(T != src && (T.z <= ZLEVEL_SPACEMAX)) + potential_runes["[T.listkey]"] = T if(!potential_runes.len) - user << "There are no runes with the same keyword!" + user << "There are no valid runes to teleport to!" fail_invoke() - log_game("Teleport rune failed - no candidates with matching keyword") + log_game("Teleport rune failed - no other teleport runes") return - - if(user.z > ZLEVEL_SPACEMAX) - user << "You are not in the right dimension!" + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes + var/obj/effect/rune/teleport/actual_selected_rune = teleport_runes["[input_rune_key]"] + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !actual_selected_rune) fail_invoke() - log_game("Teleport rune failed - user in away mission") return - - var/obj/effect/rune/selected_rune = pick(potential_runes) - user.visible_message("[user] vanishes in a flash of red light!", \ - "Your vision blurs, and you suddenly appear somewhere else.") - user.forceMove(get_turf(selected_rune)) - -/* -var/list/teleport_other_runes = list() -//Rite of Forced Translocation: Warps the target to a random teleport rune with the same keyword. -/obj/effect/rune/teleport_other - cultist_name = "Teleport Other" - cultist_desc = "Warps the target to a random rune of the same keyword." - invocation = "Sas'so c'arta forbica!" - icon_state = "1" - color = rgb(200, 0, 0) - req_keyword = 1 - -/obj/effect/rune/teleport_other/New() - ..() - teleport_other_runes.Add(src) - -/obj/effect/rune/teleport_other/Destroy() - teleport_other_runes.Remove(src) - ..() - -/obj/effect/rune/teleport_other/invoke(mob/living/user) - var/list/potential_runes = list() - for(var/obj/effect/rune/teleport_other/T in teleport_other_runes) - if(T.keyword == src.keyword && T != src && (T.z <= ZLEVEL_SPACEMAX)) - potential_runes.Add(T) - - if(!potential_runes.len) - user << "There are no runes with the same keyword!" - fail_invoke() - log_game("Teleport Other rune failed - no candidates with matching keyword") - return - - if(user.z > ZLEVEL_SPACEMAX) - user << "You are not in the right dimension!" - fail_invoke() - log_game("Teleport rune failed - user in away mission") - return - - var/obj/effect/rune/selected_rune = pick(potential_runes) - var/mob/living/target - - var/list/targets = list() - for(var/mob/living/L in get_turf(src)) - if(L != user) - targets.Add(L) - if(!targets.len) - user << "There are no targets standing on the rune!" - fail_invoke() - log_game("Teleport Other rune failed - no targets on rune") - return - if(targets.len > 1) - target = input(user, "Choose a person to teleport.", "Rite of Forced Translocation") as null|anything in targets - user - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) - return - if(!target) - fail_invoke() - return - else - target = targets[targets.len] - - target.visible_message("[target] vanishes in a flash of red light!", \ - "Your vision blurs, and you suddenly appear somewhere else.") - target.forceMove(get_turf(selected_rune)) - -//Rite of Knowledge: Creates an arcane tome at the rune's location and destroys the rune. -/obj/effect/rune/summon_tome - cultist_name = "Summon Tome" - cultist_desc = "Pulls an arcane tome from the archives of the Geometer." - invocation = "N'ath reth sh'yro eth d'raggathnor!" - icon_state = "5" - color = rgb(0, 0, 255) - -/obj/effect/rune/summon_tome/invoke(mob/living/user) - visible_message("A frayed tome materializes on the surface of [src], which dissolves into nothing.") - new /obj/item/weapon/tome(get_turf(src)) - qdel(src) -*/ + var/turf/T = get_turf(src) + var/turf/UT = get_turf(user) + var/movedsomething = 0 + for(var/atom/movable/A in T) + if(!A.anchored) + movedsomething = 1 + A.forceMove(get_turf(actual_selected_rune)) + if(movedsomething) + visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") + user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." + else + fail_invoke() //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert @@ -489,7 +424,7 @@ var/list/teleport_other_runes = list() //Rite of Resurrection: Requires two corpses. Revives one and gibs the other. /obj/effect/rune/raise_dead cultist_name = "Raise Dead" - cultist_desc = "Requires two corpses. The one placed upon the rune is brought to life, the other is turned to ash." + cultist_desc = "Requires two corpses. One on the rune and one adjacent. The one placed upon the rune is brought to life, the other is turned to ash." invocation = null //Depends on the name of the user - see below icon_state = "1" color = rgb(255, 0, 0) @@ -510,7 +445,7 @@ var/list/teleport_other_runes = list() log_game("Raise Dead rune failed - no catalyst corpse") return mob_to_sacrifice = input(user, "Choose a corpse to sacrifice.", "Corpse to Sacrifice") as null|anything in potential_sacrifice_mobs - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !mob_to_revive || !mob_to_sacrifice) return for(var/mob/living/M in T.contents) if(M.stat == DEAD) @@ -573,57 +508,6 @@ var/list/teleport_other_runes = list() if(M.stat == DEAD) M.visible_message("[M] twitches.") -/* -//Rite of Obscurity: Turns all runes within a 3-tile radius invisible or reveals them again. -/obj/effect/rune/hide_runes - cultist_name = "Veil Runes" - cultist_desc = "Turns nearby runes invisible. They can be revealed by using the Reveal Rune." - invocation = "Kla'atu barada nikt'o!" - icon_state = "1" - color = rgb(0,0,255) - -/obj/effect/rune/hide_runes/invoke(mob/living/user) - visible_message("[src] darkens to black and vanishes.") - for(var/obj/effect/rune/R in orange(3,src)) - R.visible_message("[R] fades away.") - R.invisibility = INVISIBILITY_OBSERVER - R.alpha = 100 //To help ghosts distinguish hidden runes - for(var/mob/dead/observer/O in orange(3,src)) - if(!O.invisibility) - O << "You suddenly feel as if you've vanished..." - O.invisibility = INVISIBILITY_OBSERVER - qdel(src) - -//Rite of True Sight: Turns ghosts and obscured runes visible -/obj/effect/rune/true_sight - cultist_name = "Reveal Runes" - cultist_desc = "Reveals all invisible objects nearby, from spirits to runes." - invocation = "Nikt'o barada kla'atu!" - icon_state = "4" - color = rgb(255, 255, 255) - -/obj/effect/rune/true_sight/invoke() - visible_message("[src] explodes in a flash of blinding light!") - for(var/mob/dead/observer/O in orange(3,src)) - O << "You suddenly feel very obvious..." - O.invisibility = 0 - for(var/obj/effect/rune/R in orange(3,src)) - R.invisibility = 0 - R.alpha = initial(R.alpha) - qdel(src) - - //Rite of False Truths: Makes runes appear like crayon ones -/obj/effect/rune/make_runes_fake - cultist_name = "Disguise Runes" - cultist_desc = "Causes all nearby runes (including itself) to resemble those drawn in crayon." - invocation = "By'o isit!" - icon_state = "4" - color = rgb(0, 150, 0) -*/ -/obj/effect/rune/make_runes_fake/invoke(mob/living/user) - visible_message("[src] flares brightly, then slowly dulls and appears mundane.") - for(var/obj/effect/rune/R in range(3,src)) - R.desc = "A rune drawn in crayon." //Rite of Disruption: Emits an EMP blast. /obj/effect/rune/emp @@ -636,11 +520,10 @@ var/list/teleport_other_runes = list() /obj/effect/rune/emp/invoke(mob/living/user) visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in orange(1,src)) - C << "You feel a minute vibration pass through you!" + C << "Your hair stands on end as a shockwave bursts from the rune!" playsound(get_turf(src), 'sound/items/Welder2.ogg', 25, 1) - empulse(src, 4, 8) //A bit less than an EMP grenade - qdel(src) - + qdel(src) //delete before pulsing + empulse(src, 8, 12) //actually worth using over the talisman now //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral @@ -713,8 +596,8 @@ var/list/teleport_other_runes = list() //Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. /obj/effect/rune/wall - cultist_name = "Form Shield" - cultist_desc = "When invoked, makes the rune block passage. Can be invoked again to reverse this." + cultist_name = "Form Barrier" + cultist_desc = "When invoked, makes an invisible wall to block passage. Can be invoked again to reverse this." invocation = "Khari'd! Eske'te tannin!" icon_state = "1" color = rgb(255, 0, 0) @@ -732,45 +615,7 @@ var/list/teleport_other_runes = list() var/mob/living/carbon/C = user C.apply_damage(2, BRUTE, pick("l_arm", "r_arm")) -/* -//Rite of the Shadowed Mind: Deafens, blinds and mutes all non-cultists nearby. -/obj/effect/rune/deafen - cultist_name = "Debilitate" - cultist_desc = "Causes all non-followers nearby to lose their hearing, sight and voice." - invocation = "Sti kaliedir!" - color = rgb(0, 255, 0) - icon_state = "4" -/obj/effect/rune/deafen/invoke(mob/living/user) - visible_message("[src] emits a blinding red flash!") - for(var/mob/living/carbon/C in viewers(src)) - if(!iscultist(C) && !C.null_rod_check()) - C << "A dark fog blankets your senses!" - C.adjustEarDamage(0,50) - C.flash_eyes(1, 1) - C.adjust_blurriness(50) - C.adjust_blindness(20) - C.silent += 10 - qdel(src) - -//Rite of Disorientation: Stuns and mutes all non-cultists nearby for a brief time -/obj/effect/rune/stun - cultist_name = "Stun" - cultist_desc = "Stuns all nearby non-followers for a brief time." - invocation = "Fuu ma'jin!" - icon_state = "2" - color = rgb(100, 0, 100) - -/obj/effect/rune/stun/invoke(mob/living/user) - visible_message("[src] explodes in a bright flash!") - for(var/mob/living/M in viewers(src)) - if(!iscultist(M) && !M.null_rod_check()) - M << "You are disoriented by [src]!" - M.Weaken(3) - M.Stun(3) - M.flash_eyes(1,1) - qdel(src) -*/ //Rite of Joined Souls: Summons a single cultist. /obj/effect/rune/summon cultist_name = "Summon Cultist" @@ -808,10 +653,9 @@ var/list/teleport_other_runes = list() "Overwhelming vertigo consumes you as you are hurled through the air!") visible_message("A foggy shape materializes atop [src] and solidifes into [cultist_to_summon]!") user.apply_damage(10, BRUTE, "head") - cultist_to_summon.loc = get_turf(src) + cultist_to_summon.forceMove(get_turf(src)) qdel(src) - //Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. /obj/effect/rune/imbue cultist_name = "Create Talisman" @@ -858,82 +702,31 @@ var/list/teleport_other_runes = list() visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) qdel(src) -//Rite of Fabrication: Creates a construct shell out of 5 metal sheets. + +//Rite of Fabrication: Creates a construct shell out of 15 metal sheets. /obj/effect/rune/construct_shell cultist_name = "Summon Construct Shell" - cultist_desc = "Turns five plasteel sheets into an empty construct shell, suitable for containing a soul shard." - invocation = null //see below; doesn't say the invocation unless there's enough sheets. + cultist_desc = "Turns fifteen metal sheets into an empty construct shell, suitable for containing a soul shard." + invocation = "Ethra p'ni dedol!" icon_state = "5" color = rgb(150, 150, 150) /obj/effect/rune/construct_shell/invoke(mob/living/user) var/turf/T = get_turf(src) - for(var/obj/item/stack/sheet/S in T) - if(istype(S, /obj/item/stack/sheet/plasteel)) - var/obj/item/stack/sheet/plasteel/M = S - if(M.amount >= 5) - user.say("Ethra p'ni dedol!") - new /obj/structure/constructshell(T) - M.visible_message("[M] bends and twists into a humanoid shell!") - M.amount -= 5 - if(M.amount <= 0) - qdel(M) - qdel(src) - return - else - user << "There must be at least five sheets of plasteel on [src]!" - fail_invoke() - log_game("Construct Shell rune failed - not enough plasteel sheets") - return + var/canmakeshell = 0 + for(var/obj/item/stack/sheet/metal/S in T) + if(!canmakeshell && S.use(15)) + canmakeshell = 1 + if(canmakeshell) + . = ..() + else + user << "There must be at least fifteen sheets of metal on [src]!" + log_game("Construct Shell rune failed - not enough metal sheets") -/* -//Rite of Arming: Creates cult robes, a trophy rack, and a cult sword on the rune. -/obj/effect/rune/armor - cultist_name = "Summon Armaments" - cultist_desc = "Equips the user with robes, shoes, a backpack, and a longsword. Items that cannot be equipped will not be summoned." - invocation = "N'ath reth sh'yro eth draggathnor!" - icon_state = "4" - color = rgb(255, 0, 0) - -/obj/effect/rune/armor/invoke(mob/living/user) - visible_message("With the sound of clanging metal, [src] crumbles to dust!") - 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/alt(user), slot_shoes) - user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) - user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) - qdel(src) -*/ - -/*Rite of Leeching: Deals brute damage to the target and heals the same amount to the invoker. -/obj/effect/rune/leeching - cultist_name = "Drain Life" - cultist_desc = "Drains the life of the target on the rune, restoring it to the user." - invocation = null //see below; doesn't say the invocation if it has no targets. - icon_state = "2" - color = rgb(255, 0, 0) - -/obj/effect/rune/leeching/invoke(mob/living/user) - var/turf/T = get_turf(src) - var/list/potential_targets = list() - for(var/mob/living/carbon/M in T) - if(M.stat != DEAD && M != user) - potential_targets.Add(M) - if(!potential_targets.len) - user << "There must be a valid target on the rune!" - fail_invoke() - log_game("Leeching rune failed - no valid targets") - return - var/mob/living/carbon/target = pick(potential_targets) - var/drained_amount = rand(5,25) - user.say("Yu'gular faras desdae. Umathar uf'kal thenar!") - target.apply_damage(drained_amount, BRUTE, "chest") - user.adjustBruteLoss(-drained_amount) - user.Beam(target,icon_state="drainbeam",icon='icons/effects/effects.dmi',time=3) - target << "You feel extremely weak." - user.visible_message("Blood flows from the rune into [user]!", \ - "[target]'s blood flows into you, healing your wounds and revitalizing your spirit.") -*/ +/obj/effect/rune/construct_shell/invoke(mob/living/user) + new /obj/structure/constructshell(get_turf(src)) + visible_message("The metal bends and twists into a humanoid shell!") + qdel(src) //Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby /obj/effect/rune/blood_boil @@ -970,21 +763,28 @@ var/list/teleport_other_runes = list() icon_state = "6" color = rgb(255, 0, 0) -/obj/effect/rune/manifest/invoke(mob/living/user) +/obj/effect/rune/manifest/can_invoke(mob/living/user) if(!(user in get_turf(src))) user << "You must be standing on [src]!" fail_invoke() log_game("Manifest rune failed - user not standing on rune") - return + return 0 var/list/ghosts_on_rune = list() for(var/mob/dead/observer/O in get_turf(src)) if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) - ghosts_on_rune.Add(O) + ghosts_on_rune |= O if(!ghosts_on_rune.len) user << "There are no spirits near [src]!" fail_invoke() log_game("Manifest rune failed - no nearby ghosts") - return + return 0 + return ..() + +/obj/effect/rune/manifest/invoke(mob/living/user) + var/list/ghosts_on_rune = list() + for(var/mob/dead/observer/O in get_turf(src)) + if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) + ghosts_on_rune |= O var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) var/mob/living/carbon/human/new_human = new(get_turf(src)) new_human.real_name = ghost_to_spawn.real_name From b57c0cd0e66bf2c2d9f25a01c68fe4b61247f523 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 17:33:21 -0400 Subject: [PATCH 09/93] Selected --- code/game/gamemodes/cult/ritual.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 7995613bbb4..23f7845d9bd 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -13,7 +13,11 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!iscultist(usr) || usr.incapacitated()) return - + if(!istype(usr, /mob/living/simple_animal)) + var/confirm_desperation = alert(user, "This is a LAST RESORT, you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") + if(confirm_desperation == "No") + user << "On second thought, maybe I should summon a tome." + return var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") if(!input) return @@ -41,7 +45,6 @@ This file contains the arcane tome files as well as innate cultist emergency com cultist_commune(usr, 0, 1, input) return - /obj/item/weapon/tome name = "arcane tome" desc = "An old, dusty tome with frayed edges and a sinister-looking cover." From c0563aa7268e66a6dde7051746d9fe8f2e0858a4 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 17:53:34 -0400 Subject: [PATCH 10/93] Colored talismans and selected Joan improvements --- code/game/gamemodes/cult/talisman.dm | 81 ++++++++++++++++------------ 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index cf491cc6a66..ab7e55376ec 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -20,6 +20,7 @@ Rite of Disorientation var/invocation = "Naise meam!" var/uses = 1 var/health_cost = 0 //The amount of health taken from the user when invoking the talisman + var/color = null /obj/item/weapon/paper/talisman/examine(mob/user) if(iscultist(user) || user.stat == DEAD) @@ -58,7 +59,6 @@ Rite of Disorientation var/mob/living/carbon/C = user C.apply_damage(10, BRUTE, "head") - //Supply Talisman: Has a few unique effects. Granted only to starter cultists. /obj/item/weapon/paper/talisman/supply cultist_name = "Supply Talisman" @@ -71,7 +71,7 @@ Rite of Disorientation dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" dat += "N'ath reth sh'yro eth d'raggathnor! - Allows you to summon an arcane tome.
" - dat += "Sas'so c'arta forbici! - Allows you to move to a Rite of Dislocation with the keyword of \"veri\".
" + dat += "Sas'so c'arta forbici! - Allows you to move to a selected Rite of Dislocation".
" 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 nearby runes.
" dat += "Nikt'o barada kla'atu! - Allows you to reveal nearby runes.
" @@ -129,59 +129,58 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." + color = "#9900cc" // purple invocation = "Sas'so c'arta forbici!" health_cost = 5 var/keyword = "ire" /obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user) - var/list/possible_runes = list() - for(var/obj/effect/rune/teleport/R in teleport_runes) - if(R.keyword == src.keyword) - possible_runes.Add(R) - if(!possible_runes.len) - user << "There are no Teleport runes with the same keyword!" - log_game("Teleportation talisman failed - no teleport runes of the same keyword") - uses++ //To prevent deletion - return - var/chosen_rune = pick(possible_runes) + ..() + var/list/potential_runes = list() + for(var/R in teleport_runes) + var/obj/effect/rune/teleport/T = teleport_runes[R] + if(T.z <= ZLEVEL_SPACEMAX) + potential_runes["[T.listkey]"] = T + + if(!potential_runes.len) + user << "There are no valid runes to teleport to!" + log_game("Teleport talisman failed - no other teleport runes") + return 0 + + if(user.z > ZLEVEL_SPACEMAX) + user << "You are not in the right dimension!" + log_game("Teleport talisman failed - user in away mission") + return 0 + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes + var/obj/effect/rune/teleport/actual_selected_rune = teleport_runes["[input_rune_key]"] + if(!actual_selected_rune) + return 0 user.visible_message("Dust flows from [user]'s hand, and they disappear in a flash of red light!", \ "You speak the words of the talisman and find yourself somewhere else!") - if(user.buckled) - user.buckled.unbuckle_mob(user,force=1) - user.loc = get_turf(chosen_rune) - -/obj/item/weapon/paper/talisman/teleport/New() - ..() - spawn(1) //To give the keyword time to change from the imbue rune - info += keyword - -/obj/item/weapon/paper/talisman/teleport/examine(mob/user) - ..() - if(iscultist(user) && keyword) - user << "Keyword: [keyword]" + user.forceMove(get_turf(actual_selected_rune)) + return 1 //Rite of Knowledge: Has two uses /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." + color = "#000000" // tome-black invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 /obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user) user.visible_message("[user]'s hand glows red for a moment.", \ "You speak the words of the talisman!") - var/obj/item/weapon/tome/T = new(get_turf(user)) - if(user.put_in_hands(T)) - user.visible_message("A tome appears in [user]'s hand!", \ - "An arcane tome materializes in your free hand.") - else - user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materialzies at your feet.") + new /obj/item/weapon/tome(get_turf(user)) + user.visible_message("A tome appears at [user]'s feet!", \ + "An arcane tome materialzies at your feet.") //Talisman of Obscurity: Same as rune /obj/item/weapon/paper/talisman/hide_runes cultist_name = "Talisman of Veiling" cultist_desc = "A talisman that will make all runes within a small radius invisible." + color = "#b3b3b3" // light grey invocation = "Kla'atu barada nikt'o!" health_cost = 1 @@ -196,6 +195,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/true_sight cultist_name = "Talisman of Revealing" cultist_desc = "A talisman that reveals nearby invisible runes." + color = "#4d4d4d" // dark grey invocation = "Nikt'o barada kla'atu!" health_cost = 1 @@ -210,6 +210,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/make_runes_fake cultist_name = "Talisman of Disguising" cultist_desc = "A talisman that will make nearby runes appear fake." + color = "#ff80d5" // honk invocation = "By'o nar'nar!" health_cost = 0 @@ -219,10 +220,11 @@ Rite of Disorientation for(var/obj/effect/rune/R in orange(3,user)) R.desc = "A rune drawn in crayon." -//Rite of Disruption: Same as rune +//Rite of Disruption: Weaker than rune /obj/item/weapon/paper/talisman/emp cultist_name = "Talisman of Electromagnetic Pulse" cultist_desc = "A talisman that will cause a moderately-sized electromagnetic pulse." + color = "#4d94ff" // light blue invocation = "Ta'gh fara'qha fel d'amar det!" health_cost = 5 @@ -235,6 +237,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/stun cultist_name = "Talisman of Stunning" cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly." + color = "#ff0000" // red invocation = "Fuu ma'jin!" health_cost = 12 @@ -242,6 +245,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/armor cultist_name = "Talisman of Arming" cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." + color = "#33cc33" // green invocation = "N'ath reth sh'yro eth draggathnor!" health_cost = 0 @@ -249,6 +253,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/horror cultist_name = "Talisman of Horrors" cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." + color = "#ffb366" // light orange invocation = "Na' Md'lo 'Nab!" health_cost = 0 @@ -286,14 +291,24 @@ Rite of Disorientation ..() /obj/item/weapon/paper/talisman/armor/invoke(mob/living/user) + . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ "You speak the words of the talisman, arming yourself!") 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/alt(user), slot_shoes) user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) + user.drop_item() user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) +/obj/item/weapon/paper/talisman/armor/attack(mob/living/target, mob/living/user) + if(iscultist(user) && iscultist(target)) + user.drop_item() + invoke(target) + qdel(src) + return + ..() + /obj/item/weapon/paper/talisman/horror/attack(mob/living/target, mob/living/user) if(iscultist(user)) user.visible_message("You disturb [target] with visons of the end!") From 21a8b29bdadcb0f03c29ad85504f2eae545d80de Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 17:59:42 -0400 Subject: [PATCH 11/93] Remie changes --- code/game/gamemodes/cult/talisman.dm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index ab7e55376ec..31f041b5ba0 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -212,12 +212,11 @@ Rite of Disorientation cultist_desc = "A talisman that will make nearby runes appear fake." color = "#ff80d5" // honk invocation = "By'o nar'nar!" - health_cost = 0 /obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user) user.visible_message("Dust flows from [user]s hand.", \ "You speak the words of the talisman, making nearby runes appear fake.") - for(var/obj/effect/rune/R in orange(3,user)) + for(var/obj/effect/rune/R in orange(6,user)) R.desc = "A rune drawn in crayon." //Rite of Disruption: Weaker than rune @@ -247,15 +246,13 @@ Rite of Disorientation cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." color = "#33cc33" // green invocation = "N'ath reth sh'yro eth draggathnor!" - health_cost = 0 //Rite of Horrors: Breaks the mind of the victim with nightmarish hallucinations /obj/item/weapon/paper/talisman/horror cultist_name = "Talisman of Horrors" cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." color = "#ffb366" // light orange - invocation = "Na' Md'lo 'Nab!" - health_cost = 0 + invocation = "Lo'Nab Na'Dm!" /obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) if(iscultist(user)) @@ -316,4 +313,3 @@ Rite of Disorientation var/mob/living/carbon/H = target H.reagents.add_reagent("mindbreaker", 30) qdel(src) - return From d1eaf9aad048f8a7f12072a734c00288147001d9 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 18:08:38 -0400 Subject: [PATCH 12/93] Further selected Joan improvements --- code/game/gamemodes/cult/ritual.dm | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 23f7845d9bd..7687a2e0544 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -118,7 +118,7 @@ This file contains the arcane tome files as well as innate cultist emergency com invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, search for other Rites of Translocation. \ - If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

".

" + If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

" text += "Convert
The Rite of Conversion is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ @@ -132,16 +132,6 @@ This file contains the arcane tome files as well as innate cultist emergency com the rune and the offering body adjacent to it. When the rune is invoked, the body to be sacrificed will turn to dust, the life force flowing into the revival target. Assuming the target is not moved \ within a few seconds, they will be brought back to life, healed of all ailments.

" -// text += "Veil Runes
The Rite of Obscurity is a rite that will cause all nearby runes to become invisible. The runes will still be considered by other rites \ - (such as the Rite of Translocation) but will be unusuable directly.(such as the Rite of Translocation) but will be unusuable directly. Use the same rite once more to reveal these runes once more.

" - -// text += "Reveal Runes
The Rite of True Sight is the foil of the Rite of Obscurity. It will turn all invisible runes visible once more, in addition to causing \ - all spirits nearby to become visible.

" - -// text += "Disguise Runes
Many crewmen enjoy drawing runes in crayon that resemble spell circles in order to play pranks on their fellow crewmen. The Rite of \ - False Truths takes advantage of this very joke. When invoked, all nearby runes will appear dull, precisely resembling those drawn in crayon. They still cannot be cleaned by conventional means, so \ - anyone trying to clean up the rune may become suspicious as it does not respond.

" - text += "Electromagnetic Disruption
Robotic lifeforms have time and time again been the downfall of fledgling cults. The Rite of Disruption may allow you to gain the upper \ hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location.

" @@ -154,23 +144,12 @@ This file contains the arcane tome files as well as innate cultist emergency com rune will draw a small amount of life force from the user and make the space above the rune completely dense, rendering it impassable to all but the most complex means. The rune may be invoked again to \ undo this effect and allow passage again.

" -// text += "Debilitate
The Rite of the Shadowed Mind is simple. When invoked, it will cause all non-cultists that can see its rune to become deaf, blind and mute for a \ - considerable amount of time.

" - -// text += "Stun
Though the Rite of Blazing Light is weak when invoked normally, using it in conjuction with the Rite of Binding makes it much more powerful. \ - This rune will cause any non-cultists that can see the rune to become disoriented, disabling them for a short time.

" - text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers.

" text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" -// text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ - be equipped will not be summoned.

" - -// text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" - text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" @@ -221,7 +200,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() - for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed - /obj/effect/rune) + for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) var/obj/effect/rune/R = T if(initial(R.cultist_name)) possible_runes.Add(initial(R.cultist_name)) //This is to allow the menu to let cultists select runes by name rather than by object path. I don't know a better way to do this From b9f7f65492c6c4643ef4cedf21186fd02e1cee0a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 18:20:42 -0400 Subject: [PATCH 13/93] Talismans take 10 seconds to make now --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 75b1da5556f..8e6e4587515 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -692,7 +692,7 @@ var/list/teleport_runes = list() talisman_type = J user.say("H'drak v'loso, mir'kanas verbot!") visible_message("Dark power begins to channel into the paper!.") - if(!do_after(user, 150, target = get_turf(user))) + if(!do_after(user, 100, target = get_turf(user))) return var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) From 90a5f1a1eed6629ca6c1dbb47394ce0a30cca8bb Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 18:22:07 -0400 Subject: [PATCH 14/93] Rogue quotation mark --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 31f041b5ba0..6ddf9b4b411 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -71,7 +71,7 @@ Rite of Disorientation dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" dat += "N'ath reth sh'yro eth d'raggathnor! - Allows you to summon an arcane tome.
" - dat += "Sas'so c'arta forbici! - Allows you to move to a selected Rite of Dislocation".
" + dat += "Sas'so c'arta forbici! - Allows you to move to a selected Rite of Dislocation.
" 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 nearby runes.
" dat += "Nikt'o barada kla'atu! - Allows you to reveal nearby runes.
" From bf93d9d606f3da1a4a49db97ff9b0a45ccd2bbf6 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 19:10:56 -0400 Subject: [PATCH 15/93] user, usr what's the difference --- code/game/gamemodes/cult/ritual.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 7687a2e0544..283482f9ba1 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -14,9 +14,9 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!iscultist(usr) || usr.incapacitated()) return if(!istype(usr, /mob/living/simple_animal)) - var/confirm_desperation = alert(user, "This is a LAST RESORT, you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") + var/confirm_desperation = alert(usr, "This is a LAST RESORT, you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") if(confirm_desperation == "No") - user << "On second thought, maybe I should summon a tome." + usr << "On second thought, maybe I should summon a tome." return var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") if(!input) From eda452f98f10084be12bfd80de387094f8d70f33 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 19:11:37 -0400 Subject: [PATCH 16/93] Update talisman.dm --- code/game/gamemodes/cult/talisman.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 6ddf9b4b411..8d84fcb88a6 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -20,7 +20,6 @@ Rite of Disorientation var/invocation = "Naise meam!" var/uses = 1 var/health_cost = 0 //The amount of health taken from the user when invoking the talisman - var/color = null /obj/item/weapon/paper/talisman/examine(mob/user) if(iscultist(user) || user.stat == DEAD) From 5beb4f874491ba5a51629c6ea890375d27ab0be5 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 19:19:35 -0400 Subject: [PATCH 17/93] Update runes.dm --- code/game/gamemodes/cult/runes.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 8e6e4587515..262594e64c1 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -183,6 +183,7 @@ var/list/teleport_runes = list() return ..() /obj/effect/rune/teleport/invoke(mob/living/user) + var/list/potential_runes = list() for(var/R in teleport_runes) var/obj/effect/rune/teleport/T = teleport_runes[R] if(T != src && (T.z <= ZLEVEL_SPACEMAX)) @@ -209,7 +210,7 @@ var/list/teleport_runes = list() if(movedsomething) visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." - else + else fail_invoke() //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. From 8bb1fe598596036fc016238f498fa7bd44934e7e Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 19:43:07 -0400 Subject: [PATCH 18/93] Only 6 arguments per alert? Booo --- code/game/gamemodes/cult/ritual.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 283482f9ba1..bf5b5a055d0 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -92,7 +92,7 @@ This file contains the arcane tome files as well as innate cultist emergency com open_tome(user) /obj/item/weapon/tome/proc/open_tome(mob/user) - var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome","Cancel") + var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") switch(choice) if("Read Tome") read_tome(user) @@ -103,8 +103,6 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!input) return cultist_commune(user, 1, 0, input) - if("Cancel") - return /obj/item/weapon/tome/proc/read_tome(mob/user) var/text = "" From 42801214536e5835907ca5ad685ef3473d535e23 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 11 Apr 2016 22:20:17 -0400 Subject: [PATCH 19/93] Manifest warning --- code/game/gamemodes/cult/runes.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 262594e64c1..a98966b1373 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -764,6 +764,10 @@ var/list/teleport_runes = list() icon_state = "6" color = rgb(255, 0, 0) +/obj/effect/rune/manifest/New(loc) + ..() + notify_ghosts("Manifest rune created in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src) + /obj/effect/rune/manifest/can_invoke(mob/living/user) if(!(user in get_turf(src))) user << "You must be standing on [src]!" From 5b8de2020ede3742a3479f8bffa6cab18f93f4ec Mon Sep 17 00:00:00 2001 From: Robustin Date: Tue, 12 Apr 2016 01:00:01 -0400 Subject: [PATCH 20/93] Update runes.dm --- code/game/gamemodes/cult/runes.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index a98966b1373..9cca08a83da 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -519,12 +519,13 @@ var/list/teleport_runes = list() color = rgb(255, 0, 0) /obj/effect/rune/emp/invoke(mob/living/user) + var/turf/E = get_turf(src) visible_message("[src] glows blue for a moment before vanishing.") - for(var/mob/living/carbon/C in orange(1,src)) - C << "Your hair stands on end as a shockwave bursts from the rune!" - playsound(get_turf(src), 'sound/items/Welder2.ogg', 25, 1) - qdel(src) //delete before pulsing - empulse(src, 8, 12) //actually worth using over the talisman now + for(var/mob/living/carbon/C in range(1,src)) + C << "You feel a minute vibration pass through you!" + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + qdel(src) //delete before pulsing because it's a delay reee + empulse(E, 8*cultists_in_range, 12*cultists_in_range) // Very strong now, scales //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral From dd626cf6b115bab0fe497002e7680c66c39f0a91 Mon Sep 17 00:00:00 2001 From: Robustin Date: Tue, 12 Apr 2016 06:48:09 -0400 Subject: [PATCH 21/93] Update runes.dm --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 9cca08a83da..ec77c20da92 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -525,7 +525,7 @@ var/list/teleport_runes = list() C << "You feel a minute vibration pass through you!" playsound(E, 'sound/items/Welder2.ogg', 25, 1) qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 8*cultists_in_range, 12*cultists_in_range) // Very strong now, scales + empulse(E, 10, 20) // Very strong now //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral From 16165eb5c428484f6ba01725e6ef389729e211de Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 11:41:38 -0400 Subject: [PATCH 22/93] EMP Scaling, Manifest Shield, Blood Boil nerf --- code/game/gamemodes/cult/runes.dm | 35 ++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index ec77c20da92..75ac76a6d47 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -520,12 +520,27 @@ var/list/teleport_runes = list() /obj/effect/rune/emp/invoke(mob/living/user) var/turf/E = get_turf(src) + var/emp_strength = 0 + for(var/mob/living/L in range(1, src)) + if(iscultist(L)) + var/mob/living/carbon/human/H = L + if(!istype(H)) + if(istype(L, /mob/living/simple_animal/hostile/construct)) + if(invocation) + L.say(invocation) + emp_strength++ + continue + if(L.stat || (H.disabilities & MUTE) || H.silent) + continue + if(invocation) + L.say(invocation) + emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) C << "You feel a minute vibration pass through you!" playsound(E, 'sound/items/Welder2.ogg', 25, 1) qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 10, 20) // Very strong now + empulse(E, 7*emp_strength, 10*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral @@ -680,6 +695,11 @@ var/list/teleport_runes = list() fail_invoke() log_game("Talisman Imbue rune failed - no blank papers on rune") return + if(rune_in_use) + user << "[src] can only support one ritual at a time!" + fail_invoke() + log_game("Talisman Imbue rune failed - more than one user") + return var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) var/obj/item/weapon/paper/talisman/J = I @@ -694,7 +714,9 @@ var/list/teleport_runes = list() talisman_type = J user.say("H'drak v'loso, mir'kanas verbot!") visible_message("Dark power begins to channel into the paper!.") + rune_in_use = 1 if(!do_after(user, 100, target = get_turf(user))) + rune_in_use = 0 return var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) @@ -703,7 +725,7 @@ var/list/teleport_runes = list() TELE.keyword = the_keyword visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) - qdel(src) + rune_in_use = 0 //Rite of Fabrication: Creates a construct shell out of 15 metal sheets. /obj/effect/rune/construct_shell @@ -748,7 +770,8 @@ var/list/teleport_runes = list() C << "\The [N] suddenly burns hotly before returning to normal!" continue C << "Your blood boils in your veins!" - C.take_overall_damage(51,51) + C.take_overall_damage(45,45) + C.weakened(7) for(var/mob/living/carbon/M in range(1,src)) if(iscultist(M)) M.apply_damage(15, BRUTE, pick("l_arm", "r_arm")) @@ -797,6 +820,12 @@ var/list/teleport_runes = list() new_human.alpha = 150 //Makes them translucent visible_message("A cloud of red mist forms above [src], and from within steps... a man.") user << "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely..." + for(get_turf(src)) + var/obj/machinery/shield/N = new(B) + N.name = "Invoker's Shield" + N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" + N.color = "red" + N.health = 20 new_human.key = ghost_to_spawn.key ticker.mode.add_cultist(new_human.mind) new_human << "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs." From f2d01f500cf3cd633631faeebeaf589d8fe888a2 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 11:42:12 -0400 Subject: [PATCH 23/93] Nar-Sie rune-shield name+desc --- code/game/gamemodes/cult/ritual.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index bf5b5a055d0..8522be19efd 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -233,6 +233,8 @@ This file contains the arcane tome files as well as innate cultist emergency com priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensionsal Affairs", 'sound/AI/spanomalies.ogg') for(var/turf/B in orange (1, user)) var/obj/machinery/shield/N = new(B) + N.name = "Rune-Scriber's Shield" + N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual" N.color = "red" N.health = 60 if(!do_after(user, 400, target = get_turf(user))) From dd9ccf927bcccd2f0b00012ec02d63f7745b3ecd Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 12:56:48 -0400 Subject: [PATCH 24/93] Adds a "Help" Cultist Proc for new players --- code/game/gamemodes/cult/ritual.dm | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 8522be19efd..892d9694498 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -6,6 +6,7 @@ This file contains the arcane tome files as well as innate cultist emergency com /mob/proc/cult_add_comm() //why the fuck does this have its own proc? not removing it because it might be used somewhere but... verbs += /mob/living/proc/cult_innate_comm + verbs += /mob/living/proc/cult_help /mob/living/proc/cult_innate_comm() set category = "Cultist" @@ -44,6 +45,39 @@ This file contains the arcane tome files as well as innate cultist emergency com cultist_commune(usr, 0, 1, input) return + +/mob/living/proc/cult_help() + set category = "Cultist" + set name = "How to Play Cult" + var/text = "" + text += "
Tenets of the Dark One



" + + text += "I. SECRECY
Your cult is a SECRET organization. Your success DEPENDS on keeping your cult's members and locations SECRET for as long as possible. This means that your tome should be hidden \ + in your bag and never brought out in public. You should never create runes where other crew might find them, and you should avoid using talismans or other cult magic with witnesses around.

" + + text += "II. TOME
You start with a unique talisman in your bag. This supply talisman can be used 3 times, and creates starter equipment for your cult. The most critical of the talisman's functions is \ + the power to create a tome. This tome is your most important item and summoning one (in secret) is your FIRST PRIORITY. It lets you talk to fellow cultists and create runes, which in turn is essential to growing the cult's power.

" + + text += "III.> RUNES
Runes are powerful sources of cult magic. Your tome will allow you to draw runes with your blood. Those runes, when hit with an empty hand, will attempt to \ + trigger the rune's magic. Runes are essential for the cult to convert new members, create powerful minions, or call upon incredibly powerful magic. Some runes require more than one cultist to use.

" + + text += "IV. TALISMANS
Talismans are a mobile source of cult magic that are NECESSARY to achieve success as a cult. Your starting talisman can produce certain talismans, but you will need \ + to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" + + text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ + you should use cablecuffs on them and remove their headset before they recover. If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome will knock them out before they can recover. \ + Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a conversion rune to convert someone. \ + Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" + + text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ + their corpse on a sacrifice rune and triggering that rune with three cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ + just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ + you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" + + var/datum/browser/popup = new(user, "", 800, 600) + popup.set_content(text) + popup.open() + return /obj/item/weapon/tome name = "arcane tome" From 2083b741c602fe4cd6c0ebc4df5091ca3f861ed0 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 13:19:01 -0400 Subject: [PATCH 25/93] Update Rune/Talisman descriptions --- code/game/gamemodes/cult/ritual.dm | 48 ++++++++++++------------------ 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 892d9694498..ce6de7a4293 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -128,7 +128,7 @@ This file contains the arcane tome files as well as innate cultist emergency com /obj/item/weapon/tome/proc/open_tome(mob/user) var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") switch(choice) - if("Read Tome") + if("Information") read_tome(user) if("Scribe Rune") scribe_rune(user) @@ -141,43 +141,42 @@ This file contains the arcane tome files as well as innate cultist emergency com /obj/item/weapon/tome/proc/read_tome(mob/user) var/text = "" text += "
Archives of the Dark One



" - text += "As a member of the cult, your goals are almost or entirely impossible to complete without special aid from the Geometer's plane. The primary method of doing this are runes. These \ - scribings, drawn in blood, are concentrated nodes of the magic within Nar-Sie's realm and will allow the performance of many tasks to aid you and the rest of the cult in your objectives. Runes \ - have many different names, and almost all of them are known as Rites. The only rune that is not a Rite is the Ritual of Dimensional Rending, which can only be performed with nine cultists and calls \ - forth the avatar of the Geometer herself (so long as she consents).

A rune's name and effects can be revealed by examining the rune.


" + text += "A rune's name and effects can be revealed by examining the rune.<

" - text += "Imbue Talisman
The Rite of Talisman Creation is one of the most important. It is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ - invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" + text += "Imbue Talisman
The Rune of Talisman Creation is one of the most important. It is the only way to create new talismans. A blank sheet of paper must be on top of the rune. After \ + invoking it and choosing which talisman you desire, the paper will be converted into a talisman.

" - text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, search for other Rites of Translocation. \ + text += "Teleport
The Rune of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, search for other Rites of Translocation. \ If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

" - text += "Convert
The Rite of Conversion is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ + text += "Convert
The Rune of Conversion is important to the success of the cult. It will allow you to convert normal crew members into cultists. \ To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ be unable to be converted. People the Geometer wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.

" - text += "Sacrifice
The Rite of Sacrifice is used to offer tribute to the Geometer. Simply place any living creature upon the rune and invoke it (this will not \ + text += "Sacrifice
The Rune of Sacrifice is necessary to achieve your goal. Simply place any dead creature upon the rune and invoke it (this will not \ target cultists!). If this creature has a mind, a soul shard will be created and the creature's soul transported to it. This rune is required if the cult's objectives include the sacrifice of a crew \ - member.

" + member. Sacrificing the dead can be done alone, but sacrificing living crew or your cult's target will require 3 cultists. Soul shards used on construct shells will move that soul into a \ + powerful construct of your choice.

" - text += "Raise Dead
The Rite of Resurrection is a delicate rite that requires two corpses. To perform the ritual, place the corpse you wish to revive onto \ + text += "Raise Dead
The Rune of Resurrection is a delicate rite that requires two corpses. To perform the ritual, place the corpse you wish to revive onto \ the rune and the offering body adjacent to it. When the rune is invoked, the body to be sacrificed will turn to dust, the life force flowing into the revival target. Assuming the target is not moved \ within a few seconds, they will be brought back to life, healed of all ailments.

" text += "Electromagnetic Disruption
Robotic lifeforms have time and time again been the downfall of fledgling cults. The Rite of Disruption may allow you to gain the upper \ - hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location.

" + hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location. The size of the EMP will grow significantly for each additional adjacent cultist when the \ + rune is activated.

" - text += "Astral Communion
The Rite of Astral Communion is perhaps the most ingenious rune that is usable by a single person. Upon invoking the rune, the \ + text += "Astral Communion
The Rune of Astral Communion is perhaps the most ingenious rune that is usable by a single person. Upon invoking the rune, the \ user's spirit will be ripped from their body. In this state, the user's physical body will be locked in place to the rune itself - any attempts to move it will result in the rune pulling it back. \ The body will also take constant damage while in this form, and may even die. The user's spirit will contain their consciousness, and will allow them to freely wander the station as a ghost. This may \ also be used to commune with the dead.

" - text += "Form Shield
While simple, the Rite of the Corporeal Shield serves an important purpose in defense and hindering passage. When invoked, the \ + text += "Form Barrier
While simple, the Barrier Rune serves an important purpose in defense and hindering passage. When invoked, the \ rune will draw a small amount of life force from the user and make the space above the rune completely dense, rendering it impassable to all but the most complex means. The rune may be invoked again to \ undo this effect and allow passage again.

" - text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ - any location. This will deal a moderate amount of damage to all invokers.

" + text += "Summon Cultist
The Rune of Summoning requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ + any location. This will deal a moderate amount of damage to all invokers. Absolutely crucial for rescuing your brothers from security.

" text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" @@ -185,10 +184,6 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" -// text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ - As it is invoked, it will rend and reshape reality around itself, stopping time for all those who don't follow the teachings of the Geometer. However, it requires more than one ritual soul as a \ - catalyst, and its power is bound to overflow and hurt its casters.

" - text += "Manifest Spirit
If you wish to bring a spirit back from the dead with a wish for vengeance and desire to serve, the Rite of Spectral \ Manifestation can do just that. When invoked, any spirits above the rune will be brought to life as a human wearing nothing that seeks only to serve you and the Geometer. However, the spirit's link \ to reality is fragile - you must remain on top of the rune, and you will slowly take damage. Upon stepping off the rune, the spirits will dissipate, dropping their items to the ground. You may manifest \ @@ -198,20 +193,15 @@ This file contains the arcane tome files as well as innate cultist emergency com comparison to other runes, is very large, requiring a 3x3 space of empty tiles to create. To invoke the rune, nine cultists must stand on the rune, so that all of them are within its circle. Then, \ simply invoke it. A brief tearing will be heard as the barrier between dimensions is torn open, and the avatar will come forth.


" - text += "While runes are excellent for many tasks, they lack portability. The advent of talismans has, to a degree, solved this inconvenience. Simply put, a talisman is a piece of paper with a \ - rune inlaid within it. The words of the rune can be whispered in order to invoke its effects, although usually to a lesser extent. To create a talisman, simply use a Rite of Binding as described above. \ - Unless stated otherwise, talismans are invoked by activating them in your hand. A list of valid rites, as well as the effects of their talisman form, can be found below.


" - text += "Talisman of Teleportation
The talisman form of the Rite of Translocation will transport the invoker to a randomly chosen rune of the same keyword, then \ disappear.

" text += "Talisman of Tome Summoning
This talisman functions nearly identically to the rune. The talisman will attempt to place the tome in your hand \ instead of on the ground, though this is the only advantage it has over the rune. It can be used once, then disappears.

" - text += "Talismans of Veiling, Revealing, and Disguising
These talismans all function identically to their rune counterparts, but with less range. In addition, \ - the Talisman of True Sight will not reveal spirits. They will disappear after one use.

" + text += "Talismans of Veiling and Disguising
These talismans will hide, reveal, or disguise (as crayon drawings) all nearby runes.

" - text += "Talisman of Electromagnetic Pulse
This talisman functions like the Rite of Disruption. It disappears after one use.

" + text += "Talisman of Electromagnetic Pulse
This talisman will EMP the target and anything else nearby. It disappears after one use.

" text += "Talisman of Stunning
Without this talisman, the cult would have no way of easily acquiring targets to convert. Commonly called \"stunpapers\", this \ talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ @@ -220,7 +210,7 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" - text += "Talisman of Horrors
The Rite of Horror will breaks your victim's mind with visions of the endtimes.

" + text += "Talisman of Horrors
The Rite of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) From 7fa264d80216778778cc678ae6ea234128448be2 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 13:38:14 -0400 Subject: [PATCH 26/93] Tweaks to colors and shields --- code/game/gamemodes/cult/runes.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 75ac76a6d47..92d67fca447 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -516,7 +516,7 @@ var/list/teleport_runes = list() cultist_desc = "Emits a large electromagnetic pulse, hindering electronics and disabling silicons." invocation = "Ta'gh fara'qha fel d'amar det!" icon_state = "5" - color = rgb(255, 0, 0) + color = rgb(77, 148, 255) /obj/effect/rune/emp/invoke(mob/living/user) var/turf/E = get_turf(src) @@ -820,12 +820,11 @@ var/list/teleport_runes = list() new_human.alpha = 150 //Makes them translucent visible_message("A cloud of red mist forms above [src], and from within steps... a man.") user << "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely..." - for(get_turf(src)) - var/obj/machinery/shield/N = new(B) - N.name = "Invoker's Shield" - N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" - N.color = "red" - N.health = 20 + var/obj/machinery/shield/N = new(get_turf(src)) + N.name = "Invoker's Shield" + N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" + N.color = "red" + N.health = 20 new_human.key = ghost_to_spawn.key ticker.mode.add_cultist(new_human.mind) new_human << "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs." @@ -835,7 +834,8 @@ var/list/teleport_runes = list() break user.apply_damage(1, BRUTE) sleep(30) - + + q.del(N) if(new_human) new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ "Your link to the world fades. Your form breaks apart.") From 49ec560bdb8275e1f6079af1a352981b8895b810 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 13:53:25 -0400 Subject: [PATCH 27/93] Talisman of Veiling Update, Reveal removal --- code/game/gamemodes/cult/talisman.dm | 79 ++++++++++------------------ 1 file changed, 27 insertions(+), 52 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 8d84fcb88a6..86a88414a6f 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -1,19 +1,3 @@ -/* - -Talismans are portable versions of runes that resemble blank sheets of paper. They may have different effects than their parent runes and are created by using a Rite of Binding with a paper on top and -a compatible rune somewhere nearby. A list of compatible runes can found below. - -Basic Runes: -Rite of Translocation -Rite of Knowledge -Rite of Obscurity -Rite of True Sight -Rite of False Truths -Rite of Disruption -Rite of Disorientation - -*/ - /obj/item/weapon/paper/talisman var/cultist_name = "talisman" var/cultist_desc = "A basic talisman. It serves no purpose." @@ -70,10 +54,8 @@ Rite of Disorientation dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" dat += "N'ath reth sh'yro eth d'raggathnor! - Allows you to summon an arcane tome.
" - dat += "Sas'so c'arta forbici! - Allows you to move to a selected Rite of Dislocation.
" + dat += "Sas'so c'arta forbici! - Allows you to move to a selected teleportation rune.
" 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 nearby runes.
" - dat += "Nikt'o barada kla'atu! - Allows you to reveal nearby runes.
" dat += "Fuu ma'jin! - Allows you to stun a person by attacking them with the talisman.
" dat += "Kal'om neth! - Summons a soul stone, used to capure the spirits of dead or dying humans.
" dat += "Daa'ig osk! - Summons a construct shell for use with captured souls. It is too large to carry on your person.
" @@ -99,12 +81,6 @@ Rite of Disorientation if("emp") var/obj/item/weapon/paper/talisman/emp/T = new(usr) usr.put_in_hands(T) - if("conceal") - var/obj/item/weapon/paper/talisman/hide_runes/T = new(usr) - usr.put_in_hands(T) - if("reveal") - var/obj/item/weapon/paper/talisman/true_sight/T = new(usr) - usr.put_in_hands(T) if("runestun") var/obj/item/weapon/paper/talisman/stun/T = new(usr) usr.put_in_hands(T) @@ -160,7 +136,7 @@ Rite of Disorientation user.forceMove(get_turf(actual_selected_rune)) return 1 -//Rite of Knowledge: Has two uses + /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." @@ -173,37 +149,36 @@ Rite of Disorientation "You speak the words of the talisman!") new /obj/item/weapon/tome(get_turf(user)) user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materialzies at your feet.") + "An arcane tome materializes at your feet.") -//Talisman of Obscurity: Same as rune /obj/item/weapon/paper/talisman/hide_runes cultist_name = "Talisman of Veiling" - cultist_desc = "A talisman that will make all runes within a small radius invisible." - color = "#b3b3b3" // light grey + cultist_desc = "A multi-use talisman that hides nearby runes. On its second use, will reveal nearby runes." invocation = "Kla'atu barada nikt'o!" - health_cost = 1 - -/obj/item/weapon/paper/talisman/hide_runes/invoke(mob/living/user) - user.visible_message("Dust flows from [user]'s hand.", \ - "You speak the words of the talisman, veiling nearby runes.") - for(var/obj/effect/rune/R in orange(3,user)) - R.visible_message("[R] fades away.") - R.invisibility = INVISIBILITY_OBSERVER - -//Rite of True Sight: Same as rune, but doesn't work on ghosts -/obj/item/weapon/paper/talisman/true_sight - cultist_name = "Talisman of Revealing" - cultist_desc = "A talisman that reveals nearby invisible runes." - color = "#4d4d4d" // dark grey - invocation = "Nikt'o barada kla'atu!" - health_cost = 1 - -/obj/item/weapon/paper/talisman/true_sight/invoke(mob/living/user) - user.visible_message("A flash of light shines from [user]'s hand!", \ - "You speak the words of the talisman, revealing nearby runes.") - for(var/obj/effect/rune/R in orange(3,user)) - R.invisibility = 0 + health_cost = 1 + uses = 4 + var/revealing = FALSE //if it reveals or not +/obj/item/weapon/paper/talisman/true_sight/invoke(mob/living/user, successfuluse = 1) + . = ..() + if(!revealing) + user.visible_message("Thin grey dust falls from [user]'s hand!", \ + "You speak the words of the talisman, hiding nearby runes.") + cultist_name = "Talisman of Revealing" + cultist_desc = "A talisman that reveals nearby runes." + invocation = "Nikt'o barada kla'atu!" + revealing = TRUE + for(var/obj/effect/rune/R in range(3,user)) + R.visible_message("[R] fades away.") + R.invisibility = INVISIBILITY_OBSERVER + R.alpha = 100 //To help ghosts distinguish hidden runes + else + user.visible_message("A flash of light shines from [user]'s hand!", \ + "You speak the words of the talisman, revealing nearby runes.") + for(var/obj/effect/rune/R in range(3,user)) + R.invisibility = 0 + R.visible_message("[R] suddenly appears!") + R.alpha = initial(R.alpha) //Rite of False Truths: Same as rune /obj/item/weapon/paper/talisman/make_runes_fake From 2fff4f45611bffe51a822f2c609e1d8dfa497522 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 14:04:57 -0400 Subject: [PATCH 28/93] Remie/Dunc fixes --- code/game/gamemodes/cult/runes.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 92d67fca447..2f48bccc2d2 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -708,10 +708,11 @@ var/list/teleport_runes = list() entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return - for(var/I in typesof(/obj/item/weapon/paper/talisman)) - var/obj/effect/rune/J = I - if(initial(J.cultist_name) == entered_talisman_name) - talisman_type = J + var/obj/effect/rune/J = I + var/talisman_cult_name = initial(J.cultist_name) + if(talisman_cult_name) + possible_talismans[talisman_cult_name] = J + talisman_type = possible_talismans[entered_talisman_name] user.say("H'drak v'loso, mir'kanas verbot!") visible_message("Dark power begins to channel into the paper!.") rune_in_use = 1 From 4b9e4f771eb1a22930e3024f36986d39c378f9f5 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 14:07:43 -0400 Subject: [PATCH 29/93] Typos and minor stuff --- code/game/gamemodes/cult/ritual.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index ce6de7a4293..85f712c6008 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -15,7 +15,7 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!iscultist(usr) || usr.incapacitated()) return if(!istype(usr, /mob/living/simple_animal)) - var/confirm_desperation = alert(usr, "This is a LAST RESORT, you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") + var/confirm_desperation = alert(usr, "This is a LAST RESORT; you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") if(confirm_desperation == "No") usr << "On second thought, maybe I should summon a tome." return @@ -153,7 +153,7 @@ This file contains the arcane tome files as well as innate cultist emergency com To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ be unable to be converted. People the Geometer wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.

" - text += "Sacrifice
The Rune of Sacrifice is necessary to achieve your goal. Simply place any dead creature upon the rune and invoke it (this will not \ + text += "Sacrifice
The Rune of Sacrifice is necessary to achieve your goals. Simply place any dead creature upon the rune and invoke it (this will not \ target cultists!). If this creature has a mind, a soul shard will be created and the creature's soul transported to it. This rune is required if the cult's objectives include the sacrifice of a crew \ member. Sacrificing the dead can be done alone, but sacrificing living crew or your cult's target will require 3 cultists. Soul shards used on construct shells will move that soul into a \ powerful construct of your choice.

" @@ -178,10 +178,10 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Summon Cultist
The Rune of Summoning requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers. Absolutely crucial for rescuing your brothers from security.

" - text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ + text += "Fabricate Shell
The Rune of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" - text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ + text += "Blood Boil
The Rune of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" text += "Manifest Spirit
If you wish to bring a spirit back from the dead with a wish for vengeance and desire to serve, the Rite of Spectral \ @@ -207,7 +207,7 @@ This file contains the arcane tome files as well as innate cultist emergency com talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." - text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ + text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldritch longsword, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" text += "Talisman of Horrors
The Rite of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" From a93dcb643929aad99474ad3b87390198113b2673 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:31:04 -0400 Subject: [PATCH 30/93] Construction Talisman and misc. fixes --- code/game/gamemodes/cult/talisman.dm | 62 ++++++++++++++++++---------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 86a88414a6f..42849385472 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -140,7 +140,7 @@ /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." - color = "#000000" // tome-black + color = "#1d0e0e" // red-black invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 @@ -151,12 +151,13 @@ user.visible_message("A tome appears at [user]'s feet!", \ "An arcane tome materializes at your feet.") -/obj/item/weapon/paper/talisman/hide_runes +/obj/item/weapon/paper/talisman/true_sight cultist_name = "Talisman of Veiling" cultist_desc = "A multi-use talisman that hides nearby runes. On its second use, will reveal nearby runes." + color = "#9c9c9c" // grey invocation = "Kla'atu barada nikt'o!" - health_cost = 1 - uses = 4 + health_cost = 1 + uses = 2 var/revealing = FALSE //if it reveals or not /obj/item/weapon/paper/talisman/true_sight/invoke(mob/living/user, successfuluse = 1) @@ -164,8 +165,6 @@ if(!revealing) user.visible_message("Thin grey dust falls from [user]'s hand!", \ "You speak the words of the talisman, hiding nearby runes.") - cultist_name = "Talisman of Revealing" - cultist_desc = "A talisman that reveals nearby runes." invocation = "Nikt'o barada kla'atu!" revealing = TRUE for(var/obj/effect/rune/R in range(3,user)) @@ -212,22 +211,8 @@ cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly." color = "#ff0000" // red invocation = "Fuu ma'jin!" - health_cost = 12 - -//Rite of Arming: Equips cultist armor on the user, where available -/obj/item/weapon/paper/talisman/armor - cultist_name = "Talisman of Arming" - cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." - color = "#33cc33" // green - invocation = "N'ath reth sh'yro eth draggathnor!" - -//Rite of Horrors: Breaks the mind of the victim with nightmarish hallucinations -/obj/item/weapon/paper/talisman/horror - cultist_name = "Talisman of Horrors" - cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." - color = "#ffb366" // light orange - invocation = "Lo'Nab Na'Dm!" - + health_cost = 10 + /obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) if(iscultist(user)) user << "To use this talisman, attack the target directly." @@ -261,6 +246,13 @@ return ..() +//Rite of Arming: Equips cultist armor on the user, where available +/obj/item/weapon/paper/talisman/armor + cultist_name = "Talisman of Arming" + cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." + color = "#33cc33" // green + invocation = "N'ath reth sh'yro eth draggathnor!" + /obj/item/weapon/paper/talisman/armor/invoke(mob/living/user) . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ @@ -280,6 +272,13 @@ return ..() +//Talisman of Horrors: Breaks the mind of the victim with nightmarish hallucinations +/obj/item/weapon/paper/talisman/horror + cultist_name = "Talisman of Horrors" + cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." + color = "#ffb366" // light orange + invocation = "Lo'Nab Na'Dm!" + /obj/item/weapon/paper/talisman/horror/attack(mob/living/target, mob/living/user) if(iscultist(user)) user.visible_message("You disturb [target] with visons of the end!") @@ -287,3 +286,22 @@ var/mob/living/carbon/H = target H.reagents.add_reagent("mindbreaker", 30) qdel(src) + +//Talisman of Fabrication: Creates a construct shell out of 25 metal sheets. +/obj/item/weapon/paper/talisman/construction + cultist_name = "Talisman of Construction" + cultist_desc = "Use this talisman on at least twenty-five metal sheets to create an empty construct shell" + invocation = "Ethra p'ni dedol!" + color = "#000000" // black + +/obj/item/weapon/paper/talisman/construction/attack_self(mob/living/user) + if(iscultist(user)) + user << "To use this talisman, attack the target directly." + else + user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" + + +/obj/item/weapon/paper/talisman/construction/attack(obj/M,mob/living/user) + if(iscultist(user)) + user << "This talisman will only work on a stack of metal sheets!" + log_game("Construct talisman failed - not a valid target") From 6f8a5e2b20a8ed664fa769f3a9d538c75d384823 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:35:39 -0400 Subject: [PATCH 31/93] Updated Descriptions --- code/game/gamemodes/cult/ritual.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 85f712c6008..85141a87a33 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -74,7 +74,7 @@ This file contains the arcane tome files as well as innate cultist emergency com just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" - var/datum/browser/popup = new(user, "", 800, 600) + var/datum/browser/popup = new(usr, "", 800, 600) popup.set_content(text) popup.open() return @@ -178,9 +178,6 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Summon Cultist
The Rune of Summoning requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers. Absolutely crucial for rescuing your brothers from security.

" - text += "Fabricate Shell
The Rune of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ - and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" - text += "Blood Boil
The Rune of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" @@ -195,6 +192,9 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Teleportation
The talisman form of the Rite of Translocation will transport the invoker to a randomly chosen rune of the same keyword, then \ disappear.

" + + text += "Talisman of Construction
The Rune of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ + and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" text += "Talisman of Tome Summoning
This talisman functions nearly identically to the rune. The talisman will attempt to place the tome in your hand \ instead of on the ground, though this is the only advantage it has over the rune. It can be used once, then disappears.

" From 69ef6ba8b04c50f8f3f540d00beda894d418714e Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:37:09 -0400 Subject: [PATCH 32/93] Removed Construction Rune --- code/game/gamemodes/cult/runes.dm | 169 +++++++++++++----------------- 1 file changed, 71 insertions(+), 98 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2f48bccc2d2..d8267d51778 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,5 +1,6 @@ /var/list/sacrificed = list() var/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) +var/list/teleport_runes = list() /* @@ -159,7 +160,57 @@ structure_check() searches for nearby cultist structures required for the invoca return N return 0 -var/list/teleport_runes = list() +//Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. +/obj/effect/rune/imbue + cultist_name = "Create Talisman" + cultist_desc = "Transforms papers and valid runes into talismans." + invocation = null //no talisman made, no invocation. + icon_state = "3" + color = rgb(0, 0, 255) + +/obj/effect/rune/imbue/invoke(mob/living/user) + var/turf/T = get_turf(src) + var/list/papers_on_rune = list() + var/entered_talisman_name + var/obj/item/weapon/paper/talisman/talisman_type + var/list/possible_talismans = list() + for(var/obj/item/weapon/paper/P in T) + if(!P.info) + papers_on_rune.Add(P) + if(!papers_on_rune.len) + user << "There must be a blank paper on top of [src]!" + fail_invoke() + log_game("Talisman Imbue rune failed - no blank papers on rune") + return + if(rune_in_use) + user << "[src] can only support one ritual at a time!" + fail_invoke() + log_game("Talisman Imbue rune failed - more than one user") + return + var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) + for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) + var/obj/item/weapon/paper/talisman/J = I + var/talisman_cult_name = initial(J.cultist_name) + if(talisman_cult_name) + possible_talismans[talisman_cult_name] = J //This is to allow the menu to let cultists select talismans by name + entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) + return + talisman_type = possible_talismans[entered_talisman_name] + user.say("H'drak v'loso, mir'kanas verbot!") + visible_message("Dark power begins to channel into the paper!.") + rune_in_use = 1 + if(!do_after(user, 100, target = get_turf(user))) + rune_in_use = 0 + return + var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) + if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) + var/the_keyword = stripped_input(usr, "Please enter a keyword for the talisman.", "Enter Keyword", "") + var/obj/item/weapon/paper/talisman/teleport/TELE = TA + TELE.keyword = the_keyword + visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") + qdel(paper_to_imbue) + rune_in_use = 0 //Rite of Translocation: Warps the user to a random teleport rune with the same keyword. /obj/effect/rune/teleport cultist_name = "Teleport" @@ -211,7 +262,8 @@ var/list/teleport_runes = list() visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." else - fail_invoke() + fail_invoke() + //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert @@ -374,7 +426,8 @@ var/list/teleport_runes = list() M << "\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"" if(M.reagents) M.reagents.add_reagent("hell_water", 10) - M.Weaken(5) + M.Weaken(7) + M.Stun(7) fail_invoke() log_game("Summon Nar-Sie rune failed - improper objective") return @@ -521,20 +574,20 @@ var/list/teleport_runes = list() /obj/effect/rune/emp/invoke(mob/living/user) var/turf/E = get_turf(src) var/emp_strength = 0 - for(var/mob/living/L in range(1, src)) - if(iscultist(L)) - var/mob/living/carbon/human/H = L - if(!istype(H)) - if(istype(L, /mob/living/simple_animal/hostile/construct)) - if(invocation) - L.say(invocation) - emp_strength++ + for(var/mob/living/L in range(1, src)) + if(iscultist(L)) + var/mob/living/carbon/human/H = L + if(!istype(H)) + if(istype(L, /mob/living/simple_animal/hostile/construct)) + if(invocation) + L.say(invocation) + emp_strength++ continue - if(L.stat || (H.disabilities & MUTE) || H.silent) - continue - if(invocation) - L.say(invocation) - emp_strength++ + if(L.stat || (H.disabilities & MUTE) || H.silent) + continue + if(invocation) + L.say(invocation) + emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) C << "You feel a minute vibration pass through you!" @@ -673,86 +726,6 @@ var/list/teleport_runes = list() cultist_to_summon.forceMove(get_turf(src)) qdel(src) -//Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. -/obj/effect/rune/imbue - cultist_name = "Create Talisman" - cultist_desc = "Transforms papers and valid runes into talismans." - invocation = null //no talisman made, no invocation. - icon_state = "3" - color = rgb(0, 0, 255) - -/obj/effect/rune/imbue/invoke(mob/living/user) - var/turf/T = get_turf(src) - var/list/papers_on_rune = list() - var/entered_talisman_name - var/obj/item/weapon/paper/talisman/talisman_type - var/list/possible_talismans = list() - for(var/obj/item/weapon/paper/P in T) - if(!P.info) - papers_on_rune.Add(P) - if(!papers_on_rune.len) - user << "There must be a blank paper on top of [src]!" - fail_invoke() - log_game("Talisman Imbue rune failed - no blank papers on rune") - return - if(rune_in_use) - user << "[src] can only support one ritual at a time!" - fail_invoke() - log_game("Talisman Imbue rune failed - more than one user") - return - var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) - for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) - var/obj/item/weapon/paper/talisman/J = I - if(initial(J.cultist_name)) - possible_talismans.Add(initial(J.cultist_name)) //This is to allow the menu to let cultists select talismans by name - entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) - return - var/obj/effect/rune/J = I - var/talisman_cult_name = initial(J.cultist_name) - if(talisman_cult_name) - possible_talismans[talisman_cult_name] = J - talisman_type = possible_talismans[entered_talisman_name] - user.say("H'drak v'loso, mir'kanas verbot!") - visible_message("Dark power begins to channel into the paper!.") - rune_in_use = 1 - if(!do_after(user, 100, target = get_turf(user))) - rune_in_use = 0 - return - var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) - if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) - var/the_keyword = stripped_input(usr, "Please enter a keyword for the talisman.", "Enter Keyword", "") - var/obj/item/weapon/paper/talisman/teleport/TELE = TA - TELE.keyword = the_keyword - visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") - qdel(paper_to_imbue) - rune_in_use = 0 - -//Rite of Fabrication: Creates a construct shell out of 15 metal sheets. -/obj/effect/rune/construct_shell - cultist_name = "Summon Construct Shell" - cultist_desc = "Turns fifteen metal sheets into an empty construct shell, suitable for containing a soul shard." - invocation = "Ethra p'ni dedol!" - icon_state = "5" - color = rgb(150, 150, 150) - -/obj/effect/rune/construct_shell/invoke(mob/living/user) - var/turf/T = get_turf(src) - var/canmakeshell = 0 - for(var/obj/item/stack/sheet/metal/S in T) - if(!canmakeshell && S.use(15)) - canmakeshell = 1 - if(canmakeshell) - . = ..() - else - user << "There must be at least fifteen sheets of metal on [src]!" - log_game("Construct Shell rune failed - not enough metal sheets") - -/obj/effect/rune/construct_shell/invoke(mob/living/user) - new /obj/structure/constructshell(get_turf(src)) - visible_message("The metal bends and twists into a humanoid shell!") - qdel(src) - //Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby /obj/effect/rune/blood_boil cultist_name = "Boil Blood" @@ -772,7 +745,7 @@ var/list/teleport_runes = list() continue C << "Your blood boils in your veins!" C.take_overall_damage(45,45) - C.weakened(7) + C.Stun(7) for(var/mob/living/carbon/M in range(1,src)) if(iscultist(M)) M.apply_damage(15, BRUTE, pick("l_arm", "r_arm")) @@ -836,7 +809,7 @@ var/list/teleport_runes = list() user.apply_damage(1, BRUTE) sleep(30) - q.del(N) + qdel(N) if(new_human) new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ "Your link to the world fades. Your form breaks apart.") From fb782d566441cc8a303bffef0371b4cb2e2ac8ab Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:38:57 -0400 Subject: [PATCH 34/93] Enabling Construction Talisman --- .../objects/items/stacks/sheets/sheet_types.dm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 11862ff7bba..8adb06545d0 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -57,6 +57,20 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ flags = CONDUCT origin_tech = "materials=1" +/obj/item/stack/sheet/metal/attackby(obj/item/weapon/W, mob/living/user) + ..() + if(istype(W, /obj/item/weapon/paper/talisman/construction)) + if(amount>24) + amount = amount - 25 + new /obj/structure/constructshell(get_turf(src)) + user << "The talisman clings to the metal and twists it into a construct shell!" + if(amount == 0) + qdel(src) + qdel(W) + else + user << "The talisman requires at least 25 sheets of metal!" + + /obj/item/stack/sheet/metal/narsie_act() if(prob(20)) new /obj/item/stack/sheet/runed_metal(loc, amount) From 1a6fecb5be5cfe6c1f637f3593edc67636a74723 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:39:44 -0400 Subject: [PATCH 35/93] Fake Talismans --- code/game/machinery/washing_machine.dm | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 5b30ada2d0e..d851dfe2d3b 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -16,6 +16,7 @@ //8 = blood, running var/gibs_ready = 0 var/obj/crayon + var/obj/paper /obj/machinery/washing_machine/AltClick(mob/user) if(!user.canUseTopic(src)) @@ -44,7 +45,21 @@ for(var/obj/item/clothing/suit/hooded/ian_costume/IC in contents) new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi(src) qdel(IC) - + + for(var/obj/item/weapon/paper/P in contents) + if(crayon) + var/dye_color + if(istype(crayon,/obj/item/toy/crayon)) + var/obj/item/toy/crayon/CR = crayon + dye_color = CR.colourName + else if(istype(crayon,/obj/item/weapon/stamp)) + var/obj/item/weapon/stamp/ST = crayon + dye_color = ST.item_color + if(dye_color) + P.color = dye_color + qdel(crayon) + crayon = null + if(crayon) var/wash_color if(istype(crayon,/obj/item/toy/crayon)) @@ -53,6 +68,7 @@ else if(istype(crayon,/obj/item/weapon/stamp)) var/obj/item/weapon/stamp/ST = crayon wash_color = ST.item_color + if(wash_color) var/new_jumpsuit_icon_state = "" @@ -196,6 +212,7 @@ state = 3 else ..() + else if(istype(W,/obj/item/stack/sheet/hairlesshide) || \ istype(W,/obj/item/clothing/under) || \ istype(W,/obj/item/clothing/mask) || \ @@ -203,7 +220,8 @@ istype(W,/obj/item/clothing/gloves) || \ istype(W,/obj/item/clothing/shoes) || \ istype(W,/obj/item/clothing/suit) || \ - istype(W,/obj/item/weapon/bedsheet)) + istype(W,/obj/item/weapon/bedsheet) || \ + istype(W,/obj/item/weapon/paper)) //YES, it's hardcoded... saves a var/can_be_washed for every single clothing item. if ( istype(W,/obj/item/clothing/suit/space ) ) From 97044ac59fc7fdeab561b99ed02818e46c63e9fc Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 19:20:12 -0400 Subject: [PATCH 36/93] Joan's one-rune-per-tile and other improvements --- code/game/gamemodes/cult/ritual.dm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 85141a87a33..0988a73fe28 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -218,10 +218,14 @@ This file contains the arcane tome files as well as innate cultist emergency com return 1 /obj/item/weapon/tome/proc/scribe_rune(mob/user) + var/turf/Turf = get_turf(user) var/chosen_keyword - var/rune_to_scribe + var/obj/effect/rune/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() + if(locate(/obj/effect/rune) in Turf) + user << "There is already a rune here." + return for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) var/obj/effect/rune/R = T if(initial(R.cultist_name)) @@ -243,6 +247,10 @@ This file contains the arcane tome files as well as innate cultist emergency com break if(!rune_to_scribe) return + var/turf/Thenewturfyouwalkedto = get_turf(user) //we may have moved. adjust as needed... + if(locate(/obj/effect/rune) in Thenewturfyouwalkedto) + user << "There is already a rune here." + return if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return user.visible_message("[user] cuts open their arm and begins writing in their own blood!", \ @@ -271,6 +279,5 @@ This file contains the arcane tome files as well as innate cultist emergency com "You finish drawing the arcane markings of the Geometer.") for(var/obj/machinery/shield/S in orange (1, user)) qdel(S) - var/obj/effect/rune/R = new rune_to_scribe(get_turf(user)) - if(chosen_keyword) - R.keyword = chosen_keyword + new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) + user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 0f169648f9d981bd5995853b221d4d554751185a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 03:58:53 -0400 Subject: [PATCH 37/93] Joan Teleportation Fix --- code/game/gamemodes/cult/runes.dm | 47 ++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index d8267d51778..c220cae89d6 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -211,10 +211,10 @@ structure_check() searches for nearby cultist structures required for the invoca visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) rune_in_use = 0 -//Rite of Translocation: Warps the user to a random teleport rune with the same keyword. + /obj/effect/rune/teleport cultist_name = "Teleport" - cultist_desc = "Warps everything above it to another chosen teleport rune." + cultist_desc = "warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" color = rgb(0, 0, 255) @@ -223,34 +223,49 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/teleport/New(loc, set_keyword) ..() - teleport_runes.Add(src) var/area/A = get_area(src) var/locname = initial(A.name) listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" - teleport_runes["[listkey]"] = src + teleport_runes += src /obj/effect/rune/teleport/Destroy() - teleport_runes.Remove(listkey) - return ..() + teleport_runes -= src + return ..() /obj/effect/rune/teleport/invoke(mob/living/user) - var/list/potential_runes = list() + var/list/potential_runes = list() + var/list/teleportnames = list() + var/list/duplicaterunecount = list() for(var/R in teleport_runes) - var/obj/effect/rune/teleport/T = teleport_runes[R] + var/obj/effect/rune/teleport/T = R + var/resultkey = T.listkey + if(resultkey in teleportnames) + duplicaterunecount[resultkey]++ + resultkey = "[resultkey] ([duplicaterunecount[resultkey]])" + else + teleportnames.Add(resultkey) + duplicaterunecount[resultkey] = 1 if(T != src && (T.z <= ZLEVEL_SPACEMAX)) - potential_runes["[T.listkey]"] = T + potential_runes[resultkey] = T if(!potential_runes.len) user << "There are no valid runes to teleport to!" - fail_invoke() log_game("Teleport rune failed - no other teleport runes") - return - - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes - var/obj/effect/rune/teleport/actual_selected_rune = teleport_runes["[input_rune_key]"] - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !actual_selected_rune) fail_invoke() return + + if(user.z > ZLEVEL_SPACEMAX) + user << "You are not in the right dimension!" + log_game("Teleport rune failed - user in away mission") + fail_invoke() + return + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !actual_selected_rune) + fail_invoke() + return + var/turf/T = get_turf(src) var/turf/UT = get_turf(user) var/movedsomething = 0 @@ -262,7 +277,7 @@ structure_check() searches for nearby cultist structures required for the invoca visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." else - fail_invoke() + fail_invoke() //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. From cd8f93f158a4353067b1d7752043c98072e636f9 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:28:47 -0400 Subject: [PATCH 38/93] Joan Teleportation Fix --- code/game/gamemodes/cult/talisman.dm | 31 ++++++++++++++++------------ 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 42849385472..4f2bf180b18 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -104,37 +104,42 @@ /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." - color = "#9900cc" // purple invocation = "Sas'so c'arta forbici!" health_cost = 5 - var/keyword = "ire" -/obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user) - ..() +/obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user, successfuluse = 1) var/list/potential_runes = list() + var/list/teleportnames = list() + var/list/duplicaterunecount = list() for(var/R in teleport_runes) - var/obj/effect/rune/teleport/T = teleport_runes[R] - if(T.z <= ZLEVEL_SPACEMAX) - potential_runes["[T.listkey]"] = T + var/obj/effect/rune/teleport/T = R + var/resultkey = T.listkey + if(resultkey in teleportnames) + duplicaterunecount[resultkey]++ + resultkey = "[resultkey] ([duplicaterunecount[resultkey]])" + else + teleportnames.Add(resultkey) + duplicaterunecount[resultkey] = 1 + potential_runes[resultkey] = T if(!potential_runes.len) user << "There are no valid runes to teleport to!" log_game("Teleport talisman failed - no other teleport runes") - return 0 + return ..(user, 0) if(user.z > ZLEVEL_SPACEMAX) user << "You are not in the right dimension!" log_game("Teleport talisman failed - user in away mission") - return 0 + return ..(user, 0) - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes - var/obj/effect/rune/teleport/actual_selected_rune = teleport_runes["[input_rune_key]"] + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? if(!actual_selected_rune) - return 0 + return ..(user, 0) user.visible_message("Dust flows from [user]'s hand, and they disappear in a flash of red light!", \ "You speak the words of the talisman and find yourself somewhere else!") user.forceMove(get_turf(actual_selected_rune)) - return 1 + return ..() /obj/item/weapon/paper/talisman/summon_tome From 451be3c15faad17f9eec782ad3069a605bfb1dd2 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:37:52 -0400 Subject: [PATCH 39/93] Shield Improvements --- code/game/gamemodes/cult/ritual.dm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 0988a73fe28..632c38e2f25 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -223,6 +223,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/obj/effect/rune/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() + var/list/shields = list() if(locate(/obj/effect/rune) in Turf) user << "There is already a rune here." return @@ -269,15 +270,21 @@ This file contains the arcane tome files as well as innate cultist emergency com N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual" N.color = "red" N.health = 60 - if(!do_after(user, 400, target = get_turf(user))) - for(var/obj/machinery/shield/U in orange (1, user)) - qdel(U) + shields |= N + if(shields.len) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) return if(!do_after(user, 50, target = get_turf(user))) return user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") - for(var/obj/machinery/shield/S in orange (1, user)) - qdel(S) + if(shields.len) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From f2a3968b6fed0cb00d48b337c895023dad783f82 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:39:02 -0400 Subject: [PATCH 40/93] Cleaned up paper coloring code --- code/game/machinery/washing_machine.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index d851dfe2d3b..a845f84a59e 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -52,9 +52,6 @@ if(istype(crayon,/obj/item/toy/crayon)) var/obj/item/toy/crayon/CR = crayon dye_color = CR.colourName - else if(istype(crayon,/obj/item/weapon/stamp)) - var/obj/item/weapon/stamp/ST = crayon - dye_color = ST.item_color if(dye_color) P.color = dye_color qdel(crayon) From dc2951ee353953e1531af43a1f7e549dbed86438 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:43:04 -0400 Subject: [PATCH 41/93] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 632c38e2f25..22de43ca247 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -74,10 +74,10 @@ This file contains the arcane tome files as well as innate cultist emergency com just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" - var/datum/browser/popup = new(usr, "", 800, 600) + var/datum/browser/popup = new(usr, "mind", "", 800, 600) popup.set_content(text) popup.open() - return + return 1 /obj/item/weapon/tome name = "arcane tome" @@ -207,10 +207,10 @@ This file contains the arcane tome files as well as innate cultist emergency com talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." - text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldritch longsword, and a pair of boots. Any items that cannot \ + text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, a bola, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" - text += "Talisman of Horrors
The Rite of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" + text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) From 27dfe78a6b9d3cc30af3379e8ff91436aa68c73d Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:47:20 -0400 Subject: [PATCH 42/93] Adds reinforced bola to talisman of arming --- code/game/gamemodes/cult/talisman.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 4f2bf180b18..b0189cf916c 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -268,6 +268,7 @@ user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) user.drop_item() user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) + user.put_in_hands(new /obj/item/weapon/restraints/legcuffs/bola/tactical(user)) /obj/item/weapon/paper/talisman/armor/attack(mob/living/target, mob/living/user) if(iscultist(user) && iscultist(target)) From ebda5397c7a9b0af47191b427e70427933919798 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 10:46:08 -0400 Subject: [PATCH 43/93] Talisman keyword fix --- code/game/gamemodes/cult/talisman.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index b0189cf916c..a6b00a77cea 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -76,7 +76,6 @@ usr.put_in_hands(T) if("teleport") var/obj/item/weapon/paper/talisman/teleport/T = new(usr) - T.keyword = "veri" usr.put_in_hands(T) if("emp") var/obj/item/weapon/paper/talisman/emp/T = new(usr) From 6c06f794700bc166f8a1169cf270109c9098a6ec Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 10:49:32 -0400 Subject: [PATCH 44/93] So thats why you meme about hidden white space In my day we used brackets... --- code/game/gamemodes/cult/ritual.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 22de43ca247..5122cd4a7db 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -271,11 +271,11 @@ This file contains the arcane tome files as well as innate cultist emergency com N.color = "red" N.health = 60 shields |= N - if(shields.len) - for(var/V in shields) - var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) + if(shields.len) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) return if(!do_after(user, 50, target = get_turf(user))) return @@ -283,8 +283,8 @@ This file contains the arcane tome files as well as innate cultist emergency com "You finish drawing the arcane markings of the Geometer.") if(shields.len) for(var/V in shields) - var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 0ce6786665b78130c2ccfe187f18320bbbdbe50d Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:28:10 -0400 Subject: [PATCH 45/93] Tabs and spaces and tabs and spaces --- code/game/gamemodes/cult/ritual.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 5122cd4a7db..e47db0b3481 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -284,7 +284,7 @@ This file contains the arcane tome files as well as innate cultist emergency com if(shields.len) for(var/V in shields) var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) + if(S && !qdeleted(S)) + qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 51a004a112899427d83a7d619325fe4b693afb61 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:34:26 -0400 Subject: [PATCH 46/93] Teleport talismans don't need a keyword --- code/game/gamemodes/cult/runes.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index c220cae89d6..531d5a3b8f4 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -204,11 +204,7 @@ structure_check() searches for nearby cultist structures required for the invoca rune_in_use = 0 return var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) - if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) - var/the_keyword = stripped_input(usr, "Please enter a keyword for the talisman.", "Enter Keyword", "") - var/obj/item/weapon/paper/talisman/teleport/TELE = TA - TELE.keyword = the_keyword - visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") + visible_message("[src] glows with power, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) rune_in_use = 0 From 31c5ff70420f92af9443f26d5816797005bd0dbb Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:47:17 -0400 Subject: [PATCH 47/93] Adds cult bola --- code/game/objects/items/weapons/handcuffs.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index e3f44bc86ef..1af8204694c 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -309,4 +309,11 @@ desc = "A strong bola, made with a long steel chain. It looks heavy, enough so that it could trip somebody." icon_state = "bola_r" breakouttime = 70 - weaken = 1 \ No newline at end of file + weaken = 1 + +/obj/item/weapon/restraints/legcuffs/bola/cult //cult variant, comes with armament talisman + name = "nar'sian bola" + desc = "A strong bola, bound with dark magic. Throw it to trip and slow your victim." + icon_state = "bola_c" + breakouttime = 45 + weaken = 1 From b8de5175378403e9228b7485daf7b0b146fc59a3 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:49:20 -0400 Subject: [PATCH 48/93] Cult Bola Icons --- icons/obj/items.dmi | Bin 59762 -> 66676 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index daa7bec0607d6d9f17f2c34138cc59b0ddfaefd7..f445282407db447b1a30209f3627bc59b348a63c 100644 GIT binary patch literal 66676 zcmcG#1yEc;*EVXxCVE3 z*8yfH@Ato3e{I!P?QYdh)zozNobJADr=N44b7OV1R0;8D@c;lIR992d0{{$k5(9u> zqkqo)$8P`t>>BvurMHrem$j#ZySIazD**UsmuC#P&We$A4_)X(_9q^`=3017EVIWt z%^FRG#O{otH~#)Gg(k&tu4FOdm8sU=VChR5?AJ@8Y$x#LU;(BwL>{6kxGcA&rTRAzDS-q%)i7z+9?Sv{%Bi}C47@^(KNAiqMbw}$mELxAN|?qWq+Hx44>@DM@jcq3MYjv ze1)W5&)b$V;7!Ybi=K=V*+>WWRf8DqnDg`)x&7sW^iCMf)>088Wjr zwZG3q;>K|YEgVTt&6qIqgt4nT2yO*wrnZ=E{(OCKR36dk=4|PJ_uZ_gJlO~Gi}G_( zk$ZZ{gKEn^RvP8P!RE4=J-USKAxX5K+m7R8)N-(AOui0Zbn_cZda-nt9aG;D5tH|` zzRaWa6AgapySq?^rIK|CL^kUDW8#M#b0vo2@`pL0;>#+y`==OxRPi6= za~kZw?CB+U%XK~oNf`T^d8%mm1*?dq1W%C!4os#Ky-R+cStrP=arh@OtQb>Me3Ldn*Ig(TLn)%72`{h$ z5M*fjA(g4fZyymYQDN0B$^P_FZQCh(eS>!}p_}4HqZA5karD!Ay1pM#B#ZE>78 zQt3bEYo1AP#OTIxyQ9a1=LuWVsr9jF)x?SOuNI5Pi_i_B_JzPxP6qnT?$qSk9@TS? zEsn^?LZxj%f0Q5iCwX&ayiP1F^+6?yhcA33s{@C}Rud7WTGqH#cJCgd?#BWJZwBqm zrmUl75SN^RYpCPqr2{ImCR0)i>mn^Ceu{l-;XZ&>zNz#yyy5ZIU?`O$h| za~Le{Jgyd_Yr#;rZD*fy*1~0?VZ4l@63;vypZUx&z7)h7R|pxYjO5shOb!{Ew%xeC z6SU*>(i#*O|1*sdu#h~NVOM+DpDliREwi|Zlv0#yvlO5qz%EK_Q@#PviHJ7KNTvIxP{CrC%muL|EYf*z2cJ=o`%K>L9+v zirpN!c@gl^ZT#2tpB-Y(zn!b)aGnlF=->dG0dm9^b7Aoq6It-2f<9)~a@lV&q^^5H z#B~m$14b?QRuSXTyPI;T8YfNL4N;1TvuO4`xZ<9EKUSF^| z<#|kyyMvk0t=^12OA~bNAxX`Vj;G9e-AXLdi*M0Dz^6iG`Be)5hE)W0K0J!=ULU4C z&NfLDKBf^7Q=vp|h%`1l&v3299+Fv-KN2E;@x#r*t919_SUHs>2J0yCTeVrcNNPMw zTv!bNNzTccxB9rUvO*%s`pW5a%WS;nDze_2CkTB;+Elhc*RnDQIq7^Adv%>)In zta;@te$g4AXHZ_?i2VxBA*66*biPBgE1jl4Q<54zI;o4mC@-@NuZal&R?Y)X&1p_h z#U?D|CC<6r&6kWk!|5*Vqi8d-cdhaxx&7HoWnYK-LwJ`gGp}SZ8#2O=yoa(bL2U zHTG~29N*i{EV|+Y8=yf*1N?PlggPmFhc4{#vz*wK?gus8KYOZ8LJR__kUW%m`MjD{ zO301VOy^|`#~{BoFBN7$z|$96Fe4;R_JtQl)gnuNS@kmFY}97$jqOV7SAEBU946;Z zCO4^YW3SEE-G9qpULOl5^Yvof-eTH~Uxb!-SoXZrzq~7%)BCr|l9z|wWc&qIZZ21H zs%I*`~J+sxLPixA#%bbrhahA#nnYOsE8iKpN zSoyoQg%Z#`0k=*Q;S|LnSZ_yECV{uLQSk4Z<{f!5j|_Nu!r{Zij$X!#49d5Z%Sj@1 zuRfu-`$^!<(!^27i1IP9@_wGgK6y!^j>d#T@%P8XHv5Q@SX4b`=fu>6?P580W=6)e z)yL#odC7eq;iCmxi�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ⅆ62cp0Fu#X9<_9f(v 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 Vz%w$txE%n06rZWdSIC-${vV}2TrL0r literal 59762 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 From b9bbdeb10e6465ecc08e0c302064d8a4d98ec686 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:56:27 -0400 Subject: [PATCH 49/93] Var not needed anymore --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 531d5a3b8f4..881c869c2b9 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -203,7 +203,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(!do_after(user, 100, target = get_turf(user))) rune_in_use = 0 return - var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) + new talisman_type(get_turf(src)) visible_message("[src] glows with power, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) rune_in_use = 0 From 363700e346dae0351f946fb460f296630b884185 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 16:10:33 -0400 Subject: [PATCH 50/93] Talisman of Shackling --- code/game/gamemodes/cult/talisman.dm | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index a6b00a77cea..9b578735f19 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -310,3 +310,44 @@ if(iscultist(user)) user << "This talisman will only work on a stack of metal sheets!" log_game("Construct talisman failed - not a valid target") + +//Talisman of Shackling: Applies special cuffs directly from the talisman +/obj/item/weapon/paper/talisman/shackle + cultist_name = "Talisman of Shackling" + cultist_desc = "Use this talisman on a victim to handcuff them with dark bindings." + invocation = "In'totum Lig'abis!" + color = "#B27300" // burnt-orange + uses = 4 + +/obj/item/weapon/paper/talisman/shackle/attack(mob/living/target, mob/living/user) + if(iscultist(user)) + if(isrobot(target)) + ..() + return + if(!isliving(target)) + user.visible_message("This talisman's magic does not affect the dead!") + return + var/mob/living/L = target + if(ishuman(L)) + CuffAttack(L,user) + +/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/L,mob/living/user) + if(!iscarbon(L)) + return + var/mob/living/carbon/C = L + if(!C.handcuffed) + playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) + C.visible_message("[user] begins restraining [C] with [src]!", \ + "[user] begins shaping an dark magic around your wrists!") + if(do_mob(user, C, 30)) + if(!C.handcuffed) + C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/used(C) + C.update_handcuffed() + user << "You shackle [C]." + add_logs(user, C, "handcuffed") + else + user << "You fail to handcuff [C]." + return + + + From 3e7a096ab043739c573694c07eb7cacd94d633b8 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 16:34:56 -0400 Subject: [PATCH 51/93] Adds "successful use" param, add invoke to stun/shackle --- code/game/gamemodes/cult/talisman.dm | 50 ++++++++++++++++++---------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 9b578735f19..83ec11c3bce 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -25,10 +25,14 @@ user.drop_item() qdel(src) -/obj/item/weapon/paper/talisman/proc/invoke(mob/living/user) - if(health_cost && iscarbon(user)) - var/mob/living/carbon/C = user - C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) + /obj/item/weapon/paper/talisman/proc/invoke(mob/living/user, successfuluse = 1) + . = successfuluse + if(successfuluse) //if the calling whatever says we succeed, do the fancy stuff + if(invocation) + user.whisper(invocation) + if(health_cost && iscarbon(user)) + var/mob/living/carbon/C = user + C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) //Malformed Talisman: If something goes wrong. /obj/item/weapon/paper/talisman/malformed @@ -36,7 +40,7 @@ cultist_desc = "A talisman with gibberish scrawlings. No good can come from invoking this." invocation = "Ra'sha yoka!" -/obj/item/weapon/paper/talisman/malformed/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/malformed/invoke(mob/living/user, successfuluse = 1) user << "You feel a pain in your head. The Geometer is displeased." if(iscarbon(user)) var/mob/living/carbon/C = user @@ -49,7 +53,7 @@ invocation = null uses = 3 -/obj/item/weapon/paper/talisman/supply/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/supply/invoke(mob/living/user, successfuluse = 1) var/dat = "There are [uses] bloody runes on the parchment.
" dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" @@ -95,9 +99,6 @@ C.drop_item() visible_message("[src] crumbles to dust.") qdel(src) - return - else - return //Rite of Translocation: Same as rune /obj/item/weapon/paper/talisman/teleport @@ -148,7 +149,7 @@ invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 -/obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user, successfuluse = 1) user.visible_message("[user]'s hand glows red for a moment.", \ "You speak the words of the talisman!") new /obj/item/weapon/tome(get_turf(user)) @@ -190,7 +191,7 @@ color = "#ff80d5" // honk invocation = "By'o nar'nar!" -/obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user, successfuluse = 1) user.visible_message("Dust flows from [user]s hand.", \ "You speak the words of the talisman, making nearby runes appear fake.") for(var/obj/effect/rune/R in orange(6,user)) @@ -204,7 +205,7 @@ invocation = "Ta'gh fara'qha fel d'amar det!" health_cost = 5 -/obj/item/weapon/paper/talisman/emp/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/emp/invoke(mob/living/user, successfuluse = 1) user.visible_message("[user]'s hand flashes a bright blue!", \ "You speak the words of the talisman, emitting an EMP blast.") empulse(src, 4, 8) @@ -217,15 +218,18 @@ invocation = "Fuu ma'jin!" health_cost = 10 -/obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) +/obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) + if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff + return ..() if(iscultist(user)) user << "To use this talisman, attack the target directly." else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" - -/obj/item/weapon/paper/talisman/stun/attack(mob/living/target, mob/living/user) + return 0 + +/obj/item/weapon/paper/talisman/stun/attack(mob/living/target, mob/living/user, successfuluse = 1) if(iscultist(user)) - user.whisper(invocation) + invoke(user, 1) user.visible_message("[user] holds up [src], which explodes in a flash of red light!", \ "You stun [target] with the talisman!") var/obj/item/weapon/nullrod/N = locate() in target @@ -257,7 +261,7 @@ color = "#33cc33" // green invocation = "N'ath reth sh'yro eth draggathnor!" -/obj/item/weapon/paper/talisman/armor/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1) . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ "You speak the words of the talisman, arming yourself!") @@ -319,6 +323,15 @@ color = "#B27300" // burnt-orange uses = 4 +/obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) + if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff + return ..() + if(iscultist(user)) + user << "To use this talisman, attack the target directly." + else + user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" + return 0 + /obj/item/weapon/paper/talisman/shackle/attack(mob/living/target, mob/living/user) if(iscultist(user)) if(isrobot(target)) @@ -329,6 +342,7 @@ return var/mob/living/L = target if(ishuman(L)) + invoke(user, 1) CuffAttack(L,user) /obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/L,mob/living/user) @@ -337,7 +351,7 @@ var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message("[user] begins restraining [C] with [src]!", \ + C.visible_message("[user] begins shackling [C] with dark magic!", \ "[user] begins shaping an dark magic around your wrists!") if(do_mob(user, C, 30)) if(!C.handcuffed) From ecbf0636856f893c5e04de29fbed78549b003395 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 18:17:07 -0400 Subject: [PATCH 52/93] Shackle and other Talisman fixes --- code/game/gamemodes/cult/talisman.dm | 48 ++++++++++++++++++---------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 83ec11c3bce..3181569a320 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -17,10 +17,9 @@ if(!iscultist(user)) user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return - if(invocation) + if(invoke(user)) user.whisper(invocation) - src.invoke(user) - uses-- + uses-- if(uses <= 0) user.drop_item() qdel(src) @@ -66,8 +65,7 @@ var/datum/browser/popup = new(user, "talisman", "", 400, 400) popup.set_content(dat) popup.open() - uses++ //To prevent uses being consumed just by opening it - return 1 + return 0 /obj/item/weapon/paper/talisman/supply/Topic(href, href_list) if(src) @@ -150,6 +148,7 @@ health_cost = 1 /obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("[user]'s hand glows red for a moment.", \ "You speak the words of the talisman!") new /obj/item/weapon/tome(get_turf(user)) @@ -192,6 +191,7 @@ invocation = "By'o nar'nar!" /obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("Dust flows from [user]s hand.", \ "You speak the words of the talisman, making nearby runes appear fake.") for(var/obj/effect/rune/R in orange(6,user)) @@ -314,6 +314,23 @@ if(iscultist(user)) user << "This talisman will only work on a stack of metal sheets!" log_game("Construct talisman failed - not a valid target") + +/obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling + name = "cultist shackles" + desc = "shackles that bind the wrists with sinister magic." + trashtype = /obj/item/weapon/restraints/handcuffs/energy/used + origin_tech = "materials=2;magnets=5" + +/obj/item/weapon/restraints/handcuffs/energy/cult/used + desc = "magical remnants" + +/obj/item/weapon/restraints/handcuffs/energy/cult/used/dropped(mob/user) + user.visible_message("[user]'s [src] shatter in a discharge of dark magic!", \ + "[user]'s [src] shatters in a discharge of dark magic!") + var/datum/effect_system/spark_spread/S = new + S.set_up(4,0,user.loc) + S.start() + qdel(src) //Talisman of Shackling: Applies special cuffs directly from the talisman /obj/item/weapon/paper/talisman/shackle @@ -323,7 +340,7 @@ color = "#B27300" // burnt-orange uses = 4 -/obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) +/obj/item/weapon/paper/talisman/shackle/invoke(mob/living/user, successfuluse = 0) if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff return ..() if(iscultist(user)) @@ -337,30 +354,29 @@ if(isrobot(target)) ..() return - if(!isliving(target)) + if(target.stat == DEAD) user.visible_message("This talisman's magic does not affect the dead!") return - var/mob/living/L = target - if(ishuman(L)) + var/mob/living/carbon/C = target + if(ishuman(C)) invoke(user, 1) - CuffAttack(L,user) + CuffAttack(C,user) -/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/L,mob/living/user) - if(!iscarbon(L)) +/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/C,mob/living/user) + if(!istype(C)) return - var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) C.visible_message("[user] begins shackling [C] with dark magic!", \ "[user] begins shaping an dark magic around your wrists!") if(do_mob(user, C, 30)) if(!C.handcuffed) - C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/used(C) - C.update_handcuffed() + var/obj/item/weapon/restraints/handcuffs/energy/cult/used/Z = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) + Z.apply_cuffs(C, user)) user << "You shackle [C]." add_logs(user, C, "handcuffed") else - user << "You fail to handcuff [C]." + user << "You fail to shackle [C]." return From d807fdd5d446e59ae743fc5bd4566aaa08e97d32 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 20:47:18 -0400 Subject: [PATCH 53/93] 8 errors from 1 rogue parenthesis, nice --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 3181569a320..fa546517d45 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -372,7 +372,7 @@ if(do_mob(user, C, 30)) if(!C.handcuffed) var/obj/item/weapon/restraints/handcuffs/energy/cult/used/Z = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) - Z.apply_cuffs(C, user)) + Z.apply_cuffs(C, user) user << "You shackle [C]." add_logs(user, C, "handcuffed") else From bd52f083e0248c4e35aa17955a083d19701c3dcf Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 23:24:35 -0400 Subject: [PATCH 54/93] ROGUE SPACE PLZ BAN --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index fa546517d45..7b6eab049bd 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -24,7 +24,7 @@ user.drop_item() qdel(src) - /obj/item/weapon/paper/talisman/proc/invoke(mob/living/user, successfuluse = 1) +/obj/item/weapon/paper/talisman/proc/invoke(mob/living/user, successfuluse = 1) . = successfuluse if(successfuluse) //if the calling whatever says we succeed, do the fancy stuff if(invocation) From ceb8d1c2752c4b45812622a5b350704f68204b84 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 17 Apr 2016 00:47:24 -0400 Subject: [PATCH 55/93] May the power of Christ compile you --- code/game/gamemodes/cult/talisman.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 7b6eab049bd..81d8378c706 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -357,14 +357,15 @@ if(target.stat == DEAD) user.visible_message("This talisman's magic does not affect the dead!") return - var/mob/living/carbon/C = target - if(ishuman(C)) + var/mob/living/L = target + if(ishuman(L)) invoke(user, 1) - CuffAttack(C,user) + CuffAttack(L,user) /obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/C,mob/living/user) - if(!istype(C)) + if(!iscarbon(L)) return + var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) C.visible_message("[user] begins shackling [C] with dark magic!", \ From 3930b660912211b9abea60bc651f1c5144fa8d72 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 17 Apr 2016 01:51:14 -0400 Subject: [PATCH 56/93] Sigh --- code/game/gamemodes/cult/talisman.dm | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 81d8378c706..31523a798e3 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -354,31 +354,27 @@ if(isrobot(target)) ..() return - if(target.stat == DEAD) + if(!isliving(target)) user.visible_message("This talisman's magic does not affect the dead!") return var/mob/living/L = target if(ishuman(L)) - invoke(user, 1) CuffAttack(L,user) - -/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/C,mob/living/user) + +/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/L,mob/living/user) if(!iscarbon(L)) return - var/mob/living/carbon/C = L + var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message("[user] begins shackling [C] with dark magic!", \ + C.visible_message("[user] begins restraining [C] with [src]!", \ "[user] begins shaping an dark magic around your wrists!") if(do_mob(user, C, 30)) if(!C.handcuffed) - var/obj/item/weapon/restraints/handcuffs/energy/cult/used/Z = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) - Z.apply_cuffs(C, user) + C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) + C.update_handcuffed() user << "You shackle [C]." add_logs(user, C, "handcuffed") else - user << "You fail to shackle [C]." + user << "You fail to shackle [C]." return - - - From 01ea7ea7cc1cc5a9c449acfc67000743d781adf5 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 17 Apr 2016 12:43:36 -0400 Subject: [PATCH 57/93] EMP Scaling Buff --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 881c869c2b9..3651ca3d30c 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -604,7 +604,7 @@ structure_check() searches for nearby cultist structures required for the invoca C << "You feel a minute vibration pass through you!" playsound(E, 'sound/items/Welder2.ogg', 25, 1) qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 7*emp_strength, 10*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters + empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral From 82518cfa4a33a1518c3f40f987819ce28a9acd85 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 17 Apr 2016 12:50:33 -0400 Subject: [PATCH 58/93] Fixes wording, invokes shackling --- code/game/gamemodes/cult/talisman.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 31523a798e3..ff15480f430 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -271,7 +271,7 @@ user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) user.drop_item() user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) - user.put_in_hands(new /obj/item/weapon/restraints/legcuffs/bola/tactical(user)) + user.put_in_hands(new /obj/item/weapon/restraints/legcuffs/bola/cult(user)) /obj/item/weapon/paper/talisman/armor/attack(mob/living/target, mob/living/user) if(iscultist(user) && iscultist(target)) @@ -351,6 +351,7 @@ /obj/item/weapon/paper/talisman/shackle/attack(mob/living/target, mob/living/user) if(iscultist(user)) + invoke(user, 1) if(isrobot(target)) ..() return @@ -367,7 +368,7 @@ var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message("[user] begins restraining [C] with [src]!", \ + C.visible_message("[user] begins restraining [C] with dark magic!", \ "[user] begins shaping an dark magic around your wrists!") if(do_mob(user, C, 30)) if(!C.handcuffed) From 3d9561a410ce379d6a0a4f47cb87b415fb5ac6ed Mon Sep 17 00:00:00 2001 From: Robustin Date: Tue, 19 Apr 2016 22:32:11 -0400 Subject: [PATCH 59/93] Merge Conflict Memes --- icons/obj/items.dmi | Bin 66676 -> 67223 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index f445282407db447b1a30209f3627bc59b348a63c..b1d3fd17ef6a2f518511d35c4afa96037cbd4e17 100644 GIT binary patch delta 48433 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 b&vA*UH4_4MeUv*O@aK`d>VqO#lfeH4A#2CO delta 47880 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⪻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 Date: Tue, 19 Apr 2016 22:35:34 -0400 Subject: [PATCH 60/93] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index e47db0b3481..c91ba80fab9 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -207,7 +207,7 @@ This file contains the arcane tome files as well as innate cultist emergency com talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." - text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, a bola, and a pair of boots. Any items that cannot \ + text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, an empowered bola, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" From f0556e57f0be8c1805ce42ebfa7afa4389adad90 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 11:12:05 -0400 Subject: [PATCH 61/93] Descriptions and Nar-Sie rune improvements --- code/game/gamemodes/cult/ritual.dm | 89 +++++++++++++++++------------- 1 file changed, 51 insertions(+), 38 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index c91ba80fab9..19b40d788d7 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -8,6 +8,39 @@ This file contains the arcane tome files as well as innate cultist emergency com verbs += /mob/living/proc/cult_innate_comm verbs += /mob/living/proc/cult_help +/mob/living/proc/cult_help() + set category = "Cultist" + set name = "How to Play Cult" + var/text = "" + text += "
Tenets of the Dark One



" + + text += "I. SECRECY
Your cult is a SECRET organization. Your success DEPENDS on keeping your cult's members and locations SECRET for as long as possible. This means that your tome should be hidden \ + in your bag and never brought out in public. You should never create runes where other crew might find them, and you should avoid using talismans or other cult magic with witnesses around.

" + + text += "II. TOME
You start with a unique talisman in your bag. This supply talisman can be used 3 times, and creates starter equipment for your cult. The most critical of the talisman's functions is \ + the power to create a tome. This tome is your most important item and summoning one (in secret) is your FIRST PRIORITY. It lets you talk to fellow cultists and create runes, which in turn is essential to growing the cult's power.

" + + text += "III. RUNES
Runes are powerful sources of cult magic. Your tome will allow you to draw runes with your blood. Those runes, when hit with an empty hand, will attempt to \ + trigger the rune's magic. Runes are essential for the cult to convert new members, create powerful minions, or call upon incredibly powerful magic. Some runes require more than one cultist to use.

" + + text += "IV. TALISMANS
Talismans are a mobile source of cult magic that are NECESSARY to achieve success as a cult. Your starting talisman can produce certain talismans, but you will need \ + to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" + + text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ + you should use cuffs or talisman of shackling on them and remove their headset before they recover (it takes about 10 seconds to recover). If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome \ + will knock them out before they can recover. Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a \ + conversion rune to convert someone. Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" + + text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ + their corpse on a sacrifice rune and triggering that rune with three cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ + just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ + you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" + + var/datum/browser/popup = new(usr, "mind", "", 800, 600) + popup.set_content(text) + popup.open() + return 1 + /mob/living/proc/cult_innate_comm() set category = "Cultist" set name = "Imperfect Communion" @@ -45,39 +78,8 @@ This file contains the arcane tome files as well as innate cultist emergency com cultist_commune(usr, 0, 1, input) return - -/mob/living/proc/cult_help() - set category = "Cultist" - set name = "How to Play Cult" - var/text = "" - text += "
Tenets of the Dark One



" - text += "I. SECRECY
Your cult is a SECRET organization. Your success DEPENDS on keeping your cult's members and locations SECRET for as long as possible. This means that your tome should be hidden \ - in your bag and never brought out in public. You should never create runes where other crew might find them, and you should avoid using talismans or other cult magic with witnesses around.

" - - text += "II. TOME
You start with a unique talisman in your bag. This supply talisman can be used 3 times, and creates starter equipment for your cult. The most critical of the talisman's functions is \ - the power to create a tome. This tome is your most important item and summoning one (in secret) is your FIRST PRIORITY. It lets you talk to fellow cultists and create runes, which in turn is essential to growing the cult's power.

" - text += "III.> RUNES
Runes are powerful sources of cult magic. Your tome will allow you to draw runes with your blood. Those runes, when hit with an empty hand, will attempt to \ - trigger the rune's magic. Runes are essential for the cult to convert new members, create powerful minions, or call upon incredibly powerful magic. Some runes require more than one cultist to use.

" - - text += "IV. TALISMANS
Talismans are a mobile source of cult magic that are NECESSARY to achieve success as a cult. Your starting talisman can produce certain talismans, but you will need \ - to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" - - text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ - you should use cablecuffs on them and remove their headset before they recover. If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome will knock them out before they can recover. \ - Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a conversion rune to convert someone. \ - Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" - - text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ - their corpse on a sacrifice rune and triggering that rune with three cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ - just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ - you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" - - var/datum/browser/popup = new(usr, "mind", "", 800, 600) - popup.set_content(text) - popup.open() - return 1 /obj/item/weapon/tome name = "arcane tome" @@ -126,9 +128,9 @@ This file contains the arcane tome files as well as innate cultist emergency com open_tome(user) /obj/item/weapon/tome/proc/open_tome(mob/user) - var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") + var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","More Information") switch(choice) - if("Information") + if("More Information") read_tome(user) if("Scribe Rune") scribe_rune(user) @@ -192,7 +194,7 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Teleportation
The talisman form of the Rite of Translocation will transport the invoker to a randomly chosen rune of the same keyword, then \ disappear.

" - + text += "Talisman of Construction
The Rune of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" @@ -210,7 +212,9 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, an empowered bola, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" - text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" + text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes that may incapitate them.

" + + text += "Talisman of Shackling
The Talisman of Shackling must be applied directly to the victim, it has 4 uses and cuffs victims with magic shackles that disappear when removed.

" var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) @@ -226,7 +230,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/list/shields = list() if(locate(/obj/effect/rune) in Turf) user << "There is already a rune here." - return + return for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) var/obj/effect/rune/R = T if(initial(R.cultist_name)) @@ -251,7 +255,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/turf/Thenewturfyouwalkedto = get_turf(user) //we may have moved. adjust as needed... if(locate(/obj/effect/rune) in Thenewturfyouwalkedto) user << "There is already a rune here." - return + return if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return user.visible_message("[user] cuts open their arm and begins writing in their own blood!", \ @@ -260,6 +264,10 @@ This file contains the arcane tome files as well as innate cultist emergency com var/mob/living/carbon/C = user C.apply_damage(0.1, BRUTE, pick("l_arm", "r_arm")) if("Summon Nar-Sie" == entered_rune_name) + var/confirm_final = alert(usr, "This is the FINAL step to summon Nar-Sie, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar-Sie!", "No") + if(confirm_final == "No") + usr << "On second thought, we should prepare further for the final battle..." + return C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) var/area/A = get_area(src) var/locname = initial(A.name) @@ -278,6 +286,11 @@ This file contains the arcane tome files as well as innate cultist emergency com qdel(S) return if(!do_after(user, 50, target = get_turf(user))) + if(shields.len) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) return user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") @@ -287,4 +300,4 @@ This file contains the arcane tome files as well as innate cultist emergency com if(S && !qdeleted(S)) qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) - user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" + user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 585581bf31d2a241f62299267eafde3f02d61e4e Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 11:13:29 -0400 Subject: [PATCH 62/93] Talisman of Shacking description and "uses" fix --- code/game/gamemodes/cult/talisman.dm | 29 +++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index ff15480f430..cfbfecc0957 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -31,7 +31,7 @@ user.whisper(invocation) if(health_cost && iscarbon(user)) var/mob/living/carbon/C = user - C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) + C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) //Malformed Talisman: If something goes wrong. /obj/item/weapon/paper/talisman/malformed @@ -153,7 +153,7 @@ "You speak the words of the talisman!") new /obj/item/weapon/tome(get_turf(user)) user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materializes at your feet.") + "An arcane tome materializes at your feet.") /obj/item/weapon/paper/talisman/true_sight cultist_name = "Talisman of Veiling" @@ -181,7 +181,7 @@ for(var/obj/effect/rune/R in range(3,user)) R.invisibility = 0 R.visible_message("[R] suddenly appears!") - R.alpha = initial(R.alpha) + R.alpha = initial(R.alpha) //Rite of False Truths: Same as rune /obj/item/weapon/paper/talisman/make_runes_fake @@ -217,7 +217,7 @@ color = "#ff0000" // red invocation = "Fuu ma'jin!" health_cost = 10 - + /obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff return ..() @@ -226,7 +226,7 @@ else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return 0 - + /obj/item/weapon/paper/talisman/stun/attack(mob/living/target, mob/living/user, successfuluse = 1) if(iscultist(user)) invoke(user, 1) @@ -260,7 +260,7 @@ cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." color = "#33cc33" // green invocation = "N'ath reth sh'yro eth draggathnor!" - + /obj/item/weapon/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1) . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ @@ -308,15 +308,15 @@ user << "To use this talisman, attack the target directly." else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" - - + + /obj/item/weapon/paper/talisman/construction/attack(obj/M,mob/living/user) if(iscultist(user)) user << "This talisman will only work on a stack of metal sheets!" log_game("Construct talisman failed - not a valid target") - + /obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling - name = "cultist shackles" + name = "cult shackle" desc = "shackles that bind the wrists with sinister magic." trashtype = /obj/item/weapon/restraints/handcuffs/energy/used origin_tech = "materials=2;magnets=5" @@ -351,7 +351,6 @@ /obj/item/weapon/paper/talisman/shackle/attack(mob/living/target, mob/living/user) if(iscultist(user)) - invoke(user, 1) if(isrobot(target)) ..() return @@ -375,7 +374,11 @@ C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) C.update_handcuffed() user << "You shackle [C]." - add_logs(user, C, "handcuffed") + add_logs(user, C, "handcuffed" + uses-- else - user << "You fail to shackle [C]." + user << "You fail to shackle [C]." + if(uses <= 0) + user.drop_item() + qdel(src) return From 792846e452175222e0e71caf4aff6f59025160be Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 11:14:14 -0400 Subject: [PATCH 63/93] Cult Bola proper icon state --- code/game/objects/items/weapons/handcuffs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 1af8204694c..25c7de621d8 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -314,6 +314,6 @@ /obj/item/weapon/restraints/legcuffs/bola/cult //cult variant, comes with armament talisman name = "nar'sian bola" desc = "A strong bola, bound with dark magic. Throw it to trip and slow your victim." - icon_state = "bola_c" + icon_state = "bola_cult" breakouttime = 45 weaken = 1 From a53019a0e0d01e0c5c7e0e5b82f56655d3a29912 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 12:14:44 -0400 Subject: [PATCH 64/93] Rogue Parenthesis --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index cfbfecc0957..bc09d9bea66 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -374,7 +374,7 @@ C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) C.update_handcuffed() user << "You shackle [C]." - add_logs(user, C, "handcuffed" + add_logs(user, C, "handcuffed") uses-- else user << "You fail to shackle [C]." From 97be99d0b6c530333d89a2b9f3e13268bff376ed Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 17:27:57 -0400 Subject: [PATCH 65/93] Desc./color changes, EMP consumption fix --- code/game/gamemodes/cult/talisman.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index bc09d9bea66..9deaba98935 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -102,6 +102,7 @@ /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." + color = "#551A8B" // purple invocation = "Sas'so c'arta forbici!" health_cost = 5 @@ -206,6 +207,7 @@ health_cost = 5 /obj/item/weapon/paper/talisman/emp/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("[user]'s hand flashes a bright blue!", \ "You speak the words of the talisman, emitting an EMP blast.") empulse(src, 4, 8) From 9bd0d5ec481cb28ba848fca5ecb75109c996b854 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 17:29:44 -0400 Subject: [PATCH 66/93] Color and Teleport Rune Fix --- code/game/gamemodes/cult/runes.dm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 3651ca3d30c..284ddedfc06 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,6 +1,5 @@ /var/list/sacrificed = list() var/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) -var/list/teleport_runes = list() /* @@ -38,6 +37,11 @@ To draw a rune, use an arcane tome. var/req_keyword = 0 //If the rune requires a keyword - go figure amirite var/keyword //The actual keyword for the rune + +/obj/effect/rune/New(loc, set_keyword) + ..() + if(set_keyword) + keyword = set_keyword /obj/effect/rune/examine(mob/user) ..() @@ -207,13 +211,14 @@ structure_check() searches for nearby cultist structures required for the invoca visible_message("[src] glows with power, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) rune_in_use = 0 - + +var/list/teleport_runes = list() /obj/effect/rune/teleport cultist_name = "Teleport" cultist_desc = "warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" - color = rgb(0, 0, 255) + color = "#551A8B" req_keyword = 1 var/listkey @@ -274,7 +279,7 @@ structure_check() searches for nearby cultist structures required for the invoca user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." else fail_invoke() - + //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert @@ -819,7 +824,7 @@ structure_check() searches for nearby cultist structures required for the invoca break user.apply_damage(1, BRUTE) sleep(30) - + qdel(N) if(new_human) new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ From 4292dc8adbd1f82d566ba02d081fda3755947e1f Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 17:31:21 -0400 Subject: [PATCH 67/93] Nar-Sie shield fix --- code/game/gamemodes/cult/ritual.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 19b40d788d7..87ece6f4d04 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -5,8 +5,9 @@ This file contains the arcane tome files as well as innate cultist emergency com */ /mob/proc/cult_add_comm() //why the fuck does this have its own proc? not removing it because it might be used somewhere but... - verbs += /mob/living/proc/cult_innate_comm verbs += /mob/living/proc/cult_help + verbs += /mob/living/proc/cult_innate_comm + /mob/living/proc/cult_help() set category = "Cultist" @@ -79,8 +80,6 @@ This file contains the arcane tome files as well as innate cultist emergency com cultist_commune(usr, 0, 1, input) return - - /obj/item/weapon/tome name = "arcane tome" desc = "An old, dusty tome with frayed edges and a sinister-looking cover." @@ -279,6 +278,7 @@ This file contains the arcane tome files as well as innate cultist emergency com N.color = "red" N.health = 60 shields |= N + if(!do_after(user, 400, target = get_turf(user))) if(shields.len) for(var/V in shields) var/obj/machinery/shield/S = V From 4c401a1272e8db41858da3f38cb5d67f702f52b7 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 21 Apr 2016 21:57:06 -0400 Subject: [PATCH 68/93] MERRRRGGEEEE --- icons/obj/items.dmi | Bin 67423 -> 66671 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index c77ab806de19c4248778dba99447460cefe51ee8..47a8876a403d12795f219e00c148fe7b6c5db65b 100644 GIT binary patch delta 28911 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 Date: Thu, 21 Apr 2016 22:27:49 -0400 Subject: [PATCH 69/93] Color and formatting improvements --- code/game/gamemodes/cult/ritual.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 87ece6f4d04..2ade607d222 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -206,7 +206,7 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Stunning
Without this talisman, the cult would have no way of easily acquiring targets to convert. Commonly called \"stunpapers\", this \ talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ - duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." + duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead.

" text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, an empowered bola, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" @@ -275,7 +275,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/obj/machinery/shield/N = new(B) N.name = "Rune-Scriber's Shield" N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual" - N.color = "red" + N.icon_state = "shield-red" N.health = 60 shields |= N if(!do_after(user, 400, target = get_turf(user))) From de344e98a16ac0b9576b9a00b9f68b427396aa07 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 13:43:59 -0400 Subject: [PATCH 70/93] Lets you click under the manifest ghost shield --- code/game/gamemodes/cult/runes.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 284ddedfc06..fc2dbc32c85 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -815,6 +815,7 @@ var/list/teleport_runes = list() N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" N.color = "red" N.health = 20 + N.mouse_opacity = 0 new_human.key = ghost_to_spawn.key ticker.mode.add_cultist(new_human.mind) new_human << "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs." From 6534039b7ff1606b794c1cfd4be7c4200aa623a8 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 13:48:42 -0400 Subject: [PATCH 71/93] Add talisman of veiling to the supply talisman --- code/game/gamemodes/cult/talisman.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 9deaba98935..2749a07448e 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -62,6 +62,7 @@ dat += "
Fuu ma'jin! - Allows you to stun a person by attacking them with the talisman.
" dat += "Kal'om neth! - Summons a soul stone, used to capure the spirits of dead or dying humans.
" dat += "Daa'ig osk! - Summons a construct shell for use with captured souls. It is too large to carry on your person.
" + dat += "Kla'atu barada nikt'o! - Two use talisman, first use makes all nearby runes invisible, second use reveals nearby hidden runes.
" var/datum/browser/popup = new(user, "talisman", "", 400, 400) popup.set_content(dat) popup.open() @@ -90,6 +91,9 @@ usr.put_in_hands(T) if("construct") new /obj/structure/constructshell(get_turf(usr)) + if("veiling") + var/obj/item/weapon/paper/talisman/true_sight/T = new(usr) + usr.put_in_hands(T) src.uses-- if(src.uses <= 0) if(iscarbon(usr)) From bc0486d28c7164ddfbc3c3375b7ea1a46e5e5ca2 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 14:17:07 -0400 Subject: [PATCH 72/93] EMP RUNE IMMERSION --- code/game/gamemodes/cult/runes.dm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index fc2dbc32c85..f4b5e8f9691 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -601,13 +601,19 @@ var/list/teleport_runes = list() continue if(L.stat || (H.disabilities & MUTE) || H.silent) continue - if(invocation) - L.say(invocation) emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) - C << "You feel a minute vibration pass through you!" - playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if (emp_strength < 3) + C << "You feel a minute vibration pass through you..." + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if (emp_strength > 2 && emp_strength < 7) + C << "Your hair stands on end as a shockwave eminates from the rune!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + if (emp_strength > 6) + C << "You chant in unison and a colossal burst of energy knocks you backward!" + C.Weaken(2) + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) qdel(src) //delete before pulsing because it's a delay reee empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters From 89ca5c7364c7847affd667cd2d022ca63f348bae Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 14:19:17 -0400 Subject: [PATCH 73/93] Update talisman.dm --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 2749a07448e..a668d723786 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -311,7 +311,7 @@ /obj/item/weapon/paper/talisman/construction/attack_self(mob/living/user) if(iscultist(user)) - user << "To use this talisman, attack the target directly." + user << "To use this talisman, place it upon a stack of metal sheets." else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" From e3ce7da9293918b07df6bb38ae0ae7c646cc5819 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 14:47:14 -0400 Subject: [PATCH 74/93] Supply Talisman now gives you a Tome directly --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index a668d723786..fed12b18a07 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -75,7 +75,7 @@ if(href_list["rune"]) switch(href_list["rune"]) if("newtome") - var/obj/item/weapon/paper/talisman/summon_tome/T = new(usr) + var/obj/item/weapon/tome/T = new(usr) usr.put_in_hands(T) if("teleport") var/obj/item/weapon/paper/talisman/teleport/T = new(usr) From 105c1a785ad125914090a243142c633804189f41 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 16:23:40 -0400 Subject: [PATCH 75/93] Prevents noncultists/wizards from making construct --- code/game/gamemodes/wizard/soulstone.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 161e329fa57..5ad41b999ae 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -97,6 +97,10 @@ desc = "A wicked machine used by those skilled in magical arts. It is inactive." /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) + if(!iscultist(user) && !iswizard(user) && !usability) + user << "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly." + user.Dizzy(120) + if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/SS = O SS.transfer_soul("CONSTRUCT",src,user) @@ -270,4 +274,4 @@ T.unEquip(W) init_shade(C, T, U) qdel(T) - return 1 \ No newline at end of file + return 1 From 1538dc6cd20a232f77d7ba7030a6d056f4cbb988 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 16:53:37 -0400 Subject: [PATCH 76/93] Update soulstone.dm --- code/game/gamemodes/wizard/soulstone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 5ad41b999ae..35e9d915e5e 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -97,7 +97,7 @@ desc = "A wicked machine used by those skilled in magical arts. It is inactive." /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) - if(!iscultist(user) && !iswizard(user) && !usability) + if(!iscultist(user) && !iswizard(user)) user << "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly." user.Dizzy(120) From a5adc52ab675fd33b58dad4311107ad171049df1 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 24 Apr 2016 20:45:03 -0400 Subject: [PATCH 77/93] Requested changes --- code/game/gamemodes/cult/ritual.dm | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 2ade607d222..f1721d71ce2 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -279,25 +279,22 @@ This file contains the arcane tome files as well as innate cultist emergency com N.health = 60 shields |= N if(!do_after(user, 400, target = get_turf(user))) - if(shields.len) - for(var/V in shields) - var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) return if(!do_after(user, 50, target = get_turf(user))) - if(shields.len) - for(var/V in shields) - var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) - return - user.visible_message("[user] creates a strange circle in their own blood.", \ - "You finish drawing the arcane markings of the Geometer.") - if(shields.len) for(var/V in shields) var/obj/machinery/shield/S = V if(S && !qdeleted(S)) qdel(S) + return + user.visible_message("[user] creates a strange circle in their own blood.", \ + "You finish drawing the arcane markings of the Geometer.") + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 30555c3affb42481e29fe54006406ca036a7e20a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 24 Apr 2016 20:45:33 -0400 Subject: [PATCH 78/93] Requested changes --- code/game/gamemodes/cult/runes.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index f4b5e8f9691..3857be4d9cc 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -215,7 +215,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/list/teleport_runes = list() /obj/effect/rune/teleport cultist_name = "Teleport" - cultist_desc = "warps everything above it to another chosen teleport rune." + cultist_desc = "Warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" color = "#551A8B" @@ -494,7 +494,7 @@ var/list/teleport_runes = list() //Rite of Resurrection: Requires two corpses. Revives one and gibs the other. /obj/effect/rune/raise_dead cultist_name = "Raise Dead" - cultist_desc = "Requires two corpses. One on the rune and one adjacent. The one placed upon the rune is brought to life, the other is turned to ash." + cultist_desc = "Requires two corpses. One on the rune and one adjacent to the rune. The one placed upon the rune is brought to life, the other is turned to ash." invocation = null //Depends on the name of the user - see below icon_state = "1" color = rgb(255, 0, 0) From 56ac630e42b0a0ca7dd4fcc04c196ea36010667f Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 24 Apr 2016 20:46:00 -0400 Subject: [PATCH 79/93] Requested changes --- code/game/gamemodes/cult/talisman.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index fed12b18a07..2c9ca90ec53 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -17,9 +17,7 @@ if(!iscultist(user)) user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return - if(invoke(user)) - user.whisper(invocation) - uses-- + uses-- if(uses <= 0) user.drop_item() qdel(src) @@ -322,7 +320,7 @@ log_game("Construct talisman failed - not a valid target") /obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling - name = "cult shackle" + name = "cult shackles" desc = "shackles that bind the wrists with sinister magic." trashtype = /obj/item/weapon/restraints/handcuffs/energy/used origin_tech = "materials=2;magnets=5" @@ -331,7 +329,7 @@ desc = "magical remnants" /obj/item/weapon/restraints/handcuffs/energy/cult/used/dropped(mob/user) - user.visible_message("[user]'s [src] shatter in a discharge of dark magic!", \ + user.visible_message("Your [src] shatter in a discharge of dark magic!", \ "[user]'s [src] shatters in a discharge of dark magic!") var/datum/effect_system/spark_spread/S = new S.set_up(4,0,user.loc) From ecce6436d14332fc66bf42905fbfca57a408c56e Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 24 Apr 2016 20:46:27 -0400 Subject: [PATCH 80/93] Requested Changes --- code/game/gamemodes/wizard/soulstone.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 35e9d915e5e..f3ced8790a2 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -97,15 +97,14 @@ desc = "A wicked machine used by those skilled in magical arts. It is inactive." /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) - if(!iscultist(user) && !iswizard(user)) - user << "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly." - user.Dizzy(120) - if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/SS = O + if(!iscultist(user) && !iswizard(user)) + user << "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly." + user.Dizzy(120) + return SS.transfer_soul("CONSTRUCT",src,user) - ////////////////////////////Proc for moving soul in and out off stone////////////////////////////////////// From 53a5f660717fe46d2d7024367598bbfb6e9b9226 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 08:19:08 -0400 Subject: [PATCH 81/93] We done here --- code/game/gamemodes/cult/talisman.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 2c9ca90ec53..53416efe084 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -17,7 +17,8 @@ if(!iscultist(user)) user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return - uses-- + if(invoke(user)) + uses-- if(uses <= 0) user.drop_item() qdel(src) @@ -146,7 +147,7 @@ /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." - color = "#1d0e0e" // red-black + color = "#512727" // red-black invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 From aa15efb6f89c49666e17c06e7350c68b3aaa39a6 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 10:19:17 -0400 Subject: [PATCH 82/93] Desc and code improvements --- code/game/gamemodes/cult/runes.dm | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 3857be4d9cc..b0d92bcb4b1 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -167,7 +167,7 @@ structure_check() searches for nearby cultist structures required for the invoca //Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. /obj/effect/rune/imbue cultist_name = "Create Talisman" - cultist_desc = "Transforms papers and valid runes into talismans." + cultist_desc = "Transforms paper into powerful magic talismans." invocation = null //no talisman made, no invocation. icon_state = "3" color = rgb(0, 0, 255) @@ -604,18 +604,19 @@ var/list/teleport_runes = list() emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) - if (emp_strength < 3) - C << "You feel a minute vibration pass through you..." - playsound(E, 'sound/items/Welder2.ogg', 25, 1) - if (emp_strength > 2 && emp_strength < 7) - C << "Your hair stands on end as a shockwave eminates from the rune!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) - if (emp_strength > 6) - C << "You chant in unison and a colossal burst of energy knocks you backward!" - C.Weaken(2) - playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + switch(emp_strength) + if(1 to 2) + C << "You feel a minute vibration pass through you..." + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if(3 to 6) + C << "Your hair stands on end as a shockwave eminates from the rune!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + if(7 to INFINITY) + C << "You chant in unison and a colossal burst of energy knocks you backward!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + C.Weaken(2) qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters + empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to most of the station depending on # of chanters //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral From 45de806acf303b8fd7e5bc807e2c12f84b5efb33 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 10:23:24 -0400 Subject: [PATCH 83/93] Joan correction --- code/game/gamemodes/wizard/soulstone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index f3ced8790a2..9c5f1970e06 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -99,7 +99,7 @@ /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/SS = O - if(!iscultist(user) && !iswizard(user)) + if(!iscultist(user) && !iswizard(user) && !SS.usability) user << "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly." user.Dizzy(120) return From 66d0f2378fb14021875b51efefbb4065a004670f Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 10:27:57 -0400 Subject: [PATCH 84/93] >Copying code from Github comments --- code/game/gamemodes/cult/runes.dm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index b0d92bcb4b1..2deaca1bc49 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -604,17 +604,17 @@ var/list/teleport_runes = list() emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) - switch(emp_strength) - if(1 to 2) - C << "You feel a minute vibration pass through you..." - playsound(E, 'sound/items/Welder2.ogg', 25, 1) - if(3 to 6) - C << "Your hair stands on end as a shockwave eminates from the rune!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) - if(7 to INFINITY) - C << "You chant in unison and a colossal burst of energy knocks you backward!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) - C.Weaken(2) + switch(emp_strength) + if(1 to 2) + C << "You feel a minute vibration pass through you..." + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if(3 to 6) + C << "Your hair stands on end as a shockwave eminates from the rune!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + if(7 to INFINITY) + C << "You chant in unison and a colossal burst of energy knocks you backward!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + C.Weaken(2) qdel(src) //delete before pulsing because it's a delay reee empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to most of the station depending on # of chanters From d90361927a252f6f9ebe790e42253ca1ab13ffa1 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 11:14:52 -0400 Subject: [PATCH 85/93] OK LEGIT FINAL COMMIT FOR SURE --- code/game/gamemodes/cult/runes.dm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2deaca1bc49..da4d25943c1 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -605,16 +605,16 @@ var/list/teleport_runes = list() visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) switch(emp_strength) - if(1 to 2) - C << "You feel a minute vibration pass through you..." - playsound(E, 'sound/items/Welder2.ogg', 25, 1) - if(3 to 6) - C << "Your hair stands on end as a shockwave eminates from the rune!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) - if(7 to INFINITY) - C << "You chant in unison and a colossal burst of energy knocks you backward!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) - C.Weaken(2) + if(1 to 2) + C << "You feel a minute vibration pass through you..." + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if(3 to 6) + C << "Your hair stands on end as a shockwave eminates from the rune!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + if(7 to INFINITY) + C << "You chant in unison and a colossal burst of energy knocks you backward!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + C.Weaken(2) qdel(src) //delete before pulsing because it's a delay reee empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to most of the station depending on # of chanters From 09a2d7bab05d09e245dd38730cbc0cd8ff8c0024 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 15:36:18 -0400 Subject: [PATCH 86/93] Avoid mindbreaker overdose --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 53416efe084..63766351ddd 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -298,7 +298,7 @@ user.visible_message("You disturb [target] with visons of the end!") if(iscarbon(target)) var/mob/living/carbon/H = target - H.reagents.add_reagent("mindbreaker", 30) + H.reagents.add_reagent("mindbreaker", 25) qdel(src) //Talisman of Fabrication: Creates a construct shell out of 25 metal sheets. From be3a8431016a1400a111bbcd772e1ceb2e3a5248 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 27 Apr 2016 23:17:20 -0400 Subject: [PATCH 87/93] Color memes --- code/game/machinery/washing_machine.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index a845f84a59e..d4d6b8ea72b 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -51,7 +51,7 @@ var/dye_color if(istype(crayon,/obj/item/toy/crayon)) var/obj/item/toy/crayon/CR = crayon - dye_color = CR.colourName + dye_color = CR.paint_color if(dye_color) P.color = dye_color qdel(crayon) @@ -61,7 +61,7 @@ var/wash_color if(istype(crayon,/obj/item/toy/crayon)) var/obj/item/toy/crayon/CR = crayon - wash_color = CR.colourName + wash_color = CR.paint_color else if(istype(crayon,/obj/item/weapon/stamp)) var/obj/item/weapon/stamp/ST = crayon wash_color = ST.item_color From 3fe4bbc706c34ca12691e008486b2847a5a821f7 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 27 Apr 2016 23:20:55 -0400 Subject: [PATCH 88/93] Takes construction out of metal into talismans --- .../objects/items/stacks/sheets/sheet_types.dm | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 0619dcf9663..6c9b9254103 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -57,20 +57,6 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ flags = CONDUCT origin_tech = "materials=1" -/obj/item/stack/sheet/metal/attackby(obj/item/weapon/W, mob/living/user) - ..() - if(istype(W, /obj/item/weapon/paper/talisman/construction)) - if(amount>24) - amount = amount - 25 - new /obj/structure/constructshell(get_turf(src)) - user << "The talisman clings to the metal and twists it into a construct shell!" - if(amount == 0) - qdel(src) - qdel(W) - else - user << "The talisman requires at least 25 sheets of metal!" - - /obj/item/stack/sheet/metal/narsie_act() if(prob(20)) new /obj/item/stack/sheet/runed_metal(loc, amount) From 4946a06d96f01a939338db6d39c1bf1d3e2c88c3 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 27 Apr 2016 23:25:57 -0400 Subject: [PATCH 89/93] Moves construct shell creation from metal to talismans --- code/game/gamemodes/cult/talisman.dm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 63766351ddd..f14729a7707 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -319,7 +319,21 @@ if(iscultist(user)) user << "This talisman will only work on a stack of metal sheets!" log_game("Construct talisman failed - not a valid target") - + +/obj/item/weapon/paper/talisman/construction/afterattack(obj/item/stack/sheet/metal/target, mob/user, proximity_flag, click_parameters) + if(proximity_flag && istype(target) && iscultist(user)) + ..() + if(istype(W, /obj/item/weapon/paper/talisman/construction)) + if(target.use(25)) + amount = amount - 25 + new /obj/structure/constructshell(get_turf(target)) + user << "The talisman clings to the metal and twists it into a construct shell!" + if(amount == 0) + qdel(src) + qdel(W) + else + user << "The talisman requires at least 25 sheets of metal!" + /obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling name = "cult shackles" desc = "shackles that bind the wrists with sinister magic." From a21a47a2589e431fc7ff1e70882670749844fee1 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 27 Apr 2016 23:29:37 -0400 Subject: [PATCH 90/93] Construct Info --- code/game/gamemodes/cult/ritual.dm | 31 ++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index f1721d71ce2..3002178f3f7 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -28,12 +28,12 @@ This file contains the arcane tome files as well as innate cultist emergency com to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ - you should use cuffs or talisman of shackling on them and remove their headset before they recover (it takes about 10 seconds to recover). If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome \ + you should use cuffs or a talisman of shackling on them and remove their headset before they recover (it takes about 10 seconds to recover). If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome \ will knock them out before they can recover. Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a \ conversion rune to convert someone. Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ - their corpse on a sacrifice rune and triggering that rune with three cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ + their corpse on a sacrifice rune and triggering that rune with THREE cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" @@ -214,7 +214,34 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes that may incapitate them.

" text += "Talisman of Shackling
The Talisman of Shackling must be applied directly to the victim, it has 4 uses and cuffs victims with magic shackles that disappear when removed.

" + + text += "In addition to these runes, the cult has a small selection of equipment and constructs.

" + text += "Equipment:

" + + text += "Cult Blade
Cult blades are a sharp weapons that, notably, cannot be used by noncultists. These blades are produced by the Rite and Talisman of Arming.

" + + text += "Cult Robes
Cult robes are heavily armored robes. These robes are produced by the Rite and Talisman of Arming.

" + + text += "Soulstone
A soulstone is a simple piece of magic, produced either via the starter talisman or by sacrificing humans. Using it on an unconscious or dead human, or on a Shade, will trap their soul in the stone, allowing its use in construct shells. \ +
The soul within can also be released as a Shade.

" + + text += "Construct Shell
A construct shell is useless on its own, but placing a filled soulstone within it allows you to produce your choice of a Wraith, a Juggernaut, or an Artificer. \ +
Each construct has uses, detailed below in Constructs. Construct shells can be produced via the starter talisman or the Rite of Fabrication.

" + + text += "Constructs:

" + + text += "Shade
While technically not a construct, the Shade is produced when released from a soulstone. It is quite fragile and has weak melee attacks, but is fully healed when recaptured by a soulstone.

" + + text += "Wraith
The Wraith is a fast, lethal melee attacker which can jaunt through walls. However, it is only slightly more durable than a shade.

" + + text += "Juggernaut
The Juggernaut is a slow, but durable, melee attacker which can produce temporary forcewalls. It will also reflect most lethal energy weapons.

" + + text += "Artificer
The Artificer is a weak and fragile construct, able to heal other constructs, produce more soulstones and construct shells, \ + construct fortifying cult walls and flooring, and finally, it can release a few indiscriminate stunning missiles.

" + + text += "Harvester
If you see one, know that you have done all you can and your life is void.

" + var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) popup.open() From 49d5ea4bf08e3f348fb6ea4840abbcf2f74c12d7 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 27 Apr 2016 23:33:45 -0400 Subject: [PATCH 91/93] Indentation memes --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index f14729a7707..b6048b70c6b 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -321,8 +321,8 @@ log_game("Construct talisman failed - not a valid target") /obj/item/weapon/paper/talisman/construction/afterattack(obj/item/stack/sheet/metal/target, mob/user, proximity_flag, click_parameters) + ..() if(proximity_flag && istype(target) && iscultist(user)) - ..() if(istype(W, /obj/item/weapon/paper/talisman/construction)) if(target.use(25)) amount = amount - 25 From 2298862a97beefee394382eaaf04d718af460728 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 28 Apr 2016 00:58:56 -0400 Subject: [PATCH 92/93] SUPER FINAL CONSTRUCTION TALISMAN CHANGE 100% TESTED AND APPROVED VALVE PLZ ADD THIS! --- code/game/gamemodes/cult/talisman.dm | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index b6048b70c6b..525965483ca 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -321,18 +321,15 @@ log_game("Construct talisman failed - not a valid target") /obj/item/weapon/paper/talisman/construction/afterattack(obj/item/stack/sheet/metal/target, mob/user, proximity_flag, click_parameters) - ..() - if(proximity_flag && istype(target) && iscultist(user)) - if(istype(W, /obj/item/weapon/paper/talisman/construction)) - if(target.use(25)) - amount = amount - 25 - new /obj/structure/constructshell(get_turf(target)) - user << "The talisman clings to the metal and twists it into a construct shell!" - if(amount == 0) - qdel(src) - qdel(W) - else - user << "The talisman requires at least 25 sheets of metal!" + ..() + if(proximity_flag && istype(target) && iscultist(user)) + if(target.get_amount() >= 25) + new /obj/structure/constructshell(get_turf(target)) + target.use(25) + user << "The talisman clings to the metal and twists it into a construct shell!" + qdel(src) + else + user << "The talisman requires at least 25 sheets of metal!" /obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling name = "cult shackles" From 14bd9172bfe91e0e7742042cb67543a4a53afd37 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 28 Apr 2016 10:25:51 -0400 Subject: [PATCH 93/93] Is this just a hazing ritual --- code/game/gamemodes/cult/talisman.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 525965483ca..d2a3d80b61b 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -323,9 +323,9 @@ /obj/item/weapon/paper/talisman/construction/afterattack(obj/item/stack/sheet/metal/target, mob/user, proximity_flag, click_parameters) ..() if(proximity_flag && istype(target) && iscultist(user)) - if(target.get_amount() >= 25) - new /obj/structure/constructshell(get_turf(target)) - target.use(25) + var/turf/T = get_turf(target) + if(target.use(25)) + new /obj/structure/constructshell(T) user << "The talisman clings to the metal and twists it into a construct shell!" qdel(src) else