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.