From f0b883a298698e58e8a25f88c0ce15542e689fbe Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 29 Jun 2024 07:03:16 +0200 Subject: [PATCH] [MIRROR] Ashwalkers now start out in their proper faction; Lavaland mobs also have this if ashwalkers don't attack them (#28430) * Ashwalkers now start out in their proper faction; Lavaland mobs also have this if ashwalkers don't attack them * Update ashwalker.dm --------- Co-authored-by: Joshua Kidder <49173900+Metekillot@users.noreply.github.com> Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com> --- .../objects/structures/lavaland/necropolis_tendril.dm | 2 +- code/modules/antagonists/ashwalker/ashwalker.dm | 4 ++++ code/modules/mob/living/basic/lavaland/mining.dm | 10 +++++++++- .../living/carbon/human/species_types/lizardpeople.dm | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm index 58308b9b9cf..2ede6833aa9 100644 --- a/code/game/objects/structures/lavaland/necropolis_tendril.dm +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -6,7 +6,7 @@ icon = 'icons/mob/simple/lavaland/nest.dmi' icon_state = "tendril" - faction = list(FACTION_MINING) + faction = list(FACTION_MINING, FACTION_ASHWALKER) max_mobs = 3 max_integrity = 250 mob_types = list(/mob/living/basic/mining/watcher) diff --git a/code/modules/antagonists/ashwalker/ashwalker.dm b/code/modules/antagonists/ashwalker/ashwalker.dm index b596802b414..eeba85982cd 100644 --- a/code/modules/antagonists/ashwalker/ashwalker.dm +++ b/code/modules/antagonists/ashwalker/ashwalker.dm @@ -28,10 +28,14 @@ . = ..() RegisterSignal(owner.current, COMSIG_MOB_EXAMINATE, PROC_REF(on_examinate)) //owner.teach_crafting_recipe(/datum/crafting_recipe/skeleton_key) //SKYRAT EDIT REMOVAL - ASH RITUALS + if(FACTION_NEUTRAL in owner.current.faction) + owner.current.faction.Remove(FACTION_NEUTRAL) // ashwalkers aren't neutral; they're ashwalker-aligned /datum/antagonist/ashwalker/on_removal() . = ..() UnregisterSignal(owner.current, COMSIG_MOB_EXAMINATE) + if(!(FACTION_NEUTRAL in owner.current.faction)) + owner.current.faction.Add(FACTION_NEUTRAL) /datum/antagonist/ashwalker/proc/on_examinate(datum/source, atom/A) SIGNAL_HANDLER diff --git a/code/modules/mob/living/basic/lavaland/mining.dm b/code/modules/mob/living/basic/lavaland/mining.dm index 3bcdd1ceaa6..38591dfb39c 100644 --- a/code/modules/mob/living/basic/lavaland/mining.dm +++ b/code/modules/mob/living/basic/lavaland/mining.dm @@ -5,7 +5,7 @@ status_flags = NONE //don't inherit standard basicmob flags mob_size = MOB_SIZE_LARGE mob_biotypes = MOB_ORGANIC|MOB_BEAST - faction = list(FACTION_MINING) + faction = list(FACTION_MINING, FACTION_ASHWALKER) unsuitable_atmos_damage = 0 minimum_survivable_temperature = 0 maximum_survivable_temperature = INFINITY @@ -42,3 +42,11 @@ drop_mod = crusher_drop_chance,\ drop_immediately = basic_mob_flags & DEL_ON_DEATH,\ ) + RegisterSignal(src, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(check_ashwalker_peace_violation)) + +/mob/living/basic/mining/proc/check_ashwalker_peace_violation(datum/source, mob/living/carbon/human/possible_ashwalker) + SIGNAL_HANDLER + + if(!isashwalker(possible_ashwalker) || !(FACTION_ASHWALKER in faction)) + return + faction.Remove(FACTION_ASHWALKER) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 673f4d257f3..2a13653bf6b 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -161,6 +161,7 @@ Lizard subspecies: ASHWALKERS TRAIT_MUTANT_COLORS, TRAIT_VIRUSIMMUNE, ) + inherent_factions = list(FACTION_ASHWALKER) species_language_holder = /datum/language_holder/lizard/ash digitigrade_customization = DIGITIGRADE_FORCED examine_limb_id = SPECIES_LIZARD