From 421a290c4e74d7722680d83760d66a6f961bf67a Mon Sep 17 00:00:00 2001 From: Unknownity Date: Wed, 5 Jul 2023 22:16:33 +0200 Subject: [PATCH] Burrower changes n Fixes atomization --- code/__DEFINES/traits.dm | 5 +++- code/game/objects/items/explosives/mine.dm | 2 ++ code/modules/defenses/sentry.dm | 2 +- .../living/carbon/xenomorph/XenoAttacks.dm | 3 +++ .../mob/living/carbon/xenomorph/Xenomorph.dm | 2 ++ .../abilities/burrower/burrower_powers.dm | 25 +++++++++++++----- code/modules/mob/living/living_verbs.dm | 6 +++++ sound/effects/burrowing_b.ogg | Bin 0 -> 8146 bytes sound/effects/burrowoff.ogg | Bin 0 -> 10718 bytes 9 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 sound/effects/burrowing_b.ogg create mode 100644 sound/effects/burrowoff.ogg diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index dd700ccde996..ce17cf05f021 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -179,6 +179,8 @@ #define TRAIT_ABILITY_NO_PLASMA_TRANSFER "t_ability_no_plasma_transfer" /// Shows that the xeno queen is on ovi #define TRAIT_ABILITY_OVIPOSITOR "t_ability_ovipositor" +/// Used for burrowed mobs, prevent's SG/sentrys/claymores from autofiring +#define TRAIT_ABILITY_BURROWED "t_ability_burrowed" //-- item traits -- // TOOL TRAITS @@ -231,7 +233,8 @@ GLOBAL_LIST_INIT(mob_traits, list( TRAIT_TWOBORE_TRAINING, TRAIT_LEADERSHIP, TRAIT_DEXTROUS, - TRAIT_REAGENT_SCANNER + TRAIT_REAGENT_SCANNER, + TRAIT_ABILITY_BURROWED )) /* diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index 6b8c9bccd299..742a5f314c4a 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -198,6 +198,8 @@ return if(L.get_target_lock(iff_signal) || isrobot(L)) return + if(HAS_TRAIT(L, TRAIT_ABILITY_BURROWED)) + return L.visible_message(SPAN_DANGER("[icon2html(src, viewers(src))] The [name] clicks as [L] moves in front of it."), \ SPAN_DANGER("[icon2html(src, L)] The [name] clicks as you move in front of it."), \ SPAN_DANGER("You hear a click.")) diff --git a/code/modules/defenses/sentry.dm b/code/modules/defenses/sentry.dm index 946c347efaa0..fc52c254c0b8 100644 --- a/code/modules/defenses/sentry.dm +++ b/code/modules/defenses/sentry.dm @@ -370,7 +370,7 @@ targets.Remove(A) continue - if(M.get_target_lock(faction_group) || M.invisibility) + if(M.get_target_lock(faction_group) || M.invisibility || HAS_TRAIT(M, TRAIT_ABILITY_BURROWED)) if(M == target) target = null targets.Remove(M) diff --git a/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm b/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm index be772e3a0a4f..b12ff5d6c3bb 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm @@ -93,6 +93,9 @@ if (M.fortify || M.burrow) return XENO_NO_DELAY_ACTION + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) + return XENO_NO_DELAY_ACTION + if(islarva(M)) //Larvas can't eat people M.visible_message(SPAN_DANGER("[M] nudges its head against \the [src]."), \ SPAN_DANGER("You nudge your head against \the [src]."), null, null, CHAT_TYPE_XENO_FLUFF) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index f1d03d6507b1..40d38c24085a 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -745,6 +745,8 @@ if(SEND_SIGNAL(AM, COMSIG_MOVABLE_XENO_START_PULLING, src) & COMPONENT_ALLOW_PULL) return do_pull(AM, lunge, no_msg) + if(burrow) + return if(!isliving(AM)) return FALSE var/mob/living/L = AM diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm index 4f104c00f92e..4d3aae33ae9c 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm @@ -42,7 +42,12 @@ density = FALSE if(caste.fire_immunity == FIRE_IMMUNITY_NONE) RegisterSignal(src, COMSIG_LIVING_PREIGNITION, PROC_REF(fire_immune)) - RegisterSignal(src, COMSIG_LIVING_FLAMER_CROSSED, PROC_REF(flamer_crossed_immune)) + RegisterSignal(src, list( + COMSIG_LIVING_FLAMER_CROSSED, + COMSIG_LIVING_FLAMER_FLAMED, + ), PROC_REF(flamer_crossed_immune)) + ADD_TRAIT(src, TRAIT_ABILITY_BURROWED, TRAIT_SOURCE_ABILITY("Burrow")) + playsound(src.loc, 'sound/effects/burrowing_b.ogg', 25) update_canmove() update_icons() addtimer(CALLBACK(src, PROC_REF(do_burrow_cooldown)), (caste ? caste.burrow_cooldown : 5 SECONDS)) @@ -65,21 +70,29 @@ to_chat(src, SPAN_NOTICE("You resurface.")) burrow = FALSE if(caste.fire_immunity == FIRE_IMMUNITY_NONE) - UnregisterSignal(src, COMSIG_LIVING_PREIGNITION) - UnregisterSignal(src, COMSIG_LIVING_FLAMER_CROSSED) + UnregisterSignal(src, list( + COMSIG_LIVING_PREIGNITION, + COMSIG_LIVING_FLAMER_CROSSED, + COMSIG_LIVING_FLAMER_FLAMED, + )) + REMOVE_TRAIT(src, TRAIT_ABILITY_BURROWED, TRAIT_SOURCE_ABILITY("Burrow")) frozen = FALSE invisibility = FALSE anchored = FALSE density = TRUE - for(var/mob/living/carbon/human/H in loc) - H.apply_effect(2, WEAKEN) + playsound(loc, 'sound/effects/burrowoff.ogg', 25) + for(var/mob/living/carbon/mob in loc) + if(!can_not_harm(mob)) + mob.apply_effect(2, WEAKEN) + addtimer(CALLBACK(src, PROC_REF(do_burrow_cooldown)), (caste ? caste.burrow_cooldown : 5 SECONDS)) update_canmove() update_icons() /mob/living/carbon/xenomorph/proc/do_burrow_cooldown() used_burrow = FALSE - to_chat(src, SPAN_NOTICE("You can now surface.")) + if(burrow) + to_chat(src, SPAN_NOTICE("You can now surface.")) for(var/X in actions) var/datum/action/act = X act.update_button_icon() diff --git a/code/modules/mob/living/living_verbs.dm b/code/modules/mob/living/living_verbs.dm index 9b003562825d..fe95f14182ea 100644 --- a/code/modules/mob/living/living_verbs.dm +++ b/code/modules/mob/living/living_verbs.dm @@ -11,6 +11,12 @@ to_chat(src, SPAN_WARNING("You can't resist in your current state.")) return + if(isxeno(src)) + var/mob/living/carbon/xenomorph/xeno = src + if(xeno.burrow) + to_chat(src, SPAN_WARNING("You can't resist in your current state.")) + return + resisting = TRUE next_move = world.time + 20 diff --git a/sound/effects/burrowing_b.ogg b/sound/effects/burrowing_b.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cc44a8e192824f1e68efafae579962ddac7a859f GIT binary patch literal 8146 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 literal 0 HcmV?d00001 diff --git a/sound/effects/burrowoff.ogg b/sound/effects/burrowoff.ogg new file mode 100644 index 0000000000000000000000000000000000000000..66f10b253612d17d922e6b2d8a909b242e0a7bcf GIT binary patch literal 10718 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 literal 0 HcmV?d00001