diff --git a/code/modules/mob/new_player/sprite_accessories_markings.dm b/code/modules/mob/new_player/sprite_accessories_markings.dm index 4105159073..c7152bf413 100644 --- a/code/modules/mob/new_player/sprite_accessories_markings.dm +++ b/code/modules/mob/new_player/sprite_accessories_markings.dm @@ -26,7 +26,6 @@ includes scars and tattoos var/digitigrade_icon = 'icons/mob/human_races/markings_digi.dmi' var/genetic = TRUE - var/organ_override = FALSE var/body_parts = list() //A list of bodyparts this covers, in organ_tag defines //Reminder: BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD @@ -2284,7 +2283,6 @@ includes scars and tattoos color_blend_mode = ICON_MULTIPLY body_parts = list(BP_L_FOOT,BP_R_FOOT) hide_body_parts = list(BP_L_FOOT,BP_R_FOOT) - organ_override = TRUE /datum/sprite_accessory/marking/vr_unathi_blocky_head name = "Unathi alt head (Blocky)" @@ -2292,7 +2290,6 @@ includes scars and tattoos color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) hide_body_parts = list(BP_HEAD) - organ_override = TRUE /datum/sprite_accessory/marking/vr_unathi_blocky_head_eyes name = "Unathi alt head eyes (Blocky)" @@ -2336,7 +2333,6 @@ includes scars and tattoos color_blend_mode = ICON_MULTIPLY hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD) body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD) - organ_override = TRUE /datum/sprite_accessory/marking/vr_sect_drone_eyes name = "Sect Drone Eyes" @@ -2654,3 +2650,37 @@ includes scars and tattoos icon_state = "digigradient" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_L_LEG,BP_L_FOOT,BP_R_LEG,BP_R_FOOT) + +//Big Leggies! +/datum/sprite_accessory/marking/bigleggy + name = "Big Leggies - Legs" + icon_state = "bigleggy" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG, BP_L_LEG) + digitigrade_acceptance = MARKING_DIGITIGRADE_ONLY + hide_body_parts = list(BP_R_LEG, BP_L_LEG) + digitigrade_icon = 'icons/mob/human_races/markings.dmi' + +/datum/sprite_accessory/marking/bigleggy/stanced + name = "Big Leggies - Legs (Stanced)" + icon_state = "bigleggy_stanced" + +/datum/sprite_accessory/marking/bigleggy/feet + name = "Big Leggies - Feet" + icon_state = "bigleggy_markings" + body_parts = list(BP_R_FOOT, BP_L_FOOT) + hide_body_parts = list(BP_R_FOOT, BP_L_FOOT) + +/datum/sprite_accessory/marking/bigleggy/feet/stanced + name = "Big Leggies - Feet (Stanced)" + icon_state = "bigleggy_markings_stanced" + +/datum/sprite_accessory/marking/bigleggy/feet/bird + name = "Big Leggies - Feet (Bird)" + icon_state = "bigleggy_m_bird" + +/datum/sprite_accessory/marking/bigleggy/feet/bird/stanced + name = "Big Leggies - Feet (Bird, Stanced)" + icon_state = "bigleggy_m_bird_stanced" + +//Big leggy end! diff --git a/code/modules/mob/new_player/sprite_accessories_taur.dm b/code/modules/mob/new_player/sprite_accessories_taur.dm index 890ecd69f8..2ed1534fb4 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur.dm @@ -1246,6 +1246,7 @@ fullness_icons = 3 ani_state = "bigleggy_stanced" extra_overlay_w = "bigleggy_markings_stanced" + clip_mask_state = "taur_clip_mask_def" //Leaving this here to make it clear it it's INTENTIONAL it shows above clothes. Use the marking if you want it to show UNDER clothes! /datum/sprite_accessory/tail/taur/bigleggy/canine name = "Big Leggies (Canine Tail)" @@ -1274,7 +1275,6 @@ /datum/sprite_accessory/tail/taur/bigleggy/bird name = "Big Leggies (Bird)" - icon_state = "bigleggy" extra_overlay = "bigleggy_m_bird" extra_overlay2 = "bigleggy_bird" extra_overlay_w = "bigleggy_m_bird_stanced" diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 1c345ac8e8..760883ac23 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -80,9 +80,9 @@ GLOBAL_LIST_EMPTY(limb_icon_cache) return res /obj/item/organ/external/proc/get_icon(var/skeletal, var/can_apply_transparency = TRUE) - var/digitigrade = 0 + cut_overlays() // preferentially take digitigrade value from owner if available, THEN DNA. // this allows limbs to be set properly when being printed in the bioprinter without an owner // this also allows the preview mannequin to update properly because customisation topic calls don't call a DNA check @@ -92,41 +92,16 @@ GLOBAL_LIST_EMPTY(limb_icon_cache) else if(data) digitigrade = check_digi && data.digitigrade - for(var/M in markings) - if (!markings[M]["on"]) - continue - var/datum/sprite_accessory/marking/mark = markings[M]["datum"] - if(mark.organ_override) - var/icon/mark_s = new/icon("icon" = mark.icon, "icon_state" = "[mark.icon_state]-[organ_tag]") - mob_icon = new /icon("icon" = mark.icon, "icon_state" = "blank") - mark_s.Blend(markings[M]["color"], mark.color_blend_mode) // VOREStation edit - mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons - icon_cache_key = "[M][markings[M]["color"]]" - for(var/MM in markings) - if (!markings[MM]["on"]) - continue - var/datum/sprite_accessory/marking/mark_style = markings[MM]["datum"] - if(mark_style.organ_override) - continue - var/icon/mark_s_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") - mark_s.Blend(markings[MM]["color"], mark_style.color_blend_mode) // VOREStation edit - add_overlay(mark_s_s) //So when it's not on your body, it has icons - mob_icon.Blend(mark_s_s, ICON_OVERLAY) //So when it's on your body, it has icons - icon_cache_key += "[MM][markings[MM]["color"]]" - - dir = EAST - icon = mob_icon - return mob_icon + var/should_apply_transparency = FALSE var/gender = "m" + var/skip_forced_icon = skip_robo_icon || (digi_prosthetic && digitigrade) if(owner && owner.gender == FEMALE) gender = "f" - var/should_apply_transparency = FALSE - icon_cache_key = "[icon_name]_[data.get_species_bodytype(owner)]" - if(force_icon) + if(force_icon && !skip_forced_icon) mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") else if(!data) @@ -143,71 +118,54 @@ GLOBAL_LIST_EMPTY(limb_icon_cache) if(skeletal) mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]") - else if (robotic >= ORGAN_ROBOT) + else if (robotic >= ORGAN_ROBOT && !skip_forced_icon) mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") should_apply_transparency = TRUE apply_colouration(mob_icon) - else if(is_hidden_by_markings()) - mob_icon = new /icon('icons/mob/human_races/r_blank.dmi', "[icon_name][gender ? "_[gender]" : ""]") - should_apply_transparency = TRUE else - //Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based. - mob_icon = new /icon(digitigrade ? data.get_species_icodigi() : data.get_species_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") - should_apply_transparency = TRUE - apply_colouration(mob_icon) + if(is_hidden_by_markings()) + mob_icon = new /icon('icons/mob/human_races/r_blank.dmi', "[icon_name][gender ? "_[gender]" : ""]") + should_apply_transparency = TRUE + else + //Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based. + mob_icon = new /icon(digitigrade ? data.get_species_icodigi() : data.get_species_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") + should_apply_transparency = TRUE + apply_colouration(mob_icon) - //Body markings, actually does not include head this time. Done separately above. - if(!istype(src,/obj/item/organ/external/head)) - for(var/M in markings) - if (!markings[M]["on"]) - continue - var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] - var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") - mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit - add_overlay(mark_s) //So when it's not on your body, it has icons - mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons - icon_cache_key += "[M][markings[M]["color"]]" - - if(body_hair && islist(h_col) && h_col.len >= 3) - var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]" - if(!GLOB.limb_icon_cache[cache_key]) - var/icon/I = icon(data.get_species_icobase(owner), "[icon_name]_[body_hair]") - I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit - GLOB.limb_icon_cache[cache_key] = I - mob_icon.Blend(GLOB.limb_icon_cache[cache_key], ICON_OVERLAY) - - // VOREStation edit start - if(nail_polish) - var/icon/I = new(nail_polish.icon, nail_polish.icon_state) - I.Blend(nail_polish.color, ICON_MULTIPLY) - add_overlay(I) - mob_icon.Blend(I, ICON_OVERLAY) - icon_cache_key += "_[nail_polish.icon]_[nail_polish.icon_state]_[nail_polish.color]" - // VOREStation edit end - - if(model) + if (model && !skip_forced_icon) icon_cache_key += "_model_[model]" should_apply_transparency = TRUE apply_colouration(mob_icon) - if(owner && owner.synth_markings) - for(var/M in markings) - if (!markings[M]["on"]) - continue - var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] - var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") - mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit - add_overlay(mark_s) //So when it's not on your body, it has icons - mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons - icon_cache_key += "[M][markings[M]["color"]]" - if(body_hair && islist(h_col) && h_col.len >= 3) - var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]" - if(!GLOB.limb_icon_cache[cache_key]) - var/icon/I = icon(data.get_species_icobase(owner), "[icon_name]_[body_hair]") - I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit - GLOB.limb_icon_cache[cache_key] = I - mob_icon.Blend(GLOB.limb_icon_cache[cache_key], ICON_OVERLAY) - // VOREStation edit ends here + //Body markings, actually does not include head this time. Done separately above. + if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !skip_forced_icon)) || (model && owner && owner.synth_markings)) + for(var/M in markings) + if (!markings[M]["on"]) + continue + var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] + var/isdigitype = mark_style.digitigrade_acceptance + if(check_digi) + if (!(isdigitype & (digitigrade ? MARKING_DIGITIGRADE_ONLY : MARKING_NONDIGI_ONLY))) //checks flags based on which digitigrade type the limb is + continue + var/icon/mark_s = new/icon("icon" = digitigrade ? mark_style.digitigrade_icon : mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") + mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) + add_overlay(mark_s) //So when it's not on your body, it has icons + mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons + icon_cache_key += "[M][markings[M]["color"]]" + if(body_hair && islist(h_col) && h_col.len >= 3) + var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]" + if(!GLOB.limb_icon_cache[cache_key]) + var/icon/I = icon(data.get_species_icobase(owner), "[icon_name]_[body_hair]") + I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) + GLOB.limb_icon_cache[cache_key] = I + mob_icon.Blend(GLOB.limb_icon_cache[cache_key], ICON_OVERLAY) + + if(nail_polish && !(force_icon && !skip_forced_icon)) + var/icon/I = new(nail_polish.icon, nail_polish.icon_state) + I.Blend(nail_polish.color, ICON_MULTIPLY) + add_overlay(I) + mob_icon.Blend(I, ICON_OVERLAY) + icon_cache_key += "_[nail_polish.icon]_[nail_polish.icon_state]_[nail_polish.color]" if (transparent && !istype(src,/obj/item/organ/external/head) && can_apply_transparency && should_apply_transparency) //VORESTATION EDIT: transparent instead of nonsolid mob_icon += rgb(,,,180) //do it here so any markings become transparent as well diff --git a/icons/mob/human_races/markings.dmi b/icons/mob/human_races/markings.dmi index a5c94db9ca..9cab5e7143 100644 Binary files a/icons/mob/human_races/markings.dmi and b/icons/mob/human_races/markings.dmi differ diff --git a/modular_chomp/code/modules/organs/organ_icon.dm b/modular_chomp/code/modules/organs/organ_icon.dm deleted file mode 100644 index 0f7207e9ac..0000000000 --- a/modular_chomp/code/modules/organs/organ_icon.dm +++ /dev/null @@ -1,97 +0,0 @@ -/obj/item/organ/external/get_icon(var/skeletal, var/can_apply_transparency = TRUE) - var/digitigrade = 0 - - cut_overlays() - // preferentially take digitigrade value from owner if available, THEN DNA. - // this allows limbs to be set properly when being printed in the bioprinter without an owner - // this also allows the preview mannequin to update properly because customisation topic calls don't call a DNA check - var/check_digi = istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) - if(owner) - digitigrade = check_digi && owner.digitigrade - else if(data) - digitigrade = check_digi && data.digitigrade - - var/should_apply_transparency = FALSE - - var/gender = "m" - var/skip_forced_icon = skip_robo_icon || (digi_prosthetic && digitigrade) - if(owner && owner.gender == FEMALE) - gender = "f" - - icon_cache_key = "[icon_name]_[data.get_species_bodytype(owner)]" - - if(force_icon && !skip_forced_icon) - mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") - else - if(!data) - mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]") - else - - if(!gendered_icon) - gender = null - else - if(data.body_gender) - gender = "f" - else - gender = "m" - - if(skeletal) - mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]") - else if (robotic >= ORGAN_ROBOT && !skip_forced_icon) - mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") - should_apply_transparency = TRUE - apply_colouration(mob_icon) - else - if(is_hidden_by_markings()) - mob_icon = new /icon('icons/mob/human_races/r_blank.dmi', "[icon_name][gender ? "_[gender]" : ""]") - should_apply_transparency = TRUE - else - //Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based. - mob_icon = new /icon(digitigrade ? data.get_species_icodigi() : data.get_species_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") - should_apply_transparency = TRUE - apply_colouration(mob_icon) - - if (model && !skip_forced_icon) - icon_cache_key += "_model_[model]" - should_apply_transparency = TRUE - apply_colouration(mob_icon) - - //Code here is copied from organ_icon.dm line 118 at time of writing (9/20/21), VOREStation edits are left in intentionally, because I think it's worth keeping track of the fact that the code is from Virgo's edits. - //Body markings, actually does not include head this time. Done separately above. - if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !skip_forced_icon)) || (model && owner && owner.synth_markings)) - for(var/M in markings) - if (!markings[M]["on"]) - continue - var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] - var/isdigitype = mark_style.digitigrade_acceptance - if(check_digi) - if (!(isdigitype & (digitigrade ? MARKING_DIGITIGRADE_ONLY : MARKING_NONDIGI_ONLY))) //checks flags based on which digitigrade type the limb is - continue - var/icon/mark_s = new/icon("icon" = digitigrade ? mark_style.digitigrade_icon : mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") - mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit - add_overlay(mark_s) //So when it's not on your body, it has icons - mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons - icon_cache_key += "[M][markings[M]["color"]]" - if(body_hair && islist(h_col) && h_col.len >= 3) - var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]" - if(!GLOB.limb_icon_cache[cache_key]) - var/icon/I = icon(data.get_species_icobase(owner), "[icon_name]_[body_hair]") - I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit - GLOB.limb_icon_cache[cache_key] = I - mob_icon.Blend(GLOB.limb_icon_cache[cache_key], ICON_OVERLAY) - - // VOREStation edit start - if(nail_polish && !(force_icon && !skip_forced_icon)) - var/icon/I = new(nail_polish.icon, nail_polish.icon_state) - I.Blend(nail_polish.color, ICON_MULTIPLY) - add_overlay(I) - mob_icon.Blend(I, ICON_OVERLAY) - icon_cache_key += "_[nail_polish.icon]_[nail_polish.icon_state]_[nail_polish.color]" - // VOREStation edit end - - if (transparent && !istype(src,/obj/item/organ/external/head) && can_apply_transparency && should_apply_transparency) //VORESTATION EDIT: transparent instead of nonsolid - mob_icon += rgb(,,,180) //do it here so any markings become transparent as well - - dir = EAST - icon = mob_icon - return mob_icon diff --git a/vorestation.dme b/vorestation.dme index f609e6a210..f974a5efff 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -5107,7 +5107,6 @@ #include "modular_chomp\code\modules\mob\new_player\sprite_accessories.dm" #include "modular_chomp\code\modules\mob\new_player\sprite_accessories_ear.dm" #include "modular_chomp\code\modules\mob\new_player\sprite_accessories_extra.dm" -#include "modular_chomp\code\modules\organs\organ_icon.dm" #include "modular_chomp\code\modules\organs\robolimbs.dm" #include "modular_chomp\code\modules\organs\internal\malignant\malignant.dm" #include "modular_chomp\code\modules\overmap\dynamic_sector.dm"