diff --git a/code/__defines/mobs_vr.dm b/code/__defines/mobs_vr.dm index 23e0b405cd..52e8d86525 100644 --- a/code/__defines/mobs_vr.dm +++ b/code/__defines/mobs_vr.dm @@ -50,3 +50,7 @@ #define SELECTS_BODYTYPE_FALSE 0 #define SELECTS_BODYTYPE_CUSTOM 1 #define SELECTS_BODYTYPE_SHAPESHIFTER 2 + +#define MARKING_NONDIGI_ONLY (1 << 0) +#define MARKING_DIGITIGRADE_ONLY (1 << 1) +#define MARKING_ALL_LEGS MARKING_NONDIGI_ONLY|MARKING_DIGITIGRADE_ONLY diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index 791524d221..e7f7c4f550 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -120,6 +120,7 @@ var/global/list/datum/dna/gene/dna_genes[0] var/custom_exclaim var/list/custom_heat = list() var/list/custom_cold = list() + var/digitigrade = 0 //0, Not FALSE, for future use as indicator for digitigrade types // VOREStation // New stuff @@ -148,6 +149,7 @@ var/global/list/datum/dna/gene/dna_genes[0] new_dna.custom_exclaim=custom_exclaim //VOREStaton Edit new_dna.custom_heat=custom_heat //VOREStation Edit new_dna.custom_cold=custom_cold //VOREStation Edit + new_dna.digitigrade=src.digitigrade //VOREStation Edit var/list/body_markings_genetic = (body_markings - body_marking_nopersist_list) new_dna.body_markings=body_markings_genetic.Copy() for(var/b=1;b<=DNA_SE_LENGTH;b++) @@ -222,6 +224,7 @@ var/global/list/datum/dna/gene/dna_genes[0] src.custom_exclaim = character.custom_exclaim src.custom_heat = character.custom_heat src.custom_cold = character.custom_cold + src.digitigrade = character.digitigrade // +1 to account for the none-of-the-above possibility SetUIValueRange(DNA_UI_EAR_STYLE, ear_style + 1, ear_styles_list.len + 1, 1) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 63ac864a30..f964a71976 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -153,6 +153,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O S["r_wing3"] >> pref.r_wing3 S["g_wing3"] >> pref.g_wing3 S["b_wing3"] >> pref.b_wing3 + S["digitigrade"] >> pref.digitigrade /datum/category_item/player_setup_item/general/body/save_character(var/savefile/S) S["species"] << pref.species @@ -217,6 +218,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O S["r_wing3"] << pref.r_wing3 S["g_wing3"] << pref.g_wing3 S["b_wing3"] << pref.b_wing3 + S["digitigrade"] << pref.digitigrade /datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S) if(!pref.species || !(pref.species in GLOB.playable_species)) @@ -281,6 +283,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.r_wing3 = sanitize_integer(pref.r_wing3, 0, 255, initial(pref.r_wing3)) pref.g_wing3 = sanitize_integer(pref.g_wing3, 0, 255, initial(pref.g_wing3)) pref.b_wing3 = sanitize_integer(pref.b_wing3, 0, 255, initial(pref.b_wing3)) + pref.digitigrade = sanitize_integer(pref.digitigrade, 0, 1, initial(pref.digitigrade)) pref.sanitize_body_styles() @@ -314,6 +317,15 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O character.g_synth = pref.g_synth character.b_synth = pref.b_synth character.synth_markings = pref.synth_markings + if(character.species.digi_allowed) + character.digitigrade = pref.digitigrade + else + character.digitigrade = 0 + + //sanity check + if(character.digitigrade == null) + character.digitigrade = 0 + pref.digitigrade = 0 var/list/ear_styles = pref.get_available_styles(global.ear_styles_list) character.ear_style = ear_styles[pref.ear_style] @@ -577,6 +589,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "
Body Color
" . += "Change Color [color_square(pref.r_skin, pref.g_skin, pref.b_skin)]
" + if(mob_species.digi_allowed) + . += "
Digitigrade?: [pref.digitigrade ? "Yes" : "No"]
" + . += "

Genetics Settings

