From b465225bc20b8d2a73ba21fc2da6434b73f296d4 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Fri, 12 Feb 2021 18:53:38 -0700 Subject: [PATCH 01/55] Update eldritch_items.dm --- code/modules/antagonists/eldritch_cult/eldritch_items.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/antagonists/eldritch_cult/eldritch_items.dm b/code/modules/antagonists/eldritch_cult/eldritch_items.dm index fbf0740e50..d4dd819e96 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_items.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_items.dm @@ -67,6 +67,9 @@ return FALSE /datum/action/innate/heretic_shatter/Activate() + if(!CHECK_MOBILITY(holder, MOBILITY_USE)) + to_chat(holder, "You can't do that right now!") + return var/turf/safe_turf = find_safe_turf(zlevels = sword.z, extended_safety_checks = TRUE) do_teleport(holder,safe_turf,forceMove = TRUE) to_chat(holder,"You feel a gust of energy flow through your body... the Rusted Hills heard your call...") From acf06abed5cc10f8ab3ad173fbd4fc355ad64553 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Fri, 12 Feb 2021 22:50:09 -0700 Subject: [PATCH 02/55] Update eldritch_items.dm --- code/modules/antagonists/eldritch_cult/eldritch_items.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/modules/antagonists/eldritch_cult/eldritch_items.dm b/code/modules/antagonists/eldritch_cult/eldritch_items.dm index d4dd819e96..f46fd8593a 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_items.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_items.dm @@ -62,14 +62,12 @@ /datum/action/innate/heretic_shatter/IsAvailable() if(IS_HERETIC(holder) || IS_HERETIC_MONSTER(holder)) - return TRUE + return ..() else return FALSE /datum/action/innate/heretic_shatter/Activate() - if(!CHECK_MOBILITY(holder, MOBILITY_USE)) - to_chat(holder, "You can't do that right now!") - return + . = ..() var/turf/safe_turf = find_safe_turf(zlevels = sword.z, extended_safety_checks = TRUE) do_teleport(holder,safe_turf,forceMove = TRUE) to_chat(holder,"You feel a gust of energy flow through your body... the Rusted Hills heard your call...") From b40d875d11aef75a5ddbfad0e7fb2a6370aed15d Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 05:52:16 -0500 Subject: [PATCH 03/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index d75843a3e5..146d159032 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == held_items.len)) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) return 0 return ..() From 6c6cad632b0c46f81fd8642c34f73de2b58ecd29 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 05:53:21 -0500 Subject: [PATCH 04/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 146d159032..83b57bb0c2 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM)))) return 0 return ..() From f49deabe0f9b61ce82513c77dcbdfbfea1354c10 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 05:58:41 -0500 Subject: [PATCH 05/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 83b57bb0c2..146d159032 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM)))) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) return 0 return ..() From 72ae19e0369d52546fa8a385611dd05503f62fa6 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 06:00:26 -0500 Subject: [PATCH 06/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 146d159032..8c9f4c2c52 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM)))) return 0 return ..() From 6c76e584f8d58dee800132f342db001534cad0f4 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 06:02:21 -0500 Subject: [PATCH 07/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 8c9f4c2c52..2b167e9050 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM)))) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) return 0 return ..() From e9e82cedc27c8ef7abb0cfddcb83befea186d98b Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 06:07:30 -0500 Subject: [PATCH 08/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 2b167e9050..9c76f9255e 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held_items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM)))) return 0 return ..() From 1c552480d896225203d25077247dfb0b4593affd Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 06:10:10 -0500 Subject: [PATCH 09/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 9c76f9255e..0b9d957948 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held_items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM)))) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held_items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))) return 0 return ..() From 7a7c15f266631ee69f110f92969348c120943d0c Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 06:11:09 -0500 Subject: [PATCH 10/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 0b9d957948..942ff90322 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held_items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held_items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) return 0 return ..() From 6703bd720525787c3294f58d922b2949fddb982b Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 06:35:55 -0500 Subject: [PATCH 11/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 942ff90322..a6e3e27a05 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || get_num_held_items() == 2 || (get_num_held_items() == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) + if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || held_items.len == 2 || (held_items.len == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) return 0 return ..() From 4650c97c6127d3792ee47fd7a626d9ef2f2cc9d7 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 11:23:43 -0500 Subject: [PATCH 12/55] Update say.dm --- code/modules/mob/living/say.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 606daed0c5..a2fc28484d 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -329,8 +329,13 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 /mob/living/proc/can_speak_vocal(message) //Check AFTER handling of xeno and ling channels - if(HAS_TRAIT(src, TRAIT_MUTE) && get_message_language(message) != /datum/language/signlanguage) - return 0 + if(HAS_TRAIT(src, TRAIT_MUTE)) + if (get_selected_language() != /datum/language/signlanguage) + return 0 + + if (get_bodypart(BODY_ZONE_R_ARM).is_disabled() && get_bodypart(BODY_ZONE_L_ARM).is_disabled()) + if (get_selected_language() == /datum/language/signlanguage) + return 0 if(is_muzzled()) return 0 From 95c9e8b94c557ad8b8e65cc0a9c490365c976a3e Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 11:24:19 -0500 Subject: [PATCH 13/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index a6e3e27a05..7b9217c135 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,8 +10,9 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_message_language(message) == /datum/language/signlanguage && (handcuffed || (!src.get_bodypart(BODY_ZONE_L_ARM) && !src.get_bodypart(BODY_ZONE_R_ARM)) || held_items.len == 2 || (held_items.len == 1 && (!src.get_bodypart(BODY_ZONE_L_ARM) || !src.get_bodypart(BODY_ZONE_R_ARM))))) - return 0 + if(get_selected_language() == /datum/language/signlanguage) + if(handcuffed) + return 0 return ..() /mob/living/carbon/could_speak_language(datum/language/language) From 11bae949e59b83b1b2468eb6448d159f4410eefd Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 11:32:36 -0500 Subject: [PATCH 14/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 7b9217c135..6d7ec0371c 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,9 +10,8 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_selected_language() == /datum/language/signlanguage) - if(handcuffed) - return 0 + if(get_selected_language() == /datum/language/signlanguage && handcufffed) + return 0 return ..() /mob/living/carbon/could_speak_language(datum/language/language) From 15d1146531a3dce3ca6bb3ee8ed755173554af61 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 11:33:41 -0500 Subject: [PATCH 15/55] Update say.dm --- code/modules/mob/living/say.dm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a2fc28484d..abc9542a2e 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -329,13 +329,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 /mob/living/proc/can_speak_vocal(message) //Check AFTER handling of xeno and ling channels - if(HAS_TRAIT(src, TRAIT_MUTE)) - if (get_selected_language() != /datum/language/signlanguage) - return 0 + if(HAS_TRAIT(src, TRAIT_MUTE) && get_selected_language() != /datum/language/signlanguage) + return 0 - if (get_bodypart(BODY_ZONE_R_ARM).is_disabled() && get_bodypart(BODY_ZONE_L_ARM).is_disabled()) - if (get_selected_language() == /datum/language/signlanguage) - return 0 + if (get_bodypart(BODY_ZONE_R_ARM).is_disabled() && get_bodypart(BODY_ZONE_L_ARM).is_disabled() && get_selected_language() == /datum/language/signlanguage) + return 0 if(is_muzzled()) return 0 From a889f41a8648e6f1ba5bbf26d53c49ba1f0e14ca Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 11:41:29 -0500 Subject: [PATCH 16/55] Update say.dm --- code/modules/mob/living/carbon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 6d7ec0371c..67c29b4211 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -10,7 +10,7 @@ /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 - if(get_selected_language() == /datum/language/signlanguage && handcufffed) + if(get_selected_language() == /datum/language/signlanguage && handcuffed) return 0 return ..() From f1d9f288cb7a11d19b8cd1f2289527230dad4596 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 11:47:26 -0500 Subject: [PATCH 17/55] Update say.dm --- code/modules/mob/living/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index abc9542a2e..e5c380b9ed 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -332,7 +332,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( if(HAS_TRAIT(src, TRAIT_MUTE) && get_selected_language() != /datum/language/signlanguage) return 0 - if (get_bodypart(BODY_ZONE_R_ARM).is_disabled() && get_bodypart(BODY_ZONE_L_ARM).is_disabled() && get_selected_language() == /datum/language/signlanguage) + if (src.get_bodypart(BODY_ZONE_R_ARM).is_disabled() && src.get_bodypart(BODY_ZONE_L_ARM).is_disabled() && get_selected_language() == /datum/language/signlanguage) return 0 if(is_muzzled()) From 58469ea2a12ef54e01c10f77f33fd203bac48215 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Sun, 14 Feb 2021 11:53:44 -0500 Subject: [PATCH 18/55] Update say.dm --- code/modules/mob/living/say.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index e5c380b9ed..129f3feb69 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -329,10 +329,12 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 /mob/living/proc/can_speak_vocal(message) //Check AFTER handling of xeno and ling channels + var/obj/item/bodypart/leftarm = get_bodypart(BODY_ZONE_L_ARM) + var/obj/item/bodypart/rightarm = get_bodypart(BODY_ZONE_R_ARM) if(HAS_TRAIT(src, TRAIT_MUTE) && get_selected_language() != /datum/language/signlanguage) return 0 - if (src.get_bodypart(BODY_ZONE_R_ARM).is_disabled() && src.get_bodypart(BODY_ZONE_L_ARM).is_disabled() && get_selected_language() == /datum/language/signlanguage) + if (rightarm.is_disabled() && leftarm.is_disabled() && get_selected_language() == /datum/language/signlanguage) return 0 if(is_muzzled()) From 915b911a409ae196db178fdf4f10aaa746e7eaf1 Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Mon, 15 Feb 2021 17:15:30 -0500 Subject: [PATCH 19/55] Update say.dm --- code/modules/mob/living/say.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 129f3feb69..8731dc18e8 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -333,8 +333,8 @@ GLOBAL_LIST_INIT(department_radio_keys, list( var/obj/item/bodypart/rightarm = get_bodypart(BODY_ZONE_R_ARM) if(HAS_TRAIT(src, TRAIT_MUTE) && get_selected_language() != /datum/language/signlanguage) return 0 - - if (rightarm.is_disabled() && leftarm.is_disabled() && get_selected_language() == /datum/language/signlanguage) + + if ((rightarm == null || rightarm.is_disabled()) && (leftarm == null ||leftarm.is_disabled()) && get_selected_language() == /datum/language/signlanguage) return 0 if(is_muzzled()) From 8ea8f4e7e9a3bf0c5da675e87da30cbae3898737 Mon Sep 17 00:00:00 2001 From: Chiirno Date: Mon, 15 Feb 2021 18:31:07 -0400 Subject: [PATCH 20/55] just a little tweak --- code/modules/reagents/chemistry/reagents/medicine_reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index e55286ed3f..395ed58b0a 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -499,7 +499,7 @@ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) var/vol = reac_volume + M.reagents.get_reagent_amount(/datum/reagent/medicine/synthflesh) //Has to be at less than THRESHOLD_UNHUSK burn damage and have 100 synthflesh before unhusking. Corpses dont metabolize. - if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && (vol > 100)) + if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && (vol > 99)) M.cure_husk("burn") M.visible_message("Most of [M]'s burnt off or charred flesh has been restored.") ..() From 8257283cefe1a2f9f1f4357a792435cc15e6230d Mon Sep 17 00:00:00 2001 From: Chiirno <43803700+Chiirno@users.noreply.github.com> Date: Mon, 15 Feb 2021 22:03:12 -0400 Subject: [PATCH 21/55] Update code/modules/reagents/chemistry/reagents/medicine_reagents.dm Co-authored-by: SandPoot <43283559+SandPoot@users.noreply.github.com> --- code/modules/reagents/chemistry/reagents/medicine_reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 395ed58b0a..0959fb58e0 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -499,7 +499,7 @@ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) var/vol = reac_volume + M.reagents.get_reagent_amount(/datum/reagent/medicine/synthflesh) //Has to be at less than THRESHOLD_UNHUSK burn damage and have 100 synthflesh before unhusking. Corpses dont metabolize. - if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && (vol > 99)) + if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && (vol >= 100)) M.cure_husk("burn") M.visible_message("Most of [M]'s burnt off or charred flesh has been restored.") ..() From 6f25b652909fb70495430a634db3a00478ac331c Mon Sep 17 00:00:00 2001 From: TyrianTyrell <55641224+TyrianTyrell@users.noreply.github.com> Date: Tue, 16 Feb 2021 03:24:27 -0500 Subject: [PATCH 22/55] Apply suggestions from code review Let's see if it will? Co-authored-by: Lin --- code/modules/mob/living/say.dm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 8731dc18e8..9646796802 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -334,8 +334,21 @@ GLOBAL_LIST_INIT(department_radio_keys, list( if(HAS_TRAIT(src, TRAIT_MUTE) && get_selected_language() != /datum/language/signlanguage) return 0 - if ((rightarm == null || rightarm.is_disabled()) && (leftarm == null ||leftarm.is_disabled()) && get_selected_language() == /datum/language/signlanguage) - return 0 + if (get_selected_language() == /datum/language/signlanguage) + var/left_disabled = FALSE + var/right_disabled = FALSE + if (istype(leftarm)) // Need to check if the arms exist first before checking if they are disabled or else it will runtime + if (leftarm.is_disabled()) + left_disabled = TRUE + else + left_disabled = TRUE + if (istype(rightarm)) + if (rightarm.is_disabled()) + right_disabled = TRUE + else + right_disabled = TRUE + if (left_disabled && right_disabled) // We want this to only return false if both arms are either missing or disabled since you could technically sign one-handed. + return 0 if(is_muzzled()) return 0 From 7ff8b4187490696dc4e09ade2a50a929069516f2 Mon Sep 17 00:00:00 2001 From: IronEleven Date: Tue, 16 Feb 2021 09:14:27 -0500 Subject: [PATCH 23/55] Update spacevine.dm --- code/modules/events/spacevine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 9c9b131f48..a1bb74764d 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -3,7 +3,7 @@ typepath = /datum/round_event/spacevine weight = 15 max_occurrences = 3 - min_players = 10 + min_players = 20 /datum/round_event/spacevine fakeable = FALSE From 76b4d4a7dce3e5512caf3af602f5b5c77277f3d2 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Tue, 16 Feb 2021 21:02:35 +0000 Subject: [PATCH 24/55] Update mentor.dm --- modular_citadel/code/modules/mentor/mentor.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_citadel/code/modules/mentor/mentor.dm b/modular_citadel/code/modules/mentor/mentor.dm index 79345e6478..0ff88d8812 100644 --- a/modular_citadel/code/modules/mentor/mentor.dm +++ b/modular_citadel/code/modules/mentor/mentor.dm @@ -80,10 +80,12 @@ GLOBAL_PROTECT(mentor_href_token) return var/datum/DBQuery/query_load_mentors = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("mentor")]") if(!query_load_mentors.Execute()) + qdel(query_load_mentors) return while(query_load_mentors.NextRow()) var/ckey = ckey(query_load_mentors.item[1]) new /datum/mentors(ckey) + qdel(query_load_mentors) // new client var: mentor_datum. Acts the same way holder does towards admin: it holds the mentor datum. if set, the guy's a mentor. /client From 0b3b1cef7a00353ad27b0cc267deb42935af181a Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Wed, 17 Feb 2021 17:07:15 +0300 Subject: [PATCH 25/55] Small QoL changes to TCG --- code/modules/tcg/cards.dm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 970aef0bba..110b2276bc 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -440,6 +440,15 @@ new_card.flipped = flipped new_card.forceMove(src) + if(istype(I, /obj/item/tcgcard_hand)) + var/obj/item/tcgcard_hand/hand = I + for(var/obj/item/tcg_card/card in I.cards) + if(contents.len > 30) + return FALSE + card.flipped = flipped + card.forceMove(src) + I.cards.Remove(card) + /obj/item/tcgcard_deck/attack_self(mob/living/carbon/user) shuffle_deck(user) return ..() @@ -525,6 +534,14 @@ return . = ..() +/obj/item/tcgcard_hand/equipped(mob/user, slot, initial) + . = ..() + transform = matrix() + +/obj/item/tcgcard_hand/dropped(mob/user, silent) + . = ..() + transform = matrix(0.5,0,0,0,0.5,0) + /obj/item/tcgcard_binder name = "Trading Card Binder" desc = "A TCG-branded card binder, specifically for your infinite collection of TCG cards!" @@ -539,6 +556,12 @@ var/obj/item/tcg_card/card = I card.forceMove(src) cards.Add(card) + if(istype(I, /obj/item/tcgcard_hand)) + var/obj/item/tcgcard_hand/hand = I + for(var/obj/item/tcg_card/card in I.cards) + card.forceMove(src) + cards.Add(card) + qdel(I) . = ..() /obj/item/tcgcard_binder/attack_self(mob/living/carbon/user) From eae7e36b95d0090a2342b089df5afd1b4d5d69c4 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Wed, 17 Feb 2021 17:16:33 +0300 Subject: [PATCH 26/55] E --- code/modules/tcg/cards.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 110b2276bc..df70c5277f 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -442,7 +442,7 @@ if(istype(I, /obj/item/tcgcard_hand)) var/obj/item/tcgcard_hand/hand = I - for(var/obj/item/tcg_card/card in I.cards) + for(var/obj/item/tcg_card/card in hand.cards) if(contents.len > 30) return FALSE card.flipped = flipped @@ -558,7 +558,13 @@ cards.Add(card) if(istype(I, /obj/item/tcgcard_hand)) var/obj/item/tcgcard_hand/hand = I - for(var/obj/item/tcg_card/card in I.cards) + for(var/obj/item/tcg_card/card in hand.cards) + card.forceMove(src) + cards.Add(card) + qdel(I) + if(istype(I, /obj/item/tcgcard_deck)) + var/obj/item/tcgcard_deck/deck = I + for(var/obj/item/tcg_card/card in deck.contents) card.forceMove(src) cards.Add(card) qdel(I) From 015bd0b145e118ff8de80fbbec0d0718aaec2bf2 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Wed, 17 Feb 2021 17:16:52 +0300 Subject: [PATCH 27/55] reeee --- code/modules/tcg/cards.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index df70c5277f..95bb1be7d0 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -447,7 +447,7 @@ return FALSE card.flipped = flipped card.forceMove(src) - I.cards.Remove(card) + hand.cards.Remove(card) /obj/item/tcgcard_deck/attack_self(mob/living/carbon/user) shuffle_deck(user) From 756be084bcf059805883b1c227816ffbff757f42 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Wed, 17 Feb 2021 18:50:23 +0300 Subject: [PATCH 28/55] Decks are saveable! --- code/controllers/subsystem/job.dm | 47 +++++++++++------ .../subsystem/persistence/_persistence.dm | 12 +---- code/game/machinery/cryopod.dm | 6 +++ code/modules/cargo/packs/costumes_toys.dm | 3 +- code/modules/tcg/cards.dm | 50 ++++++++++++++++--- 5 files changed, 84 insertions(+), 34 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 7dae0d0126..84a9fc0e17 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -493,24 +493,41 @@ SUBSYSTEM_DEF(job) if(ishuman(H) && H.client && N) if(H.client && H.client.prefs && length(H.client.prefs.tcg_cards)) var/obj/item/tcgcard_binder/binder = new(get_turf(H)) - if(!H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) - qdel(binder) - else - for(var/card_type in H.client.prefs.tcg_cards) - var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) - card.forceMove(binder) - binder.cards.Add(card) - binder.check_for_exodia() + H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE) + for(var/card_type in H.client.prefs.tcg_cards) + if(card_type == "decks") + for(var/deck in H.client.prefs.tcg_cards["decks"]) + var/obj/item/tcgcard_deck/new_deck = new(get_turf(H)) + new_deck.forceMove(binder) + binder.decks.Add(new_deck) + for(var/cardy in deck) + var/obj/item/tcg_card/card = new(get_turf(H), cardy, deck[cardy]) + card.forceMove(new_deck) + new_deck.contents.Add(card) + continue + var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) + card.forceMove(binder) + binder.cards.Add(card) + binder.check_for_exodia() else if(H && N.client.prefs && length(N.client.prefs.tcg_cards)) var/obj/item/tcgcard_binder/binder = new(get_turf(H)) - if(!H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) - qdel(binder) - else - for(var/card_type in N.client.prefs.tcg_cards) - var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) - card.forceMove(binder) - binder.cards.Add(card) + H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE) + for(var/card_type in N.client.prefs.tcg_cards) + if(card_type == "decks") + for(var/deck in N.client.prefs.tcg_cards["decks"]) + var/obj/item/tcgcard_deck/new_deck = new(get_turf(H)) + new_deck.forceMove(binder) + binder.decks.Add(new_deck) + for(var/cardy in deck) + var/obj/item/tcg_card/card = new(get_turf(H), cardy, deck[cardy]) + card.forceMove(new_deck) + new_deck.contents.Add(card) + continue + var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) + card.forceMove(binder) + binder.cards.Add(card) + binder.check_for_exodia() return H /* diff --git a/code/controllers/subsystem/persistence/_persistence.dm b/code/controllers/subsystem/persistence/_persistence.dm index a3be7b9c51..9b2c019db4 100644 --- a/code/controllers/subsystem/persistence/_persistence.dm +++ b/code/controllers/subsystem/persistence/_persistence.dm @@ -361,14 +361,4 @@ SUBSYSTEM_DEF(persistence) if(!original_human || original_human.stat == DEAD || !(original_human == ending_human)) continue - var/obj/item/tcgcard_binder/binder = locate() in ending_human - if(!binder || !length(binder.cards)) - continue - - var/list/card_types = list() - for(var/obj/item/tcg_card/card in binder.cards) - //if(!card.illegal) //Uncomment if you want to block syndie cards from saving - card_types[card.datum_type] = card.illegal - - ending_human.client.prefs.tcg_cards = card_types - ending_human.client.prefs.save_character(TRUE) + ending_human.SaveTCGCards() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index ea41d77e2a..5be3e2a3a5 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -296,6 +296,12 @@ AM.forceMove(src) R.module.remove_module(I, TRUE) else + + if(ishuman(mob_occupant)) + var/mob/living/carbon/human/H = mob_occupant + if(H.mind && H.client && H.client.prefs && H == H.mind.original_character) + H.SaveTCGCards() + var/list/gear = list() if(iscarbon(mob_occupant)) // sorry simp-le-mobs deserve no mercy var/mob/living/carbon/C = mob_occupant diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index c0bd25b028..6a37ef80a9 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -343,7 +343,6 @@ /datum/supply_pack/costumes_toys/randomised/tcg/generate() . = ..() - var/cardpacktype var/list/cardtypes = subtypesof(/obj/item/cardpack) for(var/cardtype in cardtypes) var/obj/item/cardpack/pack = new cardtype(.) @@ -351,5 +350,5 @@ cardtypes.Remove(cardtype) qdel(pack) for(var/i in 1 to 10) - cardpacktype = pick(cardtypes) + var/cardpacktype = pick(cardtypes) new cardpacktype(.) diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 95bb1be7d0..34fd10d787 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -278,6 +278,8 @@ card_count = 9 guaranteed_count = 3 + illegal = TRUE + guar_rarity = list( //Better chances "Legendary" = 5, "Epic" = 10, @@ -391,7 +393,7 @@ if(21 to INFINITY) icon_state = "deck_tcg_full" else - icon_state = "deck_up" + icon_state = "deck_tcg_full" /obj/item/tcgcard_deck/examine(mob/user) . = ..() @@ -549,7 +551,8 @@ icon_state = "binder" var/list/cards = list() - var/mode = 0 //If 1, will show all the cards even if you don't have em + var/list/decks = list() + var/mode = 0 //If 1, will show all the cards even if you don't have em. /obj/item/tcgcard_binder/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/tcg_card)) @@ -564,10 +567,8 @@ qdel(I) if(istype(I, /obj/item/tcgcard_deck)) var/obj/item/tcgcard_deck/deck = I - for(var/obj/item/tcg_card/card in deck.contents) - card.forceMove(src) - cards.Add(card) - qdel(I) + deck.forceMove(src) + decks.Add(deck) . = ..() /obj/item/tcgcard_binder/attack_self(mob/living/carbon/user) @@ -609,6 +610,19 @@ return . = ..() +/obj/item/tcgcard_binder/AltClick(mob/user) + var/list/choices = list() + + for(var/obj/item/tcgcard_deck/deck in decks) + var/obj/item/tcgcard_deck/first_card = locate() in deck + choices[deck] = image(icon = first_card.icon, icon_state = first_card.icon_state) + + var/obj/item/tcgcard_deck/choice = show_radial_menu(user, src, choices, require_near = TRUE, tooltips = TRUE) + if(choice && (choice in decks)) + choice.forceMove(get_turf(src)) + user.put_in_hands(choice) + decks.Remove(choice) + /obj/item/tcgcard_binder/proc/check_for_exodia() var/list/card_types = list() for(var/obj/item/tcg_card/card in cards) @@ -738,6 +752,30 @@ . = ..() +/mob/living/carbon/human/proc/SaveTCGCards() + if(!client) + return + + var/obj/item/tcgcard_binder/binder = locate() in src + if(!binder || !length(binder.cards)) + return + + var/list/card_types = list() + for(var/obj/item/tcg_card/card in binder.cards) + //if(!card.illegal) //Uncomment if you want to block syndie cards from saving + card_types[card.datum_type] = card.illegal + + card_types["decks"] = list() + + for(var/obj/item/tcgcard_deck/deck in binder.decks) + var/list/cardlist = list() + for(var/obj/item/tcg_card/card in deck.contents) + cardlist[card.datum_type] = card.illegal + card_types["decks"].Add(cardlist) + + client.prefs.tcg_cards = card_types + client.prefs.save_character(TRUE) + #undef COMMON_SERIES #undef TAPPED_ANGLE #undef UNTAPPED_ANGLE From fecf879b0c8afb2f844121ddb482282c7a38a868 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Wed, 17 Feb 2021 18:54:59 +0300 Subject: [PATCH 29/55] Fixed --- code/controllers/subsystem/job.dm | 2 +- code/modules/tcg/cards.dm | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 84a9fc0e17..0d32ec84cf 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -524,7 +524,7 @@ SUBSYSTEM_DEF(job) card.forceMove(new_deck) new_deck.contents.Add(card) continue - var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) + var/obj/item/tcg_card/card = new(get_turf(H), card_type, N.client.prefs.tcg_cards[card_type]) card.forceMove(binder) binder.cards.Add(card) binder.check_for_exodia() diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 34fd10d787..31f131618c 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -387,13 +387,13 @@ if(flipped) switch(contents.len) if(1 to 10) - icon_state = "deck_tcg_low" + icon_state = "deck_low" if(11 to 20) - icon_state = "deck_tcg_half" + icon_state = "deck_half" if(21 to INFINITY) - icon_state = "deck_tcg_full" + icon_state = "deck_full" else - icon_state = "deck_tcg_full" + icon_state = "deck_up" /obj/item/tcgcard_deck/examine(mob/user) . = ..() From 96d80901e4d4a1a5150ffe37a5ae8ddaaeadd4ea Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 17 Feb 2021 17:26:45 +0000 Subject: [PATCH 30/55] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c09d23aafb..24680971b9 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -665,7 +665,8 @@ GLOBAL_LIST_EMPTY(PDAs) create_message(U, locate(href_list["target"])) if("MessageAll") - send_to_all(U) + if(cartridge && cartridge.spam_enabled) + send_to_all(U) if("toggle_block") toggle_blocking(usr, href_list["target"]) From 6d28c27f369074a6a5ee68d7de094171043f474d Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Wed, 17 Feb 2021 23:24:44 -0600 Subject: [PATCH 31/55] aoaoaoaooaoa --- code/modules/events/anomaly_bluespace.dm | 5 +---- code/modules/events/anomaly_flux.dm | 6 ++---- code/modules/events/anomaly_grav.dm | 5 +---- code/modules/events/anomaly_pyro.dm | 5 +---- code/modules/events/anomaly_vortex.dm | 5 +---- code/modules/events/brand_intelligence.dm | 5 +---- code/modules/events/shuttle_loan.dm | 4 ++-- 7 files changed, 9 insertions(+), 26 deletions(-) diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index 7f0dedaab6..70d6b00fa4 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -11,7 +11,4 @@ anomaly_path = /obj/effect/anomaly/bluespace /datum/round_event/anomaly/anomaly_bluespace/announce(fake) - if(prob(90)) - priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") - else - print_command_report("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Unstable bluespace anomaly") + priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index 8047976330..0ba347af57 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -12,7 +12,5 @@ anomaly_path = /obj/effect/anomaly/flux /datum/round_event/anomaly/anomaly_flux/announce(fake) - if(prob(90)) - priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") - else - print_command_report("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].","Localized hyper-energetic flux wave") + priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + diff --git a/code/modules/events/anomaly_grav.dm b/code/modules/events/anomaly_grav.dm index 7d2bb33889..01e70c290c 100644 --- a/code/modules/events/anomaly_grav.dm +++ b/code/modules/events/anomaly_grav.dm @@ -12,7 +12,4 @@ anomaly_path = /obj/effect/anomaly/grav /datum/round_event/anomaly/anomaly_grav/announce(fake) - if(prob(90)) - priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") - else - print_command_report("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Gravitational anomaly") + priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index 350c8fc946..29c6e15d28 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -11,7 +11,4 @@ anomaly_path = /obj/effect/anomaly/pyro /datum/round_event/anomaly/anomaly_pyro/announce(fake) - if(prob(90)) - priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") - else - print_command_report("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Pyroclastic anomaly") + priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") diff --git a/code/modules/events/anomaly_vortex.dm b/code/modules/events/anomaly_vortex.dm index e2a4ceadf3..6a17a47d2b 100644 --- a/code/modules/events/anomaly_vortex.dm +++ b/code/modules/events/anomaly_vortex.dm @@ -12,7 +12,4 @@ anomaly_path = /obj/effect/anomaly/bhole /datum/round_event/anomaly/anomaly_vortex/announce(fake) - if(prob(90)) - priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") - else - print_command_report("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name].","Vortex anomaly") + priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index 7c55bbfcd1..7d4ea66d30 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -35,10 +35,7 @@ source = initial(example.name) else if(originMachine) source = originMachine.name - if(prob(50)) - priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert") - else - print_command_report("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Rampant brand intelligence") + priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert") /datum/round_event/brand_intelligence/start() for(var/obj/machinery/vending/V in GLOB.machines) diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index bf9f25cb04..347162d9c5 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -45,7 +45,7 @@ if(ANTIDOTE_NEEDED) message = "Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples." title = "CentCom Research Initiatives" - if (PIZZA_DELIVERY) + if(PIZZA_DELIVERY) message = "Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead." title = "CentCom Spacepizza Division" if(ITS_HIP_TO) @@ -57,7 +57,7 @@ title = "CentCom Security Division" bonus_points = 45000 //If you mess up, people die and the shuttle gets turned into swiss cheese if(DELTA_CRATES) - message = "Cargo: We have discovered a warehouse of DELTA locked crates, we cant store any more of them at CC can you take them for us?." + message = "Cargo: We have discovered a warehouse of DELTA locked crates. We can't store any more of them at CC, can you take them for us?" title = "CentCom Security Division" bonus_points = 25000 //If you mess up, people die and the shuttle gets turned into swiss cheese if(prob(50)) From b2b7b4ca9a8e61937cce238f4abb310d4f8b7e88 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Thu, 18 Feb 2021 14:17:43 +0300 Subject: [PATCH 32/55] Fucking finally --- code/controllers/subsystem/job.dm | 38 ++---- code/modules/client/preferences.dm | 1 + code/modules/client/preferences_savefile.dm | 12 ++ code/modules/tcg/cards.dm | 136 ++++++++++++-------- 4 files changed, 104 insertions(+), 83 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 0d32ec84cf..0ba6076be2 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -495,39 +495,25 @@ SUBSYSTEM_DEF(job) var/obj/item/tcgcard_binder/binder = new(get_turf(H)) H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE) for(var/card_type in H.client.prefs.tcg_cards) - if(card_type == "decks") - for(var/deck in H.client.prefs.tcg_cards["decks"]) - var/obj/item/tcgcard_deck/new_deck = new(get_turf(H)) - new_deck.forceMove(binder) - binder.decks.Add(new_deck) - for(var/cardy in deck) - var/obj/item/tcg_card/card = new(get_turf(H), cardy, deck[cardy]) - card.forceMove(new_deck) - new_deck.contents.Add(card) - continue - var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) - card.forceMove(binder) - binder.cards.Add(card) + if(card_type) + var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) + card.forceMove(binder) + binder.cards.Add(card) binder.check_for_exodia() + if(length(H.client.prefs.tcg_decks)) + binder.decks = H.client.prefs.tcg_decks else if(H && N.client.prefs && length(N.client.prefs.tcg_cards)) var/obj/item/tcgcard_binder/binder = new(get_turf(H)) H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE) for(var/card_type in N.client.prefs.tcg_cards) - if(card_type == "decks") - for(var/deck in N.client.prefs.tcg_cards["decks"]) - var/obj/item/tcgcard_deck/new_deck = new(get_turf(H)) - new_deck.forceMove(binder) - binder.decks.Add(new_deck) - for(var/cardy in deck) - var/obj/item/tcg_card/card = new(get_turf(H), cardy, deck[cardy]) - card.forceMove(new_deck) - new_deck.contents.Add(card) - continue - var/obj/item/tcg_card/card = new(get_turf(H), card_type, N.client.prefs.tcg_cards[card_type]) - card.forceMove(binder) - binder.cards.Add(card) + if(card_type) + var/obj/item/tcg_card/card = new(get_turf(H), card_type, N.client.prefs.tcg_cards[card_type]) + card.forceMove(binder) + binder.cards.Add(card) binder.check_for_exodia() + if(length(N.client.prefs.tcg_decks)) + binder.decks = N.client.prefs.tcg_decks return H /* diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3b3b72b840..97de38e73a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -221,6 +221,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/hide_ckey = FALSE //pref for hiding if your ckey shows round-end or not var/list/tcg_cards = list() + var/list/tcg_decks = list() /datum/preferences/New(client/C) parent = C diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 458f607ac9..141346acde 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -666,6 +666,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else tcg_cards = list() + var/tcgdeckstr + S["tcg_decks"] >> tcgdeckstr + if(length(tcgdeckstr)) + tcg_decks = safe_json_decode(tcgdeckstr) + else + tcg_decks = list() + S["chosen_limb_id"] >> chosen_limb_id S["hide_ckey"] >> hide_ckey //saved per-character @@ -1108,6 +1115,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else S["tcg_cards"] << safe_json_encode(list()) + if(length(tcg_decks)) + S["tcg_decks"] << safe_json_encode(tcg_decks) + else + S["tcg_decks"] << safe_json_encode(list()) + cit_character_pref_save(S) return 1 diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 31f131618c..45b251e977 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -183,7 +183,6 @@ user.transferItemToLoc(second_card, new_deck)//Start a new pile with both cards, in the order of card placement. user.transferItemToLoc(src, new_deck) new_deck.update_icon_state() - user.put_in_hands(new_deck) new_deck.update_icon() if(istype(I, /obj/item/tcgcard_deck)) var/obj/item/tcgcard_deck/old_deck = I @@ -307,7 +306,7 @@ if(prob(contains_coin)) to_chat(user, "...and it came with a flipper, too!") new /obj/item/coin/thunderdome(get_turf(user)) - new /obj/item/tcg_rules(get_turf(user)) + new /obj/item/paper/tcg_rules(get_turf(user)) qdel(src) /obj/item/cardpack/proc/buildCardListWithRarity(card_cnt, rarity_cnt) @@ -552,7 +551,7 @@ var/list/cards = list() var/list/decks = list() - var/mode = 0 //If 1, will show all the cards even if you don't have em. + var/mode = 0 //If 1, will show all the cards even if you don't have em. If 2, will show your decks /obj/item/tcgcard_binder/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/tcg_card)) @@ -567,62 +566,78 @@ qdel(I) if(istype(I, /obj/item/tcgcard_deck)) var/obj/item/tcgcard_deck/deck = I - deck.forceMove(src) - decks.Add(deck) + var/named = input(user, "How will this deck be named? Leave this field empty if you don't want to save this deck.") + if(named) + decks[named] = list() + for(var/obj/item/tcg_card/card in deck.contents) + card.forceMove(src) + cards.Add(card) + if(named) + decks[named].Add(card.name) + qdel(I) . = ..() /obj/item/tcgcard_binder/attack_self(mob/living/carbon/user) - mode = !mode - to_chat(user, "[src] now shows you [mode ? "all the different cards" : "the cards you already have"].") + mode = (mode + 1) % 3 + switch(mode) + if(0) + to_chat(user, "[src] now shows you the cards you already have.") + if(1) + to_chat(user, "[src] now shows you all the different cards.") + if(2) + to_chat(user, "[src] now shows you your deck menu.") /obj/item/tcgcard_binder/attack_hand(mob/living/carbon/user) if(loc == user) var/list/choices = list() - if(mode) - var/card_types = list() + switch(mode) + if(1) + var/card_types = list() - for(var/obj/item/tcg_card/card in cards) - card_types[card.datum_type] = card + for(var/obj/item/tcg_card/card in cards) + card_types[card.datum_type] = card - for(var/card_type in subtypesof(/datum/tcg_card)) - if(card_type in card_types) - var/obj/item/tcg_card/card = card_types[card_type] + for(var/card_type in subtypesof(/datum/tcg_card)) + if(card_type in card_types) + var/obj/item/tcg_card/card = card_types[card_type] + choices[card] = image(icon = card.icon, icon_state = card.icon_state) + continue + + var/datum/tcg_card/card_dat = new card_type + if(card_dat.name == "Stupid Coder") + continue + var/image/I = image(icon = card_dat.pack, icon_state = card_dat.icon_state) + I.color = "#999999" + choices[card_dat.name] = I + qdel(card_dat) + if(0) + for(var/obj/item/tcg_card/card in cards) choices[card] = image(icon = card.icon, icon_state = card.icon_state) - continue - var/datum/tcg_card/card_dat = new card_type - if(card_dat.name == "Stupid Coder") - continue - var/image/I = image(icon = card_dat.pack, icon_state = card_dat.icon_state) - I.color = "#999999" - choices[card_dat.name] = I - qdel(card_dat) - else - for(var/obj/item/tcg_card/card in cards) - choices[card] = image(icon = card.icon, icon_state = card.icon_state) + if(2) + for(var/deck in decks) + choices[deck] = image(icon = 'icons/obj/tcg/misc.dmi', icon_state = "deck_up") + var/obj/item/tcg_card/choice = show_radial_menu(user, src, choices, require_near = TRUE, tooltips = TRUE) if(choice && (choice in cards)) choice.forceMove(get_turf(src)) user.put_in_hands(choice) cards.Remove(choice) + if(choice && choice in decks) + var/obj/item/tcgcard_deck/new_deck = new(get_turf(user)) + var/list/required_cards = decks[choice] + for(var/obj/item/tcg_card/card in cards) + if(card.name in required_cards) + required_cards.Remove(card.name) + cards.Remove(card) + card.forceMove(new_deck) + user.put_in_hands(new_deck) + if(choice) return . = ..() -/obj/item/tcgcard_binder/AltClick(mob/user) - var/list/choices = list() - - for(var/obj/item/tcgcard_deck/deck in decks) - var/obj/item/tcgcard_deck/first_card = locate() in deck - choices[deck] = image(icon = first_card.icon, icon_state = first_card.icon_state) - - var/obj/item/tcgcard_deck/choice = show_radial_menu(user, src, choices, require_near = TRUE, tooltips = TRUE) - if(choice && (choice in decks)) - choice.forceMove(get_turf(src)) - user.put_in_hands(choice) - decks.Remove(choice) - /obj/item/tcgcard_binder/proc/check_for_exodia() var/list/card_types = list() for(var/obj/item/tcg_card/card in cards) @@ -655,59 +670,73 @@ card.forceMove(src) cards.Add(card) -/obj/item/tcg_rules +/obj/item/paper/tcg_rules name = "TCG Rulebook" desc = "A small rulebook containing a starter guide for TCG." icon = 'icons/obj/tcg/misc.dmi' icon_state = "deck_low" w_class = WEIGHT_CLASS_TINY -/obj/item/tcg_rules/examine(mob/user) - . = ..() - . += "*---------* \n\ + info = "*---------* \n\ Welcome to the Exciting world of Tactical Card Game! Sponsored by Nanotrasen Edu-tainment Devision. \n \ Core Rules: \n \ +
\n \ Tactical Card Game (Also known as TCG) is a traditional trading card game. It's played between two players, each with a deck or collection of cards. \n \ +
\n \ Each player's deck contains up to 30 cards. Each player's hand can hold a maximum of 7 cards. At the end of your turn, if you have more than 7 cards, you must choose cards to discard to your discard pile until you have 7 cards. \n \ To begin a match, both players must flip a coin to decide who goes first. The winner of the coin toss then decides if they go first or second. Before the match begins each player draws 5 cards each with the ability to mulligan cards from their hand facedown once (Basically, you get a first pass where you can replace cards in your hands back into your deck, shuffle your deck, then draw until you're back to 5). \n \ Each player begins with 1 Max Mana to start with, which serves as the cost to playing cards. \n \ +
\n \ In order to play the TCG, a deck is required. As stated above, decks must contain up to 30 cards. \n \ Additionally, to save cards you need to have a card binder on yourself to store the cards. When the shift ends, your cards will be automatically saved by integrated scanners in your card binder. \n \ Finally, a stock of Thunderdome Flippers to use for coin tosses and counter effects is recommended- these can be obtained occasionally from cardpacks, but any coin will do. \n \ +
\n \ Win condition is simple - kill your opponent's hero by depleting all of their 20 lifeshards. \n \ +
\n \ Gameplay Phases: \n \ +
\n \ A single turn of the game goes as follows, and the order of card effects is very similar to other card games. Within a single turn, the following phases are gone through, in order, unless otherwise altered by a card effect. Turn Phases are the Draw Phase, Effect Phase 1, Play Phase, Combat Phase, Effect Phase 2, and the End Phase. \n \ +
\n \ During the draw phase, the player whose turn it is untaps all their cards, then draws a single card. They gain 1 Max Mana, and their Mana is refilled. Cards with missing health due to defending, attacking, or damage effects return to max health at the end of the draw phase. \n \ During the First Effect Phase, this is when effects that take place at the start of your turn would occur. If an opponent's effect takes place at the start of your turn, their effects will always take place first, then yours, unless otherwise stated by a card effect. If an opponent's effect would cause you to lose the game, and your effects would prevent that condition from happening afterwards, you would lose the game. As a general roll, when it's your turn, your opponent's effects take place FIRST, then yours. \n \ +
\n \ During the Play Phase, this is when you can play, summon, or activate your own cards. Card Effects that don't state when they're activated MUST be activated during the Play Phase. Your opponent can also activate their own card effects in response to one of your actions during your play phase, if able. Any card played during the play phase can activate its effect as soon as it's played. More details within the Card Breakdown section. \n \ +
\n \ During the Battle Phase, a Unit Card is able to battle other Unit Cards, or attack their opponent once per turn. Neither player can attack on their first turn, and all cards that enter the field can attack as soon as they can, unless it is that player's first turn, or they are prevented by a card effect. More details within the Card Combat section. \n \ +
\n \ During the End Phase, end of turn effects will occur. If the active player has more than 7 cards in their hand by this point, this is when they must discard cards. All of the player's cards who used an effect at any point in the turn are refreshed, and able to use their effect again going into the opponent's turn. By the end of their turn, if the player has more than 7 cards, they must discard cards from their hand until 7 remain. \n \ After all 5 phases have passed, the players turn officially ends, and the opponent begins their turn, starting anew from the draw phase. \n \ +
\n \ Card effects are typically limited to the turn that that card is played. For example, a card effect that provides a card +1/+1 attack/health would only last until the end of the turn, unless otherwise stated, OR if the card is an Equipment Card. More on those below. \n \ +
\n \ Card Breakdown: \n \ +
\n \ Within the game, there are 3 kinds of cards (So far), Unit, Equipment and Spell cards. \n \ +
\n \ Unit Cards. All Unit Cards have 4 core values to keep in mind, Attack, Health, Faction, and Summoning Cost. Attack serves as a card's offensive value in combat. Health serves as a card's defensive value in combat, and doubles as a card's health. Factions are groupings of cards that can often share effects and traits together. Summoning Cost is how much mana a card needs in order to be summoned. \n \ +
\n \ Equipment Cards. All Equipment Cards similarly to Unit Cards have Attack, Health, and Summon Cost values, but for equipment, these values are added to the attached card's values. Equipment can only be attached (Equip) to units, and they last until the unit dies, or otherwise leaves the field, following it's equipt card. If returned to the hand, send to the discard pile, or otherwise leaves the field, it is detatched from the equipt card. When a Equipment Card increases a card's attack or health, those effects stay on the equip card until the equipment is unequip or removed from the parent card. \n \ If a card would have it's health decreased by having it's equip card removed, it's handled by having it's maximum health decreased, not it's current health. For example, lets say you had a card with 1/1 attack/health, and give it an equipment giving it +1/+2, then that card enters combat, dropping it down to 2/1. If by an opponent's card effect it lost that +1/+2 equipment now, it's stats would be 1/1 once again. If an equip card explicitly lowers a card's stats, it is possible for a card to be killed as a result, but drops in attack will always bottom out at 0 attack at any given time. \n \ +
\n \ Spell Cards. Spell Cards don't have attack or health values, instead, they activate their effects as soon as they are summoned and leave the field afterwards(if not stated otherwise). \n \ - +
\n \ Card Subtypes: \n \ - +
\n \ Card effects: \n \ Asimov - Unit cannot attack units with Human subtype \n \ Changeling - Unit posesses all the subtypes at the same time \n \ @@ -722,13 +751,13 @@ Blocker - The unit cannot declare attacks, but can defend. \n \ Hivemind - The unit enters combat with a hivemind token on it. The first time this card would take damage, remove that token instead. This does not apply to instant removal effects, only points of damage. \n \ Clockwork - The unit can copy a single keyword on another unit on the field, until they lose the clockwork keyword or leave the field. \n \ - +
\n \ Card Combat: \n \ - +
\n \ Card combat is determined as follows. On your turn, any non-tapped unit card with a positive attack power is capable of declaring an attack. Upon declaring an attack, you must state if you're attacking your opponent directly, or if you're going to attack a specific opponent's unit. Unless otherwise stated, cards can only attack or defend one time per turn. \n \ - +
\n \ An attack against a unit healths as follows: Both units will do their power as damage to the opponent's unit's health. Damage is typically dealt at the same time, and if both units would kill each other through combat, both are destroyed at the same time. If One or both units would not be destroyed by combat, they would have their health reduced by the difference of their health minus their opponent's power, until the start of your next turn. If the attacker or defender has a keyword or effect that prevents them from attacking their opponent (Like silicon, immunity), then they are not able to attack, but may still defend against the opponent's attack. Once combat has healthd, all remaining participants become tapped. \n \ - +
\n \ A direct attack healths as follows: The attacking unit declares an attack against the opponent's lifeshards. Your opponent may then declare a defender if one is available, who will then turn the combat into an attack against a unit for the purposes of combat that turn. If the attack is not blocked, and the direct attack connects, then your opponent loses a number of lifeshards equal to the attacking units power.
" /obj/item/cardboard_card @@ -757,7 +786,7 @@ return var/obj/item/tcgcard_binder/binder = locate() in src - if(!binder || !length(binder.cards)) + if(!binder) return var/list/card_types = list() @@ -765,14 +794,7 @@ //if(!card.illegal) //Uncomment if you want to block syndie cards from saving card_types[card.datum_type] = card.illegal - card_types["decks"] = list() - - for(var/obj/item/tcgcard_deck/deck in binder.decks) - var/list/cardlist = list() - for(var/obj/item/tcg_card/card in deck.contents) - cardlist[card.datum_type] = card.illegal - card_types["decks"].Add(cardlist) - + client.prefs.tcg_decks = binder.decks client.prefs.tcg_cards = card_types client.prefs.save_character(TRUE) From 21012bf94ed2a616c61229d99e50052fc129dcd8 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Thu, 18 Feb 2021 14:39:56 +0300 Subject: [PATCH 33/55] oof --- code/modules/tcg/cards.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 45b251e977..36866bdd90 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -786,6 +786,10 @@ return var/obj/item/tcgcard_binder/binder = locate() in src + if(!binder) + var/obj/item/storage/backpack/back = locate() in src + binder = locate() in back + if(!binder) return From 5e8209a6e9a6e8c5510b2ae12e5ed251fe025040 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Thu, 18 Feb 2021 17:44:33 +0300 Subject: [PATCH 34/55] Update code/modules/tcg/cards.dm Co-authored-by: Letter N <24603524+LetterN@users.noreply.github.com> --- code/modules/tcg/cards.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 36866bdd90..9f9a18b662 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -624,7 +624,7 @@ user.put_in_hands(choice) cards.Remove(choice) - if(choice && choice in decks) + if(choice && (choice in decks)) var/obj/item/tcgcard_deck/new_deck = new(get_turf(user)) var/list/required_cards = decks[choice] for(var/obj/item/tcg_card/card in cards) From 689293428be7993375848efaddc95eccc3996acb Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Thu, 18 Feb 2021 17:44:38 +0300 Subject: [PATCH 35/55] Update code/modules/tcg/cards.dm Co-authored-by: Letter N <24603524+LetterN@users.noreply.github.com> --- code/modules/tcg/cards.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 9f9a18b662..ff7d2fee2a 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -573,7 +573,7 @@ card.forceMove(src) cards.Add(card) if(named) - decks[named].Add(card.name) + decks[named] += card.name qdel(I) . = ..() From 14c9fe655cb99c01a7b9e360734ec71d16110029 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 18 Feb 2021 17:00:28 -0700 Subject: [PATCH 36/55] Update eldritch_items.dm --- code/modules/antagonists/eldritch_cult/eldritch_items.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/antagonists/eldritch_cult/eldritch_items.dm b/code/modules/antagonists/eldritch_cult/eldritch_items.dm index f46fd8593a..ea6d1d50e2 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_items.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_items.dm @@ -50,7 +50,8 @@ background_icon_state = "bg_ecult" button_icon_state = "shatter" icon_icon = 'icons/mob/actions/actions_ecult.dmi' - check_flags = MOBILITY_HOLD|MOBILITY_MOVE|MOBILITY_USE + check_flags = NONE // required_mobility_flags handles this + required_mobility_flags = MOBILITY_HOLD|MOBILITY_MOVE|MOBILITY_USE var/mob/living/carbon/human/holder var/obj/item/melee/sickly_blade/sword From 746ca01823818297b04c376f5102e65ac1d27b30 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 19 Feb 2021 02:10:03 +0000 Subject: [PATCH 37/55] Update code/game/objects/items/devices/PDA/PDA.dm Co-authored-by: Letter N <24603524+LetterN@users.noreply.github.com> --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 24680971b9..2820b11312 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -665,7 +665,7 @@ GLOBAL_LIST_EMPTY(PDAs) create_message(U, locate(href_list["target"])) if("MessageAll") - if(cartridge && cartridge.spam_enabled) + if(cartridge?.spam_enabled) send_to_all(U) if("toggle_block") From e5a1a6c2d6d166106b52f69919c9c5fd7d71d129 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 18 Feb 2021 23:34:13 -0600 Subject: [PATCH 38/55] Automatic changelog generation for PR #14262 [ci skip] --- html/changelogs/AutoChangeLog-pr-14262.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14262.yml diff --git a/html/changelogs/AutoChangeLog-pr-14262.yml b/html/changelogs/AutoChangeLog-pr-14262.yml new file mode 100644 index 0000000000..90ea87088e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14262.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - bugfix: "stops people using Message All on PDAs when their cartridge doesn't allow it" From b4b50f5c41db44f9872895ce034bf836b8d73aa9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 18 Feb 2021 23:34:55 -0600 Subject: [PATCH 39/55] Automatic changelog generation for PR #14251 [ci skip] --- html/changelogs/AutoChangeLog-pr-14251.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14251.yml diff --git a/html/changelogs/AutoChangeLog-pr-14251.yml b/html/changelogs/AutoChangeLog-pr-14251.yml new file mode 100644 index 0000000000..9a80faef6b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14251.yml @@ -0,0 +1,4 @@ +author: "Chiirno" +delete-after: True +changes: + - tweak: "Synthflesh now unhusks with 100u instead of requiring 101u." From 071cc29ab056f7a51975d91d19461d9d024b8a27 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 18 Feb 2021 23:36:22 -0600 Subject: [PATCH 40/55] Automatic changelog generation for PR #14246 [ci skip] --- html/changelogs/AutoChangeLog-pr-14246.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14246.yml diff --git a/html/changelogs/AutoChangeLog-pr-14246.yml b/html/changelogs/AutoChangeLog-pr-14246.yml new file mode 100644 index 0000000000..1fe8cec2b5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14246.yml @@ -0,0 +1,4 @@ +author: "TyrianTyrell" +delete-after: True +changes: + - bugfix: "fixed the signed language so that you can actually use it, and that it's unusable when it's meant to be." From f17be50d5f026c35f0f8c2eeff0bc9a63e3ac550 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Thu, 18 Feb 2021 23:28:10 -0800 Subject: [PATCH 41/55] Revert "Fix for floorbots not placing a plate before placing a floor." --- code/modules/mob/living/simple_animal/bot/floorbot.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 47173f10ea..ff6941ec70 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -340,7 +340,6 @@ target = null playsound(src, 'sound/effects/whistlereset.ogg', 50, TRUE) return - if(isspaceturf(target_turf)) //Must be a hull breach or in line mode to continue. if(!is_hull_breach(target_turf) && !targetdirection) @@ -356,9 +355,9 @@ sleep(50) if(mode == BOT_REPAIRING && src.loc == target_turf) if(autotile) //Build the floor and include a tile. + target_turf.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) + else //Build a hull plating without a floor tile. target_turf.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) - else //Build a hull plating without a floor tile. - target_turf.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) else var/turf/open/floor/F = target_turf @@ -372,7 +371,7 @@ if(mode == BOT_REPAIRING && F && src.loc == F) F.broken = 0 F.burnt = 0 - F.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + F.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) if(replacetiles && F.type != initial(tiletype.turf_type) && specialtiles && !isplatingturf(F)) anchored = TRUE @@ -434,4 +433,4 @@ if(robot.mode == BOT_REPAIRING) return TRUE return FALSE - + From ea47ab1610d9c71be95538aca4b3570a5553e2c9 Mon Sep 17 00:00:00 2001 From: MrJWhit <48370570+MrJWhit@users.noreply.github.com> Date: Fri, 19 Feb 2021 10:00:43 -0500 Subject: [PATCH 42/55] Update seed_extractor.dm --- code/modules/hydroponics/seed_extractor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 71701d9637..e0e15ac111 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -76,7 +76,7 @@ /obj/machinery/seed_extractor/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Extracting [seed_multiplier] seed(s) per piece of produce.
Machine can store up to [max_seeds]% seeds.
" + . += "The status display reads: Extracting [seed_multiplier] seed(s) per piece of produce.
Machine can store up to [max_seeds] seeds.
" /obj/machinery/seed_extractor/attackby(obj/item/O, mob/user, params) From 9de5e5f5fa83af6111a523bbcb046073d6b1f14e Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 19 Feb 2021 17:07:41 +0000 Subject: [PATCH 43/55] Update vampire.dm --- .../modules/mob/living/carbon/human/species_types/vampire.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 5e07150ce6..2c8c5f94d5 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -26,6 +26,11 @@ return TRUE return FALSE +/datum/species/vampire/qualifies_for_rank(rank, list/features) + if(rank == "Chaplain") + return FALSE + return ..() + /datum/species/vampire/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) . = ..() to_chat(C, "[info_text]") From 94ad05b2bc9cec6fdfe0023296b538008f1d3f19 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 19 Feb 2021 17:14:36 +0000 Subject: [PATCH 44/55] better idea --- code/modules/mob/living/carbon/human/species_types/vampire.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 2c8c5f94d5..c43fe79268 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -63,7 +63,7 @@ to_chat(C, "You ran out of blood!") C.dust() var/area/A = get_area(C) - if(istype(A, /area/chapel)) + if(istype(A, /area/chapel) && C.mind?.assigned_role != "Chaplain") to_chat(C, "You don't belong here!") C.adjustFireLoss(5) C.adjust_fire_stacks(6) From 9528cc9ce46b81c42c320731ca6da76b37fc9168 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 19 Feb 2021 19:36:19 +0000 Subject: [PATCH 45/55] woops i left that in --- .../modules/mob/living/carbon/human/species_types/vampire.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index c43fe79268..89b3d603ea 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -26,11 +26,6 @@ return TRUE return FALSE -/datum/species/vampire/qualifies_for_rank(rank, list/features) - if(rank == "Chaplain") - return FALSE - return ..() - /datum/species/vampire/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) . = ..() to_chat(C, "[info_text]") From 22cd71a1890300ea1029d1b2876e528e63fe0df2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 19 Feb 2021 14:37:12 -0600 Subject: [PATCH 46/55] Automatic changelog generation for PR #14261 [ci skip] --- html/changelogs/AutoChangeLog-pr-14261.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14261.yml diff --git a/html/changelogs/AutoChangeLog-pr-14261.yml b/html/changelogs/AutoChangeLog-pr-14261.yml new file mode 100644 index 0000000000..c0a176ab13 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14261.yml @@ -0,0 +1,5 @@ +author: "SmArtKar" +delete-after: True +changes: + - tweak: "Added some QoL changes to TCG" + - bugfix: "Fixed TCG cards not saving" From 7b8b16dc22c3aa879a7aeb903dbd280a0462b805 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 19 Feb 2021 22:19:00 +0000 Subject: [PATCH 47/55] test --- .../objects/structures/ghost_role_spawners.dm | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index fadf33cb85..6299aa1554 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -661,6 +661,49 @@ ADD_TRAIT(M,TRAIT_SIXTHSENSE,GHOSTROLE_TRAIT) to_chat(M,"You're once again longer hearing deadchat.") +/datum/action/disguise + name = "Disguise" + button_icon_state = "ling_transform" + icon_icon = 'icons/mob/actions/actions_changeling.dmi' + background_icon_state = "bg_mime" + +/datum/action/disguise/Trigger() + var/mob/living/carbon/human/H = owner + var/user_search_type = input(H, "Search by PATH or NAME") as null|anything in list("PATH","NAME") + if(user_search_type) + var/user_object_type = input(H, "Disguising as OBJECT or MOB?") as null|anything in list("OBJECT", "MOB") + if(user_object_type) + var/search_term = stripped_input(H, "Enter the search term") + if(search_term) + var/list_to_search + if(user_object_type == "MOB") + list_to_search = subtypesof(/mob) + else + list_to_search = subtypesof(/obj) + var/list/filtered_results = list() + // it's better to have two loops here rather than make the conditional check for path or name in every cycle of a single loop + var/x = 0 + switch(user_search_type) + if("PATH") + for(var/some_search_item in list_to_search) + if(findtext("[some_search_item]", search_term)) + filtered_results += some_search_item + if("NAME") + for(var/some_search_item in list_to_search) + var/mob/some_search_atom = some_search_item + if(findtext(initial(some_search_atom.name), search_term)) + filtered_results[some_search_item] += some_search_atom.name + if(x < 10) + message_admins("initial name is [initial(some_search_atom.name)]") + + x += 1 + if(!length(filtered_results)) + to_chat(H, "Nothing matched your search query!") + message_admins("for reference the length of list to search was [length(list_to_search)]") + else + message_admins("it s + var/disguise_selection = input("Select item to disguise as") as null|anything in filtered_results + /obj/effect/mob_spawn/human/ghostcafe/special(mob/living/carbon/human/new_spawn) if(new_spawn.client) @@ -681,6 +724,11 @@ var/datum/action/toggle_dead_chat_mob/D = new(new_spawn) D.Grant(new_spawn) + + // debug if you see this delete it + var/datum/action/disguise/disguise_action = new(new_spawn) + disguise_action.Grant(new_spawn) + /datum/outfit/ghostcafe name = "ID, jumpsuit and shoes" uniform = /obj/item/clothing/under/color/random From 7c00a9723dafb419b8abce15261d5bc34522a931 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 19 Feb 2021 23:09:57 +0000 Subject: [PATCH 48/55] Revert "test" This reverts commit 7b8b16dc22c3aa879a7aeb903dbd280a0462b805. --- .../objects/structures/ghost_role_spawners.dm | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 6299aa1554..fadf33cb85 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -661,49 +661,6 @@ ADD_TRAIT(M,TRAIT_SIXTHSENSE,GHOSTROLE_TRAIT) to_chat(M,"You're once again longer hearing deadchat.") -/datum/action/disguise - name = "Disguise" - button_icon_state = "ling_transform" - icon_icon = 'icons/mob/actions/actions_changeling.dmi' - background_icon_state = "bg_mime" - -/datum/action/disguise/Trigger() - var/mob/living/carbon/human/H = owner - var/user_search_type = input(H, "Search by PATH or NAME") as null|anything in list("PATH","NAME") - if(user_search_type) - var/user_object_type = input(H, "Disguising as OBJECT or MOB?") as null|anything in list("OBJECT", "MOB") - if(user_object_type) - var/search_term = stripped_input(H, "Enter the search term") - if(search_term) - var/list_to_search - if(user_object_type == "MOB") - list_to_search = subtypesof(/mob) - else - list_to_search = subtypesof(/obj) - var/list/filtered_results = list() - // it's better to have two loops here rather than make the conditional check for path or name in every cycle of a single loop - var/x = 0 - switch(user_search_type) - if("PATH") - for(var/some_search_item in list_to_search) - if(findtext("[some_search_item]", search_term)) - filtered_results += some_search_item - if("NAME") - for(var/some_search_item in list_to_search) - var/mob/some_search_atom = some_search_item - if(findtext(initial(some_search_atom.name), search_term)) - filtered_results[some_search_item] += some_search_atom.name - if(x < 10) - message_admins("initial name is [initial(some_search_atom.name)]") - - x += 1 - if(!length(filtered_results)) - to_chat(H, "Nothing matched your search query!") - message_admins("for reference the length of list to search was [length(list_to_search)]") - else - message_admins("it s - var/disguise_selection = input("Select item to disguise as") as null|anything in filtered_results - /obj/effect/mob_spawn/human/ghostcafe/special(mob/living/carbon/human/new_spawn) if(new_spawn.client) @@ -724,11 +681,6 @@ var/datum/action/toggle_dead_chat_mob/D = new(new_spawn) D.Grant(new_spawn) - - // debug if you see this delete it - var/datum/action/disguise/disguise_action = new(new_spawn) - disguise_action.Grant(new_spawn) - /datum/outfit/ghostcafe name = "ID, jumpsuit and shoes" uniform = /obj/item/clothing/under/color/random From b7d40558e9b7d259520fdd4edb47ec7ad3112105 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 20 Feb 2021 00:13:42 +0000 Subject: [PATCH 49/55] Automatic changelog compile [ci skip] --- html/changelog.html | 24 ++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 15 ++++++++++++++ html/changelogs/AutoChangeLog-pr-14246.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14251.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14256.yml | 5 ----- html/changelogs/AutoChangeLog-pr-14261.yml | 5 ----- html/changelogs/AutoChangeLog-pr-14262.yml | 4 ---- 7 files changed, 39 insertions(+), 22 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14246.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14251.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14256.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14261.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14262.yml diff --git a/html/changelog.html b/html/changelog.html index bdc642c889..0148066378 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,30 @@ -->
+

20 February 2021

+

Adelphon updated:

+
    +
  • polychromic pants
  • +
  • urban coat made polychromic
  • +
+

Chiirno updated:

+
    +
  • Synthflesh now unhusks with 100u instead of requiring 101u.
  • +
+

SmArtKar updated:

+
    +
  • Added some QoL changes to TCG
  • +
  • Fixed TCG cards not saving
  • +
+

TyrianTyrell updated:

+
    +
  • fixed the signed language so that you can actually use it, and that it's unusable when it's meant to be.
  • +
+

timothyteakettle updated:

+
    +
  • stops people using Message All on PDAs when their cartridge doesn't allow it
  • +
+

19 February 2021

Putnam3145 updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 4d9876efec..76aa536483 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -28522,3 +28522,18 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Buzz Fuzz's addiction threshold is now a can and a sip as intended. timothyteakettle: - admin: staring into pierced realities is now logged +2021-02-20: + Adelphon: + - rscadd: polychromic pants + - tweak: urban coat made polychromic + Chiirno: + - tweak: Synthflesh now unhusks with 100u instead of requiring 101u. + SmArtKar: + - tweak: Added some QoL changes to TCG + - bugfix: Fixed TCG cards not saving + TyrianTyrell: + - bugfix: fixed the signed language so that you can actually use it, and that it's + unusable when it's meant to be. + timothyteakettle: + - bugfix: stops people using Message All on PDAs when their cartridge doesn't allow + it diff --git a/html/changelogs/AutoChangeLog-pr-14246.yml b/html/changelogs/AutoChangeLog-pr-14246.yml deleted file mode 100644 index 1fe8cec2b5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14246.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TyrianTyrell" -delete-after: True -changes: - - bugfix: "fixed the signed language so that you can actually use it, and that it's unusable when it's meant to be." diff --git a/html/changelogs/AutoChangeLog-pr-14251.yml b/html/changelogs/AutoChangeLog-pr-14251.yml deleted file mode 100644 index 9a80faef6b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14251.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Chiirno" -delete-after: True -changes: - - tweak: "Synthflesh now unhusks with 100u instead of requiring 101u." diff --git a/html/changelogs/AutoChangeLog-pr-14256.yml b/html/changelogs/AutoChangeLog-pr-14256.yml deleted file mode 100644 index 2515417160..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14256.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Adelphon" -delete-after: True -changes: - - rscadd: "polychromic pants" - - tweak: "urban coat made polychromic" diff --git a/html/changelogs/AutoChangeLog-pr-14261.yml b/html/changelogs/AutoChangeLog-pr-14261.yml deleted file mode 100644 index c0a176ab13..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14261.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SmArtKar" -delete-after: True -changes: - - tweak: "Added some QoL changes to TCG" - - bugfix: "Fixed TCG cards not saving" diff --git a/html/changelogs/AutoChangeLog-pr-14262.yml b/html/changelogs/AutoChangeLog-pr-14262.yml deleted file mode 100644 index 90ea87088e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14262.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "timothyteakettle" -delete-after: True -changes: - - bugfix: "stops people using Message All on PDAs when their cartridge doesn't allow it" From ea94617d76725f5f2e7c52a404e0bcb46f0c26db Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 20 Feb 2021 03:58:08 -0600 Subject: [PATCH 50/55] Automatic changelog generation for PR #14273 [ci skip] --- html/changelogs/AutoChangeLog-pr-14273.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14273.yml diff --git a/html/changelogs/AutoChangeLog-pr-14273.yml b/html/changelogs/AutoChangeLog-pr-14273.yml new file mode 100644 index 0000000000..529e0a7272 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14273.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - rscadd: "vampires no longer burn in the chapel if they signed up as the chaplain" From fa3bb2a08bcef6c6374de3f121e7a5cfeb47e5e7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 20 Feb 2021 03:58:22 -0600 Subject: [PATCH 51/55] Automatic changelog generation for PR #14272 [ci skip] --- html/changelogs/AutoChangeLog-pr-14272.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14272.yml diff --git a/html/changelogs/AutoChangeLog-pr-14272.yml b/html/changelogs/AutoChangeLog-pr-14272.yml new file mode 100644 index 0000000000..b976b667f4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14272.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - tweak: "Removes an unnecessary % on the seed extractor." From 30926fcfee0746b68f52561e01f436f7bedc47d7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 20 Feb 2021 04:02:09 -0600 Subject: [PATCH 52/55] Automatic changelog generation for PR #14263 [ci skip] --- html/changelogs/AutoChangeLog-pr-14263.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14263.yml diff --git a/html/changelogs/AutoChangeLog-pr-14263.yml b/html/changelogs/AutoChangeLog-pr-14263.yml new file mode 100644 index 0000000000..b1a22d89f6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14263.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - balance: "Anomaly announcements and brand intelligence now always announce instead of having some ham-fisted chance of being a command report." From 6eedbdf98475045032971dfd6e6a9dc76d757eb7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 20 Feb 2021 04:02:18 -0600 Subject: [PATCH 53/55] Automatic changelog generation for PR #14260 [ci skip] --- html/changelogs/AutoChangeLog-pr-14260.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14260.yml diff --git a/html/changelogs/AutoChangeLog-pr-14260.yml b/html/changelogs/AutoChangeLog-pr-14260.yml new file mode 100644 index 0000000000..6620f3934f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14260.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - bugfix: "the query for checking mentors now gets properly deleted" From 0768e693c4a831b87ba91e5c2647232e1c5dc620 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 20 Feb 2021 04:02:26 -0600 Subject: [PATCH 54/55] Automatic changelog generation for PR #14258 [ci skip] --- html/changelogs/AutoChangeLog-pr-14258.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14258.yml diff --git a/html/changelogs/AutoChangeLog-pr-14258.yml b/html/changelogs/AutoChangeLog-pr-14258.yml new file mode 100644 index 0000000000..f10e53f709 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14258.yml @@ -0,0 +1,4 @@ +author: "IronEleven" +delete-after: True +changes: + - balance: "Raises Space Vine Population Requirement from 10 to 20" From bcffa931b9e719d857a87f5644032cf675eec391 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 21 Feb 2021 00:14:18 +0000 Subject: [PATCH 55/55] Automatic changelog compile [ci skip] --- html/changelog.html | 19 +++++++++++++++++++ html/changelogs/.all_changelog.yml | 11 +++++++++++ html/changelogs/AutoChangeLog-pr-14258.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14260.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14263.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14272.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14273.yml | 4 ---- 7 files changed, 30 insertions(+), 20 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14258.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14260.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14263.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14272.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14273.yml diff --git a/html/changelog.html b/html/changelog.html index 0148066378..55982e0efe 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,25 @@ -->
    +

    21 February 2021

    +

    Hatterhat updated:

    +
      +
    • Anomaly announcements and brand intelligence now always announce instead of having some ham-fisted chance of being a command report.
    • +
    +

    IronEleven updated:

    +
      +
    • Raises Space Vine Population Requirement from 10 to 20
    • +
    +

    MrJWhit updated:

    +
      +
    • Removes an unnecessary % on the seed extractor.
    • +
    +

    timothyteakettle updated:

    +
      +
    • the query for checking mentors now gets properly deleted
    • +
    • vampires no longer burn in the chapel if they signed up as the chaplain
    • +
    +

    20 February 2021

    Adelphon updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 76aa536483..b7654e8973 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -28537,3 +28537,14 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. timothyteakettle: - bugfix: stops people using Message All on PDAs when their cartridge doesn't allow it +2021-02-21: + Hatterhat: + - balance: Anomaly announcements and brand intelligence now always announce instead + of having some ham-fisted chance of being a command report. + IronEleven: + - balance: Raises Space Vine Population Requirement from 10 to 20 + MrJWhit: + - tweak: Removes an unnecessary % on the seed extractor. + timothyteakettle: + - bugfix: the query for checking mentors now gets properly deleted + - rscadd: vampires no longer burn in the chapel if they signed up as the chaplain diff --git a/html/changelogs/AutoChangeLog-pr-14258.yml b/html/changelogs/AutoChangeLog-pr-14258.yml deleted file mode 100644 index f10e53f709..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14258.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "IronEleven" -delete-after: True -changes: - - balance: "Raises Space Vine Population Requirement from 10 to 20" diff --git a/html/changelogs/AutoChangeLog-pr-14260.yml b/html/changelogs/AutoChangeLog-pr-14260.yml deleted file mode 100644 index 6620f3934f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14260.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "timothyteakettle" -delete-after: True -changes: - - bugfix: "the query for checking mentors now gets properly deleted" diff --git a/html/changelogs/AutoChangeLog-pr-14263.yml b/html/changelogs/AutoChangeLog-pr-14263.yml deleted file mode 100644 index b1a22d89f6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14263.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - balance: "Anomaly announcements and brand intelligence now always announce instead of having some ham-fisted chance of being a command report." diff --git a/html/changelogs/AutoChangeLog-pr-14272.yml b/html/changelogs/AutoChangeLog-pr-14272.yml deleted file mode 100644 index b976b667f4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14272.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrJWhit" -delete-after: True -changes: - - tweak: "Removes an unnecessary % on the seed extractor." diff --git a/html/changelogs/AutoChangeLog-pr-14273.yml b/html/changelogs/AutoChangeLog-pr-14273.yml deleted file mode 100644 index 529e0a7272..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14273.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "timothyteakettle" -delete-after: True -changes: - - rscadd: "vampires no longer burn in the chapel if they signed up as the chaplain"