From f662e5816fe6b9367ef45c7d7bc4a0a79887a37f Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Mon, 24 Jul 2023 23:03:35 +0000 Subject: [PATCH 01/39] test --- .../living/carbon/xenomorph/hive_faction.dm | 1 + .../living/carbon/xenomorph/xeno_defines.dm | 60 +++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/hive_faction.dm b/code/modules/mob/living/carbon/xenomorph/hive_faction.dm index 1eb5818674fd..10af37b8d8e8 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_faction.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_faction.dm @@ -57,4 +57,5 @@ GLOBAL_LIST_INIT(hive_alliable_factions, generate_alliable_factions()) var/should_ally = text2num(params["should_ally"]) assoc_hive.allies[params["target_faction"]] = should_ally + assoc_hive.on_stance_change(params["target_faction"]) . = TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 8b25cf07d14b..0caf12b99444 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -342,6 +342,8 @@ var/list/banished_ckeys = list() + var/list/deflectors = list() + var/hivecore_cooldown = FALSE var/need_round_end_check = FALSE @@ -1250,6 +1252,64 @@ return ..() +/datum/hive_status/proc/on_stance_change(faction) + if(!ignore_queen_check && !living_xeno_queen) + return + if(allies[faction]) + xeno_announcement(SPAN_XENOANNOUNCE("Your Queen set up alliance with [faction]!"), hivenumber, XENO_GENERAL_ANNOUNCE) + else + xeno_announcement(SPAN_XENOANNOUNCE("Your Queen broke alliance with [faction]!"), hivenumber, XENO_GENERAL_ANNOUNCE) + + for(var/hivenumber in GLOB.hive_datum) + target_hive = GLOB.hive_datum[hivenumber] + if(hive.name != faction) + continue + if(!hive.ignore_queen_check && !hive.living_xeno_queen) + break + if(allies[faction]) + xeno_announcement(SPAN_XENOANNOUNCE("You sense that [faction] Queen set up alliance with us!"), target_hive, XENO_GENERAL_ANNOUNCE) + else + xeno_announcement(SPAN_XENOANNOUNCE("You sense that [faction] Queen broke alliance with us!"), target_hive, XENO_GENERAL_ANNOUNCE) + + for(var/mob/living/carbon/xenomorph/xeno in totalXenos) + if(!xeno.iff_tag) + continue + if(!faction in xeno.iff_tag.faction_groups) + continue + if(xeno in deflectors) + continue + if(alert(xeno, "Your Queen broke alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or become Tamed? You have 15 seconds to decide", "Choose", "Stay with Queen", "Become Tamed") == "Become Tamed") + if(!xeno.iff_tag) + to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to Queen continues.")) + continue + deflectors += xeno + continue + to_chat(xeno, SPAN_XENOWARNING("You decided to stay with Queen.")) + + addtimer(CALLBACK(src, PROC_REF(handle_deflectors), 15 SECONDS)) + +/datum/hive_status/proc/handle_deflectors() + for(var/mob/living/carbon/xenomorph/xeno in totalXenos) + if(!xeno) + continue + if(xeno.status == DEAD) + continue + if(!xeno.iff_tag) + continue + if(xeno in deflectors) + xeno.set_hive_and_update(XENO_HIVE_TAMED) + to_chat(xeno, SPAN_XENOWARNING("You lose connection with your hive. Now there is no Queen, only masters.")) + continue + + xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) + xeno.iff_tag = null + + if(deflectors.len < 1) + return + + xeno_announcement(SPAN_XENOANNOUNCE("You sense that [deflectors.Join(", ")] deflected from your hive and became Tamed! Traitors!"), src, XENO_GENERAL_ANNOUNCE) + deflectors = list() + //Xeno Resin Mark Shit, the very best place for it too :0) //Defines at the bottom of this list here will show up at the top in the mark menu /datum/xeno_mark_define From 4d46b45203f44a509e9d503bb34a84cc115d867f Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 05:12:25 +0300 Subject: [PATCH 02/39] many changes --- .../living/carbon/xenomorph/xeno_defines.dm | 64 +++++++++++-------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 0caf12b99444..94bceb6e4c39 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1253,61 +1253,75 @@ return ..() /datum/hive_status/proc/on_stance_change(faction) - if(!ignore_queen_check && !living_xeno_queen) + if(!living_xeno_queen) return if(allies[faction]) - xeno_announcement(SPAN_XENOANNOUNCE("Your Queen set up alliance with [faction]!"), hivenumber, XENO_GENERAL_ANNOUNCE) + xeno_message(SPAN_XENOANNOUNCE("Your Queen set up alliance with [faction]!"), 3, hivenumber) else - xeno_announcement(SPAN_XENOANNOUNCE("Your Queen broke alliance with [faction]!"), hivenumber, XENO_GENERAL_ANNOUNCE) + xeno_message(SPAN_XENOANNOUNCE("Your Queen broke alliance with [faction]!"), 3, hivenumber) - for(var/hivenumber in GLOB.hive_datum) - target_hive = GLOB.hive_datum[hivenumber] - if(hive.name != faction) + for(var/number in GLOB.hive_datum) + var/datum/hive_status/target_hive = GLOB.hive_datum[number] + if(target_hive.name != faction) + xeno_message(SPAN_XENOANNOUNCE("[target_hive.name] != [faction]!"), hivenumber) continue - if(!hive.ignore_queen_check && !hive.living_xeno_queen) - break + if(!target_hive.living_xeno_queen) + return if(allies[faction]) - xeno_announcement(SPAN_XENOANNOUNCE("You sense that [faction] Queen set up alliance with us!"), target_hive, XENO_GENERAL_ANNOUNCE) + xeno_message(SPAN_XENOANNOUNCE("You sense that [faction] Queen set up alliance with us!"), 3, target_hive.hivenumber) + return else - xeno_announcement(SPAN_XENOANNOUNCE("You sense that [faction] Queen broke alliance with us!"), target_hive, XENO_GENERAL_ANNOUNCE) + xeno_message(SPAN_XENOANNOUNCE("You sense that [faction] Queen broke alliance with us!"), 3, target_hive.hivenumber) + return - for(var/mob/living/carbon/xenomorph/xeno in totalXenos) + if(allies[faction]) + return + + for(var/mob/living/carbon/xenomorph/xeno in totalXenos) // handle deflecting xenos on betrayal if(!xeno.iff_tag) continue - if(!faction in xeno.iff_tag.faction_groups) + if(!(faction in xeno.iff_tag.faction_groups)) continue if(xeno in deflectors) continue - if(alert(xeno, "Your Queen broke alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or become Tamed? You have 15 seconds to decide", "Choose", "Stay with Queen", "Become Tamed") == "Become Tamed") - if(!xeno.iff_tag) - to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to Queen continues.")) - continue - deflectors += xeno - continue - to_chat(xeno, SPAN_XENOWARNING("You decided to stay with Queen.")) + // if(xeno.caste == XENO_CASTE_QUEEN) + // continue + INVOKE_ASYNC(src, PROC_REF(give_deflection_choice), xeno, faction) + addtimer(CALLBACK(src, PROC_REF(handle_deflectors), faction), 10 SECONDS) + +/datum/hive_status/proc/give_deflection_choice(mob/living/carbon/xenomorph/xeno, faction) + if(alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or become Tamed? You have 10 seconds to decide.", "Choose", "Stay with Queen", "Become Tamed") == "Become Tamed") + if(!xeno.iff_tag) + to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to Queen continues.")) + return + deflectors += xeno + to_chat(xeno, SPAN_XENOWARNING("You decided to become Tamed.")) + return + to_chat(xeno, SPAN_XENOWARNING("You decided to stay with Queen.")) - addtimer(CALLBACK(src, PROC_REF(handle_deflectors), 15 SECONDS)) -/datum/hive_status/proc/handle_deflectors() +/datum/hive_status/proc/handle_deflectors(faction) for(var/mob/living/carbon/xenomorph/xeno in totalXenos) if(!xeno) continue - if(xeno.status == DEAD) + if(xeno.stat == DEAD) continue if(!xeno.iff_tag) continue if(xeno in deflectors) xeno.set_hive_and_update(XENO_HIVE_TAMED) - to_chat(xeno, SPAN_XENOWARNING("You lose connection with your hive. Now there is no Queen, only masters.")) + to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) + continue + if(!(faction in xeno.iff_tag.faction_groups)) continue - xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) + xeno.iff_tag = null if(deflectors.len < 1) return - xeno_announcement(SPAN_XENOANNOUNCE("You sense that [deflectors.Join(", ")] deflected from your hive and became Tamed! Traitors!"), src, XENO_GENERAL_ANNOUNCE) + xeno_message(SPAN_XENOANNOUNCE("You sense that [deflectors.Join(", ")] deflected from your hive and became Tamed! Traitors!"), 3, hivenumber) deflectors = list() //Xeno Resin Mark Shit, the very best place for it too :0) From 0328500dbdfba37394ef20359e5c9787d2b7c23e Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 06:00:46 +0300 Subject: [PATCH 03/39] final? --- code/__DEFINES/mobs.dm | 3 +- code/_globalvars/global_lists.dm | 3 +- .../living/carbon/xenomorph/xeno_defines.dm | 46 +++++++++++++------ 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index ba928e202cf0..c8078d3fb673 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -131,8 +131,9 @@ #define XENO_HIVE_MUTATED "xeno_hive_mutated" #define XENO_HIVE_FORSAKEN "xeno_hive_forsaken" #define XENO_HIVE_YAUTJA "xeno_hive_yautja" +#define XENO_HIVE_RENEGADE "xeno_hive_renegade" -#define ALL_XENO_HIVES list(XENO_HIVE_NORMAL, XENO_HIVE_CORRUPTED, XENO_HIVE_ALPHA, XENO_HIVE_BRAVO, XENO_HIVE_CHARLIE, XENO_HIVE_DELTA, XENO_HIVE_FERAL, XENO_HIVE_TAMED, XENO_HIVE_MUTATED, XENO_HIVE_FORSAKEN, XENO_HIVE_YAUTJA) +#define ALL_XENO_HIVES list(XENO_HIVE_NORMAL, XENO_HIVE_CORRUPTED, XENO_HIVE_ALPHA, XENO_HIVE_BRAVO, XENO_HIVE_CHARLIE, XENO_HIVE_DELTA, XENO_HIVE_FERAL, XENO_HIVE_TAMED, XENO_HIVE_MUTATED, XENO_HIVE_FORSAKEN, XENO_HIVE_YAUTJA, XENO_HIVE_RENEGADE) //================================================= diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm index 586d5e71a92d..138bc1fcbc96 100644 --- a/code/_globalvars/global_lists.dm +++ b/code/_globalvars/global_lists.dm @@ -171,7 +171,8 @@ GLOBAL_LIST_INIT_TYPED(hive_datum, /datum/hive_status, list( XENO_HIVE_TAMED = new /datum/hive_status/corrupted/tamed(), XENO_HIVE_MUTATED = new /datum/hive_status/mutated(), XENO_HIVE_FORSAKEN = new /datum/hive_status/forsaken(), - XENO_HIVE_YAUTJA = new /datum/hive_status/yautja() + XENO_HIVE_YAUTJA = new /datum/hive_status/yautja(), + XENO_HIVE_RENEGADE = new /datum/hive_status/corrupted/renegade(), )) GLOBAL_LIST_INIT(xeno_evolve_times, setup_xeno_evolve_times()) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 94bceb6e4c39..3f4100fbee3e 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1252,6 +1252,25 @@ return ..() +/datum/hive_status/corrupted/renegade + name = "Renegade Hive" + reporting_id = "renegade" + hivenumber = XENO_HIVE_RENEGADE + prefix = "Renegade " + color = "#9c7a4d" + + dynamic_evolution = FALSE + allow_no_queen_actions = TRUE + allow_queen_evolve = FALSE + ignore_slots = TRUE + latejoin_burrowed = FALSE + +/datum/hive_status/corrupted/tamed/New() + . = ..() + hive_structures_limit[XENO_STRUCTURE_EGGMORPH] = 0 + hive_structures_limit[XENO_STRUCTURE_EVOPOD] = 0 + allies[FACTION_MARINE] = TRUE + /datum/hive_status/proc/on_stance_change(faction) if(!living_xeno_queen) return @@ -1263,18 +1282,17 @@ for(var/number in GLOB.hive_datum) var/datum/hive_status/target_hive = GLOB.hive_datum[number] if(target_hive.name != faction) - xeno_message(SPAN_XENOANNOUNCE("[target_hive.name] != [faction]!"), hivenumber) continue - if(!target_hive.living_xeno_queen) + if(!target_hive.living_xeno_queen && !target_hive.allow_no_queen_actions) return if(allies[faction]) - xeno_message(SPAN_XENOANNOUNCE("You sense that [faction] Queen set up alliance with us!"), 3, target_hive.hivenumber) + xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen set up alliance with us!"), 3, target_hive.hivenumber) return else - xeno_message(SPAN_XENOANNOUNCE("You sense that [faction] Queen broke alliance with us!"), 3, target_hive.hivenumber) + xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen broke alliance with us!"), 3, target_hive.hivenumber) return - if(allies[faction]) + if(allies[faction] || faction != FACTION_MARINE) return for(var/mob/living/carbon/xenomorph/xeno in totalXenos) // handle deflecting xenos on betrayal @@ -1284,20 +1302,23 @@ continue if(xeno in deflectors) continue - // if(xeno.caste == XENO_CASTE_QUEEN) - // continue + if(xeno.caste_type == XENO_CASTE_QUEEN) + continue INVOKE_ASYNC(src, PROC_REF(give_deflection_choice), xeno, faction) addtimer(CALLBACK(src, PROC_REF(handle_deflectors), faction), 10 SECONDS) /datum/hive_status/proc/give_deflection_choice(mob/living/carbon/xenomorph/xeno, faction) - if(alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or become Tamed? You have 10 seconds to decide.", "Choose", "Stay with Queen", "Become Tamed") == "Become Tamed") + if(alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or deflect? You have 10 seconds to decide.", "Choose", "Stay with Queen", "Stay with your masters") == "Stay with your masters") if(!xeno.iff_tag) - to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to Queen continues.")) + to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to the Queen continues.")) return deflectors += xeno - to_chat(xeno, SPAN_XENOWARNING("You decided to become Tamed.")) + xeno.set_hive_and_update(XENO_HIVE_RENEGADE) + to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) return to_chat(xeno, SPAN_XENOWARNING("You decided to stay with Queen.")) + xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) + xeno.iff_tag = null /datum/hive_status/proc/handle_deflectors(faction) @@ -1309,19 +1330,16 @@ if(!xeno.iff_tag) continue if(xeno in deflectors) - xeno.set_hive_and_update(XENO_HIVE_TAMED) - to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) continue if(!(faction in xeno.iff_tag.faction_groups)) continue xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) - xeno.iff_tag = null if(deflectors.len < 1) return - xeno_message(SPAN_XENOANNOUNCE("You sense that [deflectors.Join(", ")] deflected from your hive and became Tamed! Traitors!"), 3, hivenumber) + xeno_message(SPAN_XENOANNOUNCE("You sense that [deflectors.Join(", ")] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) deflectors = list() //Xeno Resin Mark Shit, the very best place for it too :0) From 6f066b24001758e33961d9c8875448bd05fe53c4 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 06:24:19 +0300 Subject: [PATCH 04/39] ohhh --- .../living/carbon/xenomorph/xeno_defines.dm | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 3f4100fbee3e..fc1bf126e803 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -342,7 +342,7 @@ var/list/banished_ckeys = list() - var/list/deflectors = list() + var/list/renegades = list() var/hivecore_cooldown = FALSE @@ -1300,19 +1300,19 @@ continue if(!(faction in xeno.iff_tag.faction_groups)) continue - if(xeno in deflectors) + if(xeno in renegades) continue if(xeno.caste_type == XENO_CASTE_QUEEN) continue INVOKE_ASYNC(src, PROC_REF(give_deflection_choice), xeno, faction) - addtimer(CALLBACK(src, PROC_REF(handle_deflectors), faction), 10 SECONDS) + addtimer(CALLBACK(src, PROC_REF(handle_renegades), faction), 10 SECONDS) /datum/hive_status/proc/give_deflection_choice(mob/living/carbon/xenomorph/xeno, faction) - if(alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or deflect? You have 10 seconds to decide.", "Choose", "Stay with Queen", "Stay with your masters") == "Stay with your masters") + if(alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", "Stay with Queen", "Stay with your masters") == "Stay with your masters") if(!xeno.iff_tag) to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to the Queen continues.")) return - deflectors += xeno + renegades += xeno xeno.set_hive_and_update(XENO_HIVE_RENEGADE) to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) return @@ -1321,7 +1321,7 @@ xeno.iff_tag = null -/datum/hive_status/proc/handle_deflectors(faction) +/datum/hive_status/proc/handle_renegades(faction) for(var/mob/living/carbon/xenomorph/xeno in totalXenos) if(!xeno) continue @@ -1329,18 +1329,18 @@ continue if(!xeno.iff_tag) continue - if(xeno in deflectors) + if(xeno in renegades) continue if(!(faction in xeno.iff_tag.faction_groups)) continue xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.iff_tag = null - if(deflectors.len < 1) + if(renegades.len < 1) return - xeno_message(SPAN_XENOANNOUNCE("You sense that [deflectors.Join(", ")] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) - deflectors = list() + xeno_message(SPAN_XENOANNOUNCE("You sense that [renegades.Join(", ")] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) + renegades = list() //Xeno Resin Mark Shit, the very best place for it too :0) //Defines at the bottom of this list here will show up at the top in the mark menu From 9d415618ae735672cb205d4cb4a750c862fc2529 Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Tue, 25 Jul 2023 07:05:01 +0300 Subject: [PATCH 05/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index fc1bf126e803..7d957cbf942e 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1336,7 +1336,7 @@ xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.iff_tag = null - if(renegades.len < 1) + if(!length(renegades)) return xeno_message(SPAN_XENOANNOUNCE("You sense that [renegades.Join(", ")] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) From 824eedb1af03ecec4ca4a8540fd26f6be8e41443 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 07:09:28 +0300 Subject: [PATCH 06/39] fixes --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 7d957cbf942e..db600c519d38 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1295,7 +1295,7 @@ if(allies[faction] || faction != FACTION_MARINE) return - for(var/mob/living/carbon/xenomorph/xeno in totalXenos) // handle deflecting xenos on betrayal + for(var/mob/living/carbon/xenomorph/xeno in totalXenos) // handle defecting xenos on betrayal if(!xeno.iff_tag) continue if(!(faction in xeno.iff_tag.faction_groups)) @@ -1304,10 +1304,10 @@ continue if(xeno.caste_type == XENO_CASTE_QUEEN) continue - INVOKE_ASYNC(src, PROC_REF(give_deflection_choice), xeno, faction) + INVOKE_ASYNC(src, PROC_REF(give_defection_choice), xeno, faction) addtimer(CALLBACK(src, PROC_REF(handle_renegades), faction), 10 SECONDS) -/datum/hive_status/proc/give_deflection_choice(mob/living/carbon/xenomorph/xeno, faction) +/datum/hive_status/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) if(alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", "Stay with Queen", "Stay with your masters") == "Stay with your masters") if(!xeno.iff_tag) to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to the Queen continues.")) @@ -1316,7 +1316,6 @@ xeno.set_hive_and_update(XENO_HIVE_RENEGADE) to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) return - to_chat(xeno, SPAN_XENOWARNING("You decided to stay with Queen.")) xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.iff_tag = null From 7b5bb007ac3419535317c6d3da55d113046b1a24 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 07:26:17 +0300 Subject: [PATCH 07/39] tgui_alert --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index db600c519d38..74b0fe6a4a84 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1305,10 +1305,10 @@ if(xeno.caste_type == XENO_CASTE_QUEEN) continue INVOKE_ASYNC(src, PROC_REF(give_defection_choice), xeno, faction) - addtimer(CALLBACK(src, PROC_REF(handle_renegades), faction), 10 SECONDS) + addtimer(CALLBACK(src, PROC_REF(handle_renegades), faction), 11 SECONDS) /datum/hive_status/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) - if(alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", "Stay with Queen", "Stay with your masters") == "Stay with your masters") + if(tgui_alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") if(!xeno.iff_tag) to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to the Queen continues.")) return From 2335569d39792f61b3fbd90b0fe047c3f3dd181b Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 08:36:27 +0300 Subject: [PATCH 08/39] corrupted --- .../mob/living/carbon/xenomorph/xeno_defines.dm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 74b0fe6a4a84..7db1ee806032 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -342,8 +342,6 @@ var/list/banished_ckeys = list() - var/list/renegades = list() - var/hivecore_cooldown = FALSE var/need_round_end_check = FALSE @@ -1068,6 +1066,8 @@ need_round_end_check = TRUE + var/list/renegades = list() + /datum/hive_status/corrupted/add_xeno(mob/living/carbon/xenomorph/X) . = ..() X.add_language(LANGUAGE_ENGLISH) @@ -1258,6 +1258,7 @@ hivenumber = XENO_HIVE_RENEGADE prefix = "Renegade " color = "#9c7a4d" + ui_color ="#80705c" dynamic_evolution = FALSE allow_no_queen_actions = TRUE @@ -1292,6 +1293,8 @@ xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen broke alliance with us!"), 3, target_hive.hivenumber) return +/datum/hive_status/corrupted/on_stance_change(faction) + . = ..() if(allies[faction] || faction != FACTION_MARINE) return @@ -1307,7 +1310,7 @@ INVOKE_ASYNC(src, PROC_REF(give_defection_choice), xeno, faction) addtimer(CALLBACK(src, PROC_REF(handle_renegades), faction), 11 SECONDS) -/datum/hive_status/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) +/datum/hive_status/corrupted/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) if(tgui_alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") if(!xeno.iff_tag) to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to the Queen continues.")) @@ -1320,7 +1323,7 @@ xeno.iff_tag = null -/datum/hive_status/proc/handle_renegades(faction) +/datum/hive_status/corrupted/proc/handle_renegades(faction) for(var/mob/living/carbon/xenomorph/xeno in totalXenos) if(!xeno) continue From 3883159f7ae522a8e8119e4cc9fcc9542ae596b9 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 08:49:39 +0300 Subject: [PATCH 09/39] bug bad --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 7db1ee806032..1ed2ec88839b 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1266,7 +1266,7 @@ ignore_slots = TRUE latejoin_burrowed = FALSE -/datum/hive_status/corrupted/tamed/New() +/datum/hive_status/corrupted/renegade/New() . = ..() hive_structures_limit[XENO_STRUCTURE_EGGMORPH] = 0 hive_structures_limit[XENO_STRUCTURE_EVOPOD] = 0 From 6f49e80fa1a49a595a91bebd192061b658f8b9e9 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 09:04:16 +0300 Subject: [PATCH 10/39] renegade proper ally check --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 1ed2ec88839b..6c88cebe9d82 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1272,6 +1272,9 @@ hive_structures_limit[XENO_STRUCTURE_EVOPOD] = 0 allies[FACTION_MARINE] = TRUE +/datum/hive_status/corrupted/renegade/faction_is_ally(faction, ignore_queen_check = TRUE) + return . = ..() + /datum/hive_status/proc/on_stance_change(faction) if(!living_xeno_queen) return From b607f50df1309966c659f85cbe88838dfbd323cb Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Tue, 25 Jul 2023 13:44:48 +0300 Subject: [PATCH 11/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 6c88cebe9d82..fd56349307bc 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1273,7 +1273,7 @@ allies[FACTION_MARINE] = TRUE /datum/hive_status/corrupted/renegade/faction_is_ally(faction, ignore_queen_check = TRUE) - return . = ..() + return ..() /datum/hive_status/proc/on_stance_change(faction) if(!living_xeno_queen) From d602bb39a23115aa9639a89b361d755dec020db7 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 14:44:50 +0300 Subject: [PATCH 12/39] allies --- .../mob/living/carbon/xenomorph/xeno_defines.dm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index fd56349307bc..a02a55509ab2 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1271,6 +1271,8 @@ hive_structures_limit[XENO_STRUCTURE_EGGMORPH] = 0 hive_structures_limit[XENO_STRUCTURE_EVOPOD] = 0 allies[FACTION_MARINE] = TRUE + allies[FACTION_WY] = TRUE + allies[FACTION_PMC] = TRUE /datum/hive_status/corrupted/renegade/faction_is_ally(faction, ignore_queen_check = TRUE) return ..() @@ -1298,7 +1300,9 @@ /datum/hive_status/corrupted/on_stance_change(faction) . = ..() - if(allies[faction] || faction != FACTION_MARINE) + if(allies[faction]) + return + if(!(faction in list(FACTION_MARINE, FACTION_WY, FACTION_PMC))) return for(var/mob/living/carbon/xenomorph/xeno in totalXenos) // handle defecting xenos on betrayal @@ -1325,13 +1329,8 @@ xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.iff_tag = null - /datum/hive_status/corrupted/proc/handle_renegades(faction) for(var/mob/living/carbon/xenomorph/xeno in totalXenos) - if(!xeno) - continue - if(xeno.stat == DEAD) - continue if(!xeno.iff_tag) continue if(xeno in renegades) @@ -1340,7 +1339,6 @@ continue xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.iff_tag = null - if(!length(renegades)) return From c16f4a29a0de59257684f302430c20d9dc92377e Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Tue, 25 Jul 2023 16:23:11 +0300 Subject: [PATCH 13/39] renegade iff --- code/__DEFINES/typecheck/xenos.dm | 4 ++ .../living/carbon/xenomorph/xeno_defines.dm | 43 +++++++++++++------ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/typecheck/xenos.dm b/code/__DEFINES/typecheck/xenos.dm index 4d1b7819bdf1..504a929a7f02 100644 --- a/code/__DEFINES/typecheck/xenos.dm +++ b/code/__DEFINES/typecheck/xenos.dm @@ -36,6 +36,10 @@ if(!hive) return FALSE + if(hivenumber == XENO_HIVE_RENEGADE) + var/datum/hive_status/corrupted/renegade/renegade_hive = hive + return renegade_hive.iff_protection_check(src, attempt_harm_mob) + return hive.is_ally(attempt_harm_mob) // need this to set the data for walls/eggs/huggers when they are initialized diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index a02a55509ab2..846167afcaf7 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1066,7 +1066,7 @@ need_round_end_check = TRUE - var/list/renegades = list() + var/list/defectors = list() /datum/hive_status/corrupted/add_xeno(mob/living/carbon/xenomorph/X) . = ..() @@ -1270,9 +1270,26 @@ . = ..() hive_structures_limit[XENO_STRUCTURE_EGGMORPH] = 0 hive_structures_limit[XENO_STRUCTURE_EVOPOD] = 0 - allies[FACTION_MARINE] = TRUE - allies[FACTION_WY] = TRUE - allies[FACTION_PMC] = TRUE + for(var/faction in FACTION_LIST_HUMANOID) //renegades allied to all humanoids, but it mostly affects structures. Their ability to attack humanoids and other xenos (including of the same hive) depends on iff settings + allies[faction] = TRUE + +/datum/hive_status/corrupted/renegade/proc/iff_protection_check(mob/living/carbon/xenomorph/xeno, mob/living/carbon/attempt_harm_mob) + if(xeno == attempt_harm_mob) + return TRUE //you cannot hurt yourself... + if(!xeno.iff_tag) + return FALSE //can attack anyone if you don't have iff tag + if(isxeno(attempt_harm_mob)) + var/mob/living/carbon/xenomorph/target_xeno = attempt_harm_mob + if(!target_xeno.iff_tag) + return FALSE //can attack any xeno who don't have iff tag + for(var/faction in xeno.iff_tag.faction_groups) + if(faction in target_xeno.iff_tag.faction_groups) + return TRUE //cannot attack xenos with same iff setting + return FALSE + for(var/faction in xeno.iff_tag.faction_groups) + if(faction in attempt_harm_mob.faction_group) + return TRUE //cannot attack mob if iff is set to at least one of its factions + return FALSE /datum/hive_status/corrupted/renegade/faction_is_ally(faction, ignore_queen_check = TRUE) return ..() @@ -1302,7 +1319,7 @@ . = ..() if(allies[faction]) return - if(!(faction in list(FACTION_MARINE, FACTION_WY, FACTION_PMC))) + if(!(faction in FACTION_LIST_HUMANOID)) return for(var/mob/living/carbon/xenomorph/xeno in totalXenos) // handle defecting xenos on betrayal @@ -1310,40 +1327,40 @@ continue if(!(faction in xeno.iff_tag.faction_groups)) continue - if(xeno in renegades) + if(xeno in defectors) continue if(xeno.caste_type == XENO_CASTE_QUEEN) continue INVOKE_ASYNC(src, PROC_REF(give_defection_choice), xeno, faction) - addtimer(CALLBACK(src, PROC_REF(handle_renegades), faction), 11 SECONDS) + addtimer(CALLBACK(src, PROC_REF(handle_defectors), faction), 11 SECONDS) /datum/hive_status/corrupted/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) if(tgui_alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") if(!xeno.iff_tag) to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to the Queen continues.")) return - renegades += xeno + defectors += xeno xeno.set_hive_and_update(XENO_HIVE_RENEGADE) to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) return xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.iff_tag = null -/datum/hive_status/corrupted/proc/handle_renegades(faction) +/datum/hive_status/corrupted/proc/handle_defectors(faction) for(var/mob/living/carbon/xenomorph/xeno in totalXenos) if(!xeno.iff_tag) continue - if(xeno in renegades) + if(xeno in defectors) continue if(!(faction in xeno.iff_tag.faction_groups)) continue xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.iff_tag = null - if(!length(renegades)) + if(!length(defectors)) return - xeno_message(SPAN_XENOANNOUNCE("You sense that [renegades.Join(", ")] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) - renegades = list() + xeno_message(SPAN_XENOANNOUNCE("You sense that [defectors.Join(", ")] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) + defectors = list() //Xeno Resin Mark Shit, the very best place for it too :0) //Defines at the bottom of this list here will show up at the top in the mark menu From 3f1addfac275f3807a7da52cea50663748d60095 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 01:14:05 +0300 Subject: [PATCH 14/39] More IFF stuff --- code/modules/mob/living/carbon/xenomorph/damage_procs.dm | 2 ++ code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm | 4 ++++ code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 5 +++++ code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm | 7 +++++++ 4 files changed, 18 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm index c26e38202200..41fc0dc06184 100644 --- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm @@ -29,6 +29,8 @@ user.put_in_hands(iff_tag) iff_tag = null user.visible_message(SPAN_NOTICE("[user] removes \the [src]'s IFF tag."), SPAN_NOTICE("You remove \the [src]'s IFF tag."), max_distance = 3) + if(src.hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade + to_chat(src, SPAN_NOTICE("Your IFF tag was removed. You can now attack anyone.")) return return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm b/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm index cde9cd072a95..8e59259da9b6 100644 --- a/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm +++ b/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm @@ -19,6 +19,8 @@ injector.visible_message(SPAN_NOTICE("[injector] forces \the [src] into [xeno]'s carapace!"), SPAN_NOTICE("You force \the [src] into [xeno]'s carapace!")) xeno.iff_tag = src injector.drop_inv_item_to_loc(src, xeno) + if(xeno.hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade + to_chat(xeno, SPAN_NOTICE("You got new IFF tag with following settings: [english_list(faction_groups, "None")]. You cannot attack creatures within these settings.")) return return ..() @@ -48,6 +50,8 @@ if("Remove") faction_groups = list() to_chat(programmer, SPAN_NOTICE("You [option] the IFF group data, the IFF group on the tag now reads as: [english_list(faction_groups, "None")]")) + if(xeno?.hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade + to_chat(xeno, SPAN_NOTICE("Your IFF tag settings were changed: [english_list(faction_groups, "None")]. You cannot attack creatures within these settings.")) return TRUE /obj/item/iff_tag/pmc_handler diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 846167afcaf7..5160c741af33 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1342,8 +1342,11 @@ defectors += xeno xeno.set_hive_and_update(XENO_HIVE_RENEGADE) to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) + to_chat(xeno, SPAN_NOTICE("Your IFF tag settings are: [english_list(xeno.iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) return xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) + xeno.adjustBruteLoss(50) + xeno.iff_tag.forceMove(get_turf(xeno)) xeno.iff_tag = null /datum/hive_status/corrupted/proc/handle_defectors(faction) @@ -1355,6 +1358,8 @@ if(!(faction in xeno.iff_tag.faction_groups)) continue xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) + xeno.adjustBruteLoss(50) + xeno.iff_tag.forceMove(get_turf(xeno)) xeno.iff_tag = null if(!length(defectors)) return diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm index 6b37145ad7a1..b68ddaa9dc59 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm @@ -29,6 +29,13 @@ to_chat(src, SPAN_WARNING("There is no Queen. You are alone.")) return + if(hive.hivenumber == XENO_HIVE_RENEGADE) //Renegade's ability to attack someone depends on IFF settings, not on alliance + if(!src.iff_tag) + to_chat(src, SPAN_NOTICE("You have no IFF tag. You can attack anyone.")) + return + to_chat(src, SPAN_NOTICE("Your IFF tag settings are: [english_list(src.iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) + return + if(interference) to_chat(src, SPAN_WARNING("A headhunter temporarily cut off your psychic connection!")) return From 38e46ee2ea51ede0b7fb72438a474874e05250b3 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 01:23:14 +0300 Subject: [PATCH 15/39] no facehuggers --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 5160c741af33..93ee952acbab 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1273,6 +1273,10 @@ for(var/faction in FACTION_LIST_HUMANOID) //renegades allied to all humanoids, but it mostly affects structures. Their ability to attack humanoids and other xenos (including of the same hive) depends on iff settings allies[faction] = TRUE +/datum/hive_status/corrupted/renegade/can_spawn_as_hugger(mob/dead/observer/user) + to_chat(user, SPAN_WARNING("The [name] cannot support facehuggers.")) + return FALSE + /datum/hive_status/corrupted/renegade/proc/iff_protection_check(mob/living/carbon/xenomorph/xeno, mob/living/carbon/attempt_harm_mob) if(xeno == attempt_harm_mob) return TRUE //you cannot hurt yourself... From 271586e2e5dd42477b33d27b50557823172a2ec1 Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 02:24:41 +0300 Subject: [PATCH 16/39] hivemind nerf --- code/game/gamemodes/colonialmarines/colonialmarines.dm | 2 ++ code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index 067201277e38..d351d0d424e3 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -211,6 +211,8 @@ if(!evolution_ovipositor_threshold && world.time >= SSticker.round_start_time + round_time_evolution_ovipositor) for(var/hivenumber in GLOB.hive_datum) + if(hivenumber == XENO_HIVE_RENEGADE) + continue //renegades can keep evolving w/o ovipositor hive = GLOB.hive_datum[hivenumber] hive.evolution_without_ovipositor = FALSE if(hive.living_xeno_queen && !hive.living_xeno_queen.ovipositor) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 05d81d92daa4..ec60a7c22e87 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -296,7 +296,7 @@ var/allow_no_queen_actions = FALSE var/evolution_without_ovipositor = TRUE //Temporary for the roundstart. - /// Set to true if you want to prevent evolutions into Queens + /// Set to false if you want to prevent evolutions into Queens var/allow_queen_evolve = TRUE /// Set to true if you want to prevent bursts and spawns of new xenos. Will also prevent healing if the queen no longer exists var/hardcore = FALSE @@ -1307,9 +1307,7 @@ ui_color ="#80705c" dynamic_evolution = FALSE - allow_no_queen_actions = TRUE allow_queen_evolve = FALSE - ignore_slots = TRUE latejoin_burrowed = FALSE /datum/hive_status/corrupted/renegade/New() From 918491e57fce7e1a491a09fba7d622438ce6fffb Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 02:27:42 +0300 Subject: [PATCH 17/39] eh --- code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm index b68ddaa9dc59..34aea1b70e37 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm @@ -25,10 +25,6 @@ if(!hive) return - if((!hive.living_xeno_queen || Check_WO()) && !hive.allow_no_queen_actions) //No Hive status on WO - to_chat(src, SPAN_WARNING("There is no Queen. You are alone.")) - return - if(hive.hivenumber == XENO_HIVE_RENEGADE) //Renegade's ability to attack someone depends on IFF settings, not on alliance if(!src.iff_tag) to_chat(src, SPAN_NOTICE("You have no IFF tag. You can attack anyone.")) @@ -36,6 +32,10 @@ to_chat(src, SPAN_NOTICE("Your IFF tag settings are: [english_list(src.iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) return + if((!hive.living_xeno_queen || Check_WO()) && !hive.allow_no_queen_actions) //No Hive status on WO + to_chat(src, SPAN_WARNING("There is no Queen. You are alone.")) + return + if(interference) to_chat(src, SPAN_WARNING("A headhunter temporarily cut off your psychic connection!")) return From 3f1b338dbc30448d83dac7a0e9330671977d89ea Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 02:44:39 +0300 Subject: [PATCH 18/39] new check --- code/game/gamemodes/colonialmarines/colonialmarines.dm | 2 -- code/modules/mob/living/carbon/xenomorph/Evolution.dm | 2 +- code/modules/mob/living/carbon/xenomorph/XenoProcs.dm | 2 +- code/modules/mob/living/carbon/xenomorph/life.dm | 2 +- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 6 ++++++ 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index d351d0d424e3..067201277e38 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -211,8 +211,6 @@ if(!evolution_ovipositor_threshold && world.time >= SSticker.round_start_time + round_time_evolution_ovipositor) for(var/hivenumber in GLOB.hive_datum) - if(hivenumber == XENO_HIVE_RENEGADE) - continue //renegades can keep evolving w/o ovipositor hive = GLOB.hive_datum[hivenumber] hive.evolution_without_ovipositor = FALSE if(hive.living_xeno_queen && !hive.living_xeno_queen.ovipositor) diff --git a/code/modules/mob/living/carbon/xenomorph/Evolution.dm b/code/modules/mob/living/carbon/xenomorph/Evolution.dm index 4806f7528582..d8767ffce87a 100644 --- a/code/modules/mob/living/carbon/xenomorph/Evolution.dm +++ b/code/modules/mob/living/carbon/xenomorph/Evolution.dm @@ -39,7 +39,7 @@ if(!evolve_checks()) return - if((!hive.living_xeno_queen) && castepick != XENO_CASTE_QUEEN && !islarva(src) && !hive.allow_no_queen_actions) + if((!hive.living_xeno_queen) && castepick != XENO_CASTE_QUEEN && !islarva(src) && !hive.allow_no_queen_evo) to_chat(src, SPAN_WARNING("The Hive is shaken by the death of the last Queen. You can't find the strength to evolve.")) return diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm index 09fdb42ad5c3..667367339698 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm @@ -71,7 +71,7 @@ if(caste && caste.evolution_allowed) evolve_progress = "[min(stored_evolution, evolution_threshold)]/[evolution_threshold]" - if(hive && !hive.allow_no_queen_actions && !caste?.evolve_without_queen) + if(hive && !hive.allow_no_queen_evo && !caste?.evolve_without_queen) if(!hive.living_xeno_queen) evolve_progress += " (NO QUEEN)" else if(!(hive.living_xeno_queen.ovipositor || hive.evolution_without_ovipositor)) diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index 842e3b45a76d..a0be2d2783a9 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -42,7 +42,7 @@ var/progress_amount = 1 if(SSxevolution) progress_amount = SSxevolution.get_evolution_boost_power(hive.hivenumber) - var/ovipositor_check = (hive.allow_no_queen_actions || hive.evolution_without_ovipositor || (hive.living_xeno_queen && hive.living_xeno_queen.ovipositor)) + var/ovipositor_check = (hive.allow_no_queen_evo || hive.evolution_without_ovipositor || (hive.living_xeno_queen && hive.living_xeno_queen.ovipositor)) if(caste && caste.evolution_allowed && (ovipositor_check || caste?.evolve_without_queen)) if(evolution_stored >= evolution_threshold) if(!got_evolution_message) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index ec60a7c22e87..71304c785885 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -295,6 +295,7 @@ var/evolution_bonus = 0 var/allow_no_queen_actions = FALSE + var/allow_no_queen_evo = FALSE var/evolution_without_ovipositor = TRUE //Temporary for the roundstart. /// Set to false if you want to prevent evolutions into Queens var/allow_queen_evolve = TRUE @@ -1183,6 +1184,7 @@ destruction_allowed = XENO_NOBODY dynamic_evolution = FALSE allow_no_queen_actions = TRUE + allow_no_queen_evo = TRUE allow_queen_evolve = FALSE ignore_slots = TRUE latejoin_burrowed = FALSE @@ -1197,6 +1199,7 @@ dynamic_evolution = FALSE allow_no_queen_actions = TRUE + allow_no_queen_evo = TRUE allow_queen_evolve = FALSE ignore_slots = TRUE latejoin_burrowed = FALSE @@ -1214,6 +1217,7 @@ dynamic_evolution = FALSE allow_no_queen_actions = TRUE + allow_no_queen_evo = TRUE allow_queen_evolve = FALSE ignore_slots = TRUE latejoin_burrowed = FALSE @@ -1243,6 +1247,7 @@ dynamic_evolution = FALSE allow_no_queen_actions = TRUE + allow_no_queen_evo = TRUE allow_queen_evolve = FALSE ignore_slots = TRUE latejoin_burrowed = FALSE @@ -1308,6 +1313,7 @@ dynamic_evolution = FALSE allow_queen_evolve = FALSE + allow_no_queen_evo = TRUE latejoin_burrowed = FALSE /datum/hive_status/corrupted/renegade/New() From d5568e035d8734daf11df1a575add094990dbe1e Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 04:09:47 +0300 Subject: [PATCH 19/39] heal off weeds --- .../living/carbon/xenomorph/XenoMutatorSets.dm | 1 - .../mob/living/carbon/xenomorph/Xenomorph.dm | 1 - .../mob/living/carbon/xenomorph/life.dm | 18 +++++++++--------- .../living/carbon/xenomorph/xeno_defines.dm | 10 ++++++---- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm b/code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm index 1af6eebcf9e7..b3a207bb5a3f 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm @@ -180,7 +180,6 @@ var/mob/living/carbon/xenomorph/xeno var/pull_multiplier = 1 var/egg_laying_multiplier = 1 - var/need_weeds = TRUE //Strains Below remaining_points = 6 diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index aea1ce9a5906..7c31029cd48e 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -960,7 +960,6 @@ if(iscarrier(src)) huggers_max = caste.huggers_max eggs_max = caste.eggs_max - need_weeds = mutators.need_weeds /mob/living/carbon/xenomorph/proc/recalculate_acid() diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index a0be2d2783a9..a9410108f0bd 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -334,11 +334,6 @@ Make sure their actual health updates immediately.*/ if(!T || !istype(T)) return - var/is_runner_hiding - - if(isrunner(src) && layer != initial(layer)) - is_runner_hiding = 1 - if(caste) if(caste.innate_healing || check_weeds_for_healing()) if(!hive) return // can't heal if you have no hive, sorry bud @@ -369,8 +364,15 @@ Make sure their actual health updates immediately.*/ if(armor_integrity > armor_integrity_max) armor_integrity = armor_integrity_max - else //Xenos restore plasma VERY slowly off weeds, regardless of health, as long as they are not using special abilities - if(prob(50) && !is_runner_hiding && !current_aura) + else + if(!need_weeds) //corrupted and renegades can heal off weeds, but slowly + if(lying || resting) + if(health < 0) //Unconscious + heal_wounds(caste.heal_knocked_out * regeneration_multiplier * 0.15, recoveryActual * 0.5) + else + heal_wounds(caste.heal_resting * regeneration_multiplier * 0.15, recoveryActual * 0.5) + plasma_stored += round(plasma_gain * plasma_max / 100 * recovery_aura/4 * 0.15) + else if(prob(50) && !current_aura) //Xenos restore plasma VERY slowly off weeds, regardless of health, as long as they are not using special abilities plasma_stored += 0.1 * plasma_max / 100 @@ -604,8 +606,6 @@ Make sure their actual health updates immediately.*/ if(W && W.linked_hive.is_ally(src)) return TRUE //weeds, yes! - if(need_weeds) - return FALSE //needs weeds, doesn't have any if(hive && hive.living_xeno_queen && !is_mainship_level(hive.living_xeno_queen.loc.z) && is_mainship_level(loc.z)) return FALSE //We are on the ship, but the Queen isn't return TRUE //we have off-weed healing, and either we're on Almayer with the Queen, or we're on non-Almayer, or the Queen is dead, good enough! diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 71304c785885..c3ad51d46a53 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1115,13 +1115,15 @@ var/list/defectors = list() -/datum/hive_status/corrupted/add_xeno(mob/living/carbon/xenomorph/X) +/datum/hive_status/corrupted/add_xeno(mob/living/carbon/xenomorph/xeno) . = ..() - X.add_language(LANGUAGE_ENGLISH) + xeno.add_language(LANGUAGE_ENGLISH) + xeno.need_weeds = FALSE -/datum/hive_status/corrupted/remove_xeno(mob/living/carbon/xenomorph/X, hard) +/datum/hive_status/corrupted/remove_xeno(mob/living/carbon/xenomorph/xeno, hard) . = ..() - X.remove_language(LANGUAGE_ENGLISH) + xeno.remove_language(LANGUAGE_ENGLISH) + xeno.need_weeds = FALSE /datum/hive_status/corrupted/can_delay_round_end(mob/living/carbon/xenomorph/xeno) if(!faction_is_ally(FACTION_MARINE, TRUE)) From 1b175ff01d0f80ea3759ee97580cb2354e14561a Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 04:45:33 +0300 Subject: [PATCH 20/39] fx --- .../mob/living/carbon/xenomorph/life.dm | 18 ++++++++---------- .../living/carbon/xenomorph/xeno_defines.dm | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index a9410108f0bd..b079b247fc0c 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -364,16 +364,14 @@ Make sure their actual health updates immediately.*/ if(armor_integrity > armor_integrity_max) armor_integrity = armor_integrity_max - else - if(!need_weeds) //corrupted and renegades can heal off weeds, but slowly - if(lying || resting) - if(health < 0) //Unconscious - heal_wounds(caste.heal_knocked_out * regeneration_multiplier * 0.15, recoveryActual * 0.5) - else - heal_wounds(caste.heal_resting * regeneration_multiplier * 0.15, recoveryActual * 0.5) - plasma_stored += round(plasma_gain * plasma_max / 100 * recovery_aura/4 * 0.15) - else if(prob(50) && !current_aura) //Xenos restore plasma VERY slowly off weeds, regardless of health, as long as they are not using special abilities - plasma_stored += 0.1 * plasma_max / 100 + else if(!need_weeds && (lying || resting)) //corrupted and renegades can heal off weeds, but slowly + if(health < 0) //Unconscious + heal_wounds(caste.heal_knocked_out * regeneration_multiplier * 0.15, recoveryActual * 0.5) + else + heal_wounds(caste.heal_resting * regeneration_multiplier * 0.15, recoveryActual * 0.5) + plasma_stored += round(plasma_gain * plasma_max / 100 * recovery_aura/4 * 0.15) + else if(prob(50) && !current_aura) //Xenos restore plasma VERY slowly off weeds, regardless of health, as long as they are not using special abilities + plasma_stored += 0.1 * plasma_max / 100 for(var/datum/action/xeno_action/action in src.actions) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index c3ad51d46a53..8c2aae04654d 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1123,7 +1123,7 @@ /datum/hive_status/corrupted/remove_xeno(mob/living/carbon/xenomorph/xeno, hard) . = ..() xeno.remove_language(LANGUAGE_ENGLISH) - xeno.need_weeds = FALSE + xeno.need_weeds = TRUE /datum/hive_status/corrupted/can_delay_round_end(mob/living/carbon/xenomorph/xeno) if(!faction_is_ally(FACTION_MARINE, TRUE)) From 947dd1e8bdc14199d5863f3307ba7ffcc176e96d Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 05:36:58 +0300 Subject: [PATCH 21/39] no heal off weeds --- code/modules/mob/living/carbon/xenomorph/life.dm | 6 ------ code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 -- 2 files changed, 8 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index b079b247fc0c..96ffb51ce33a 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -364,12 +364,6 @@ Make sure their actual health updates immediately.*/ if(armor_integrity > armor_integrity_max) armor_integrity = armor_integrity_max - else if(!need_weeds && (lying || resting)) //corrupted and renegades can heal off weeds, but slowly - if(health < 0) //Unconscious - heal_wounds(caste.heal_knocked_out * regeneration_multiplier * 0.15, recoveryActual * 0.5) - else - heal_wounds(caste.heal_resting * regeneration_multiplier * 0.15, recoveryActual * 0.5) - plasma_stored += round(plasma_gain * plasma_max / 100 * recovery_aura/4 * 0.15) else if(prob(50) && !current_aura) //Xenos restore plasma VERY slowly off weeds, regardless of health, as long as they are not using special abilities plasma_stored += 0.1 * plasma_max / 100 diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 8c2aae04654d..2098501e5254 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1118,12 +1118,10 @@ /datum/hive_status/corrupted/add_xeno(mob/living/carbon/xenomorph/xeno) . = ..() xeno.add_language(LANGUAGE_ENGLISH) - xeno.need_weeds = FALSE /datum/hive_status/corrupted/remove_xeno(mob/living/carbon/xenomorph/xeno, hard) . = ..() xeno.remove_language(LANGUAGE_ENGLISH) - xeno.need_weeds = TRUE /datum/hive_status/corrupted/can_delay_round_end(mob/living/carbon/xenomorph/xeno) if(!faction_is_ally(FACTION_MARINE, TRUE)) From 4c51ba09dd8719fe0dfd1782aac702db30bdd77d Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Wed, 26 Jul 2023 13:13:06 +0300 Subject: [PATCH 22/39] revert oops --- code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm | 1 + code/modules/mob/living/carbon/xenomorph/Xenomorph.dm | 1 + code/modules/mob/living/carbon/xenomorph/life.dm | 2 ++ 3 files changed, 4 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm b/code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm index b3a207bb5a3f..1af6eebcf9e7 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoMutatorSets.dm @@ -180,6 +180,7 @@ var/mob/living/carbon/xenomorph/xeno var/pull_multiplier = 1 var/egg_laying_multiplier = 1 + var/need_weeds = TRUE //Strains Below remaining_points = 6 diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 7c31029cd48e..aea1ce9a5906 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -960,6 +960,7 @@ if(iscarrier(src)) huggers_max = caste.huggers_max eggs_max = caste.eggs_max + need_weeds = mutators.need_weeds /mob/living/carbon/xenomorph/proc/recalculate_acid() diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index 96ffb51ce33a..6f9a667642e3 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -598,6 +598,8 @@ Make sure their actual health updates immediately.*/ if(W && W.linked_hive.is_ally(src)) return TRUE //weeds, yes! + if(need_weeds) + return FALSE //needs weeds, doesn't have any if(hive && hive.living_xeno_queen && !is_mainship_level(hive.living_xeno_queen.loc.z) && is_mainship_level(loc.z)) return FALSE //We are on the ship, but the Queen isn't return TRUE //we have off-weed healing, and either we're on Almayer with the Queen, or we're on non-Almayer, or the Queen is dead, good enough! From 6d0ed5c3b767bdd924aa4560f01993db5fe5e740 Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:40:39 +0300 Subject: [PATCH 23/39] Update code/modules/mob/living/carbon/xenomorph/damage_procs.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/damage_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm index 41fc0dc06184..318fdc86b2dc 100644 --- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm @@ -29,7 +29,7 @@ user.put_in_hands(iff_tag) iff_tag = null user.visible_message(SPAN_NOTICE("[user] removes \the [src]'s IFF tag."), SPAN_NOTICE("You remove \the [src]'s IFF tag."), max_distance = 3) - if(src.hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade + if(hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade to_chat(src, SPAN_NOTICE("Your IFF tag was removed. You can now attack anyone.")) return return ..() From defa311273c68742f86db7fafa367b17a2aa3a01 Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:40:47 +0300 Subject: [PATCH 24/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 2098501e5254..3b2f348fc388 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1398,7 +1398,7 @@ to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) to_chat(xeno, SPAN_NOTICE("Your IFF tag settings are: [english_list(xeno.iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) return - xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) + xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.adjustBruteLoss(50) xeno.iff_tag.forceMove(get_turf(xeno)) xeno.iff_tag = null From 35a3d2cdb918b80138c27cc249ff6ea6e022af5e Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:40:53 +0300 Subject: [PATCH 25/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 3b2f348fc388..da9b21e85591 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1411,7 +1411,7 @@ continue if(!(faction in xeno.iff_tag.faction_groups)) continue - xeno.visible_message(SPAN_XENOWARNING("\The [xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) + xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) xeno.adjustBruteLoss(50) xeno.iff_tag.forceMove(get_turf(xeno)) xeno.iff_tag = null From 58e72b011a5279112b64370c5d8df16b370a16a7 Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:41:08 +0300 Subject: [PATCH 26/39] Update code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm index 34aea1b70e37..cd42f3323a31 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm @@ -29,7 +29,7 @@ if(!src.iff_tag) to_chat(src, SPAN_NOTICE("You have no IFF tag. You can attack anyone.")) return - to_chat(src, SPAN_NOTICE("Your IFF tag settings are: [english_list(src.iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) + to_chat(src, SPAN_NOTICE("Your IFF tag settings are: [english_list(iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) return if((!hive.living_xeno_queen || Check_WO()) && !hive.allow_no_queen_actions) //No Hive status on WO From df3d75f07b3588f321c051ac94b82a5f966accc3 Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:41:15 +0300 Subject: [PATCH 27/39] Update code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm index cd42f3323a31..ec7281dce5a5 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm @@ -26,7 +26,7 @@ return if(hive.hivenumber == XENO_HIVE_RENEGADE) //Renegade's ability to attack someone depends on IFF settings, not on alliance - if(!src.iff_tag) + if(!iff_tag) to_chat(src, SPAN_NOTICE("You have no IFF tag. You can attack anyone.")) return to_chat(src, SPAN_NOTICE("Your IFF tag settings are: [english_list(iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) From c86c4aedbe687f12805a2f45a229b25a75913c5d Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:41:20 +0300 Subject: [PATCH 28/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index da9b21e85591..8a799a872c2e 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1419,7 +1419,7 @@ return xeno_message(SPAN_XENOANNOUNCE("You sense that [defectors.Join(", ")] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) - defectors = list() + defectors.Cut() //Xeno Resin Mark Shit, the very best place for it too :0) //Defines at the bottom of this list here will show up at the top in the mark menu From 0e991d480f1c7190f31544e29b5d1644128b0840 Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Thu, 27 Jul 2023 19:11:13 +0300 Subject: [PATCH 29/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 8a799a872c2e..6e7f174fb248 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1365,9 +1365,8 @@ if(allies[faction]) xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen set up alliance with us!"), 3, target_hive.hivenumber) return - else - xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen broke alliance with us!"), 3, target_hive.hivenumber) - return + + xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen broke alliance with us!"), 3, target_hive.hivenumber) /datum/hive_status/corrupted/on_stance_change(faction) . = ..() From ff20304b91bd1d8c9aad6db6bd4953216f1ead7c Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 28 Jul 2023 10:31:32 +0300 Subject: [PATCH 30/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 6e7f174fb248..7307d5ebfb19 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1352,9 +1352,9 @@ if(!living_xeno_queen) return if(allies[faction]) - xeno_message(SPAN_XENOANNOUNCE("Your Queen set up alliance with [faction]!"), 3, hivenumber) + xeno_message(SPAN_XENOANNOUNCE("Your Queen set up an alliance with [faction]!"), 3, hivenumber) else - xeno_message(SPAN_XENOANNOUNCE("Your Queen broke alliance with [faction]!"), 3, hivenumber) + xeno_message(SPAN_XENOANNOUNCE("Your Queen broke the alliance with [faction]!"), 3, hivenumber) for(var/number in GLOB.hive_datum) var/datum/hive_status/target_hive = GLOB.hive_datum[number] From 982352be9eb7c6eea08fa901b4c8fa070ab88836 Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 28 Jul 2023 10:31:49 +0300 Subject: [PATCH 31/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 7307d5ebfb19..2cf592297d4d 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1363,10 +1363,10 @@ if(!target_hive.living_xeno_queen && !target_hive.allow_no_queen_actions) return if(allies[faction]) - xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen set up alliance with us!"), 3, target_hive.hivenumber) + xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen set up an alliance with us!"), 3, target_hive.hivenumber) return - xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen broke alliance with us!"), 3, target_hive.hivenumber) + xeno_message(SPAN_XENOANNOUNCE("You sense that [name] Queen broke the alliance with us!"), 3, target_hive.hivenumber) /datum/hive_status/corrupted/on_stance_change(faction) . = ..() From 0a90371df3e7382c08f11678f3088745de56b786 Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 28 Jul 2023 10:32:02 +0300 Subject: [PATCH 32/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 2cf592297d4d..d0ea0be20d88 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1388,7 +1388,7 @@ addtimer(CALLBACK(src, PROC_REF(handle_defectors), faction), 11 SECONDS) /datum/hive_status/corrupted/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) - if(tgui_alert(xeno, "Your Queen has broken alliance with [faction]. Your IFF tag begins to suppress your connection with the hive. Do you wish to remove the tag and stay with Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") + if(tgui_alert(xeno, "Your Queen has broken the alliance with [faction]. Your IFF tag begins to suppress your connection with the Hive. Do you wish to remove the tag and stay with your Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with the Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") if(!xeno.iff_tag) to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to the Queen continues.")) return From 98ff8ce8b9cb82cb1b880a94f68b6d455b42925a Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 28 Jul 2023 10:32:09 +0300 Subject: [PATCH 33/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index d0ea0be20d88..a47837f9039a 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1394,7 +1394,7 @@ return defectors += xeno xeno.set_hive_and_update(XENO_HIVE_RENEGADE) - to_chat(xeno, SPAN_XENOANNOUNCE("You lost connection with your hive. Now there is no Queen, only masters.")) + to_chat(xeno, SPAN_XENOANNOUNCE("You lost the connection with your Hive. Now you have no Queen, only your masters.")) to_chat(xeno, SPAN_NOTICE("Your IFF tag settings are: [english_list(xeno.iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) return xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) From 6d44221d73838ecf2cf074974d48b154ddd476ed Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 28 Jul 2023 10:32:16 +0300 Subject: [PATCH 34/39] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index a47837f9039a..a8a63ddb4764 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1397,7 +1397,7 @@ to_chat(xeno, SPAN_XENOANNOUNCE("You lost the connection with your Hive. Now you have no Queen, only your masters.")) to_chat(xeno, SPAN_NOTICE("Your IFF tag settings are: [english_list(xeno.iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) return - xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the hive!")) + xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the Hive!")) xeno.adjustBruteLoss(50) xeno.iff_tag.forceMove(get_turf(xeno)) xeno.iff_tag = null From ef631bc7fc4a8d5211cc267c4fc7f1fb0eea588c Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Fri, 28 Jul 2023 11:39:57 +0300 Subject: [PATCH 35/39] +hrp --- code/modules/mob/living/carbon/xenomorph/damage_procs.dm | 2 +- code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm | 2 +- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 8 ++++---- code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm index 318fdc86b2dc..51ceee153368 100644 --- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm @@ -30,7 +30,7 @@ iff_tag = null user.visible_message(SPAN_NOTICE("[user] removes \the [src]'s IFF tag."), SPAN_NOTICE("You remove \the [src]'s IFF tag."), max_distance = 3) if(hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade - to_chat(src, SPAN_NOTICE("Your IFF tag was removed. You can now attack anyone.")) + to_chat(src, SPAN_NOTICE("With the removal of the device, your instincts have returned to normal.")) return return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm b/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm index 8e59259da9b6..26afdcfdfed1 100644 --- a/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm +++ b/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm @@ -51,7 +51,7 @@ faction_groups = list() to_chat(programmer, SPAN_NOTICE("You [option] the IFF group data, the IFF group on the tag now reads as: [english_list(faction_groups, "None")]")) if(xeno?.hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade - to_chat(xeno, SPAN_NOTICE("Your IFF tag settings were changed: [english_list(faction_groups, "None")]. You cannot attack creatures within these settings.")) + to_chat(xeno, SPAN_NOTICE("Your instincts have changed, you seem compelled to protect [english_list(faction_groups, "no one")].")) return TRUE /obj/item/iff_tag/pmc_handler diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index a8a63ddb4764..e1ff151bc6dd 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1388,14 +1388,14 @@ addtimer(CALLBACK(src, PROC_REF(handle_defectors), faction), 11 SECONDS) /datum/hive_status/corrupted/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) - if(tgui_alert(xeno, "Your Queen has broken the alliance with [faction]. Your IFF tag begins to suppress your connection with the Hive. Do you wish to remove the tag and stay with your Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with the Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") + if(tgui_alert(xeno, "Your Queen has broken the alliance with [faction]. The talls made device inside your carapace begins to suppress your connection with the Hive. Do you wish to remove the tag and stay with your Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with the Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") if(!xeno.iff_tag) - to_chat(xeno, SPAN_XENOWARNING("It's too late now. Your IFF tag is broken and your service to the Queen continues.")) + to_chat(xeno, SPAN_XENOWARNING("It's too late now. The device is gone and your service to the Queen continues.")) return defectors += xeno xeno.set_hive_and_update(XENO_HIVE_RENEGADE) to_chat(xeno, SPAN_XENOANNOUNCE("You lost the connection with your Hive. Now you have no Queen, only your masters.")) - to_chat(xeno, SPAN_NOTICE("Your IFF tag settings are: [english_list(xeno.iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) + to_chat(xeno, SPAN_NOTICE("Your instincts have changed, you seem compelled to protect [english_list(faction_groups, "no one")].")) return xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the Hive!")) xeno.adjustBruteLoss(50) @@ -1417,7 +1417,7 @@ if(!length(defectors)) return - xeno_message(SPAN_XENOANNOUNCE("You sense that [defectors.Join(", ")] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) + xeno_message(SPAN_XENOANNOUNCE("You sense that [english_list(defectors)] turned their backs against their sisters and the Queen in favor of their slavemasters!"), 3, hivenumber) defectors.Cut() //Xeno Resin Mark Shit, the very best place for it too :0) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm index ec7281dce5a5..69c6833c614c 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm @@ -27,9 +27,9 @@ if(hive.hivenumber == XENO_HIVE_RENEGADE) //Renegade's ability to attack someone depends on IFF settings, not on alliance if(!iff_tag) - to_chat(src, SPAN_NOTICE("You have no IFF tag. You can attack anyone.")) + to_chat(src, SPAN_NOTICE("You are not oblidged to protect anyone.")) return - to_chat(src, SPAN_NOTICE("Your IFF tag settings are: [english_list(iff_tag.faction_groups, "None")]. You cannot attack creatures within these settings.")) + to_chat(src, SPAN_NOTICE("You seem compelled to protect [english_list(faction_groups, "no one")].")) return if((!hive.living_xeno_queen || Check_WO()) && !hive.allow_no_queen_actions) //No Hive status on WO From 3917a3ad8b12da8fdb9c2b24513b09d37f942c9a Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Fri, 28 Jul 2023 11:42:07 +0300 Subject: [PATCH 36/39] ++hrp --- code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm b/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm index 26afdcfdfed1..00571b5227d0 100644 --- a/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm +++ b/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm @@ -20,7 +20,7 @@ xeno.iff_tag = src injector.drop_inv_item_to_loc(src, xeno) if(xeno.hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade - to_chat(xeno, SPAN_NOTICE("You got new IFF tag with following settings: [english_list(faction_groups, "None")]. You cannot attack creatures within these settings.")) + to_chat(xeno, SPAN_NOTICE("With the insertion of the device inside your carapace your instincts have changed, you seem compelled to protect [english_list(faction_groups, "no one")].")) return return ..() From 6ef551d775744dac3f1978f3fcf0301f623be94e Mon Sep 17 00:00:00 2001 From: ihatethisengine Date: Fri, 28 Jul 2023 11:46:01 +0300 Subject: [PATCH 37/39] fixes --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index e1ff151bc6dd..1d44ac398fb7 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1395,7 +1395,7 @@ defectors += xeno xeno.set_hive_and_update(XENO_HIVE_RENEGADE) to_chat(xeno, SPAN_XENOANNOUNCE("You lost the connection with your Hive. Now you have no Queen, only your masters.")) - to_chat(xeno, SPAN_NOTICE("Your instincts have changed, you seem compelled to protect [english_list(faction_groups, "no one")].")) + to_chat(xeno, SPAN_NOTICE("Your instincts have changed, you seem compelled to protect [english_list(xeno.iff_tag.faction_groups, "no one")].")) return xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the Hive!")) xeno.adjustBruteLoss(50) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm index 69c6833c614c..972de482593f 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm @@ -29,7 +29,7 @@ if(!iff_tag) to_chat(src, SPAN_NOTICE("You are not oblidged to protect anyone.")) return - to_chat(src, SPAN_NOTICE("You seem compelled to protect [english_list(faction_groups, "no one")].")) + to_chat(src, SPAN_NOTICE("You seem compelled to protect [english_list(iff_tag.faction_groups, "no one")].")) return if((!hive.living_xeno_queen || Check_WO()) && !hive.allow_no_queen_actions) //No Hive status on WO From cf36f2e43e9d640c499467bed2c72d6f84f4c2cb Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 28 Jul 2023 12:24:11 +0300 Subject: [PATCH 38/39] Apply suggestions from code review Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm | 2 +- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm b/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm index 00571b5227d0..4c63fc2b5923 100644 --- a/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm +++ b/code/modules/mob/living/carbon/xenomorph/items/iff_tag.dm @@ -20,7 +20,7 @@ xeno.iff_tag = src injector.drop_inv_item_to_loc(src, xeno) if(xeno.hive.hivenumber == XENO_HIVE_RENEGADE) //it's important to know their IFF settings for renegade - to_chat(xeno, SPAN_NOTICE("With the insertion of the device inside your carapace your instincts have changed, you seem compelled to protect [english_list(faction_groups, "no one")].")) + to_chat(xeno, SPAN_NOTICE("With the insertion of the device into your carapace, your instincts have changed compelling you to protect [english_list(faction_groups, "no one")].")) return return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 1d44ac398fb7..6888c8b7b6ee 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1388,7 +1388,7 @@ addtimer(CALLBACK(src, PROC_REF(handle_defectors), faction), 11 SECONDS) /datum/hive_status/corrupted/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) - if(tgui_alert(xeno, "Your Queen has broken the alliance with [faction]. The talls made device inside your carapace begins to suppress your connection with the Hive. Do you wish to remove the tag and stay with your Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with the Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") + if(tgui_alert(xeno, "Your Queen has broken the alliance with [faction]. The device inside your carapace begins to suppress your connection with the Hive. Do you wish to remove the tag and stay with your Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with the Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") if(!xeno.iff_tag) to_chat(xeno, SPAN_XENOWARNING("It's too late now. The device is gone and your service to the Queen continues.")) return diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm index 972de482593f..583d26de3ee5 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_verbs.dm @@ -27,7 +27,7 @@ if(hive.hivenumber == XENO_HIVE_RENEGADE) //Renegade's ability to attack someone depends on IFF settings, not on alliance if(!iff_tag) - to_chat(src, SPAN_NOTICE("You are not oblidged to protect anyone.")) + to_chat(src, SPAN_NOTICE("You are not obligated to protect anyone.")) return to_chat(src, SPAN_NOTICE("You seem compelled to protect [english_list(iff_tag.faction_groups, "no one")].")) return From c706241527509a9644aa82da607861e58c663b1c Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 28 Jul 2023 13:33:00 +0300 Subject: [PATCH 39/39] Apply suggestions from code review Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 6888c8b7b6ee..bb58d2cf2a03 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -1388,7 +1388,7 @@ addtimer(CALLBACK(src, PROC_REF(handle_defectors), faction), 11 SECONDS) /datum/hive_status/corrupted/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) - if(tgui_alert(xeno, "Your Queen has broken the alliance with [faction]. The device inside your carapace begins to suppress your connection with the Hive. Do you wish to remove the tag and stay with your Queen or do you wish to stay loyal to your new masters? You have 10 seconds to decide.", "Choose", list("Stay with the Queen", "Stay with your masters"), 10 SECONDS) == "Stay with your masters") + if(tgui_alert(xeno, "Your Queen has broken the alliance with the [faction]. The device inside your carapace begins to suppress your connection with the Hive. Do you remove it and stay loyal to her?", "Alliance broken!", list("Stay loyal", "Obey the talls"), 10 SECONDS) == "Obey the talls") if(!xeno.iff_tag) to_chat(xeno, SPAN_XENOWARNING("It's too late now. The device is gone and your service to the Queen continues.")) return