" var/list/ear_styles = pref.get_available_styles(global.ear_styles_list) @@ -794,6 +809,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.b_facial = hex2num(copytext(new_facial, 6, 8)) return TOPIC_REFRESH_UPDATE_PREVIEW + if(href_list["digitigrade"]) + pref.digitigrade = !pref.digitigrade + + return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["eye_color"]) if(!has_flag(mob_species, HAS_EYE_COLOR)) return TOPIC_NOACTION diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 4241e7d7d7..ec19b0e0ab 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -82,6 +82,7 @@ var/list/preferences_datums = list() var/g_synth //Same as above var/b_synth //Same as above var/synth_markings = 1 //Enable/disable markings on synth parts. //VOREStation Edit - 1 by default + var/digitigrade = 0 //Some faction information. var/home_system = "Unset" //Current home or residence. diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index e11e2647b9..1de8f5687c 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -23,6 +23,9 @@ var/polychromic = FALSE //VOREStation edit + var/update_icon_define_orig = null // temp storage for original update_icon_define (if it exists) + var/fit_for_digi = FALSE // flag for if clothing has already been reskinned to digitigrade + //Updates the icons of the mob wearing the clothing item, if any. /obj/item/clothing/proc/update_clothing_icon() return @@ -1059,3 +1062,61 @@ M.forceMove(get_turf(src)) return ..() //Vorestation edit end + +/obj/item/clothing/proc/handle_digitigrade(var/mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + + // if digitigrade-use flag is set + if(H.digitigrade) + + // figure out what slot we care about + var/update_icon_define_digi = null + + if(istype(src, /obj/item/clothing/shoes)) + update_icon_define_digi = "icons/inventory/feet/mob_digi.dmi" + else if(istype(src, /obj/item/clothing/suit)) //suit + update_icon_define_digi = "icons/inventory/suit/mob_digi.dmi" + else if(istype(src, /obj/item/clothing/under)) //uniform + update_icon_define_digi = "icons/inventory/uniform/mob_digi.dmi" + else + return + + // Don't reset if already set + if(!fit_for_digi) + fit_for_digi = TRUE // set flag even if no icon_state exists, so we don't repeat checks + + //if update_icon_define is already set to something, place it in a var to hold it temporarily + if(update_icon_define) + update_icon_define_orig = update_icon_define + + // only override icon if a corresponding digitigrade replacement icon_state exists + // otherwise, keep the old non-digi icon_define (or nothing) + if(icon_state && icon_states(update_icon_define_digi).Find(icon_state)) + update_icon_define = update_icon_define_digi + + + // if not-digitigrade, only act if the clothing was previously fit for a digitigrade char + else + if(fit_for_digi) + fit_for_digi = FALSE + + //either reset update_icon_define to it's old value + // or reset update_icon_define to null + if(update_icon_define_orig) + update_icon_define = update_icon_define_orig + update_icon_define_orig = null + else + update_icon_define = null + +/obj/item/clothing/shoes/equipped(var/mob/user, var/slot) + . = ..() + handle_digitigrade(user) + +/obj/item/clothing/suit/equipped(var/mob/user, var/slot) + . = ..() + handle_digitigrade(user) + +/obj/item/clothing/under/equipped(var/mob/user, var/slot) + . = ..() + handle_digitigrade(user) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 4b2236218e..a3be484060 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -36,6 +36,8 @@ var/b_synth //Same as above var/synth_markings = 0 //Enables/disables markings on synth parts. + var/digitigrade = 0 // 0 = no digi, 1 = default, 2+ = digi styles... (Not used yet) + //var/size_multiplier = 1 //multiplier for the mob's icon size //VOREStation Edit (Moved to /mob/living) var/damage_multiplier = 1 //multiplies melee combat damage var/icon_update = 1 //whether icon updating shall take place diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index fec724dae2..e7722cff39 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -61,6 +61,9 @@ var/min_age = 17 var/max_age = 70 + var/icodigi = 'icons/mob/human_races/r_digi.dmi' + var/digi_allowed = FALSE + // Language/culture vars. var/default_language = LANGUAGE_GALCOM // Default language is used when 'say' is used without modifiers. var/language = LANGUAGE_GALCOM // Default racial language, if any. diff --git a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm index f1a261e26e..6770386fbd 100644 --- a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm @@ -8,6 +8,7 @@ name_plural = "Custom" selects_bodytype = SELECTS_BODYTYPE_CUSTOM base_species = SPECIES_HUMAN + digi_allowed = TRUE unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch, /datum/unarmed_attack/bite) diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm index f7d154b1b8..e0c8114eee 100755 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm @@ -13,6 +13,7 @@ selects_bodytype = SELECTS_BODYTYPE_SHAPESHIFTER base_species = SPECIES_HUMAN + digi_allowed = TRUE blood_color = "#505050" //This is the same as the 80,80,80 below, but in hex flesh_color = "#505050" diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index fc9c607a0d..6fda9ef680 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -73,6 +73,7 @@ health_hud_intensity = 2.5 chem_strength_alcohol = 0.75 throwforce_absorb_threshold = 10 + digi_allowed = TRUE min_age = 32 max_age = 260 @@ -198,6 +199,7 @@ species_language = LANGUAGE_SIIK health_hud_intensity = 2.5 chem_strength_alcohol = 1.25 + digi_allowed = TRUE min_age = 17 max_age = 80 diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index 67c9ca9322..c66a48b175 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -16,6 +16,7 @@ burn_mod = 1.15 //As vulnerable to burn as a Tajara. base_species = "Xenochimera" selects_bodytype = SELECTS_BODYTYPE_CUSTOM + digi_allowed = TRUE num_alternate_languages = 3 species_language = null @@ -332,6 +333,7 @@ brute_mod = 0.8 //20% brute damage reduction burn_mod = 1.15 //15% burn damage increase. They're spiders. Aerosol can+lighter = dead spiders. throwforce_absorb_threshold = 10 + digi_allowed = TRUE num_alternate_languages = 3 species_language = LANGUAGE_VESPINAE diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm index 79273429b2..33282aefe7 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm @@ -17,6 +17,7 @@ species_language = LANGUAGE_SAGARU color_mult = 1 inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) + digi_allowed = TRUE min_age = 18 max_age = 80 @@ -86,6 +87,7 @@ inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair, /mob/living/carbon/human/proc/water_stealth, /mob/living/carbon/human/proc/underwater_devour) min_age = 18 max_age = 80 + digi_allowed = TRUE blurb = "The Akula are a species of amphibious humanoids like the Skrell, but have an appearance very similar to that of a shark. \ They were first discovered as a primitive race of underwater dwelling tribal creatures by the Skrell. At first they were not believed \ @@ -138,6 +140,7 @@ /mob/living/carbon/human/proc/tie_hair) min_age = 18 max_age = 80 + digi_allowed = TRUE blurb = "Nevreans are a race of avian and dinosaur-like creatures living on Tal. They belong to a group of races that hails from Eltus, \ in the Vilous system. Unlike sergals whom they share a star system with, their species is a very peaceful one. They possess remarkable \ @@ -180,6 +183,7 @@ inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds, /mob/living/proc/shred_limb, /mob/living/carbon/human/proc/tie_hair) + digi_allowed = TRUE min_age = 18 max_age = 80 @@ -237,6 +241,7 @@ color_mult = 1 inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds, /mob/living/carbon/human/proc/tie_hair) + digi_allowed = TRUE wikilink="https://wiki.vore-station.net/Backstory#Vulpkanin" @@ -411,6 +416,7 @@ color_mult = 1 genders = list(MALE, FEMALE, PLURAL, NEUTER) inherent_verbs = list(/mob/living/proc/flying_toggle,/mob/living/proc/flying_vore_toggle,/mob/living/proc/start_wings_hovering,/mob/living/carbon/human/proc/tie_hair) + digi_allowed = TRUE min_age = 18 max_age = 80 @@ -452,6 +458,7 @@ taken to calling these creatures 'Shadekin', and the name has generally stuck and spread. " //TODO: Something more fitting for black-eyes wikilink = "https://wiki.vore-station.net/Shadekin" catalogue_data = list(/datum/category_item/catalogue/fauna/shadekin) + digi_allowed = TRUE language = LANGUAGE_SHADEKIN name_language = LANGUAGE_SHADEKIN @@ -561,6 +568,7 @@ name_language = LANGUAGE_TERMINUS species_language = LANGUAGE_TERMINUS inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds,/mob/living/proc/shred_limb,/mob/living/carbon/human/proc/tie_hair) + digi_allowed = TRUE min_age = 18 max_age = 80 @@ -592,6 +600,7 @@ darksight = 4 //Better hunters in the dark. hunger_factor = 0.1 //In exchange, they get hungry a tad faster. num_alternate_languages = 3 + digi_allowed = TRUE min_age = 18 max_age = 80 @@ -631,6 +640,7 @@ name_language = null color_mult = 1 inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) + digi_allowed = TRUE min_age = 18 max_age = 80 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index b1fbafc52c..590598404c 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -311,6 +311,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(tail_style.clip_mask) //VOREStation Edit. icon_key += tail_style.clip_mask_state + if(digitigrade && (part.organ_tag == BP_R_LEG || part.organ_tag == BP_L_LEG || part.organ_tag == BP_R_FOOT || part.organ_tag == BP_L_FOOT)) + icon_key += "_digi" + if(tail_style) pixel_x = tail_style.mob_offset_x pixel_y = tail_style.mob_offset_y @@ -789,6 +792,14 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(istype(foot) && foot.is_hidden_by_sprite_accessory(clothing_only = TRUE)) //If either foot is hidden by the tail, don't render footwear. return + var/obj/item/clothing/shoes/shoe = shoes + var/shoe_sprite + + if(istype(shoe) && !isnull(shoe.update_icon_define)) + shoe_sprite = shoe.update_icon_define + else + shoe_sprite = INV_FEET_DEF_ICON + //Allow for shoe layer toggle nonsense var/shoe_layer = SHOES_LAYER if(istype(shoes, /obj/item/clothing/shoes)) @@ -797,7 +808,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() shoe_layer = SHOES_LAYER_ALT //NB: the use of a var for the layer on this one - overlays_standing[shoe_layer] = shoes.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_shoes_str, default_icon = INV_FEET_DEF_ICON, default_layer = shoe_layer) + overlays_standing[shoe_layer] = shoes.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_shoes_str, default_icon = shoe_sprite, default_layer = shoe_layer) apply_layer(SHOES_LAYER) apply_layer(SHOES_LAYER_ALT) diff --git a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm index 201e0a6f81..cf1adc86a0 100644 --- a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm @@ -4,6 +4,8 @@ /datum/sprite_accessory/marking //Override for base markings color_blend_mode = ICON_ADD species_allowed = list() //This lets all races use + var/digitigrade_acceptance = MARKING_NONDIGI_ONLY + var/digitigrade_icon = 'icons/mob/human_races/markings_digi.dmi' /datum/sprite_accessory/marking/vr_vulp_belly name = "belly fur (Vulp)" @@ -1128,4 +1130,105 @@ icon = 'icons/mob/human_races/markings_vr.dmi' icon_state = "backsail" color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_TORSO) \ No newline at end of file + body_parts = list(BP_TORSO) + +//Digitigrade markings +/datum/sprite_accessory/marking/digi + icon = 'icons/mob/human_races/markings_digi.dmi' + digitigrade_acceptance = MARKING_DIGITIGRADE_ONLY + +/datum/sprite_accessory/marking/digi/fullleft + name = "Digitigrade Full Left Leg(Only works with digitigrade legs)" + icon_state = "full" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/fullright + name = "Digitigrade Full Right Leg(Only works with digitigrade legs)" + icon_state = "full" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/longsockleft + name = "Digitigrade Long Socks Left(Only works with digitigrade legs)" + icon_state = "longsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/longsockright + name = "Digitigrade Long Socks Right(Only works with digitigrade legs)" + icon_state = "longsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/medsockleft + name = "Digitigrade Medium Socks Left(Only works with digitigrade legs)" + icon_state = "medsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/medsockright + name = "Digitigrade Medium Socks Right(Only works with digitigrade legs)" + icon_state = "medsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/shortsockleft + name = "Digitigrade Short Socks Left(Only works with digitigrade legs)" + icon_state = "shortsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/shortsockright + name = "Digitigrade Short Socks Right(Only works with digitigrade legs)" + icon_state = "shortsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/toesleft + name = "Digitigrade Toes Left(Only works with digitigrade legs)" + icon_state = "toes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/toesright + name = "Digitigrade Toes Right(Only works with digitigrade legs)" + icon_state = "toes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/stripesleft + name = "Digitigrade Stripes Left(Only works with digitigrade legs)" + icon_state = "stripes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/stripesright + name = "Digitigrade Stripes Right(Only works with digitigrade legs)" + icon_state = "stripes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/smallspotsleft + name = "Digitigrade Small Spots Left(Only works with digitigrade legs)" + icon_state = "smallspots" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/smallspotsright + name = "Digitigrade Small Spots Right(Only works with digitigrade legs)" + icon_state = "smallspots" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/bigspotsleft + name = "Digitigrade Big Spots Left(Only works with digitigrade legs)" + icon_state = "bigspots" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/bigspotsright + name = "Digitigrade Big Spots Right(Only works with digitigrade legs)" + icon_state = "bigspots" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index b22ee48e98..76283cdf51 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -45,6 +45,8 @@ var/body_hair // Icon blend for body hair if any. var/mob/living/applied_pressure var/list/markings = list() // Markings (body_markings) to apply to the icon + var/skip_robo_icon = FALSE //to force it to use the normal species icon + var/digi_prosthetic = FALSE //is it a prosthetic that can be digitigrade // Wound and structural data. var/wound_update_accuracy = 1 // how often wounds should be updated, a higher number means less often @@ -201,6 +203,12 @@ O = O.parent return 0 +//new function to check for markings +/obj/item/organ/external/proc/is_hidden_by_markings() + for(var/M in markings) + var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] + if(istype(mark_style,/datum/sprite_accessory/marking) && (organ_tag in mark_style.hide_body_parts)) + return 1 /obj/item/organ/external/proc/dislocate() if(dislocated == -1) diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index cce3302eff..2ed4a34cd3 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -99,6 +99,11 @@ for(var/modifier_type in R.genetic_modifiers) H.add_modifier(modifier_type) + //Apply legs + H.digitigrade = R.dna.digitigrade // ensure clone mob has digitigrade var set appropriately + if(H.dna.digitigrade <> R.dna.digitigrade) + H.dna.digitigrade = R.dna.digitigrade // ensure cloned DNA is set appropriately from record??? for some reason it doesn't get set right despite the override to datum/dna/Clone() + //Apply damage H.adjustCloneLoss(H.getMaxHealth()*1.5) H.Paralyse(4) diff --git a/icons/inventory/feet/mob_digi.dmi b/icons/inventory/feet/mob_digi.dmi new file mode 100644 index 0000000000..c2a1a9ab82 Binary files /dev/null and b/icons/inventory/feet/mob_digi.dmi differ diff --git a/icons/inventory/suit/mob_digi.dmi b/icons/inventory/suit/mob_digi.dmi new file mode 100644 index 0000000000..43ec6bc337 Binary files /dev/null and b/icons/inventory/suit/mob_digi.dmi differ diff --git a/icons/inventory/uniform/mob_digi.dmi b/icons/inventory/uniform/mob_digi.dmi new file mode 100644 index 0000000000..637e63b889 Binary files /dev/null and b/icons/inventory/uniform/mob_digi.dmi differ diff --git a/icons/mob/human_races/markings_digi.dmi b/icons/mob/human_races/markings_digi.dmi new file mode 100644 index 0000000000..c9f504c584 Binary files /dev/null and b/icons/mob/human_races/markings_digi.dmi differ diff --git a/icons/mob/human_races/masks/blood_digitigrade.dmi b/icons/mob/human_races/masks/blood_digitigrade.dmi new file mode 100644 index 0000000000..5980ce30f7 Binary files /dev/null and b/icons/mob/human_races/masks/blood_digitigrade.dmi differ diff --git a/icons/mob/human_races/r_blank.dmi b/icons/mob/human_races/r_blank.dmi new file mode 100644 index 0000000000..9b2fb0341d Binary files /dev/null and b/icons/mob/human_races/r_blank.dmi differ diff --git a/icons/mob/human_races/r_digi.dmi b/icons/mob/human_races/r_digi.dmi new file mode 100644 index 0000000000..4a38e7155e Binary files /dev/null and b/icons/mob/human_races/r_digi.dmi differ diff --git a/icons/mob/human_races/r_digi_xeno.dmi b/icons/mob/human_races/r_digi_xeno.dmi new file mode 100644 index 0000000000..fee592f02e Binary files /dev/null and b/icons/mob/human_races/r_digi_xeno.dmi differ diff --git a/icons/mob/human_races/r_xenomorph_hybrid.dmi b/icons/mob/human_races/r_xenomorph_hybrid.dmi new file mode 100644 index 0000000000..811456cd1f Binary files /dev/null and b/icons/mob/human_races/r_xenomorph_hybrid.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 5bde4212fb..21e534b3a8 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4265,6 +4265,7 @@ #include "maps\southern_cross\loadout\loadout_suit.dm" #include "maps\southern_cross\loadout\loadout_uniform.dm" #include "maps\southern_cross\loadout\loadout_vr.dm" +#include "maps\stellar_delight\stellar_delight.dm" #include "maps\submaps\_helpers.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\admin_use_vr\event_autonomous_drone.dm" @@ -4275,6 +4276,5 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" -#include "maps\tether\tether.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE