diff --git a/code/modules/mob/new_player/sprite_accessories_extra_ch.dm b/code/modules/mob/new_player/sprite_accessories_extra_ch.dm index 72af2eb90a..cb65a846f6 100644 --- a/code/modules/mob/new_player/sprite_accessories_extra_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_extra_ch.dm @@ -1,5 +1,6 @@ /datum/sprite_accessory/marking/ch icon = 'icons/mob/human_races/markings_ch.dmi' + /datum/sprite_accessory/marking/ch/orca_head name = "Orca head" icon_state = "orca_head" @@ -481,4 +482,4 @@ name = "Spots, Outer" icon_state = "spots_extremities" body_parts = list(BP_R_ARM,BP_L_ARM,BP_R_LEG,BP_L_LEG,BP_R_FOOT,BP_L_FOOT) - color_blend_mode = ICON_MULTIPLY \ No newline at end of file + color_blend_mode = ICON_MULTIPLY diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm index b44ed20cb5..6b310f2848 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm @@ -1176,7 +1176,7 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY ckeys_allowed = list("prettiebyrd") - + /datum/sprite_accessory/tail/altevian name = "Altevian Tail" icon = 'icons/mob/vore/tails_vr.dmi' diff --git a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm index 22f01db12d..698c91d051 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm @@ -618,4 +618,4 @@ extra_overlay2 = "noodle_markings_2" suit_sprites = 'icons/mob/taursuits_noodle_vr.dmi' clip_mask_state = "taur_clip_mask_noodle" - icon_sprite_tag = "noodle" + icon_sprite_tag = "noodle" \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories_wing_ch.dm b/code/modules/mob/new_player/sprite_accessories_wing_ch.dm index 48d5d29a39..5034a4f712 100644 --- a/code/modules/mob/new_player/sprite_accessories_wing_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_wing_ch.dm @@ -23,4 +23,4 @@ icon = 'icons/mob/vore/wings_ch.dmi' icon_state = "snail_shell" do_colouration = 1 - color_blend_mode = ICON_MULTIPLY \ No newline at end of file + color_blend_mode = ICON_MULTIPLY diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index d35a5aa516..fa93fc43b7 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -131,7 +131,7 @@ var/global/list/limb_icon_cache = list() I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit limb_icon_cache[cache_key] = I mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) - + // VOREStation edit start if(nail_polish) var/icon/I = new(nail_polish.icon, nail_polish.icon_state) diff --git a/code/modules/organs/organ_icon_ch.dm b/code/modules/organs/organ_icon_ch.dm index 7348f5c054..dacba3d4eb 100644 --- a/code/modules/organs/organ_icon_ch.dm +++ b/code/modules/organs/organ_icon_ch.dm @@ -12,7 +12,7 @@ digitigrade = dna.digitigrade if( !model && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) //All leg icons go through here now. - + var/gender = "m" if(owner && owner.gender == FEMALE) gender = "f" @@ -43,7 +43,6 @@ mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) else - //Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based. mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) @@ -66,7 +65,7 @@ I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit limb_icon_cache[cache_key] = I mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) - + // VOREStation edit start if(nail_polish) var/icon/I = new(nail_polish.icon, nail_polish.icon_state) diff --git a/icons/mob/human_races/markings_ch.dmi b/icons/mob/human_races/markings_ch.dmi index 5cc3d842c4..abff58fe74 100644 Binary files a/icons/mob/human_races/markings_ch.dmi and b/icons/mob/human_races/markings_ch.dmi differ diff --git a/icons/mob/human_races/markings_digi_ch.dmi b/icons/mob/human_races/markings_digi_ch.dmi index 924b4f54dd..dbe633fac4 100644 Binary files a/icons/mob/human_races/markings_digi_ch.dmi and b/icons/mob/human_races/markings_digi_ch.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/vore/tails_ch.dmi b/icons/mob/vore/tails_ch.dmi index b30793a048..ba1c5b6103 100644 Binary files a/icons/mob/vore/tails_ch.dmi and b/icons/mob/vore/tails_ch.dmi differ diff --git a/icons/mob/vore/taurs_ch.dmi b/icons/mob/vore/taurs_ch.dmi index 7e8e01283f..302002993d 100644 Binary files a/icons/mob/vore/taurs_ch.dmi and b/icons/mob/vore/taurs_ch.dmi differ diff --git a/icons/mob/vore/wings_ch.dmi b/icons/mob/vore/wings_ch.dmi index 5b90a078d5..296313cfeb 100644 Binary files a/icons/mob/vore/wings_ch.dmi and b/icons/mob/vore/wings_ch.dmi differ diff --git a/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm b/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm new file mode 100644 index 0000000000..c1cc7b2ae1 --- /dev/null +++ b/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm @@ -0,0 +1,148 @@ +/datum/sprite_accessory/marking + var/hide_body_parts = list() + +/datum/sprite_accessory/marking/ch/anthrovirus_ra + name = "Anthro Virus (Right Arm)" + icon_state = "anthrovirus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_ARM,BP_R_HAND) + hide_body_parts = list(BP_R_ARM,BP_R_HAND) + +/datum/sprite_accessory/marking/ch/anthrovirus_la + name = "Anthro Virus (Left Arm)" + icon_state = "anthrovirus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_ARM,BP_L_HAND) + hide_body_parts = list(BP_L_ARM,BP_L_HAND) + +/datum/sprite_accessory/marking/ch/anthrovirus_rl + name = "Anthro Virus (Right Leg)" + icon_state = "anthrovirus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG) + hide_body_parts = list(BP_R_LEG) + +/datum/sprite_accessory/marking/ch/anthrovirus_ll + name = "Anthro Virus (Left Leg)" + icon_state = "anthrovirus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG) + hide_body_parts = list(BP_L_LEG) + +/datum/sprite_accessory/marking/ch/anthrovirus_rf + name = "Anthro Virus (Right Foot)" + icon_state = "anthrovirus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_FOOT) + hide_body_parts = list(BP_R_FOOT) + +/datum/sprite_accessory/marking/ch/anthrovirus_lf + name = "Anthro Virus (Left Foot)" + icon_state = "anthrovirus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT) + hide_body_parts = list(BP_L_FOOT) + +/datum/sprite_accessory/marking/ch/anthrovirus_t + name = "Anthro Virus (Torso)" + icon_state = "anthrovirus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_TORSO,BP_GROIN) + hide_body_parts = list(BP_TORSO,BP_GROIN) + +/datum/sprite_accessory/marking/ch/anthrovirus_h + name = "Anthro Virus (Head)" + icon_state = "anthrovirus" + body_parts = list(BP_HEAD) + color_blend_mode = ICON_MULTIPLY + hide_body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/virus_ra + name = "Bacteriophage (Right Arm)" + icon_state = "virus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_ARM,BP_R_HAND) + hide_body_parts = list(BP_R_ARM,BP_R_HAND) + +/datum/sprite_accessory/marking/ch/virus_la + name = "Bacteriophage (Left Arm)" + icon_state = "virus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_ARM,BP_L_HAND) + hide_body_parts = list(BP_L_ARM,BP_L_HAND) + +/datum/sprite_accessory/marking/ch/virus_rl + name = "Bacteriophage (Right Leg)" + icon_state = "virus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + hide_body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/ch/virus_ll + name = "Bacteriophage (Left Leg)" + icon_state = "virus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + hide_body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/ch/virus_t + name = "Bacteriophage (Torso)" + icon_state = "virus" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_TORSO,BP_GROIN) + hide_body_parts = list(BP_TORSO,BP_GROIN) + +/datum/sprite_accessory/marking/ch/virus_g + name = "Bacteriophage (Groin)" + icon_state = "virusgroin" //this is separate so that the groin region can be hidden by the torso. + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_GROIN) + //hide_body_parts = list(BP_GROIN) this IS pretty low, even for the groin body part. + +/datum/sprite_accessory/marking/ch/virus_h + name = "Bacteriophage (Head)" + icon_state = "virus" + body_parts = list(BP_HEAD) + color_blend_mode = ICON_MULTIPLY + hide_body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/tyranid + name = "Tyranid Bodytype (Use with Armor)" + icon_state = "tyranid" + 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) + +/datum/sprite_accessory/marking/ch/tyranid_armor + name = "Tyranid Bodytype (Armor)" + icon_state = "tyranidarmor" + 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) + +/datum/sprite_accessory/marking/ch/tyranid_legs + name = "Tyranid Legs (Use with Armor)" + icon_state = "tyranid" + color_blend_mode = ICON_MULTIPLY + hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG) + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_GROIN) + +/datum/sprite_accessory/marking/ch/tyranid_legs_armor + name = "Tyranid Legs (Armor)" + icon_state = "tyranidarmor" + color_blend_mode = ICON_MULTIPLY + hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG) + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_GROIN) + +/datum/sprite_accessory/marking/ch/sect_drone + name = "Sect Drone Bodytype" + icon_state = "sectdrone" + 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) + +/datum/sprite_accessory/marking/ch/sect_drone_eyes + name = "Sect Drone Eyes" + icon_state = "sectdrone_eyes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/new_player/sprite_accessories_tail.dm b/modular_chomp/code/modules/mob/new_player/sprite_accessories_tail.dm new file mode 100644 index 0000000000..01f7767d8f --- /dev/null +++ b/modular_chomp/code/modules/mob/new_player/sprite_accessories_tail.dm @@ -0,0 +1,22 @@ +/datum/sprite_accessory/tail/anthrovirus_tail + name = "Anthro Virus Tail" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "anthrovirustail_mark" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "anthrovirustail" + +/datum/sprite_accessory/tail/tyranid_tail + name = "Tyranid" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "tyranid" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/sectdrone_tail + name = "Sect Drone Tail (To use with bodytype-marking)" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "sectdrone_tail" + extra_overlay = "sectdrone_tail_mark" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/new_player/sprite_accessories_taur.dm b/modular_chomp/code/modules/mob/new_player/sprite_accessories_taur.dm index 6ec0f1c341..efdf1bb476 100644 --- a/modular_chomp/code/modules/mob/new_player/sprite_accessories_taur.dm +++ b/modular_chomp/code/modules/mob/new_player/sprite_accessories_taur.dm @@ -4,3 +4,10 @@ /datum/sprite_accessory/tail/taur/wolf vore_tail_sprite_variant = "N" + +/datum/sprite_accessory/tail/taur/ch/longvirus + name = "Long Virus (Taur)" + icon_state = "longvirus_s" + extra_overlay = "longvirus_markings" + icon_sprite_tag = "virus" + //suit_sprites = 'icons/mob/taursuits_noodle.dmi' Aye, I've gotta sprite that shit. \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/new_player/sprite_accessories_wing.dm b/modular_chomp/code/modules/mob/new_player/sprite_accessories_wing.dm new file mode 100644 index 0000000000..e441f7241e --- /dev/null +++ b/modular_chomp/code/modules/mob/new_player/sprite_accessories_wing.dm @@ -0,0 +1,7 @@ +/datum/sprite_accessory/wing/sect_drone //We should some day make a variable to make some wings not be able to fly + name = "Sect drone wings (To use with bodytype marking)" + desc = "" + icon = 'icons/mob/vore/wings_ch.dmi' + icon_state = "sectdrone_wing" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY \ No newline at end of file diff --git a/modular_chomp/code/modules/organs/organ_external.dm b/modular_chomp/code/modules/organs/organ_external.dm new file mode 100644 index 0000000000..b4e6d22676 --- /dev/null +++ b/modular_chomp/code/modules/organs/organ_external.dm @@ -0,0 +1,14 @@ +//new function to check for markings +/obj/item/organ/external/proc/is_hidden_by_markings() + //code that checked all limbs. + /* + for(var/obj/item/organ/external/organ in owner.organs) + for(var/M in organ.markings) + var/datum/sprite_accessory/marking/mark_style = organ.markings[M]["datum"] + if (mark_style.hide_body_parts && (organ_tag in mark_style.hide_body_parts)) + return 1 + */ + for(var/M in markings) + var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] + if(istype(mark_style,/datum/sprite_accessory/marking/ch) && (organ_tag in mark_style.hide_body_parts)) + return 1 \ No newline at end of file diff --git a/modular_chomp/code/modules/organs/organ_icon.dm b/modular_chomp/code/modules/organs/organ_icon.dm new file mode 100644 index 0000000000..ee58b88ca9 --- /dev/null +++ b/modular_chomp/code/modules/organs/organ_icon.dm @@ -0,0 +1,173 @@ +/obj/item/organ/external/get_icon(var/skeletal) + var/digitigrade = 0 + + // 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 + if(owner) + digitigrade = owner.digitigrade + else if(dna) + digitigrade = dna.digitigrade + + if( !model && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) //All leg icons go through here now. + + var/gender = "m" + if(owner && owner.gender == FEMALE) + gender = "f" + + if(!force_icon_key) + icon_cache_key = "[icon_name]_[species ? species.get_bodytype() : SPECIES_HUMAN]" //VOREStation Edit + else + icon_cache_key = "[icon_name]_[force_icon_key]" + + if(force_icon) + mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") + else + if(!dna) + mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]") + else + + if(!gendered_icon) + gender = null + else + if(dna.GetUIState(DNA_UI_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) + mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") + 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]" : ""]") + else + //Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based. + mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") + 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)) + for(var/M in markings) + var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] + var/isdigitype = istype(mark_style,/datum/sprite_accessory/marking/digi) + if(!(digitigrade ^ isdigitype)) //Equivalent to XNOR; this code will only run if either both digitigrade and isdigitype are true, or if both are false. + 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(!limb_icon_cache[cache_key]) + var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]") + I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit + limb_icon_cache[cache_key] = I + mob_icon.Blend(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 + dir = EAST + icon = mob_icon + return mob_icon + + else + //. = ..() + //due to the wierd fact that this calls the old code, and defining it here makes a duplicate procedure error, i'm gonna have to bring the whole code here and modify it. if there is a more condensed way, it is appreciated. + + var/gender = "m" + if(owner && owner.gender == FEMALE) + gender = "f" + + if(!force_icon_key) + icon_cache_key = "[icon_name]_[species ? species.get_bodytype() : SPECIES_HUMAN]" //VOREStation Edit + else + icon_cache_key = "[icon_name]_[force_icon_key]" + + if(force_icon) + mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") + else + if(!dna) + mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]") + else + if(!gendered_icon) + gender = null + else + if(dna.GetUIState(DNA_UI_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) + mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") + 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]" : ""]") + else + //Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based. + mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") + 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) + 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(!limb_icon_cache[cache_key]) + var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]") + I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit + limb_icon_cache[cache_key] = I + mob_icon.Blend(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) + icon_cache_key += "_model_[model]" + apply_colouration(mob_icon) + if(owner && owner.synth_markings) + for(var/M in markings) + 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(!limb_icon_cache[cache_key]) + var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]") + I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit + limb_icon_cache[cache_key] = I + mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) + // VOREStation edit ends here + + dir = EAST + icon = mob_icon + return mob_icon \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 9ec4174195..19f61a0dd0 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4524,7 +4524,12 @@ #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\greatwolf.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\vore.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\wolf.dm" +#include "modular_chomp\code\modules\mob\new_player\sprite_accessories_extra.dm" +#include "modular_chomp\code\modules\mob\new_player\sprite_accessories_tail.dm" #include "modular_chomp\code\modules\mob\new_player\sprite_accessories_taur.dm" +#include "modular_chomp\code\modules\mob\new_player\sprite_accessories_wing.dm" +#include "modular_chomp\code\modules\organs\organ_external.dm" +#include "modular_chomp\code\modules\organs\organ_icon.dm" #include "modular_chomp\code\modules\power\cells\device_cells.dm" #include "modular_chomp\code\modules\power\cells\esoteric_cells.dm" #include "modular_chomp\code\modules\power\cells\power_cells.dm"