From a3e685feae0f05c5b116ae807762be45ceea2fab Mon Sep 17 00:00:00 2001 From: Aroliacue <96730930+Aroliacue@users.noreply.github.com> Date: Mon, 9 Mar 2026 12:42:27 +1000 Subject: [PATCH] Xenomorph Hybrid Attacks (#19264) * Automatic changelog compile [ci skip] * Automatic changelog compile [ci skip] * Xenomorph Hybrid Attacks --------- Co-authored-by: vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com> Co-authored-by: Aroliacue --- .../carbon/human/species/species_attack.dm | 47 ++++++++++++++++-- sound/weapons/alien_claw_flesh.ogg | Bin 0 -> 8706 bytes 2 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 sound/weapons/alien_claw_flesh.ogg diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index 23ffb7ef763..93edff1b1d0 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -60,12 +60,44 @@ shredding = 1 /datum/unarmed_attack/claws/strong/xeno - attack_verb = list("slashed", "gouged", "stabbed") - damage = 15 + attack_name = "xenomorph claws" + attack_verb = list("slashed", "gouged", "punctured", "hacked", "ripped") + attack_noun = list("claws", "tailblade", "talons") + attack_sound = 'sound/weapons/alien_claw_flesh.ogg' + damage = 10 + shredding = 0 + +/datum/unarmed_attack/claws/strong/xeno/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) + var/obj/item/organ/external/affecting = target.get_organ(zone) + attack_damage = CLAMP(attack_damage, 1, 5) + + if(target == user) + user.visible_message(span_danger("[user] [pick(attack_verb)] [user.p_themselves()] in the [affecting.name]!")) + return 0 + + switch(zone) + if(BP_HEAD, O_MOUTH, O_EYES) + // ----- HEAD ----- // + switch(attack_damage) + if(1 to 2) + user.visible_message(span_danger("[user] rakes [user.p_their()] [pick(attack_noun)] across [target]'s face!")) + if(3 to 4) + user.visible_message(span_danger("[user] [pick(attack_verb)] [target]'s [pick("head", "neck")]!")) + if(5) + user.visible_message(span_danger("[user] tears [user.p_their()] [pick(attack_noun)] into [target]'s face!")) + else + // ----- BODY ----- // + switch(attack_damage) + if(1 to 2) user.visible_message(span_danger("[user] maims [target]'s [affecting.name]!")) + if(3 to 4) user.visible_message(span_danger("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!")) + if(5) user.visible_message(span_danger("[user] impales [user.p_their()] [pick(attack_noun)] deep into [target]'s [affecting.name]!")) /datum/unarmed_attack/claws/strong/xeno/queen - attack_verb = list("slashed", "gouged", "stabbed", "gored") - damage = 20 + attack_name = "enormous xenomorph claws" + attack_verb = list("mutiliated", "shredded", "impaled", "lacerated", "rended") + attack_noun = list("enormous claws", "regal tailblade", "horrific talons") + damage = 15 + shredding = 1 /datum/unarmed_attack/bite/strong attack_name = "strong bite" @@ -74,7 +106,12 @@ shredding = 1 /datum/unarmed_attack/bite/strong/xeno - damage = 15 + attack_name = "inner jaw" + attack_verb = list("punctured") + attack_noun = list("inner jaw", "inner mouth") + damage = 10 + shredding = 0 + sharp = TRUE /datum/unarmed_attack/slime_glomp attack_name = "glomp" diff --git a/sound/weapons/alien_claw_flesh.ogg b/sound/weapons/alien_claw_flesh.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5da12e1e9088603697d0cced5cfc8b828bb6ef39 GIT binary patch literal 8706 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 A761SM literal 0 HcmV?d00001