From e3725f74521affabc58f14ff5d8c1f4f72de7e1d Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Thu, 18 Sep 2025 23:08:06 -0400 Subject: [PATCH] Fixes issue with basic mobs and xenos attacks (#30492) --- code/modules/mob/living/basic/basic_mob.dm | 15 +++++++++++++++ .../mob/living/carbon/alien/alien_defense.dm | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/code/modules/mob/living/basic/basic_mob.dm b/code/modules/mob/living/basic/basic_mob.dm index 1db5e765c70..beeefed0375 100644 --- a/code/modules/mob/living/basic/basic_mob.dm +++ b/code/modules/mob/living/basic/basic_mob.dm @@ -254,6 +254,21 @@ RESTRICT_TYPE(/mob/living/basic) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) return attack_threshold_check(damage, M.melee_damage_type) +/mob/living/basic/attack_alien(mob/living/carbon/alien/humanoid/M) + if(..()) // if harm or disarm intent. + if(M.a_intent == INTENT_DISARM) + playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1) + visible_message("[M] [response_disarm_continuous] [name]!", "[M] [response_disarm_continuous] you!") + add_attack_logs(M, src, "Alien disarmed") + else + var/damage = rand(15, 30) + visible_message("[M] has slashed at [src]!", \ + "[M] has slashed at [src]!") + playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1) + add_attack_logs(M, src, "Alien attacked") + attack_threshold_check(damage) + return TRUE + /mob/living/basic/handle_environment(datum/gas_mixture/readonly_environment) SEND_SIGNAL(src, COMSIG_SIMPLEANIMAL_HANDLE_ENVIRONMENT, readonly_environment) diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 1cc859a9295..6a9ed74a7c4 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -74,6 +74,24 @@ This code could certainly use with a touch of TLC, but it functions alright. Bit if(STAMINA) adjustStaminaLoss(damage) +/mob/living/carbon/alien/attack_basic_mob(mob/living/basic/M, list/modifiers) + . = ..() + if(.) + var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) + switch(M.melee_damage_type) + if(BRUTE) + adjustBruteLoss(damage) + if(BURN) + adjustFireLoss(damage) + if(TOX) + adjustToxLoss(damage) + if(OXY) + adjustOxyLoss(damage) + if(CLONE) + adjustCloneLoss(damage) + if(STAMINA) + adjustStaminaLoss(damage) + /mob/living/carbon/alien/acid_act(acidpwr, acid_volume) return FALSE //aliens are immune to acid.