mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
[MIRROR] bodytypes to do with body shape and sprite handling have their own var (#26627)
* digi-cybernetics * bodytypes to do with body shape and sprite handling have their own var --------- Co-authored-by: Kromatopzia <94389683+aKromatopzia@users.noreply.github.com> Co-authored-by: vinylspiders <13398309+vinylspiders@users.noreply.github.com>
This commit is contained in:
co-authored by
Kromatopzia
vinylspiders
parent
260a440d8d
commit
11ecffbf8d
+20
-18
@@ -78,38 +78,40 @@
|
||||
#define ALIEN_BODYPART "alien"
|
||||
#define LARVA_BODYPART "larva"
|
||||
|
||||
//Bodytype defines for how things can be worn, surgery, and other misc things.
|
||||
//Bodytype defines for surgery, and other misc things.
|
||||
///The limb is organic.
|
||||
#define BODYTYPE_ORGANIC (1<<0)
|
||||
///The limb is robotic.
|
||||
#define BODYTYPE_ROBOTIC (1<<1)
|
||||
///The limb fits the human mold. This is not meant to be literal, if the sprite "fits" on a human, it is "humanoid", regardless of origin.
|
||||
#define BODYTYPE_HUMANOID (1<<2)
|
||||
///The limb fits the monkey mold.
|
||||
#define BODYTYPE_MONKEY (1<<3)
|
||||
///The limb is digitigrade.
|
||||
#define BODYTYPE_DIGITIGRADE (1<<4)
|
||||
///The limb is snouted.
|
||||
#define BODYTYPE_SNOUTED (1<<5)
|
||||
///A placeholder bodytype for xeno larva, so their limbs cannot be attached to anything.
|
||||
#define BODYTYPE_LARVA_PLACEHOLDER (1<<6)
|
||||
#define BODYTYPE_LARVA_PLACEHOLDER (1<<2)
|
||||
///The limb is from a xenomorph.
|
||||
#define BODYTYPE_ALIEN (1<<7)
|
||||
#define BODYTYPE_ALIEN (1<<3)
|
||||
///The limb is from a golem
|
||||
#define BODYTYPE_GOLEM (1<<8)
|
||||
#define BODYTYPE_GOLEM (1<<4)
|
||||
// SKYRAT EDIT ADDITION
|
||||
///The limb fits a modular custom shape
|
||||
#define BODYTYPE_CUSTOM (1<<9)
|
||||
#define BODYSHAPE_CUSTOM (1<<9)
|
||||
///The limb fits a taur body
|
||||
#define BODYTYPE_TAUR (1<<10)
|
||||
#define BODYSHAPE_TAUR (1<<10)
|
||||
///The limb causes shoes to no longer be displayed, useful for taurs.
|
||||
#define BODYTYPE_HIDE_SHOES (1<<11)
|
||||
#define BODYSHAPE_HIDE_SHOES (1<<11)
|
||||
///The limb causes glasses and hats to be drawn on layers 5 and 4 respectively. Currently used for snouts with the (Top) suffix, which are drawn on layer 6 and would normally cover facewear
|
||||
#define BODYTYPE_ALT_FACEWEAR_LAYER (1<<12)
|
||||
#define BODYSHAPE_ALT_FACEWEAR_LAYER (1<<12)
|
||||
// SKYRAT EDIT END
|
||||
|
||||
#define BODYTYPE_BIOSCRAMBLE_COMPATIBLE (BODYTYPE_HUMANOID | BODYTYPE_MONKEY | BODYTYPE_ALIEN)
|
||||
#define BODYTYPE_CAN_BE_BIOSCRAMBLED(bodytype) (!(bodytype & BODYTYPE_ROBOTIC) && (bodytype & BODYTYPE_BIOSCRAMBLE_COMPATIBLE))
|
||||
// Bodyshape defines for how things can be worn, i.e., what "shape" the mob sprite is
|
||||
///The limb fits the human mold. This is not meant to be literal, if the sprite "fits" on a human, it is "humanoid", regardless of origin.
|
||||
#define BODYSHAPE_HUMANOID (1<<0)
|
||||
///The limb fits the monkey mold.
|
||||
#define BODYSHAPE_MONKEY (1<<1)
|
||||
///The limb is digitigrade.
|
||||
#define BODYSHAPE_DIGITIGRADE (1<<2)
|
||||
///The limb is snouted.
|
||||
#define BODYSHAPE_SNOUTED (1<<3)
|
||||
|
||||
#define BODYTYPE_BIOSCRAMBLE_INCOMPATIBLE (BODYTYPE_ROBOTIC | BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_GOLEM)
|
||||
#define BODYTYPE_CAN_BE_BIOSCRAMBLED(bodytype) (!(bodytype & BODYTYPE_BIOSCRAMBLE_INCOMPATIBLE))
|
||||
|
||||
// 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"
|
||||
|
||||
@@ -378,10 +378,6 @@ DEFINE_BITFIELD(reaction_flags, list(
|
||||
DEFINE_BITFIELD(bodytype, list(
|
||||
"BODYTYPE_ORGANIC" = BODYTYPE_ORGANIC,
|
||||
"BODYTYPE_ROBOTIC" = BODYTYPE_ROBOTIC,
|
||||
"BODYTYPE_HUMANOID" = BODYTYPE_HUMANOID,
|
||||
"BODYTYPE_MONKEY" = BODYTYPE_MONKEY,
|
||||
"BODYTYPE_DIGITIGRADE" = BODYTYPE_DIGITIGRADE,
|
||||
"BODYTYPE_SNOUTED" = BODYTYPE_SNOUTED,
|
||||
"BODYTYPE_LARVA_PLACEHOLDER" = BODYTYPE_LARVA_PLACEHOLDER,
|
||||
"BODYTYPE_ALIEN" = BODYTYPE_ALIEN,
|
||||
"BODYTYPE_GOLEM" = BODYTYPE_GOLEM,
|
||||
@@ -390,18 +386,34 @@ DEFINE_BITFIELD(bodytype, list(
|
||||
DEFINE_BITFIELD(acceptable_bodytype, list(
|
||||
"BODYTYPE_ORGANIC" = BODYTYPE_ORGANIC,
|
||||
"BODYTYPE_ROBOTIC" = BODYTYPE_ROBOTIC,
|
||||
"BODYTYPE_HUMANOID" = BODYTYPE_HUMANOID,
|
||||
"BODYTYPE_MONKEY" = BODYTYPE_MONKEY,
|
||||
"BODYTYPE_DIGITIGRADE" = BODYTYPE_DIGITIGRADE,
|
||||
"BODYTYPE_SNOUTED" = BODYTYPE_SNOUTED,
|
||||
"BODYTYPE_LARVA_PLACEHOLDER" = BODYTYPE_LARVA_PLACEHOLDER,
|
||||
"BODYTYPE_ALIEN" = BODYTYPE_ALIEN,
|
||||
"BODYTYPE_GOLEM" = BODYTYPE_GOLEM,
|
||||
))
|
||||
|
||||
DEFINE_BITFIELD(bodyshape, list(
|
||||
"BODYSHAPE_HUMANOID" = BODYSHAPE_HUMANOID,
|
||||
"BODYSHAPE_MONKEY" = BODYSHAPE_MONKEY,
|
||||
"BODYSHAPE_DIGITIGRADE" = BODYSHAPE_DIGITIGRADE,
|
||||
"BODYSHAPE_SNOUTED" = BODYSHAPE_SNOUTED,
|
||||
// SKYRAT EDIT ADDITION - customization
|
||||
"BODYTYPE_CUSTOM" = BODYTYPE_CUSTOM,
|
||||
"BODYTYPE_TAUR" = BODYTYPE_TAUR,
|
||||
"BODYTYPE_HIDE_SHOES" = BODYTYPE_HIDE_SHOES,
|
||||
"BODYTYPE_ALT_FACEWEAR_LAYER" = BODYTYPE_ALT_FACEWEAR_LAYER,
|
||||
"BODYSHAPE__CUSTOM" = BODYSHAPE_CUSTOM,
|
||||
"BODYSHAPE__TAUR" = BODYSHAPE_TAUR,
|
||||
"BODYSHAPE__HIDE_SHOES" = BODYSHAPE_HIDE_SHOES,
|
||||
"BODYSHAPE__ALT_FACEWEAR_LAYER" = BODYSHAPE_ALT_FACEWEAR_LAYER,
|
||||
// SKYRAT EDIT END
|
||||
))
|
||||
|
||||
DEFINE_BITFIELD(acceptable_bodyshape, list(
|
||||
"BODYSHAPE_HUMANOID" = BODYSHAPE_HUMANOID,
|
||||
"BODYSHAPE_MONKEY" = BODYSHAPE_MONKEY,
|
||||
"BODYSHAPE_DIGITIGRADE" = BODYSHAPE_DIGITIGRADE,
|
||||
"BODYSHAPE_SNOUTED" = BODYSHAPE_SNOUTED,
|
||||
// SKYRAT EDIT ADDITION - customization
|
||||
"BODYSHAPE__CUSTOM" = BODYSHAPE_CUSTOM,
|
||||
"BODYSHAPE__TAUR" = BODYSHAPE_TAUR,
|
||||
"BODYSHAPE__HIDE_SHOES" = BODYSHAPE_HIDE_SHOES,
|
||||
"BODYSHAPE__ALT_FACEWEAR_LAYER" = BODYSHAPE_ALT_FACEWEAR_LAYER,
|
||||
// SKYRAT EDIT END
|
||||
))
|
||||
|
||||
|
||||
@@ -39,9 +39,9 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list(
|
||||
qdel(src)
|
||||
return
|
||||
bodypart_overlay = new()
|
||||
if(carbon_parent.bodytype & BODYTYPE_SNOUTED) //stupid, but external organ bodytypes are not stored on the limb
|
||||
if(carbon_parent.bodyshape & BODYSHAPE_SNOUTED) //stupid, but external organ bodytypes are not stored on the limb
|
||||
bodypart_overlay.icon_state = "creampie_lizard"
|
||||
else if(my_head.bodytype & BODYTYPE_MONKEY)
|
||||
else if(my_head.bodyshape & BODYSHAPE_MONKEY)
|
||||
bodypart_overlay.icon_state = "creampie_monkey"
|
||||
else
|
||||
bodypart_overlay.icon_state = "creampie_human"
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
/* SKYRAT EDIT REMOVAL - This breaks jumpsuit adjustment. Plus, we don't support it.
|
||||
if((supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION) && ishuman(user))
|
||||
var/mob/living/carbon/human/wearer = user
|
||||
if(wearer.bodytype & BODYTYPE_DIGITIGRADE)
|
||||
if(wearer.bodyshape & BODYSHAPE_DIGITIGRADE)
|
||||
adjusted = DIGITIGRADE_STYLE
|
||||
update_appearance()
|
||||
*/ // SKYRAT EDIT END
|
||||
|
||||
@@ -1039,6 +1039,7 @@
|
||||
set_usable_hands(usable_hands + 1)
|
||||
|
||||
synchronize_bodytypes()
|
||||
synchronize_bodyshapes()
|
||||
|
||||
///Proc to hook behavior on bodypart removals. Do not directly call. You're looking for [/obj/item/bodypart/proc/drop_limb()].
|
||||
/mob/living/carbon/proc/remove_bodypart(obj/item/bodypart/old_bodypart, special)
|
||||
@@ -1065,6 +1066,7 @@
|
||||
set_usable_hands(usable_hands - 1)
|
||||
|
||||
synchronize_bodytypes()
|
||||
synchronize_bodyshapes()
|
||||
|
||||
///Updates the bodypart speed modifier based on our bodyparts.
|
||||
/mob/living/carbon/proc/update_bodypart_speed_modifier()
|
||||
|
||||
@@ -118,7 +118,10 @@
|
||||
var/last_top_offset
|
||||
|
||||
/// A bitfield of "bodytypes", updated by /obj/item/bodypart/proc/synchronize_bodytypes()
|
||||
var/bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC
|
||||
var/bodytype = BODYTYPE_ORGANIC
|
||||
|
||||
/// A bitfield of "bodyshapes", updated by /obj/item/bodypart/proc/synchronize_bodyshapes()
|
||||
var/bodyshape = BODYSHAPE_HUMANOID
|
||||
|
||||
COOLDOWN_DECLARE(bleeding_message_cd)
|
||||
|
||||
|
||||
@@ -693,7 +693,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
working_shirt.pixel_y += height_offset
|
||||
standing += working_shirt
|
||||
|
||||
if(species_human.socks && species_human.num_legs >= 2 && !(species_human.bodytype & BODYTYPE_DIGITIGRADE))
|
||||
if(species_human.socks && species_human.num_legs >= 2 && !(species_human.bodyshape & BODYSHAPE_DIGITIGRADE))
|
||||
var/datum/sprite_accessory/socks/socks = GLOB.socks_list[species_human.socks]
|
||||
if(socks)
|
||||
standing += mutable_appearance(socks.icon, socks.icon_state, -BODY_LAYER)
|
||||
@@ -936,7 +936,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
if(H.num_legs < 2)
|
||||
return FALSE
|
||||
/* SKYRAT EDIT REMOVAL
|
||||
if((H.bodytype & BODYTYPE_DIGITIGRADE) && !(I.item_flags & IGNORE_DIGITIGRADE))
|
||||
if((H.bodyshape & BODYSHAPE_DIGITIGRADE) && !(I.item_flags & IGNORE_DIGITIGRADE))
|
||||
if(!(I.supports_variations_flags & (CLOTHING_DIGITIGRADE_VARIATION|CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON)))
|
||||
if(!disable_warning)
|
||||
to_chat(H, span_warning("The footwear around here isn't compatible with your feet!"))
|
||||
@@ -968,7 +968,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
return equip_delay_self_check(I, H, bypass_equip_delay_self)
|
||||
if(ITEM_SLOT_ICLOTHING)
|
||||
var/obj/item/bodypart/chest = H.get_bodypart(BODY_ZONE_CHEST)
|
||||
if(chest && (chest.bodytype & BODYTYPE_MONKEY))
|
||||
if(chest && (chest.bodyshape & BODYSHAPE_MONKEY))
|
||||
if(!(I.supports_variations_flags & CLOTHING_MONKEY_VARIATION))
|
||||
if(!disable_warning)
|
||||
to_chat(H, span_warning("[I] doesn't fit your [chest.name]!"))
|
||||
|
||||
@@ -93,29 +93,29 @@ There are several things that need to be remembered:
|
||||
|
||||
var/mutable_appearance/uniform_overlay
|
||||
//This is how non-humanoid clothing works. You check if the mob has the right bodyflag, and the clothing has the corresponding clothing flag.
|
||||
//handled_by_bodytype is used to track whether or not we successfully used an alternate sprite. It's set to TRUE to ease up on copy-paste.
|
||||
//handled_by_bodyshape is used to track whether or not we successfully used an alternate sprite. It's set to TRUE to ease up on copy-paste.
|
||||
//icon_file MUST be set to null by default, or it causes issues.
|
||||
//handled_by_bodytype MUST be set to FALSE under the if(!icon_exists()) statement, or everything breaks.
|
||||
//"override_file = handled_by_bodytype ? icon_file : null" MUST be added to the arguments of build_worn_icon()
|
||||
//handled_by_bodyshape MUST be set to FALSE under the if(!icon_exists()) statement, or everything breaks.
|
||||
//"override_file = handled_by_bodyshape ? icon_file : null" MUST be added to the arguments of build_worn_icon()
|
||||
//Friendly reminder that icon_exists(file, state, scream = TRUE) is your friend when debugging this code.
|
||||
var/handled_by_bodytype = TRUE
|
||||
var/handled_by_bodyshape = TRUE
|
||||
var/icon_file
|
||||
var/woman
|
||||
var/digi // SKYRAT EDIT ADDITION - Digi female gender shaping
|
||||
var/female_sprite_flags = uniform.female_sprite_flags // SKYRAT EDIT ADDITION - Digi female gender shaping
|
||||
var/mutant_styles = NONE // SKYRAT EDIT ADDITON - mutant styles to pass down to build_worn_icon.
|
||||
//BEGIN SPECIES HANDLING
|
||||
if((bodytype & BODYTYPE_MONKEY) && (uniform.supports_variations_flags & CLOTHING_MONKEY_VARIATION))
|
||||
if((bodyshape & BODYSHAPE_MONKEY) && (uniform.supports_variations_flags & CLOTHING_MONKEY_VARIATION))
|
||||
icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_UNIFORM, w_uniform, src) // SKYRAT EDIT CHANGE - ORIGINAL: icon_file = MONKEY_UNIFORM_FILE
|
||||
else if((bodytype & BODYTYPE_DIGITIGRADE) && (uniform.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION))
|
||||
else if((bodyshape & BODYSHAPE_DIGITIGRADE) && (uniform.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION))
|
||||
icon_file = uniform.worn_icon_digi || DIGITIGRADE_UNIFORM_FILE // SKYRAT EDIT CHANGE - ORIGINAL: icon_file = DIGITIGRADE_UNIFORM_FILE
|
||||
digi = TRUE // SKYRAT EDIT ADDITION - Digi female gender shaping
|
||||
// SKYRAT EDIT ADDITION - birbs
|
||||
else if(bodytype & BODYTYPE_CUSTOM)
|
||||
else if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_UNIFORM, w_uniform, src) // Might have to refactor how this works eventually, maybe.
|
||||
// SKYRAT EDIT END
|
||||
//Female sprites have lower priority than digitigrade sprites
|
||||
if(dna.species.sexes && (bodytype & BODYTYPE_HUMANOID) && physique == FEMALE && !(female_sprite_flags & NO_FEMALE_UNIFORM)) //Agggggggghhhhh // SKYRAT EDIT CHANGE - ORIGINAL: else if(dna.species.sexes && (bodytype & BODYTYPE_HUMANOID) && physique == FEMALE && !(uniform.female_sprite_flags & NO_FEMALE_UNIFORM))
|
||||
if(dna.species.sexes && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(female_sprite_flags & NO_FEMALE_UNIFORM)) // SKYRAT EDIT CHANGE - ORIGINAL: else if(dna.species.sexes && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(uniform.female_sprite_flags & NO_FEMALE_UNIFORM)) //Agggggggghhhhh
|
||||
woman = TRUE
|
||||
// SKYRAT EDIT ADDITION START - Digi female gender shaping
|
||||
if(digi)
|
||||
@@ -127,10 +127,10 @@ There are several things that need to be remembered:
|
||||
|
||||
if(!icon_exists(icon_file, RESOLVE_ICON_STATE(uniform)))
|
||||
icon_file = DEFAULT_UNIFORM_FILE
|
||||
handled_by_bodytype = FALSE
|
||||
handled_by_bodyshape = FALSE
|
||||
|
||||
// SKYRAT EDIT ADDITION START - Taur-friendly suits!
|
||||
if(bodytype & BODYTYPE_TAUR)
|
||||
if(bodyshape & BODYSHAPE_TAUR)
|
||||
if(istype(uniform) && uniform.gets_cropped_on_taurs)
|
||||
mutant_styles |= get_taur_mode()
|
||||
// SKYRAT EDIT END
|
||||
@@ -142,7 +142,7 @@ There are several things that need to be remembered:
|
||||
isinhands = FALSE,
|
||||
female_uniform = woman ? female_sprite_flags : null, // SKYRAT EDIT CHANGE - Digi female gender shaping - ORIGINAL: female_uniform = woman ? uniform.female_sprite_flags : null,
|
||||
override_state = target_overlay,
|
||||
override_file = handled_by_bodytype ? icon_file : null,
|
||||
override_file = handled_by_bodyshape ? icon_file : null,
|
||||
mutant_styles = mutant_styles, // SKYRAT EDIT ADDITION - Taur-friendly uniforms!
|
||||
)
|
||||
|
||||
@@ -209,7 +209,7 @@ There are several things that need to be remembered:
|
||||
|
||||
// SKYRAT EDIT ADDITION
|
||||
var/mutant_override = FALSE
|
||||
if(bodytype & BODYTYPE_CUSTOM)
|
||||
if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_GLOVES, gloves, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
@@ -252,7 +252,7 @@ There are several things that need to be remembered:
|
||||
|
||||
// SKYRAT EDIT ADDITION
|
||||
var/mutant_override = FALSE
|
||||
if(bodytype & BODYTYPE_CUSTOM)
|
||||
if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_GLASSES, glasses, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
@@ -291,7 +291,7 @@ There are several things that need to be remembered:
|
||||
|
||||
// SKYRAT EDIT ADDITION
|
||||
var/mutant_override = FALSE
|
||||
if(bodytype & BODYTYPE_CUSTOM)
|
||||
if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_EARS, ears, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
@@ -325,13 +325,13 @@ There are several things that need to be remembered:
|
||||
|
||||
// SKYRAT EDIT ADDITION
|
||||
var/mutant_override = FALSE
|
||||
if(bodytype & BODYTYPE_CUSTOM)
|
||||
if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_NECK, wear_neck, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
mutant_override = TRUE
|
||||
//On the off-chance we have a neck item that has to move around or cover the muzzle, it ALSO gets worn_icon_muzzled compatiability
|
||||
if((bodytype & BODYTYPE_SNOUTED) && (worn_item.supports_variations_flags & CLOTHING_SNOUTED_VARIATION) && worn_item.worn_icon_muzzled)
|
||||
if((bodyshape & BODYSHAPE_SNOUTED) && (worn_item.supports_variations_flags & CLOTHING_SNOUTED_VARIATION) && worn_item.worn_icon_muzzled)
|
||||
var/snout_icon_file = worn_item.worn_icon_muzzled
|
||||
if(snout_icon_file && icon_exists(snout_icon_file, RESOLVE_ICON_STATE(worn_item)))
|
||||
icon_file = snout_icon_file
|
||||
@@ -371,17 +371,17 @@ There are several things that need to be remembered:
|
||||
// SKYRAT EDIT ADDITION START
|
||||
var/mutant_override = FALSE
|
||||
|
||||
if((bodytype & BODYTYPE_DIGITIGRADE) && (worn_item.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION))
|
||||
if((bodyshape & BODYSHAPE_DIGITIGRADE) && (worn_item.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION))
|
||||
var/obj/item/bodypart/leg = src.get_bodypart(BODY_ZONE_L_LEG)
|
||||
if(leg.limb_id == "digitigrade" || leg.bodytype & BODYTYPE_DIGITIGRADE)//Snowflakey and bad. But it makes it look consistent.
|
||||
if(leg.limb_id == "digitigrade" || leg.bodyshape & BODYSHAPE_DIGITIGRADE)//Snowflakey and bad. But it makes it look consistent.
|
||||
icon_file = worn_item.worn_icon_digi || DIGITIGRADE_SHOES_FILE // SKYRAT EDIT CHANGE
|
||||
mutant_override = TRUE // SKYRAT EDIT ADDITION
|
||||
if(!mutant_override && bodytype & BODYTYPE_CUSTOM)
|
||||
if(!mutant_override && bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_SHOES, shoes, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
mutant_override = TRUE
|
||||
if(bodytype & BODYTYPE_HIDE_SHOES)
|
||||
if(bodyshape & BODYSHAPE_HIDE_SHOES)
|
||||
return // We just don't want shoes that float if we're not displaying legs (useful for taurs, for now)
|
||||
// SKYRAT EDIT END
|
||||
|
||||
@@ -444,12 +444,12 @@ There are several things that need to be remembered:
|
||||
|
||||
// SKYRAT EDIT ADDITION - This needs to be refactored.
|
||||
var/mutant_override = FALSE
|
||||
if(bodytype & BODYTYPE_CUSTOM)
|
||||
if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_HEAD, head, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
mutant_override = TRUE
|
||||
if((icon_file == 'icons/mob/clothing/head/default.dmi') && (bodytype & BODYTYPE_SNOUTED) && (worn_item.supports_variations_flags & CLOTHING_SNOUTED_VARIATION))
|
||||
if((icon_file == 'icons/mob/clothing/head/default.dmi') && (bodyshape & BODYSHAPE_SNOUTED) && (worn_item.supports_variations_flags & CLOTHING_SNOUTED_VARIATION))
|
||||
var/snout_icon_file = worn_item.worn_icon_muzzled || SNOUTED_HEAD_FILE
|
||||
if(snout_icon_file && icon_exists(snout_icon_file, RESOLVE_ICON_STATE(worn_item)))
|
||||
icon_file = snout_icon_file
|
||||
@@ -486,7 +486,7 @@ There are several things that need to be remembered:
|
||||
|
||||
// SKYRAT EDIT ADDITION
|
||||
var/mutant_override = FALSE
|
||||
if(bodytype & BODYTYPE_CUSTOM)
|
||||
if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_BELT, belt, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
@@ -521,18 +521,18 @@ There are several things that need to be remembered:
|
||||
var/mutant_styles = NONE
|
||||
|
||||
//More currently unused digitigrade handling
|
||||
if(bodytype & BODYTYPE_DIGITIGRADE)
|
||||
if(bodyshape & BODYSHAPE_DIGITIGRADE)
|
||||
if(worn_item.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION)
|
||||
icon_file = worn_item.worn_icon_digi || DIGITIGRADE_SUIT_FILE // SKYRAT EDIT CHANGE
|
||||
mutant_override = TRUE
|
||||
|
||||
if(!mutant_override && bodytype & BODYTYPE_CUSTOM)
|
||||
if(!mutant_override && bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_SUIT, wear_suit, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
mutant_override = TRUE
|
||||
|
||||
if(bodytype & BODYTYPE_TAUR)
|
||||
if(bodyshape & BODYSHAPE_TAUR)
|
||||
var/obj/item/clothing/suit/worn_suit = wear_suit
|
||||
if(istype(worn_suit) && worn_suit.gets_cropped_on_taurs)
|
||||
mutant_styles |= get_taur_mode()
|
||||
@@ -595,12 +595,12 @@ There are several things that need to be remembered:
|
||||
|
||||
// SKYRAT EDIT ADDITION
|
||||
var/mutant_override = FALSE
|
||||
if(bodytype & BODYTYPE_CUSTOM)
|
||||
if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_MASK, wear_mask, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
mutant_override = TRUE
|
||||
if((icon_file == 'icons/mob/clothing/mask.dmi') && (bodytype & BODYTYPE_SNOUTED) && (worn_item.supports_variations_flags & CLOTHING_SNOUTED_VARIATION))
|
||||
if((icon_file == 'icons/mob/clothing/mask.dmi') && (bodyshape & BODYSHAPE_SNOUTED) && (worn_item.supports_variations_flags & CLOTHING_SNOUTED_VARIATION))
|
||||
var/snout_icon_file = worn_item.worn_icon_muzzled || SNOUTED_MASK_FILE
|
||||
if(snout_icon_file && icon_exists(snout_icon_file, RESOLVE_ICON_STATE(worn_item)))
|
||||
icon_file = snout_icon_file
|
||||
@@ -633,7 +633,7 @@ There are several things that need to be remembered:
|
||||
|
||||
// SKYRAT EDIT ADDITION
|
||||
var/mutant_override = FALSE
|
||||
if(bodytype & BODYTYPE_CUSTOM)
|
||||
if(bodyshape & BODYSHAPE_CUSTOM)
|
||||
var/species_icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_MISC, back, src)
|
||||
if(species_icon_file)
|
||||
icon_file = species_icon_file
|
||||
|
||||
@@ -34,8 +34,10 @@
|
||||
* Set to BIO_STANDARD_UNJOINTED because most species have both flesh bone and blood in their limbs.
|
||||
*/
|
||||
var/biological_state = BIO_STANDARD_UNJOINTED
|
||||
///A bitfield of bodytypes for clothing, surgery, and misc information
|
||||
var/bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC
|
||||
///A bitfield of bodytypes for surgery, and misc information
|
||||
var/bodytype = BODYTYPE_ORGANIC
|
||||
///A bitfield of bodyshapes for clothing and other sprite information
|
||||
var/bodyshape = BODYSHAPE_HUMANOID
|
||||
///Defines when a bodypart should not be changed. Example: BP_BLOCK_CHANGE_SPECIES prevents the limb from being overwritten on species gain
|
||||
var/change_exempt_flags = NONE
|
||||
///Random flags that describe this bodypart
|
||||
|
||||
@@ -274,7 +274,7 @@
|
||||
return FALSE
|
||||
|
||||
var/obj/item/bodypart/chest/mob_chest = new_limb_owner.get_bodypart(BODY_ZONE_CHEST)
|
||||
if(mob_chest && !(mob_chest.acceptable_bodytype & bodytype) && !special)
|
||||
if(mob_chest && !(mob_chest.acceptable_bodytype & bodytype) && !(mob_chest.acceptable_bodyshape & bodyshape) && !(mob_chest.acceptable_bodyshape & bodyshape) && !special)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -234,7 +234,7 @@
|
||||
husk_type = "monkey"
|
||||
icon_state = "default_monkey_head"
|
||||
limb_id = SPECIES_MONKEY
|
||||
bodytype = BODYTYPE_MONKEY | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_MONKEY
|
||||
should_draw_greyscale = FALSE
|
||||
dmg_overlay_type = SPECIES_MONKEY
|
||||
is_dimorphic = FALSE
|
||||
@@ -251,7 +251,8 @@
|
||||
px_y = 0
|
||||
bodypart_flags = BODYPART_UNREMOVABLE
|
||||
max_damage = LIMB_MAX_HP_ALIEN_CORE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
|
||||
/obj/item/bodypart/head/larva
|
||||
icon = 'icons/mob/human/species/alien/bodyparts.dmi'
|
||||
|
||||
@@ -179,6 +179,16 @@
|
||||
|
||||
bodytype = all_limb_flags
|
||||
|
||||
/// Makes sure that the owner's bodyshape flags match the flags of all of it's parts and organs
|
||||
/mob/living/carbon/proc/synchronize_bodyshapes()
|
||||
var/all_limb_flags = NONE
|
||||
for(var/obj/item/bodypart/limb as anything in bodyparts)
|
||||
for(var/obj/item/organ/external/ext_organ in limb)
|
||||
all_limb_flags |= ext_organ.external_bodyshapes
|
||||
all_limb_flags |= limb.bodyshape
|
||||
|
||||
bodyshape = all_limb_flags
|
||||
|
||||
/proc/skintone2hex(skin_tone)
|
||||
. = 0
|
||||
switch(skin_tone)
|
||||
|
||||
@@ -13,8 +13,10 @@
|
||||
grind_results = null
|
||||
wound_resistance = 10
|
||||
bodypart_trait_source = CHEST_TRAIT
|
||||
///The bodyshape(s) allowed to attach to this chest.
|
||||
var/acceptable_bodyshape = BODYSHAPE_HUMANOID
|
||||
///The bodytype(s) allowed to attach to this chest.
|
||||
var/acceptable_bodytype = BODYTYPE_HUMANOID
|
||||
var/acceptable_bodytype = ALL
|
||||
|
||||
var/obj/item/cavity_item
|
||||
|
||||
@@ -78,8 +80,8 @@
|
||||
should_draw_greyscale = FALSE
|
||||
is_dimorphic = FALSE
|
||||
wound_resistance = -10
|
||||
bodytype = BODYTYPE_MONKEY | BODYTYPE_ORGANIC
|
||||
acceptable_bodytype = BODYTYPE_MONKEY
|
||||
bodyshape = BODYSHAPE_MONKEY
|
||||
acceptable_bodyshape = BODYSHAPE_MONKEY
|
||||
dmg_overlay_type = SPECIES_MONKEY
|
||||
|
||||
/obj/item/bodypart/chest/alien
|
||||
@@ -87,12 +89,13 @@
|
||||
icon_static = 'icons/mob/human/species/alien/bodyparts.dmi'
|
||||
icon_state = "alien_chest"
|
||||
limb_id = BODYPART_ID_ALIEN
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
bodypart_flags = BODYPART_UNREMOVABLE
|
||||
max_damage = LIMB_MAX_HP_ALIEN_CORE
|
||||
acceptable_bodytype = BODYTYPE_HUMANOID
|
||||
acceptable_bodyshape = BODYSHAPE_HUMANOID
|
||||
wing_types = NONE
|
||||
|
||||
/obj/item/bodypart/chest/larva
|
||||
@@ -245,7 +248,7 @@
|
||||
icon_state = "default_monkey_l_arm"
|
||||
limb_id = SPECIES_MONKEY
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_MONKEY | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_MONKEY
|
||||
wound_resistance = -10
|
||||
px_x = -5
|
||||
px_y = -3
|
||||
@@ -260,7 +263,8 @@
|
||||
icon_static = 'icons/mob/human/species/alien/bodyparts.dmi'
|
||||
icon_state = "alien_l_arm"
|
||||
limb_id = BODYPART_ID_ALIEN
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
px_x = 0
|
||||
px_y = 0
|
||||
bodypart_flags = BODYPART_UNREMOVABLE
|
||||
@@ -341,7 +345,7 @@
|
||||
husk_type = "monkey"
|
||||
icon_state = "default_monkey_r_arm"
|
||||
limb_id = SPECIES_MONKEY
|
||||
bodytype = BODYTYPE_MONKEY | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_MONKEY
|
||||
should_draw_greyscale = FALSE
|
||||
wound_resistance = -10
|
||||
px_x = 5
|
||||
@@ -357,7 +361,8 @@
|
||||
icon_static = 'icons/mob/human/species/alien/bodyparts.dmi'
|
||||
icon_state = "alien_r_arm"
|
||||
limb_id = BODYPART_ID_ALIEN
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
px_x = 0
|
||||
px_y = 0
|
||||
bodypart_flags = BODYPART_UNREMOVABLE
|
||||
@@ -457,7 +462,7 @@
|
||||
icon_state = "default_monkey_l_leg"
|
||||
limb_id = SPECIES_MONKEY
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_MONKEY | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_MONKEY
|
||||
wound_resistance = -10
|
||||
px_y = 4
|
||||
dmg_overlay_type = SPECIES_MONKEY
|
||||
@@ -471,7 +476,8 @@
|
||||
icon_static = 'icons/mob/human/species/alien/bodyparts.dmi'
|
||||
icon_state = "alien_l_leg"
|
||||
limb_id = BODYPART_ID_ALIEN
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
px_x = 0
|
||||
px_y = 0
|
||||
bodypart_flags = BODYPART_UNREMOVABLE
|
||||
@@ -547,7 +553,7 @@
|
||||
icon_state = "default_monkey_r_leg"
|
||||
limb_id = SPECIES_MONKEY
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_MONKEY | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_MONKEY
|
||||
wound_resistance = -10
|
||||
px_y = 4
|
||||
dmg_overlay_type = SPECIES_MONKEY
|
||||
@@ -561,7 +567,8 @@
|
||||
icon_static = 'icons/mob/human/species/alien/bodyparts.dmi'
|
||||
icon_state = "alien_r_leg"
|
||||
limb_id = BODYPART_ID_ALIEN
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
px_x = 0
|
||||
px_y = 0
|
||||
bodypart_flags = BODYPART_UNREMOVABLE
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
icon_state = "borg_l_arm"
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC
|
||||
bodytype = BODYTYPE_ROBOTIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
|
||||
dmg_overlay_type = "robotic"
|
||||
|
||||
@@ -56,7 +57,8 @@
|
||||
icon_state = "borg_r_arm"
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC
|
||||
bodytype = BODYTYPE_ROBOTIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
|
||||
dmg_overlay_type = "robotic"
|
||||
|
||||
@@ -90,7 +92,8 @@
|
||||
icon_state = "borg_l_leg"
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC
|
||||
bodytype = BODYTYPE_ROBOTIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
|
||||
dmg_overlay_type = "robotic"
|
||||
|
||||
@@ -137,7 +140,8 @@
|
||||
icon_state = "borg_r_leg"
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC
|
||||
bodytype = BODYTYPE_ROBOTIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
|
||||
dmg_overlay_type = "robotic"
|
||||
|
||||
@@ -183,7 +187,8 @@
|
||||
icon_state = "borg_chest"
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC
|
||||
bodytype = BODYTYPE_ROBOTIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
|
||||
dmg_overlay_type = "robotic"
|
||||
|
||||
@@ -361,7 +366,8 @@
|
||||
icon_state = "borg_head"
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC
|
||||
bodytype = BODYTYPE_ROBOTIC
|
||||
bodyshape = BODYSHAPE_HUMANOID
|
||||
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
|
||||
dmg_overlay_type = "robotic"
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
/obj/item/bodypart/leg/left/digitigrade
|
||||
icon_greyscale = 'icons/mob/human/species/lizard/bodyparts.dmi'
|
||||
limb_id = BODYPART_ID_DIGITIGRADE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE
|
||||
bodyshape = BODYSHAPE_HUMANOID | BODYSHAPE_DIGITIGRADE
|
||||
|
||||
/obj/item/bodypart/leg/left/digitigrade/update_limb(dropping_limb = FALSE, is_creating = FALSE)
|
||||
. = ..()
|
||||
@@ -72,7 +72,7 @@
|
||||
/obj/item/bodypart/leg/right/digitigrade
|
||||
icon_greyscale = 'icons/mob/human/species/lizard/bodyparts.dmi'
|
||||
limb_id = BODYPART_ID_DIGITIGRADE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE
|
||||
bodyshape = BODYSHAPE_HUMANOID | BODYSHAPE_DIGITIGRADE
|
||||
|
||||
/obj/item/bodypart/leg/right/digitigrade/update_limb(dropping_limb = FALSE, is_creating = FALSE)
|
||||
. = ..()
|
||||
|
||||
+6
-1
@@ -25,6 +25,8 @@
|
||||
var/use_mob_sprite_as_obj_sprite = FALSE
|
||||
///Does this organ have any bodytypes to pass to it's bodypart_owner?
|
||||
var/external_bodytypes = NONE
|
||||
///Does this organ have any bodyshapes to pass to it's bodypart_owner?
|
||||
var/external_bodyshapes = NONE
|
||||
///Which flags does a 'modification tool' need to have to restyle us, if it all possible (located in code/_DEFINES/mobs)
|
||||
var/restyle_flags = NONE
|
||||
|
||||
@@ -87,12 +89,15 @@
|
||||
|
||||
if(external_bodytypes)
|
||||
receiver.synchronize_bodytypes()
|
||||
if(external_bodyshapes)
|
||||
receiver.synchronize_bodyshapes()
|
||||
|
||||
receiver.update_body_parts()
|
||||
|
||||
/obj/item/organ/external/mob_remove(mob/living/carbon/organ_owner, special, moving)
|
||||
if(!special)
|
||||
organ_owner.synchronize_bodytypes()
|
||||
organ_owner.synchronize_bodyshapes()
|
||||
organ_owner.update_body_parts()
|
||||
return ..()
|
||||
|
||||
@@ -223,7 +228,7 @@
|
||||
slot = ORGAN_SLOT_EXTERNAL_SNOUT
|
||||
|
||||
preference = "feature_lizard_snout"
|
||||
external_bodytypes = BODYTYPE_SNOUTED
|
||||
external_bodyshapes = BODYSHAPE_SNOUTED
|
||||
|
||||
//dna_block = DNA_SNOUT_BLOCK // SKYRAT EDIT REMOVAL - Customization - We have our own system to handle DNA.
|
||||
restyle_flags = EXTERNAL_RESTYLE_FLESH
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
var/obj/item/bodypart/chest/target_chest = human_target.get_bodypart(BODY_ZONE_CHEST)
|
||||
if(!(bodypart_to_attach.bodytype & target_chest.acceptable_bodytype))
|
||||
if((!(bodypart_to_attach.bodyshape & target_chest.acceptable_bodyshape)) && (!(bodypart_to_attach.bodytype & target_chest.acceptable_bodytype)))
|
||||
to_chat(user, span_warning("[bodypart_to_attach] doesn't match the patient's morphology."))
|
||||
return SURGERY_STEP_FAIL
|
||||
if(bodypart_to_attach.check_for_frankenstein(target))
|
||||
|
||||
@@ -168,9 +168,9 @@
|
||||
return
|
||||
|
||||
if(.)
|
||||
our_head.bodytype |= BODYTYPE_SNOUTED
|
||||
our_head.bodyshape |= BODYSHAPE_SNOUTED
|
||||
else
|
||||
our_head.bodytype &= ~BODYTYPE_SNOUTED
|
||||
our_head.bodyshape &= ~BODYSHAPE_SNOUTED
|
||||
target.synchronize_bodytypes()
|
||||
|
||||
/datum/preference/tri_color/snout
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
var/greyscale_config_worn_taur_paw
|
||||
var/greyscale_config_worn_taur_hoof
|
||||
|
||||
/// Used for BODYTYPE_CUSTOM: Needs to follow this syntax: a list() with the x and y coordinates of the pixel you want to get the color from. Colors are filled in as GAGs values for fallback.
|
||||
/// Used for BODYSHAPE_CUSTOM: Needs to follow this syntax: a list() with the x and y coordinates of the pixel you want to get the color from. Colors are filled in as GAGs values for fallback.
|
||||
var/list/species_clothing_color_coords[3]
|
||||
|
||||
/obj/item/clothing/head
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot & ITEM_SLOT_EYES)
|
||||
if(!(user.bodytype & BODYTYPE_ALT_FACEWEAR_LAYER))
|
||||
if(!(user.bodyshape & BODYSHAPE_ALT_FACEWEAR_LAYER))
|
||||
return
|
||||
if(!isnull(alternate_worn_layer) && alternate_worn_layer < BODY_FRONT_LAYER) // if the alternate worn layer was already lower than snouts then leave it be
|
||||
return
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
if(slot & ITEM_SLOT_HEAD)
|
||||
if(user.ears && (flags_inv & HIDEEARS))
|
||||
user.update_inv_ears()
|
||||
if(!(user.bodytype & BODYTYPE_ALT_FACEWEAR_LAYER))
|
||||
if(!(user.bodyshape & BODYSHAPE_ALT_FACEWEAR_LAYER))
|
||||
return
|
||||
if(!isnull(alternate_worn_layer) && alternate_worn_layer < BODY_FRONT_LAYER) // if the alternate worn layer was already lower than snouts then leave it be
|
||||
return
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot & ITEM_SLOT_MASK)
|
||||
if(!(user.bodytype & BODYTYPE_ALT_FACEWEAR_LAYER))
|
||||
if(!(user.bodyshape & BODYSHAPE_ALT_FACEWEAR_LAYER))
|
||||
return
|
||||
if(!isnull(alternate_worn_layer) && alternate_worn_layer < BODY_FRONT_LAYER) // if the alternate worn layer was already lower than snouts then leave it be
|
||||
return
|
||||
|
||||
@@ -47,10 +47,10 @@
|
||||
if(is_module_hidden()) // retracted modules can hide parts that aren't usable when inactive
|
||||
return
|
||||
|
||||
if(mod.chestplate && (mod.chestplate.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION) && (mod.wearer.bodytype & BODYTYPE_DIGITIGRADE))
|
||||
if(mod.chestplate && (mod.chestplate.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION) && (mod.wearer.bodyshape & BODYSHAPE_DIGITIGRADE))
|
||||
suit_supports_variations_flags |= CLOTHING_DIGITIGRADE_VARIATION
|
||||
|
||||
if(mod.helmet && (mod.helmet.supports_variations_flags & CLOTHING_SNOUTED_VARIATION) && mod.wearer.bodytype & BODYTYPE_SNOUTED)
|
||||
if(mod.helmet && (mod.helmet.supports_variations_flags & CLOTHING_SNOUTED_VARIATION) && mod.wearer.bodyshape & BODYSHAPE_SNOUTED)
|
||||
suit_supports_variations_flags |= CLOTHING_SNOUTED_VARIATION
|
||||
is_new_vox = isvoxprimalis(mod.wearer)
|
||||
is_old_vox = isvox(mod.wearer)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon_state = "vox_primalis_head"
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM | BODYTYPE_SNOUTED
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
limb_id = SPECIES_VOX_PRIMALIS
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon_state = "vox_primalis_chest"
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
is_dimorphic = FALSE
|
||||
should_draw_greyscale = FALSE
|
||||
limb_id = SPECIES_VOX_PRIMALIS
|
||||
@@ -24,7 +24,7 @@
|
||||
icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon_state = "vox_primalis_l_arm"
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
should_draw_greyscale = FALSE
|
||||
limb_id = SPECIES_VOX_PRIMALIS
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon_state = "vox_primalis_r_arm"
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
should_draw_greyscale = FALSE
|
||||
limb_id = SPECIES_VOX_PRIMALIS
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon_state = "vox_primalis_l_leg"
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
should_draw_greyscale = FALSE
|
||||
limb_id = SPECIES_VOX_PRIMALIS
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi'
|
||||
icon_state = "vox_primalis_r_leg"
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
should_draw_greyscale = FALSE
|
||||
limb_id = SPECIES_VOX_PRIMALIS
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
/obj/item/bodypart/head/mutant
|
||||
icon_greyscale = BODYPART_ICON_MAMMAL
|
||||
limb_id = SPECIES_MAMMAL
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC
|
||||
head_flags = HEAD_ALL_FEATURES
|
||||
|
||||
/obj/item/bodypart/chest/mutant
|
||||
@@ -61,7 +60,7 @@
|
||||
/obj/item/bodypart/leg/left/digitigrade
|
||||
icon_greyscale = BODYPART_ICON_MAMMAL
|
||||
limb_id = "digitigrade"
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
base_limb_id = "digitigrade"
|
||||
|
||||
/obj/item/bodypart/leg/left/digitigrade/update_limb(dropping_limb = FALSE, is_creating = FALSE)
|
||||
@@ -71,7 +70,7 @@
|
||||
/obj/item/bodypart/leg/right/digitigrade
|
||||
icon_greyscale = BODYPART_ICON_MAMMAL
|
||||
limb_id = "digitigrade"
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
base_limb_id = "digitigrade"
|
||||
|
||||
/obj/item/bodypart/leg/right/digitigrade/update_limb(dropping_limb = FALSE, is_creating = FALSE)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/obj/item/bodypart/head/mutant/akula
|
||||
icon_greyscale = BODYPART_ICON_AKULA
|
||||
limb_id = SPECIES_AKULA
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_SNOUTED
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED
|
||||
|
||||
/obj/item/bodypart/chest/mutant/akula
|
||||
icon_greyscale = BODYPART_ICON_AKULA
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/obj/item/bodypart/head/mutant/aquatic
|
||||
icon_greyscale = BODYPART_ICON_AQUATIC
|
||||
limb_id = SPECIES_AQUATIC
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_SNOUTED
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED
|
||||
|
||||
/obj/item/bodypart/chest/mutant/aquatic
|
||||
icon_greyscale = BODYPART_ICON_AQUATIC
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/obj/item/bodypart/head/lizard
|
||||
icon_greyscale = BODYPART_ICON_LIZARD
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC // You're too slow Kapu, I did it myself ;)
|
||||
head_flags = HEAD_ALL_FEATURES
|
||||
|
||||
/obj/item/bodypart/chest/lizard
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
limb_id = LIMBS_TAUR
|
||||
bodypart_flags = BODYPART_UNREMOVABLE
|
||||
can_be_surgically_removed = FALSE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_TAUR
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_TAUR
|
||||
|
||||
|
||||
/obj/item/bodypart/leg/right/taur/generate_icon_key()
|
||||
@@ -17,7 +17,7 @@
|
||||
limb_id = LIMBS_TAUR
|
||||
bodypart_flags = BODYPART_UNREMOVABLE
|
||||
can_be_surgically_removed = FALSE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_TAUR
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_TAUR
|
||||
|
||||
|
||||
/obj/item/bodypart/leg/left/taur/generate_icon_key()
|
||||
@@ -26,9 +26,9 @@
|
||||
return list("taur")
|
||||
|
||||
/obj/item/bodypart/leg/right/robot/synth/taur
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC | BODYTYPE_TAUR
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_TAUR
|
||||
damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT)
|
||||
|
||||
/obj/item/bodypart/leg/left/robot/synth/taur
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC | BODYTYPE_TAUR
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_TAUR
|
||||
damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
// teshari!
|
||||
/obj/item/bodypart/head/mutant/teshari
|
||||
icon_greyscale = BODYPART_ICON_TESHARI
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_TESHARI
|
||||
brute_modifier = TESHARI_BRUTE_MODIFIER
|
||||
burn_modifier = TESHARI_BURN_MODIFIER
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
/obj/item/bodypart/chest/mutant/teshari
|
||||
icon_greyscale = BODYPART_ICON_TESHARI
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_TESHARI
|
||||
brute_modifier = TESHARI_BRUTE_MODIFIER
|
||||
burn_modifier = TESHARI_BURN_MODIFIER
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
/obj/item/bodypart/arm/left/mutant/teshari
|
||||
icon_greyscale = BODYPART_ICON_TESHARI
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_TESHARI
|
||||
unarmed_damage_low = TESHARI_PUNCH_LOW
|
||||
unarmed_damage_high = TESHARI_PUNCH_HIGH
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
/obj/item/bodypart/arm/right/mutant/teshari
|
||||
icon_greyscale = BODYPART_ICON_TESHARI
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_TESHARI
|
||||
unarmed_damage_low = TESHARI_PUNCH_LOW
|
||||
unarmed_damage_high = TESHARI_PUNCH_HIGH
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
/obj/item/bodypart/leg/left/mutant/teshari
|
||||
icon_greyscale = BODYPART_ICON_TESHARI
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_TESHARI
|
||||
digitigrade_type = /obj/item/bodypart/leg/left/digitigrade/teshari
|
||||
brute_modifier = TESHARI_BRUTE_MODIFIER
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
/obj/item/bodypart/leg/right/mutant/teshari
|
||||
icon_greyscale = BODYPART_ICON_TESHARI
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_TESHARI
|
||||
digitigrade_type = /obj/item/bodypart/leg/right/digitigrade/teshari
|
||||
brute_modifier = TESHARI_BRUTE_MODIFIER
|
||||
@@ -108,14 +108,14 @@
|
||||
|
||||
/obj/item/bodypart/leg/left/digitigrade/teshari
|
||||
icon_greyscale = BODYPART_ICON_TESHARI
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
base_limb_id = SPECIES_TESHARI
|
||||
brute_modifier = TESHARI_BRUTE_MODIFIER
|
||||
burn_modifier = TESHARI_BURN_MODIFIER
|
||||
|
||||
/obj/item/bodypart/leg/right/digitigrade/teshari
|
||||
icon_greyscale = BODYPART_ICON_TESHARI
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
|
||||
base_limb_id = SPECIES_TESHARI
|
||||
brute_modifier = TESHARI_BRUTE_MODIFIER
|
||||
burn_modifier = TESHARI_BURN_MODIFIER
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
// voxs!
|
||||
/obj/item/bodypart/head/mutant/vox
|
||||
icon_greyscale = BODYPART_ICON_VOX
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_SNOUTED | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_VOX
|
||||
|
||||
/obj/item/bodypart/chest/mutant/vox
|
||||
icon_greyscale = BODYPART_ICON_VOX
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_VOX
|
||||
|
||||
/obj/item/bodypart/arm/left/mutant/vox
|
||||
icon_greyscale = BODYPART_ICON_VOX
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_VOX
|
||||
|
||||
/obj/item/bodypart/arm/right/mutant/vox
|
||||
icon_greyscale = BODYPART_ICON_VOX
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_VOX
|
||||
|
||||
/obj/item/bodypart/leg/left/mutant/vox
|
||||
icon_greyscale = BODYPART_ICON_VOX
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_VOX
|
||||
digitigrade_type = /obj/item/bodypart/leg/left/digitigrade/vox
|
||||
|
||||
/obj/item/bodypart/leg/right/mutant/vox
|
||||
icon_greyscale = BODYPART_ICON_VOX
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED | BODYSHAPE_CUSTOM
|
||||
limb_id = SPECIES_VOX
|
||||
digitigrade_type = /obj/item/bodypart/leg/right/digitigrade/vox
|
||||
|
||||
/obj/item/bodypart/leg/left/digitigrade/vox
|
||||
icon_greyscale = BODYPART_ICON_VOX
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED | BODYSHAPE_CUSTOM
|
||||
base_limb_id = SPECIES_VOX
|
||||
|
||||
/obj/item/bodypart/leg/right/digitigrade/vox
|
||||
icon_greyscale = BODYPART_ICON_VOX
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_SNOUTED | BODYSHAPE_CUSTOM
|
||||
base_limb_id = SPECIES_VOX
|
||||
|
||||
+3
-3
@@ -17,7 +17,7 @@
|
||||
/obj/item/organ/external/snout
|
||||
mutantpart_key = "snout"
|
||||
mutantpart_info = list(MUTANT_INDEX_NAME = "None", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF"))
|
||||
external_bodytypes = NONE // We don't actually want this to have BODYTYPE_SNOUTED by default, since some of them don't apply that.
|
||||
external_bodyshapes = NONE // We don't actually want this to have by default, since some of them don't apply that.
|
||||
preference = "feature_snout"
|
||||
|
||||
/datum/bodypart_overlay/mutant/snout
|
||||
@@ -32,9 +32,9 @@
|
||||
|
||||
/obj/item/organ/external/snout/Insert(mob/living/carbon/reciever, special, movement_flags)
|
||||
if(sprite_accessory_flags & SPRITE_ACCESSORY_USE_MUZZLED_SPRITE)
|
||||
external_bodytypes |= BODYTYPE_SNOUTED
|
||||
external_bodyshapes |= BODYSHAPE_SNOUTED
|
||||
if(sprite_accessory_flags & SPRITE_ACCESSORY_USE_ALT_FACEWEAR_LAYER)
|
||||
external_bodytypes |= BODYTYPE_ALT_FACEWEAR_LAYER
|
||||
external_bodyshapes |= BODYSHAPE_ALT_FACEWEAR_LAYER
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@
|
||||
GLOB.species_clothing_fallback_cache[name]["[file_to_use]-[state_to_use]-[meta]"] = cached_value
|
||||
|
||||
/**
|
||||
* Allow for custom clothing icon generation. Only called if the species is BODYTYPE_CUSTOM
|
||||
* Allow for custom clothing icon generation. Only called if the species is BODYSHAPE_CUSTOM
|
||||
* If null is returned, use default human icon.
|
||||
* Arguments:
|
||||
* * item_slot: The slot we're updating. One of LOADOUT_ITEM_HEAD, etc.
|
||||
|
||||
@@ -23,7 +23,7 @@ GLOBAL_LIST_EMPTY(customizable_races)
|
||||
var/veteran_only = FALSE
|
||||
///Flavor text of the species displayed on character creation screeen
|
||||
var/flavor_text = "No description."
|
||||
///Path to BODYTYPE_CUSTOM species worn icons. An assoc list of ITEM_SLOT_X => /icon
|
||||
///Path to BODYSHAPE_CUSTOM species worn icons. An assoc list of ITEM_SLOT_X => /icon
|
||||
var/list/custom_worn_icons = list()
|
||||
///Is this species restricted from changing their body_size in character creation?
|
||||
var/body_size_restricted = FALSE
|
||||
@@ -147,7 +147,7 @@ GLOBAL_LIST_EMPTY(customizable_races)
|
||||
var/female_sprite_flags = FEMALE_UNIFORM_FULL // the default gender shaping
|
||||
if(underwear)
|
||||
var/icon_state = underwear.icon_state
|
||||
if(underwear.has_digitigrade && (species_human.bodytype & BODYTYPE_DIGITIGRADE))
|
||||
if(underwear.has_digitigrade && (species_human.bodyshape & BODYSHAPE_DIGITIGRADE))
|
||||
icon_state += "_d"
|
||||
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY // for digi gender shaping
|
||||
if(species_human.dna.species.sexes && species_human.physique == FEMALE && (underwear.gender == MALE))
|
||||
@@ -189,7 +189,7 @@ GLOBAL_LIST_EMPTY(customizable_races)
|
||||
if(socks)
|
||||
var/mutable_appearance/socks_overlay
|
||||
var/icon_state = socks.icon_state
|
||||
if((species_human.bodytype & BODYTYPE_DIGITIGRADE))
|
||||
if((species_human.bodyshape & BODYSHAPE_DIGITIGRADE))
|
||||
icon_state += "_d"
|
||||
socks_overlay = mutable_appearance(socks.icon, icon_state, -BODY_LAYER)
|
||||
if(!socks.use_static)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "taur body"
|
||||
zone = BODY_ZONE_CHEST
|
||||
slot = ORGAN_SLOT_EXTERNAL_TAUR
|
||||
external_bodytypes = BODYTYPE_TAUR
|
||||
external_bodyshapes = BODYSHAPE_TAUR
|
||||
use_mob_sprite_as_obj_sprite = TRUE
|
||||
|
||||
preference = "feature_taur"
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
/obj/item/organ/external/taur_body/Insert(mob/living/carbon/reciever, special, movement_flags)
|
||||
if(sprite_accessory_flags & SPRITE_ACCESSORY_HIDE_SHOES)
|
||||
external_bodytypes |= BODYTYPE_HIDE_SHOES
|
||||
external_bodyshapes |= BODYSHAPE_HIDE_SHOES
|
||||
|
||||
old_right_leg = reciever.get_bodypart(BODY_ZONE_R_LEG)
|
||||
old_left_leg = reciever.get_bodypart(BODY_ZONE_L_LEG)
|
||||
@@ -49,12 +49,12 @@
|
||||
new_right_leg = new /obj/item/bodypart/leg/right/robot/synth/taur()
|
||||
|
||||
|
||||
new_left_leg.bodytype |= external_bodytypes
|
||||
new_left_leg.bodyshape |= external_bodyshapes
|
||||
new_left_leg.replace_limb(reciever, TRUE)
|
||||
if(old_left_leg)
|
||||
old_left_leg.forceMove(src)
|
||||
|
||||
new_right_leg.bodytype |= external_bodytypes
|
||||
new_right_leg.bodyshape |= external_bodyshapes
|
||||
new_right_leg.replace_limb(reciever, TRUE)
|
||||
if(old_right_leg)
|
||||
old_right_leg.forceMove(src)
|
||||
@@ -86,7 +86,7 @@
|
||||
old_right_leg.replace_limb(organ_owner, TRUE)
|
||||
old_right_leg = null
|
||||
|
||||
// We don't call `synchronize_bodytypes()` here, because it's already going to get called in the parent because `external_bodytypes` has a value.
|
||||
// We don't call `synchronize_bodytypes()` here, because it's already going to get called in the parent because `external_bodyshapes` has a value.
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
//digitigrade research
|
||||
|
||||
/datum/techweb_node/digitigrade_cyber
|
||||
id = "digitigrade_cyber"
|
||||
display_name = "Digitigrade Cybernetics"
|
||||
description = "Specialized cybernetic limb designs. The shortening of the femur is surely the result of mechanical optimization."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list(
|
||||
"digitigrade_cyber_l_leg",
|
||||
"digitigrade_cyber_r_leg",
|
||||
)
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
|
||||
|
||||
|
||||
/datum/techweb_node/adv_digitigrade_cyber
|
||||
id = "adv_digitigrade_cyber"
|
||||
display_name = "Advanced Digitigrade Cybernetics"
|
||||
description = "A step above consumer-grade digitigrade models, these have self-sharpening claws for destroying your footwear much faster."
|
||||
prereq_ids = list("adv_robotics", "digitigrade_cyber")
|
||||
design_ids = list(
|
||||
"digitigrade_advanced_l_leg",
|
||||
"digitigrade_advanced_r_leg",
|
||||
)
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 500)
|
||||
@@ -0,0 +1,21 @@
|
||||
/datum/augment_item/limb/l_leg/digi_prosthetic
|
||||
name = "Digitigrade prosthetic left leg"
|
||||
path = /obj/item/bodypart/leg/left/robot/surplus/digi
|
||||
cost = -1
|
||||
uses_robotic_styles = FALSE
|
||||
|
||||
/datum/augment_item/limb/l_leg/digi_cybernetic
|
||||
name = "Digitigrade cybernetic left leg"
|
||||
path = /obj/item/bodypart/leg/left/robot/digi
|
||||
uses_robotic_styles = FALSE
|
||||
|
||||
/datum/augment_item/limb/r_leg/digi_prosthetic
|
||||
name = "Digitigrade prosthetic right leg"
|
||||
path = /obj/item/bodypart/leg/right/robot/surplus/digi
|
||||
cost = -1
|
||||
uses_robotic_styles = FALSE
|
||||
|
||||
/datum/augment_item/limb/r_leg/digi_cybernetic
|
||||
name = "Digitigrade cybernetic right leg"
|
||||
path = /obj/item/bodypart/leg/right/robot/digi
|
||||
uses_robotic_styles = FALSE
|
||||
@@ -0,0 +1,53 @@
|
||||
#define RND_SUBCATEGORY_MECHFAB_CYBORG_DIGI "/Digitigrade"
|
||||
|
||||
/datum/design/digitigrade_cyber_r_leg
|
||||
name = "Digitigrade Cybernetic Right Leg"
|
||||
id = "digitigrade_cyber_r_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/leg/right/robot/digi
|
||||
materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 2)
|
||||
construction_time = 8 SECONDS
|
||||
category = list(
|
||||
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_DIGI,
|
||||
)
|
||||
|
||||
/datum/design/digitigrade_cyber_l_leg
|
||||
name = "Digitigrade Cybernetic Left Leg"
|
||||
id = "digitigrade_cyber_l_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/leg/left/robot/digi
|
||||
materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 2)
|
||||
construction_time = 8 SECONDS
|
||||
category = list(
|
||||
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_DIGI,
|
||||
)
|
||||
|
||||
/datum/design/digitigrade_adv_r_leg
|
||||
name = "Digitigrade Advanced Right Leg"
|
||||
id = "digitigrade_advanced_r_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/leg/right/robot/advanced/digi
|
||||
materials = list(
|
||||
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10,
|
||||
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3,
|
||||
/datum/material/gold = SHEET_MATERIAL_AMOUNT * 3,
|
||||
)
|
||||
construction_time = 20 SECONDS
|
||||
category = list(
|
||||
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_DIGI
|
||||
)
|
||||
|
||||
/datum/design/digitigrade_adv_l_leg
|
||||
name = "Digitigrade Advanced Left Leg"
|
||||
id = "digitigrade_advanced_l_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/leg/left/robot/advanced/digi
|
||||
materials = list(
|
||||
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10,
|
||||
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3,
|
||||
/datum/material/gold = SHEET_MATERIAL_AMOUNT * 3,
|
||||
)
|
||||
construction_time = 20 SECONDS
|
||||
category = list(
|
||||
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_DIGI
|
||||
)
|
||||
@@ -0,0 +1,38 @@
|
||||
//makes digi-robo limbs
|
||||
//for now, all digi limbs use the same sprites. This will be changed eventually.
|
||||
|
||||
/obj/item/bodypart/leg/right/robot/digi
|
||||
name = "cyborg digitigrade right leg"
|
||||
icon_static = 'modular_skyrat/modules/digitigrade_cybernetics/icons/digitigrade_parts.dmi'
|
||||
icon = 'modular_skyrat/modules/digitigrade_cybernetics/icons/digitigrade_parts.dmi'
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
|
||||
/obj/item/bodypart/leg/left/robot/digi
|
||||
name = "cyborg digitigrade left leg"
|
||||
icon_static = 'modular_skyrat/modules/digitigrade_cybernetics/icons/digitigrade_parts.dmi'
|
||||
icon = 'modular_skyrat/modules/digitigrade_cybernetics/icons/digitigrade_parts.dmi'
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
|
||||
/obj/item/bodypart/leg/right/robot/surplus/digi
|
||||
name = "prosthetic digitigrade right leg"
|
||||
icon_static = 'modular_skyrat/modules/digitigrade_cybernetics/icons/digitigrade_parts.dmi'
|
||||
icon = 'modular_skyrat/modules/digitigrade_cybernetics/icons/digitigrade_parts.dmi'
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
|
||||
/obj/item/bodypart/leg/left/robot/surplus/digi
|
||||
name = "prosthetic digitigrade right leg"
|
||||
icon_static = 'modular_skyrat/modules/digitigrade_cybernetics/icons/digitigrade_parts.dmi'
|
||||
icon = 'modular_skyrat/modules/digitigrade_cybernetics/icons/digitigrade_parts.dmi'
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
|
||||
/obj/item/bodypart/leg/right/robot/advanced/digi
|
||||
name = "advanced digitigrade right leg"
|
||||
icon_static = 'modular_skyrat/modules/digitigrade_cybernetics/icons/advanced_digitigrade_parts.dmi'
|
||||
icon = 'modular_skyrat/modules/digitigrade_cybernetics/icons/advanced_digitigrade_parts.dmi'
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
|
||||
/obj/item/bodypart/leg/left/robot/advanced/digi
|
||||
name = "advanced digitigrade right leg"
|
||||
icon_static = 'modular_skyrat/modules/digitigrade_cybernetics/icons/advanced_digitigrade_parts.dmi'
|
||||
icon = 'modular_skyrat/modules/digitigrade_cybernetics/icons/advanced_digitigrade_parts.dmi'
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 739 B |
Binary file not shown.
|
After Width: | Height: | Size: 706 B |
@@ -15,10 +15,10 @@
|
||||
|
||||
if(ishuman(user))
|
||||
//feet
|
||||
if(!(human_user.bodytype & BODYTYPE_DIGITIGRADE) && !(human_user.dna.species.mutant_bodyparts["taur"]))
|
||||
if(!(human_user.bodyshape & BODYSHAPE_DIGITIGRADE) && !(human_user.dna.species.mutant_bodyparts["taur"]))
|
||||
user.allowed_turfs += "footprint"
|
||||
|
||||
if((human_user.bodytype & BODYTYPE_DIGITIGRADE) || human_user.dna.species.mutant_bodyparts["taur"])
|
||||
if((human_user.bodyshape & BODYSHAPE_DIGITIGRADE) || human_user.dna.species.mutant_bodyparts["taur"])
|
||||
user.allowed_turfs += list("pawprint", "hoofprint", "clawprint")
|
||||
|
||||
//species & taurs
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
prefix = gauze_prefix
|
||||
|
||||
var/suffix = gauzed_bodypart.body_zone
|
||||
if(gauzed_bodypart.bodytype & BODYTYPE_DIGITIGRADE)
|
||||
if(gauzed_bodypart.bodyshape & BODYSHAPE_DIGITIGRADE)
|
||||
suffix += "_digitigrade"
|
||||
|
||||
return "[prefix]_[suffix]"
|
||||
|
||||
+1
-1
@@ -149,7 +149,7 @@
|
||||
//stuff to apply processing on equip and add mood event for perverts
|
||||
/obj/item/clothing/under/shibari/groin/equipped(mob/living/user, slot)
|
||||
var/mob/living/carbon/human/hooman = user
|
||||
slowdown = hooman?.bodytype & BODYTYPE_TAUR ? 4 : 0
|
||||
slowdown = hooman?.bodyshape & BODYSHAPE_TAUR ? 4 : 0
|
||||
return..()
|
||||
|
||||
//processing stuff
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
return
|
||||
var/obj/item/stack/shibari_rope/split_rope = null
|
||||
var/slow = 0
|
||||
if(them.bodytype & BODYTYPE_TAUR)
|
||||
if(them.bodyshape & BODYSHAPE_TAUR)
|
||||
split_rope = split_stack(null, 2)
|
||||
slow = 4
|
||||
else
|
||||
@@ -218,7 +218,7 @@
|
||||
if(them.shoes)
|
||||
to_chat(user, span_warning("They're already wearing something on this slot!"))
|
||||
return
|
||||
if(them.bodytype & BODYTYPE_TAUR)
|
||||
if(them.bodyshape & BODYSHAPE_TAUR)
|
||||
to_chat(user, span_warning("You can't tie their feet, they're a taur!"))
|
||||
return
|
||||
them.visible_message(span_warning("[user] starts tying [them]'s feet!"),\
|
||||
@@ -250,7 +250,7 @@
|
||||
if(!do_after(user, HAS_TRAIT(user, TRAIT_RIGGER) ? 20 : 60, them))
|
||||
return
|
||||
var/slow = 0
|
||||
if(them.bodytype & BODYTYPE_TAUR)
|
||||
if(them.bodyshape & BODYSHAPE_TAUR)
|
||||
slow = 4
|
||||
var/obj/item/stack/shibari_rope/split_rope = split_stack(null, 1)
|
||||
if(split_rope)
|
||||
@@ -283,7 +283,7 @@
|
||||
return
|
||||
var/obj/item/stack/shibari_rope/split_rope = null
|
||||
var/slow = 0
|
||||
if(them.bodytype & BODYTYPE_TAUR)
|
||||
if(them.bodyshape & BODYSHAPE_TAUR)
|
||||
split_rope = split_stack(null, 2)
|
||||
slow = 4
|
||||
else
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
icon_greyscale = BODYPART_ICON_IPC
|
||||
limb_id = SPECIES_SYNTH
|
||||
should_draw_greyscale = TRUE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC
|
||||
change_exempt_flags = NONE
|
||||
brute_modifier = SYNTH_BRUTE_MODIFIER
|
||||
burn_modifier = SYNTH_BURN_MODIFIER
|
||||
@@ -58,7 +57,7 @@
|
||||
icon_greyscale = BODYPART_ICON_SYNTHLIZARD
|
||||
should_draw_greyscale = TRUE
|
||||
limb_id = BODYPART_ID_DIGITIGRADE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC | BODYTYPE_DIGITIGRADE
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
base_limb_id = BODYPART_ID_DIGITIGRADE
|
||||
change_exempt_flags = NONE
|
||||
brute_modifier = SYNTH_BRUTE_MODIFIER
|
||||
@@ -72,7 +71,7 @@
|
||||
icon_greyscale = BODYPART_ICON_SYNTHLIZARD
|
||||
should_draw_greyscale = TRUE
|
||||
limb_id = BODYPART_ID_DIGITIGRADE
|
||||
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC | BODYTYPE_DIGITIGRADE
|
||||
bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE
|
||||
base_limb_id = BODYPART_ID_DIGITIGRADE
|
||||
change_exempt_flags = NONE
|
||||
brute_modifier = SYNTH_BRUTE_MODIFIER
|
||||
|
||||
@@ -7237,6 +7237,10 @@
|
||||
#include "modular_skyrat\modules\departmentization\clothing_overrides.dm"
|
||||
#include "modular_skyrat\modules\departmentization\quartermaster.dm"
|
||||
#include "modular_skyrat\modules\digi_bloodsole\code\_shoes.dm"
|
||||
#include "modular_skyrat\modules\digitigrade_cybernetics\code\all_nodes.dm"
|
||||
#include "modular_skyrat\modules\digitigrade_cybernetics\code\limbs.dm"
|
||||
#include "modular_skyrat\modules\digitigrade_cybernetics\code\mechfabricator_designs.dm"
|
||||
#include "modular_skyrat\modules\digitigrade_cybernetics\code\robot_bodyparts.dm"
|
||||
#include "modular_skyrat\modules\dogfashion\code\head.dm"
|
||||
#include "modular_skyrat\modules\drone_adjustments\drone.dm"
|
||||
#include "modular_skyrat\modules\drone_adjustments\slide_component.dm"
|
||||
|
||||
Reference in New Issue
Block a user