From ffc2a746df326998536c8e91d27be320d67965a7 Mon Sep 17 00:00:00 2001 From: Coffee Date: Tue, 19 Jul 2022 12:16:49 -0400 Subject: [PATCH] Fixes xenomorph corrosive acid being used on mobs & fixes xeno limb examines (#68246) * Removes the xenomorph's corrosive acid from being used on mobs, as they oneshot them. * Makes defines for species' limbs, and makes use of those. Also replaces some hardcodes with defines. * Makes Xenomorph bodyparts all alien bodytypes, so xenomorphs with something embedded will not state that they have something in their human limb. --- code/__DEFINES/mobs.dm | 7 ++++++- .../antagonists/nightmare/nightmare_species.dm | 2 +- .../mob/living/carbon/alien/humanoid/alien_powers.dm | 3 +++ code/modules/surgery/bodyparts/parts.dm | 7 ++++++- code/modules/surgery/bodyparts/robot_bodyparts.dm | 12 ++++++------ .../bodyparts/species_parts/lizard_bodyparts.dm | 12 ++++++------ 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 553aaf8ab6d..6e0bca82b86 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -82,7 +82,7 @@ ///The limb is snouted #define BODYTYPE_SNOUTED (1<<5) -//Defines for Species IDs +// Defines for Species IDs. Used to refer to the name of a species, for things like bodypart names or species preferences. #define SPECIES_ABDUCTOR "abductor" #define SPECIES_ANDROID "android" #define SPECIES_DULLAHAN "dullahan" @@ -111,6 +111,11 @@ #define SPECIES_ZOMBIE_INFECTIOUS "memezombie" #define SPECIES_ZOMBIE_KROKODIL "krokodil_zombie" +// Like species IDs, but not specifically attached a species. +#define BODYPART_TYPE_ALIEN "alien" +#define BODYPART_TYPE_ROBOTIC "robotic" +#define BODYPART_TYPE_DIGITIGRADE "digitigrade" + //See: datum/species/var/digitigrade_customization ///The species does not have digitigrade legs in generation. #define DIGITIGRADE_NEVER 0 diff --git a/code/modules/antagonists/nightmare/nightmare_species.dm b/code/modules/antagonists/nightmare/nightmare_species.dm index 9ee82e1c592..b505fdd2d4c 100644 --- a/code/modules/antagonists/nightmare/nightmare_species.dm +++ b/code/modules/antagonists/nightmare/nightmare_species.dm @@ -4,7 +4,7 @@ /datum/species/shadow/nightmare name = "Nightmare" id = SPECIES_NIGHTMARE - examine_limb_id = "shadow" + examine_limb_id = SPECIES_SHADOW burnmod = 1.5 no_equip = list(ITEM_SLOT_MASK, ITEM_SLOT_OCLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET, ITEM_SLOT_ICLOTHING, ITEM_SLOT_SUITSTORE) species_traits = list(NOBLOOD,NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYESPRITES) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 4c4ae7e7c1e..862e4190390 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -218,6 +218,9 @@ Doesn't work on other aliens/AI.*/ /datum/action/cooldown/alien/acid/corrosion/PreActivate(atom/target) if(get_dist(owner, target) > 1) return FALSE + if(ismob(target)) //If it could corrode mobs, it would one-shot them. + owner.balloon_alert(owner, "doesn't work on mobs!") + return FALSE return ..() diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index ced291043c4..11092e5fcc0 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -48,6 +48,7 @@ /obj/item/bodypart/chest/alien icon = 'icons/mob/animal_parts.dmi' icon_state = "alien_chest" + limb_id = BODYPART_TYPE_ALIEN dismemberable = 0 max_damage = 500 animal_origin = ALIEN_BODYPART @@ -154,6 +155,7 @@ /obj/item/bodypart/l_arm/alien icon = 'icons/mob/animal_parts.dmi' icon_state = "alien_l_arm" + limb_id = BODYPART_TYPE_ALIEN px_x = 0 px_y = 0 dismemberable = FALSE @@ -249,10 +251,11 @@ wound_resistance = -10 px_x = 5 px_y = -3 - + /obj/item/bodypart/r_arm/alien icon = 'icons/mob/animal_parts.dmi' icon_state = "alien_r_arm" + limb_id = BODYPART_TYPE_ALIEN px_x = 0 px_y = 0 dismemberable = FALSE @@ -342,6 +345,7 @@ /obj/item/bodypart/l_leg/alien icon = 'icons/mob/animal_parts.dmi' icon_state = "alien_l_leg" + limb_id = BODYPART_TYPE_ALIEN px_x = 0 px_y = 0 dismemberable = FALSE @@ -439,6 +443,7 @@ /obj/item/bodypart/r_leg/alien icon = 'icons/mob/animal_parts.dmi' icon_state = "alien_r_leg" + limb_id = BODYPART_TYPE_ALIEN px_x = 0 px_y = 0 dismemberable = FALSE diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 24b9c6f2e79..b721e9e2230 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -13,7 +13,7 @@ /obj/item/bodypart/l_arm/robot name = "cyborg left arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." - limb_id = "robotic" + limb_id = BODYPART_TYPE_ROBOTIC attack_verb_simple = list("slapped", "punched") inhand_icon_state = "buildpipe" icon = 'icons/mob/augmentation/augments.dmi' @@ -43,7 +43,7 @@ inhand_icon_state = "buildpipe" icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' - limb_id = "robotic" + limb_id = BODYPART_TYPE_ROBOTIC flags_1 = CONDUCT_1 icon_state = "borg_r_arm" is_dimorphic = FALSE @@ -69,7 +69,7 @@ inhand_icon_state = "buildpipe" icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' - limb_id = "robotic" + limb_id = BODYPART_TYPE_ROBOTIC flags_1 = CONDUCT_1 icon_state = "borg_l_leg" is_dimorphic = FALSE @@ -95,7 +95,7 @@ inhand_icon_state = "buildpipe" icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' - limb_id = "robotic" + limb_id = BODYPART_TYPE_ROBOTIC flags_1 = CONDUCT_1 icon_state = "borg_r_leg" is_dimorphic = FALSE @@ -120,7 +120,7 @@ inhand_icon_state = "buildpipe" icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' - limb_id = "robotic" + limb_id = BODYPART_TYPE_ROBOTIC flags_1 = CONDUCT_1 icon_state = "borg_chest" is_dimorphic = FALSE @@ -228,7 +228,7 @@ inhand_icon_state = "buildpipe" icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' - limb_id = "robotic" + limb_id = BODYPART_TYPE_ROBOTIC flags_1 = CONDUCT_1 icon_state = "borg_head" is_dimorphic = FALSE diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm index 8ff550d8a59..6cc2cf24563 100644 --- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm @@ -33,7 +33,7 @@ /obj/item/bodypart/l_leg/digitigrade icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' uses_mutcolor = TRUE - limb_id = "digitigrade" + limb_id = BODYPART_TYPE_DIGITIGRADE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE /obj/item/bodypart/l_leg/digitigrade/update_limb(dropping_limb = FALSE, is_creating = FALSE) @@ -52,15 +52,15 @@ shoes_compatible = TRUE if((uniform_compatible && suit_compatible && shoes_compatible) || (suit_compatible && shoes_compatible && human_owner.wear_suit?.flags_inv & HIDEJUMPSUIT)) //If the uniform is hidden, it doesnt matter if its compatible - limb_id = "digitigrade" + limb_id = BODYPART_TYPE_DIGITIGRADE else - limb_id = "lizard" + limb_id = SPECIES_LIZARD /obj/item/bodypart/r_leg/digitigrade icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' uses_mutcolor = TRUE - limb_id = "digitigrade" + limb_id = BODYPART_TYPE_DIGITIGRADE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE /obj/item/bodypart/r_leg/digitigrade/update_limb(dropping_limb = FALSE, is_creating = FALSE) @@ -79,7 +79,7 @@ shoes_compatible = TRUE if((uniform_compatible && suit_compatible && shoes_compatible) || (suit_compatible && shoes_compatible && human_owner.wear_suit?.flags_inv & HIDEJUMPSUIT)) //If the uniform is hidden, it doesnt matter if its compatible - limb_id = "digitigrade" + limb_id = BODYPART_TYPE_DIGITIGRADE else - limb_id = "lizard" + limb_id = SPECIES_LIZARD