From 2acaa8ae1b4bf00f7b63695b614acda6680f8fd6 Mon Sep 17 00:00:00 2001 From: subject217 <38303698+subject217@users.noreply.github.com> Date: Wed, 5 Sep 2018 04:16:38 -0700 Subject: [PATCH] [Ready][?] Robustin's cult nerf, back from the dead. (#39717) balance: Once the blood cult reaches 20% of the active player population, they will receive a notice that the cult is "rising" - and after a moderate delay the eyes of all existing and new cultists will be permanently red. Examining a cultist with uncovered eyes will confirm their supernatural appearance. balance: Once the blood cult reaches 40% of the active player population they will receive a warning and after a moderate delay will glow red, permanently revealing the identity of existing and new blood cultists. add: Any non-cultist can now strike a (filled) soulshard with a bible to purify it. Purified shades have a unique appearance and will be eager to get revenge on the cult. Bibles can be printed in the library. balance: Juggernauts have 25% less HP and 35% less projectile reflection. balance: Cult mirror shield is slightly easier to break, has less illusions, and has -33% throwing distance. balance: The EMP blood spell has -1 light and heavy radius. balance: The revive rune now requires 3 sacrifices per revive, it still starts with one "freebie" revive. Giving "souls" to AFK/Catatonic cultists remains free of charge. balance: Twisted Construction now has a channel time with added noise/effects when used on doors. It also hurts you slightly more to use. balance: You can now only hold 1 blood spell without an empowering rune and 4 with one. del: The Bloody Bastard Sword is no longer available in Blood Cult. It's still spawnable with admin tools. --- code/__DEFINES/cult.dm | 13 ++- code/__DEFINES/traits.dm | 1 + code/game/objects/items/storage/book.dm | 14 ++++ code/modules/antagonists/cult/blood_magic.dm | 23 +++--- code/modules/antagonists/cult/cult.dm | 78 ++++++++++++++++-- code/modules/antagonists/cult/cult_items.dm | 8 +- .../antagonists/cult/cult_structures.dm | 10 +-- code/modules/antagonists/cult/runes.dm | 14 ++-- .../mob/living/carbon/human/examine.dm | 9 +- .../mob/living/simple_animal/constructs.dm | 6 +- icons/effects/32x64.dmi | Bin 0 -> 29533 bytes 11 files changed, 134 insertions(+), 42 deletions(-) create mode 100644 icons/effects/32x64.dmi diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm index 73ec1bc8d7c..198291f0ae7 100644 --- a/code/__DEFINES/cult.dm +++ b/code/__DEFINES/cult.dm @@ -10,5 +10,14 @@ #define RUNE_COLOR_SUMMON "#00FF00" //blood magic -#define MAX_BLOODCHARGE 5 -#define RUNELESS_MAX_BLOODCHARGE 2 \ No newline at end of file +#define MAX_BLOODCHARGE 4 +#define RUNELESS_MAX_BLOODCHARGE 1 +#define CULT_RISEN 0.2 //percent before rise +#define CULT_ASCENDENT 0.4 //percent before ascend +//screen locations +#define DEFAULT_BLOODSPELLS "6:-29,4:-2" +#define DEFAULT_BLOODTIP "14:6,14:27" +#define DEFAULT_TOOLTIP "6:-29,5:-2" +//misc +#define SOULS_TO_REVIVE 3 +#define BLOODCULT_EYE "f00" \ No newline at end of file diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index d20399c9e1c..2455d373ab2 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -90,3 +90,4 @@ #define STASIS_MUTE "stasis" #define GENETICS_SPELL "genetics_spell" #define EYES_COVERED "eyes_covered" +#define CULT_EYES "cult_eyes" \ No newline at end of file diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 9431b18df45..1ab313d3e6d 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -190,6 +190,20 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", user.visible_message("[user] has purified the [sword]!!") qdel(sword) + else if(istype(A, /obj/item/soulstone) && !iscultist(user)) + var/obj/item/soulstone/SS = A + to_chat(user, "You begin to exorcise [SS].") + playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,1) + if(do_after(user, 40, user = SS)) + playsound(src,'sound/effects/pray_chaplain.ogg',60,1) + SS.usability = TRUE + for(var/mob/living/simple_animal/shade/EX in SS) + SSticker.mode.remove_cultist(EX.mind, 1, 0) + EX.icon_state = "ghost1" + EX.name = "Purified [EX.name]" + SS.release_shades(user) + user.visible_message("[user] has purified the [SS]!!") + qdel(SS) /obj/item/storage/book/bible/booze desc = "To be applied to the head repeatedly." diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 960bfcba1cd..328560d6838 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -7,8 +7,8 @@ /datum/action/innate/cult/blood_magic/Grant() ..() - button.screen_loc = "6:-29,4:-2" - button.moved = "6:-29,4:-2" + button.screen_loc = DEFAULT_BLOODSPELLS + button.moved = DEFAULT_BLOODSPELLS button.ordered = FALSE /datum/action/innate/cult/blood_magic/Remove() @@ -84,7 +84,7 @@ to_chat(owner, "Your wounds glows with power, you have prepared a [new_spell.name] invocation!") channeling = FALSE -/datum/action/innate/cult/blood_spell //The next generation of talismans +/datum/action/innate/cult/blood_spell //The next generation of talismans, handles storage/creation of blood magic name = "Blood Magic" button_icon_state = "telerune" desc = "Fear the Old Blood." @@ -161,7 +161,7 @@ /datum/action/innate/cult/blood_spell/emp/Activate() owner.visible_message("[owner]'s hand flashes a bright blue!", \ "You speak the cursed words, emitting an EMP blast from your hand.") - empulse(owner, 3, 6) + empulse(owner, 2, 5) owner.whisper(invocation, language = /datum/language/common) charges-- if(charges<=0) @@ -179,7 +179,7 @@ desc = "A sinister spell used to convert:
Plasteel into runed metal
25 metal into a construct shell
Cyborgs directly into constructs
Cyborg shells into construct shells
Airlocks into runed airlocks (harm intent)" button_icon_state = "transmute" magic_path = "/obj/item/melee/blood_magic/construction" - health_cost = 10 + health_cost = 12 /datum/action/innate/cult/blood_spell/equipment name = "Summon Equipment" @@ -401,7 +401,7 @@ //Stun /obj/item/melee/blood_magic/stun name = "Stunning Aura " - color = "#ff0000" // red + color = RUNE_COLOR_RED invocation = "Fuu ma'jin!" /obj/item/melee/blood_magic/stun/afterattack(atom/target, mob/living/carbon/user, proximity) @@ -586,10 +586,13 @@ new /obj/structure/constructshell(T) SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) else if(istype(target,/obj/machinery/door/airlock)) - target.narsie_act() - uses-- - user.visible_message("Black ribbons suddenly eminate from [user]'s hand and cling to the airlock - twisting and corrupting it!") - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + playsound(T, 'sound/machines/airlockforced.ogg', 50, 1) + do_sparks(5, TRUE, target) + if(do_after(user, 50, target = user)) + target.narsie_act() + uses-- + user.visible_message("Black ribbons suddenly eminate from [user]'s hand and cling to the airlock - twisting and corrupting it!") + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) else to_chat(user, "The spell will not work on [target]!") return diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index c14cd9ecd93..0de096b5c5d 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -11,9 +11,9 @@ job_rank = ROLE_CULTIST var/ignore_implant = FALSE var/give_equipment = FALSE - var/datum/team/cult/cult_team + /datum/antagonist/cult/get_team() return cult_team @@ -111,7 +111,11 @@ if(ishuman(current)) magic.Grant(current) current.throw_alert("bloodsense", /obj/screen/alert/bloodsense) - + if(cult_team.cult_risen) + cult_team.rise(current) + if(cult_team.cult_ascendent) + cult_team.ascend(current) + /datum/antagonist/cult/remove_innate_effects(mob/living/mob_override) . = ..() var/mob/living/current = owner.current @@ -123,7 +127,13 @@ communion.Remove(current) magic.Remove(current) current.clear_alert("bloodsense") - + if(ishuman(current)) + var/mob/living/carbon/human/H = current + H.eye_color = initial(H.eye_color) + H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) + H.remove_trait(CULT_EYES) + H.cut_overlays() + H.regenerate_icons() /datum/antagonist/cult/on_removal() SSticker.mode.cult -= owner SSticker.mode.update_cult_icons_removed(owner) @@ -193,7 +203,10 @@ throwing.Grant(current) current.update_action_buttons_icon() current.apply_status_effect(/datum/status_effect/cult_master) - + if(cult_team.cult_risen) + cult_team.rise(current) + if(cult_team.cult_ascendent) + cult_team.ascend(current) /datum/antagonist/cult/master/remove_innate_effects(mob/living/mob_override) . = ..() var/mob/living/current = owner.current @@ -204,6 +217,14 @@ throwing.Remove(current) current.update_action_buttons_icon() current.remove_status_effect(/datum/status_effect/cult_master) + + if(ishuman(current)) + var/mob/living/carbon/human/H = current + H.eye_color = initial(H.eye_color) + H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) + H.remove_trait(CULT_EYES) + H.cut_overlays() + H.regenerate_icons() /datum/team/cult name = "Cult" @@ -215,7 +236,53 @@ var/cult_vote_called = FALSE var/mob/living/cult_master var/reckoning_complete = FALSE - + var/cult_risen = FALSE + var/cult_ascendent = FALSE + +/datum/team/cult/proc/check_size() + if(cult_ascendent) + return + var/alive = 0 + var/cultplayers = 0 + for(var/I in GLOB.player_list) + var/mob/M = I + if(M.stat != DEAD) + if(iscultist(M)) + ++cultplayers + else + ++alive + var/ratio = cultplayers/alive + if(ratio > CULT_RISEN && !cult_risen) + for(var/datum/mind/B in members) + if(B.current) + SEND_SOUND(B.current, 'sound/hallucinations/i_see_you2.ogg') + to_chat(B.current, "The veil weakens as your cult grows, your eyes begin to glow...") + addtimer(CALLBACK(src, .proc/rise, B.current), 200) + cult_risen = TRUE + + if(ratio > CULT_ASCENDENT && !cult_ascendent) + for(var/datum/mind/B in members) + if(B.current) + SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg') + to_chat(B.current, "Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!") + addtimer(CALLBACK(src, .proc/ascend, B.current), 200) + cult_ascendent = TRUE + + +/datum/team/cult/proc/rise(cultist) + if(ishuman(cultist)) + var/mob/living/carbon/human/H = cultist + H.eye_color = "f00" + H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) + H.add_trait(CULT_EYES) + H.update_body() + +/datum/team/cult/proc/ascend(cultist) + if(ishuman(cultist)) + var/mob/living/carbon/human/H = cultist + new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir) + var/istate = pick("halo1","halo2","halo3","halo4","halo5","halo6") + H.add_overlay(mutable_appearance('icons/effects/32x64.dmi', istate, -BODY_FRONT_LAYER)) /datum/team/cult/proc/setup_objectives() //SAC OBJECTIVE , todo: move this to objective internals @@ -257,6 +324,7 @@ summon_objective.team = src objectives += summon_objective + /datum/objective/sacrifice var/sacced = FALSE var/sac_image diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index b5ccbae473d..1b211ab1021 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -906,22 +906,22 @@ force = 5 throwforce = 15 throw_speed = 1 - throw_range = 6 + throw_range = 4 w_class = WEIGHT_CLASS_BULKY attack_verb = list("bumped", "prodded") hitsound = 'sound/weapons/smash.ogg' - var/illusions = 3 + var/illusions = 2 /obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(iscultist(owner)) if(istype(hitby, /obj/item/projectile)) var/obj/item/projectile/P = hitby - if(P.damage >= 35) + if(P.damage >= 30) var/turf/T = get_turf(owner) T.visible_message("The sheer force from [P] shatters the mirror shield!") new /obj/effect/temp_visual/cult/sparks(T) playsound(T, 'sound/effects/glassbr3.ogg', 100) - owner.Knockdown(20) + owner.Knockdown(25) qdel(src) return FALSE if(P.is_reflectable) diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index fcd7216602f..6dc01ec54cb 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -131,7 +131,7 @@ return var/choice if(user.mind.has_antag_datum(/datum/antagonist/cult/master)) - choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Bastard Sword") + choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Mirror Shield") else choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Mirror Shield") var/list/pickedtype = list() @@ -140,14 +140,6 @@ pickedtype += /obj/item/clothing/suit/hooded/cultrobes/cult_shield if("Flagellant's Robe") pickedtype += /obj/item/clothing/suit/hooded/cultrobes/berserker - if("Bastard Sword") - if((world.time - SSticker.round_start_time) >= 12000) - pickedtype += /obj/item/twohanded/required/cult_bastard - else - cooldowntime = 12000 - (world.time - SSticker.round_start_time) - to_chat(user, "The forge fires are not yet hot enough for this weapon, give it another [DisplayTimeText(cooldowntime)].") - cooldowntime = 0 - return if("Mirror Shield") pickedtype += /obj/item/shield/mirror if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 7eb203c63f6..c7c00f448a3 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -211,7 +211,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/mob/living/F = invokers[1] var/datum/antagonist/cult/C = F.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - + var/datum/team/cult/Cult_team = C.cult_team var/is_convertable = is_convertable_to_cult(L,C.cult_team) if(L.stat != DEAD && (is_clock || is_convertable)) invocation = "Mah'weyh pleggh at e'ntrath!" @@ -229,8 +229,8 @@ structure_check() searches for nearby cultist structures required for the invoca do_sacrifice(L, invokers) animate(src, color = oldcolor, time = 5) addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5) + Cult_team.check_size() // Triggers the eye glow or aura effects if the cult has grown large enough relative to the crew rune_in_use = FALSE - /obj/effect/rune/convert/proc/do_convert(mob/living/convertee, list/invokers) if(invokers.len < 2) for(var/M in invokers) @@ -315,6 +315,7 @@ structure_check() searches for nearby cultist structures required for the invoca return TRUE + /obj/effect/rune/empower cultist_name = "Empower" cultist_desc = "allows cultists to prepare greater amounts of blood magic at far less of a cost." @@ -512,7 +513,7 @@ structure_check() searches for nearby cultist structures required for the invoca invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below icon_state = "1" color = RUNE_COLOR_MEDIUMRED - var/static/revives_used = 0 + var/static/revives_used = -SOULS_TO_REVIVE // Cultists get one "free" revive /obj/effect/rune/raise_dead/examine(mob/user) ..() @@ -549,11 +550,12 @@ structure_check() searches for nearby cultist structures required for the invoca invocation = initial(invocation) ..() if(mob_to_revive.stat == DEAD) - if(LAZYLEN(GLOB.sacrificed) <= revives_used) - to_chat(user, "Your cult must carry out another sacrifice before it can revive a cultist!") + var/diff = LAZYLEN(GLOB.sacrificed) - revives_used - SOULS_TO_REVIVE + if(diff < 0) + to_chat(user, "Your cult must carry out [abs(diff)] more sacrifice\s before it can revive another cultist!") fail_invoke() return - revives_used++ + revives_used += SOULS_TO_REVIVE mob_to_revive.revive(1, 1) //This does remove traits and such, but the rune might actually see some use because of it! mob_to_revive.grab_ghost() if(!mob_to_revive.client || mob_to_revive.client.is_afk()) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index a6f901e6956..7133d605be9 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/human/examine(mob/user) +/mob/living/carbon/human/examine(mob/user) //User is the person being examined //this is very slightly better than it was because you can use it more places. still can't do \his[src] though. var/t_He = p_they(TRUE) var/t_His = p_their(TRUE) @@ -80,8 +80,11 @@ msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" //eyes - if(glasses && !(SLOT_GLASSES in obscured)) - msg += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes.\n" + if(!(SLOT_GLASSES in obscured)) + if(glasses) + msg += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes.\n" + else if(eye_color == BLOODCULT_EYE && iscultist(src) && has_trait(CULT_EYES)) + msg += "[t_His] eyes are glowing an unnatural red!\n" //ears if(ears && !(SLOT_EARS in obscured)) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 4272e45500f..4e1b26cfc45 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -122,8 +122,8 @@ desc = "A massive, armored construct built to spearhead attacks and soak up enemy fire." icon_state = "behemoth" icon_living = "behemoth" - maxHealth = 200 - health = 200 + maxHealth = 150 + health = 150 response_harm = "harmlessly punches" harm_intent_damage = 0 obj_damage = 90 @@ -148,7 +148,7 @@ /mob/living/simple_animal/hostile/construct/armored/bullet_act(obj/item/projectile/P) if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) - var/reflectchance = 60 - round(P.damage/3) + var/reflectchance = 40 - round(P.damage/3) if(prob(reflectchance)) apply_damage(P.damage * 0.5, P.damage_type) visible_message("The [P.name] is reflected by [src]'s armored shell!", \ diff --git a/icons/effects/32x64.dmi b/icons/effects/32x64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4d9f9911944c2e8e9394e5b04b7f7856cf7d7d20 GIT binary patch literal 29533 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%0D@d>!Im@OZx@opVe7(mD6j+Y;IXMfjDVioW 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 literal 0 HcmV?d00001