From 90b5177f4e4f33846e1158523bd3fc5a8fe014b5 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 14 Jan 2017 01:48:44 -0500 Subject: [PATCH 1/6] Rawr --- _maps/map_files/shuttles/emergency_narnar.dmm | 6 ++-- code/game/gamemodes/cult/cult.dm | 10 ++----- code/game/gamemodes/cult/cult_objectives.dm | 7 ++--- code/game/gamemodes/cult/runes.dm | 1 + code/modules/admin/topic.dm | 28 +++++++++++++++++++ 5 files changed, 36 insertions(+), 16 deletions(-) diff --git a/_maps/map_files/shuttles/emergency_narnar.dmm b/_maps/map_files/shuttles/emergency_narnar.dmm index 537d0f5ba82..f36caa90e27 100644 --- a/_maps/map_files/shuttles/emergency_narnar.dmm +++ b/_maps/map_files/shuttles/emergency_narnar.dmm @@ -37,15 +37,15 @@ "aK" = (/obj/effect/rune,/mob/living/simple_animal/hostile/construct/wraith,/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aL" = (/mob/living/simple_animal/hostile/construct/armoured,/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aM" = (/obj/effect/decal/cleanable/blood/innards,/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/engine/cult,/area/shuttle/escape) -"aN" = (/mob/living/simple_animal/construct/wraith,/mob/living/simple_animal/hostile/construct/builder,/turf/simulated/floor/engine/cult,/area/shuttle/escape) -"aO" = (/mob/living/simple_animal/construct/builder,/mob/living/simple_animal/hostile/construct/behemoth,/turf/simulated/floor/engine/cult,/area/shuttle/escape) +"aN" = (/mob/living/simple_animal/hostile/construct/builder,/turf/simulated/floor/engine/cult,/area/shuttle/escape) +"aO" = (/mob/living/simple_animal/hostile/construct/behemoth,/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aP" = (/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aQ" = (/obj/effect/decal/cleanable/blood/writing,/obj/effect/decal/cleanable/blood/writing,/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aR" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/obj/effect/spawner/window/reinforced{color = "red"},/turf/simulated/wall/cult,/area/shuttle/escape) "aS" = (/obj/machinery/status_display{pixel_y = -30},/obj/machinery/light/spot,/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aT" = (/obj/machinery/door/airlock/cult/friendly,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "aU" = (/obj/effect/spawner/window/reinforced{color = "red"},/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/escape) -"aV" = (/mob/living/simple_animal/construct/armoured,/mob/living/simple_animal/hostile/construct/harvester,/turf/simulated/floor/engine/cult,/area/shuttle/escape) +"aV" = (/mob/living/simple_animal/hostile/construct/harvester,/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aW" = (/obj/structure/dresser,/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aX" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/turf/simulated/floor/engine/cult,/area/shuttle/escape) "aY" = (/obj/effect/decal/cleanable/blood/tracks/footprints,/turf/simulated/floor/engine/cult,/area/shuttle/escape) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 30066bb6bc9..7630fb76e85 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -106,14 +106,6 @@ var/global/list/all_cults = list() /datum/game_mode/cult/post_setup() modePlayer += cult acolytes_needed = acolytes_needed + round((num_players_started() / 10)) - if("sacrifice" in objectives) - var/list/possible_targets = get_unconvertables() - if(!possible_targets.len) - for(var/mob/living/carbon/human/player in player_list) - if(player.mind && !(player.mind in cult)) - possible_targets += player.mind - if(possible_targets.len > 0) - sacrifice_target = pick(possible_targets) for(var/datum/mind/cult_mind in cult) equip_cultist(cult_mind.current) @@ -187,6 +179,8 @@ var/global/list/all_cults = list() if(jobban_isbanned(cult_mind.current, ROLE_CULTIST)) replace_jobbaned_player(cult_mind.current, ROLE_CULTIST) update_cult_icons_added(cult_mind) + var/datum/game_mode/cult/cult_mode = ticker.mode + cult_mode.check_numbers() return 1 diff --git a/code/game/gamemodes/cult/cult_objectives.dm b/code/game/gamemodes/cult/cult_objectives.dm index 3449e4a1c95..87343feb74a 100644 --- a/code/game/gamemodes/cult/cult_objectives.dm +++ b/code/game/gamemodes/cult/cult_objectives.dm @@ -155,13 +155,11 @@ if(!sacrificed.len) var/list/possible_targets = list() for(var/mob/living/carbon/human/player in player_list) - if(is_secure_level(player.z)) //We can't sacrifice people that are on the centcom z-level - continue if(player.mind && !is_convertable_to_cult(player.mind) && (player.stat != DEAD)) possible_targets += player.mind if(!possible_targets.len) - //There are no living Unconvertables on the station. Looking for a Sacrifice Target among the ordinary crewmembers + //There are no living Unconvertables on the station. Looking for a Sacrifice Target among the ordinary crewmembers for(var/mob/living/carbon/human/player in player_list) if(is_secure_level(player.z)) //We can't sacrifice people that are on the centcom z-level continue @@ -172,7 +170,6 @@ sacrifice_target = pick(possible_targets) possible_objectives |= "sacrifice" else - message_admins("Didn't find a suitable sacrifice target...what the hell? Shout at a coder.") log_admin("Didn't find a suitable sacrifice target...what the hell? Shout at a coder.") if(!mass_convert) @@ -194,7 +191,7 @@ log_admin("There are [total] players, too little for the mass convert objective!") else possible_objectives |= "convert" - convert_target = round(total / 2) + convert_target = rand(9,15) if(!possible_objectives.len)//No more possible objectives, time to summon Nar-Sie message_admins("No suitable objectives left! Nar-Sie objective unlocked.") diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 01baa948b32..7e3cb80c120 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -975,6 +975,7 @@ var/list/teleport_runes = list() var/mob/living/carbon/human/new_human = new(get_turf(src)) new_human.real_name = ghost_to_spawn.real_name new_human.alpha = 150 //Makes them translucent + new_human.color = "grey" //heh..cult greytide...litterly... ..() visible_message("A cloud of red mist forms above [src], and from within steps... a man.") to_chat(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...") diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 1efb3567828..adb2cfa3f8c 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1533,6 +1533,34 @@ else if(href_list["check_antagonist"]) check_antagonists() + else if(href_list["cult_nextobj"]) + if(alert(usr, "Validate the current Cult objective and unlock the next one?", "Cult Cheat Code", "Yes", "No") != "Yes") + return + + if(!GAMEMODE_IS_CULT) + alert("Couldn't locate cult mode datum! This shouldn't ever happen, tell a coder!") + return + + var/datum/game_mode/cult/cult_round = ticker.mode + cult_round.bypass_phase() + message_admins("Admin [key_name_admin(usr)] has unlocked the Cult's next objective.") + log_admin("Admin [key_name_admin(usr)] has unlocked the Cult's next objective.") + + else if(href_list["cult_mindspeak"]) + var/input = stripped_input(usr, "Communicate to all the cultists with the voice of [ticker.mode.cultdat.entity_name]", "Voice of [ticker.mode.cultdat.entity_name]", "") + if(!input) + return + + for(var/datum/mind/H in ticker.mode.cult) + if (H.current) + to_chat(H.current, "[ticker.mode.cultdat.entity_name] murmurs, [ticker.mode.cultdat.entity_name]") + + for(var/mob/dead/observer/O in player_list) + to_chat(O, "[ticker.mode.cultdat.entity_name] murmurs, [input]") + + message_admins("Admin [key_name_admin(usr)] has talked with the Voice of [ticker.mode.cultdat.entity_name].") + log_admin("[key_name(usr)] Voice of [ticker.mode.cultdat.entity_name]: [input]") + else if(href_list["adminplayerobservecoodjump"]) if(!check_rights(R_ADMIN)) return From 5642ba19e78270e60309518dfc375cc496ad4c04 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 14 Jan 2017 13:02:05 -0500 Subject: [PATCH 2/6] Added failbacks for icon states updated firecult floor thanks to Jedr --- code/game/magic/Uristrunes.dm | 5 ++++- .../mob/living/simple_animal/constructs.dm | 15 +++++++++++---- icons/turf/floors.dmi | Bin 389996 -> 389754 bytes 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/code/game/magic/Uristrunes.dm b/code/game/magic/Uristrunes.dm index 5cb7dc4127e..ed881c71fb1 100644 --- a/code/game/magic/Uristrunes.dm +++ b/code/game/magic/Uristrunes.dm @@ -17,7 +17,10 @@ var/runetype = "rune" /proc/get_rune(symbol_bits, animated = 0) var/lookup = "[symbol_bits]-[animated]" - if(ticker.mode.cultdat.theme == "fire") + + if(!ticker.mode)//work around for maps with runes and cultdat is not loaded all the way + runetype = "rune" + else if(ticker.mode.cultdat.theme == "fire") runetype = "fire-rune" if(lookup in rune_cache) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 5f1418fcae5..fd1b35efeca 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -29,10 +29,17 @@ /mob/living/simple_animal/hostile/construct/New() ..() - name = "[ticker.mode.cultdat.get_name(const_type)] ([rand(1, 1000)])" - real_name = ticker.mode.cultdat.get_name(const_type) - icon_living = ticker.mode.cultdat.get_icon(const_type) - icon_state = ticker.mode.cultdat.get_icon(const_type) + if(!ticker.mode)//work around for maps with runes and cultdat is not loaded all the way + name = "[const_type] ([rand(1, 1000)])" + real_name = const_type + icon_living = const_type + icon_state = const_type + else + name = "[ticker.mode.cultdat.get_name(const_type)] ([rand(1, 1000)])" + real_name = ticker.mode.cultdat.get_name(const_type) + icon_living = ticker.mode.cultdat.get_icon(const_type) + icon_state = ticker.mode.cultdat.get_icon(const_type) + for(var/spell in construct_spells) AddSpell(new spell(null)) diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 86a544fa278288410b8ca7d2cb14e1ef1d8a4c7c..7c50369b1f9c7e6649d432b5db7c444047549e17 100644 GIT binary patch delta 13878 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 UHjB3b0spyl!T5aPS(}Le51$W7(EtDd From 4e12845de2c9e29605ecb2f237398c8f295f4485 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 15 Jan 2017 01:09:42 -0500 Subject: [PATCH 3/6] OBJECTIVE FIX --- code/game/gamemodes/cult/cult.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 7630fb76e85..f7cfa67f331 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -321,7 +321,7 @@ var/global/list/all_cults = list() feedback_add_details("cult_objective","cult_demons|FAIL") if("convert")//convert half the crew - if(obj_count < objectives.len) + if(cult.len >= convert_target) explanation = "Convert [convert_target] crewmembers ([cult.len] cultists at round end). Success!" feedback_add_details("cult_objective","cult_convertion|SUCCESS") else @@ -329,7 +329,7 @@ var/global/list/all_cults = list() feedback_add_details("cult_objective","cult_convertion|FAIL") if("bloodspill")//cover a large portion of the station in blood - if(obj_count < objectives.len) + if(max_spilled_blood >= spilltarget) explanation = "Cover [spilltarget] tiles of the station in blood (The peak number of covered tiles was: [max_spilled_blood]). Success!" feedback_add_details("cult_objective","cult_bloodspill|SUCCESS") else From 479a82017cdf299f0e2757539b8a34be1dd12996 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Mon, 16 Jan 2017 23:55:41 -0500 Subject: [PATCH 4/6] Merge this before i find something else.... --- code/modules/admin/player_panel.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 2e76bcea6a2..c6dbf4dde65 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -489,6 +489,10 @@ if(ticker.mode.cult.len) dat += check_role_table("Cultists", ticker.mode.cult, 0) + dat += "
use Cult Mindspeak)" + var/datum/game_mode/cult/cult_round = ticker.mode + if(!cult_round.narsie_condition_cleared) + dat += "
complete objective (debug)" if(ticker.mode.traitors.len) dat += check_role_table("Traitors", ticker.mode.traitors) From 9f1037006d7a547f48e921a4545f4979c4243e72 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Tue, 17 Jan 2017 23:45:47 -0500 Subject: [PATCH 5/6] Changes and more shit i noticed... --- code/game/gamemodes/cult/cult.dm | 5 +++-- code/game/gamemodes/cult/cult_objectives.dm | 2 +- code/modules/admin/player_panel.dm | 9 +++++---- code/modules/admin/topic.dm | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index f7cfa67f331..1bff905116f 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -179,8 +179,9 @@ var/global/list/all_cults = list() if(jobban_isbanned(cult_mind.current, ROLE_CULTIST)) replace_jobbaned_player(cult_mind.current, ROLE_CULTIST) update_cult_icons_added(cult_mind) - var/datum/game_mode/cult/cult_mode = ticker.mode - cult_mode.check_numbers() + if(GAMEMODE_IS_CULT) + var/datum/game_mode/cult/cult_mode = ticker.mode + cult_mode.check_numbers() return 1 diff --git a/code/game/gamemodes/cult/cult_objectives.dm b/code/game/gamemodes/cult/cult_objectives.dm index 87343feb74a..2fe00023c20 100644 --- a/code/game/gamemodes/cult/cult_objectives.dm +++ b/code/game/gamemodes/cult/cult_objectives.dm @@ -170,7 +170,7 @@ sacrifice_target = pick(possible_targets) possible_objectives |= "sacrifice" else - log_admin("Didn't find a suitable sacrifice target...what the hell? Shout at a coder.") + log_runtime(EXCEPTION("Didn't find a suitable sacrifice target...what the hell? Shout at a coder.")) if(!mass_convert) var/living_crew = 0 diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index c6dbf4dde65..763ca6c3191 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -489,10 +489,11 @@ if(ticker.mode.cult.len) dat += check_role_table("Cultists", ticker.mode.cult, 0) - dat += "
use Cult Mindspeak)" - var/datum/game_mode/cult/cult_round = ticker.mode - if(!cult_round.narsie_condition_cleared) - dat += "
complete objective (debug)" + dat += "
use Cult Mindspeak" + if(GAMEMODE_IS_CULT) + var/datum/game_mode/cult/cult_round = ticker.mode + if(!cult_round.narsie_condition_cleared) + dat += "
complete objective (debug)" if(ticker.mode.traitors.len) dat += check_role_table("Traitors", ticker.mode.traitors) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index adb2cfa3f8c..bef30d63e55 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1553,7 +1553,7 @@ for(var/datum/mind/H in ticker.mode.cult) if (H.current) - to_chat(H.current, "[ticker.mode.cultdat.entity_name] murmurs, [ticker.mode.cultdat.entity_name]") + to_chat(H.current, "[ticker.mode.cultdat.entity_name] murmurs, [input]") for(var/mob/dead/observer/O in player_list) to_chat(O, "[ticker.mode.cultdat.entity_name] murmurs, [input]") From 9029f1c7cf35eaf20973095f07b7763c9c731b75 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Wed, 18 Jan 2017 09:23:33 -0500 Subject: [PATCH 6/6] Dammit Flattest --- code/game/gamemodes/cult/cult_comms.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm index de13c11d852..bfe25eba5d5 100644 --- a/code/game/gamemodes/cult/cult_comms.dm +++ b/code/game/gamemodes/cult/cult_comms.dm @@ -34,6 +34,6 @@ if(iscultist(M)) to_chat(M, my_message) else if(M in dead_mob_list) - to_chat(M, " (F) [my_message] ") + to_chat(M, " (F) [my_message] ") log_say("[user.real_name]/[user.key] : [message]") \ No newline at end of file