diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index e3ac71b77c..041575c4b7 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -32,6 +32,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", var/word1 var/word2 var/word3 + var/list/converting = list() + // Places these combos are mentioned: this file - twice in the rune code, once in imbued tome, once in tome's HTML runes.dm - in the imbue rune code. If you change a combination - dont forget to change it everywhere. // travel self [word] - Teleport to random [rune with word destination matching] diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 88e16dbe46..21c0b8e78b 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,6 +1,7 @@ var/list/sacrificed = list() /obj/effect/rune + /////////////////////////////////////////FIRST RUNE proc teleport(var/key) @@ -98,50 +99,82 @@ var/list/sacrificed = list() /////////////////////////////////////////THIRD RUNE convert() + var/mob/living/carbon/target = null for(var/mob/living/carbon/M in src.loc) - if(iscultist(M)) - continue - if(M.stat==2) - continue - usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!") + if(!iscultist(M) && M.stat < DEAD && !(M in converting)) + target = M + break + + if(!target) //didn't find any new targets + if(!converting.len) + fizzle() + else + usr << "You sense that the power of the dark one is already working away at them." + return - if (M.species && (M.species.flags & NO_PAIN)) - M.visible_message("\red The markings below [M] glow a bloody red.") - else - M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \ - "\red AAAAAAHHHH!", \ - "\red You hear an anguished scream.") - if(is_convertable_to_cult(M.mind) && !jobban_isbanned(M, "cultist"))//putting jobban check here because is_convertable uses mind as argument - - // Mostly for the benefit of those who resist, but it makes sense for even those who join to have some.. effect. - M.take_overall_damage(0, 10) - - var/choice = alert(M,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit") - if(choice == "Submit") - ticker.mode.add_cultist(M.mind) - M.mind.special_role = "Cultist" - M << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." - M << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." - return 1 - - else if(choice == "Resist") - - M.take_overall_damage(0, rand(5, 10)) // You dirty resister cannot handle the damage to your mind. Easily. - // Resist messages go! - var/BurnLoss = M.getFireLoss() - if (BurnLoss < 25) M << "Your blood boils as you force yourself to resist the corruption invading every corner of your mind." - else if (BurnLoss < 45) M << "Your blood boils and your body burns as the corruption further forces itself into your body and mind." - else if (BurnLoss < 75) M << "You begin to hallucinate images of a dark and incomprehensible being and your entire body feels like its engulfed in flame as your mental defenses crumble." - else if (BurnLoss < 100) M << "Your mind turns to ash as the burning flames engulf your very soul and images of Nar'Sie begin to bombard the last remnants of mental resistance." - else M << "Your entire broken soul and being is engulfed in corruption and flames as your mind shatters away into nothing." - return 0 - else - M << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." - M << "And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs." + usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!") + + converting |= target + var/list/waiting_for_input = list(target = 0) //need to box this up in order to be able to reset it again from inside spawn, apparently + var/initial_message = 0 + while(target in converting) + if(target.loc != src.loc || target.stat == DEAD) + converting -= target + if(target.getFireLoss() < 100) + target.hallucination = min(target.hallucination, 500) return 0 - return fizzle() + + target.take_overall_damage(0, rand(5, 20)) // You dirty resister cannot handle the damage to your mind. Easily. - even cultists who accept right away should experience some effects + // Resist messages go! + if(initial_message) //don't do this stuff right away, only if they resist or hesitate. + switch(target.getFireLoss()) + if(0 to 25) + target << "Your blood boils as you force yourself to resist the corruption invading every corner of your mind." + if(25 to 45) + target << "Your blood boils and your body burns as the corruption further forces itself into your body and mind." + if(45 to 75) + target << "You begin to hallucinate images of a dark and incomprehensible being and your entire body feels like its engulfed in flame as your mental defenses crumble." + target.apply_effect(rand(1,10), STUTTER) + if(75 to 100) + target << "Your mind turns to ash as the burning flames engulf your very soul and images of an unspeakable horror begin to bombard the last remnants of mental resistance." + //broken mind - 5000 may seem like a lot I wanted the effect to really stand out for maxiumum losing-your-mind-spooky + //hallucination is reduced when the step off as well, provided they haven't hit the last stage... + target.hallucination += 5000 + target.apply_effect(10, STUTTER) + target.adjustBrainLoss(1) + if(100 to INFINITY) + target << "Your entire broken soul and being is engulfed in corruption and flames as your mind shatters away into nothing." + target.hallucination += 5000 + target.apply_effect(15, STUTTER) + target.adjustBrainLoss(rand(1,5)) + initial_message = 1 + if (target.species && (target.species.flags & NO_PAIN)) + target.visible_message("The markings below [target] glow a bloody red.") + else + target.visible_message("[target] writhes in pain as the markings below \him glow a bloody red.", "AAAAAAHHHH!", "You hear an anguished scream.") + if(!waiting_for_input[target]) //so we don't spam them with dialogs if they hesitate + waiting_for_input[target] = 1 + + if(!is_convertable_to_cult(target.mind) || jobban_isbanned(target, "cultist"))//putting jobban check here because is_convertable uses mind as argument + //waiting_for_input ensures this is only shown once, so they basically auto-resist from here on out. They still need to find a way to get off the freaking rune if they don't want to burn to death, though. + target << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." + target << "And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs." + + else spawn() + var/choice = alert(target,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit") + waiting_for_input[target] = 0 + if(choice == "Submit") //choosing 'Resist' does nothing of course. + ticker.mode.add_cultist(target.mind) + target.mind.special_role = "Cultist" + target << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." + target << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." + converting -= target + target.hallucination = 0 //sudden clarity + + sleep(100) //proc once every 10 seconds + return 1 /////////////////////////////////////////FOURTH RUNE diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 5bb538a3dc..ea4ac29fc3 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -70,12 +70,13 @@ h1.alert, h2.alert {color: #000000;} .disarm {color: #990000;} .passive {color: #660000;} -.danger {color: #ff0000; font-weight: bold;} -.warning {color: #ff0000; font-style: italic;} +.danger {color: #ff0000; font-weight: bold;} +.warning {color: #ff0000; font-style: italic;} .rose {color: #ff5050;} .info {color: #0000CC;} .notice {color: #000099;} .alium {color: #00ff00;} +.cult {color: #800080; font-weight: bold; font-style: italic;} /* Languages */