From 1e886ddaac379c4a1c8475edd85e9fb8103270e2 Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Wed, 8 Feb 2017 19:08:55 -0500 Subject: [PATCH] Clockwork Cults must always construct and activate the Ark --- code/__DEFINES/clockcult.dm | 2 - code/game/gamemodes/clock_cult/clock_cult.dm | 47 ++++--------------- .../clock_cult/clock_effects/clock_sigils.dm | 5 +- .../ark_of_the_clockwork_justicar.dm | 14 ++---- code/modules/mob/living/living_defense.dm | 17 ++++--- 5 files changed, 24 insertions(+), 61 deletions(-) diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index d97dbc6cf57..da1e3e4dfc0 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -87,8 +87,6 @@ var/global/list/all_scripture = list() //a list containing scripture instances; #define CLOCKCULT_ESCAPE "escape" -#define CLOCKCULT_SILICONS "silicons" - //misc clockcult stuff #define MARAUDER_EMERGE_THRESHOLD 65 //marauders cannot emerge unless host is at this% or less health diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index f0525d0a199..1bcc3bec902 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -84,8 +84,6 @@ Credit where due: /datum/game_mode var/list/servants_of_ratvar = list() //The Enlightened servants of Ratvar - var/required_escapees = 0 //How many servants need to escape, if applicable - var/required_silicon_converts = 0 //How many robotic lifeforms need to be converted, if applicable var/clockwork_objective = CLOCKCULT_GATEWAY //The objective that the servants must fulfill var/clockwork_explanation = "Construct a Gateway to the Celestial Derelict and free Ratvar." //The description of the current objective @@ -141,20 +139,12 @@ Credit where due: /datum/game_mode/clockwork_cult/proc/forge_clock_objectives() //Determine what objective that Ratvar's servants will fulfill var/list/possible_objectives = list(CLOCKCULT_ESCAPE, CLOCKCULT_GATEWAY) - var/silicons_possible = FALSE - for(var/mob/living/silicon/ai/S in living_mob_list) - silicons_possible = TRUE - if(silicons_possible) - possible_objectives += CLOCKCULT_SILICONS clockwork_objective = pick(possible_objectives) switch(clockwork_objective) if(CLOCKCULT_ESCAPE) - required_escapees = round(max(1, roundstart_player_count / 3)) //33% of the player count must be cultists - clockwork_explanation = "Ensure that [required_escapees] servants of Ratvar escape from [station_name()]." + clockwork_explanation = "Construct a Gateway to the Celestial Derelict and proselytize the entire station." if(CLOCKCULT_GATEWAY) clockwork_explanation = "Construct a Gateway to the Celestial Derelict and free Ratvar." - if(CLOCKCULT_SILICONS) - clockwork_explanation = "Ensure that all active silicon-based lifeforms on [station_name()] are servants of Ratvar and Application scripture is unlocked." return 1 /datum/game_mode/clockwork_cult/proc/greet_servant(mob/M) //Description of their role @@ -199,27 +189,8 @@ Credit where due: /datum/game_mode/clockwork_cult/proc/check_clockwork_victory() switch(clockwork_objective) if(CLOCKCULT_ESCAPE) - var/surviving_servants = 0 - for(var/datum/mind/M in servants_of_ratvar) - if(M.current && M.current.stat != DEAD && (M.current.onCentcom() || M.current.onSyndieBase())) - surviving_servants++ - clockwork_explanation = "Ensure that [required_escapees] servant(s) of Ratvar escape from [station_name()].
[surviving_servants] managed to escape!" - if(surviving_servants >= required_escapees) - ticker.news_report = CULT_ESCAPE - return TRUE - if(CLOCKCULT_SILICONS) - var/total_silicons = 0 - var/valid_silicons = 0 - for(var/mob/living/silicon/S in mob_list) //Only check robots and AIs - if(isAI(S) || iscyborg(S)) - total_silicons++ - if(is_servant_of_ratvar(S) || S.stat == DEAD) - valid_silicons++ - clockwork_explanation = "Ensure that all active silicon-based lifeforms on [station_name()] are servants of Ratvar and Application scripture is unlocked.
\ - [valid_silicons]/[total_silicons] silicons were killed or converted!" - var/list/scripture_states = scripture_unlock_check() - if(valid_silicons >= total_silicons && scripture_states[SCRIPTURE_APPLICATION]) - ticker.news_report = CLOCK_SILICONS + if(clockwork_gateway_activated) + ticker.news_report = CLOCK_PROSELYTIZATION return TRUE if(CLOCKCULT_GATEWAY) if(ratvar_awakens) @@ -241,18 +212,16 @@ Credit where due: feedback_set_details("round_end_result", "win - servants completed their objective ([clockwork_objective])") else var/half_victory = FALSE - if(clockwork_objective == CLOCKCULT_GATEWAY) - var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = locate() in all_clockwork_objects - if(G) - half_victory = TRUE + var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = locate() in all_clockwork_objects + if(G) + half_victory = TRUE if(half_victory) - text += "The crew escaped before Ratvar could rise, but the gateway was successfully constructed!" + text += "The crew escaped before [clockwork_objective == CLOCKCULT_GATEWAY ? "Ratvar could rise":"the station could be proselytized"], but the gateway \ + was successfully constructed!" feedback_set_details("round_end_result", "halfwin - round ended before the gateway finished") else text += "Ratvar's servants have failed!" feedback_set_details("round_end_result", "loss - servants failed their objective ([clockwork_objective])") - if(clockwork_gateway_activated && clockwork_objective != CLOCKCULT_GATEWAY) - ticker.news_report = CLOCK_PROSELYTIZATION text += "
The servants' objective was:
[clockwork_explanation]" text += "
Ratvar's servants had [clockwork_caches] Tinkerer's Caches." text += "
Construction Value(CV) was: [clockwork_construction_value]" diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm b/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm index 3822cc35a29..42c4a418c70 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm @@ -159,11 +159,10 @@ /obj/effect/clockwork/sigil/submission/accession/post_channel(mob/living/L) if(L.isloyal()) - var/mob/living/carbon/C = L delete_on_finish = TRUE - C.visible_message("[C] visibly trembles!", \ + L.visible_message("[L] visibly trembles!", \ "[text2ratvar("You will be mine and his. This puny trinket will not stop me.")]") - for(var/obj/item/weapon/implant/mindshield/M in C.implants) + for(var/obj/item/weapon/implant/mindshield/M in L.implants) qdel(M) diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm index f123579e34d..9ca1606d109 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -74,8 +74,6 @@ hierophant_message("A gateway to the Celestial Derelict has been created in [gate_area.map_name]!", FALSE, src) if(!objective_is_gateway) ratvar_portal = FALSE - hierophant_message("This newly constructed gateway will not free Ratvar, \ - and will instead simply proselytize and convert everything and everyone on the station.", TRUE) SSshuttle.registerHostileEnvironment(src) START_PROCESSING(SSprocessing, src) @@ -210,13 +208,14 @@ animate(glow, transform = matrix() * 3, alpha = 0, time = 5) var/turf/startpoint = get_turf(src) QDEL_IN(src, 3) - clockwork_gateway_activated = TRUE if(ratvar_portal) sleep(3) + clockwork_gateway_activated = TRUE new/obj/structure/destructible/clockwork/massive/ratvar(startpoint) else INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 0) //call the shuttle immediately sleep(3) + clockwork_gateway_activated = TRUE send_to_playing_players("\"[text2ratvar("Behold")]!\"\n\"[text2ratvar("See Engine's mercy")]!\"\n\ \"[text2ratvar("Observe Engine's design skills")]!\"\n\"[text2ratvar("Behold Engine's light")]!!\"\n\ \"[text2ratvar("Gaze upon Engine's power")]!\"") @@ -234,13 +233,8 @@ dist = FALSE T.ratvar_act(dist) CHECK_TICK - for(var/mob/living/silicon/robot/R in silicon_mobs) - if(R && R.stat != DEAD && !is_servant_of_ratvar(R)) - add_servant_of_ratvar(R) - for(var/i in ai_list) - var/mob/living/silicon/ai/A = i - if(A && A.stat != DEAD && !is_servant_of_ratvar(A)) - add_servant_of_ratvar(A) + for(var/mob/living/L in living_mob_list) + L.ratvar_act() for(var/I in all_clockwork_mobs) var/mob/M = I if(M.stat == CONSCIOUS) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 406bf9584bb..c7ab055705a 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -323,13 +323,16 @@ /mob/living/ratvar_act() - if(stat != DEAD && !is_servant_of_ratvar(src) && !add_servant_of_ratvar(src)) - src << "A blinding light boils you alive! Run!" - adjustFireLoss(35) - if(src) - adjust_fire_stacks(1) - IgniteMob() - return FALSE + if(stat != DEAD && !is_servant_of_ratvar(src)) + for(var/obj/item/weapon/implant/mindshield/M in implants) + qdel(M) + if(!add_servant_of_ratvar(src)) + src << "A blinding light boils you alive! Run!" + adjustFireLoss(35) + if(src) + adjust_fire_stacks(1) + IgniteMob() + return FALSE return TRUE