diff --git a/code/__defines/mobs_ch.dm b/code/__defines/mobs_ch.dm new file mode 100644 index 0000000000..45114d7cbd --- /dev/null +++ b/code/__defines/mobs_ch.dm @@ -0,0 +1,3 @@ +#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/modules/mob/new_player/sprite_accessories_ear_ch.dm b/code/modules/mob/new_player/sprite_accessories_ear_ch.dm index 05533bcc76..0e37e8c9d5 100644 --- a/code/modules/mob/new_player/sprite_accessories_ear_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_ear_ch.dm @@ -14,6 +14,24 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/ears/protogen + name = "Protogen" + desc = "" + icon = 'icons/mob/vore/ears_ch.dmi' + icon_state = "protogen" + extra_overlay = "protogen_fluff" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/miqote + name = "Miqo'te" + desc = "" + icon = 'icons/mob/vore/ears_ch.dmi' + icon_state = "miqote" + extra_overlay = "miqote_inner" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /datum/sprite_accessory/ears/vale name = "VALE Model Ear Coloring" desc = "" 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 cb65a846f6..487f6d27aa 100644 --- a/code/modules/mob/new_player/sprite_accessories_extra_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_extra_ch.dm @@ -1,3 +1,7 @@ +/datum/sprite_accessory/marking + var/digitigrade_acceptance = MARKING_NONDIGI_ONLY + var/digitigrade_icon = 'icons/mob/human_races/markings_digi_ch.dmi' + /datum/sprite_accessory/marking/ch icon = 'icons/mob/human_races/markings_ch.dmi' @@ -149,65 +153,196 @@ color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) +/datum/sprite_accessory/marking/ch/protogen_snout + name = "Protogen Snout" + icon_state = "protogen_snout" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/hshark_snout + name = "HShark Snout" + icon_state = "hshark_snout" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/hshark_head + name = "HShark Head" + icon_state = "hshark" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/ram_horns + name = "Ram Horns" + icon_state = "ram_horns" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/neckfluff + name = "Neck Fluff" + icon_state = "neckfluff" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/husky_chest + name = "Husky Chest" + icon_state = "husky" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_TORSO, BP_GROIN) + +/datum/sprite_accessory/marking/ch/fox_head + name = "Fox Head" + icon_state = "fox" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/fox_chest + name = "Fox Chest" + icon_state = "fox" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_TORSO, BP_GROIN) + +/datum/sprite_accessory/marking/ch/fox_hsocks + name = "Fox Hand Socks" + icon_state = "fox" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_ARM, BP_R_HAND, BP_L_ARM, BP_L_HAND) + +/datum/sprite_accessory/marking/ch/fox_lsocks + name = "Fox Leg Socks" + icon_state = "fox" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT,BP_L_LEG,BP_L_FOOT) + digitigrade_acceptance = MARKING_ALL_LEGS + +/datum/sprite_accessory/marking/ch/tiger_head + name = "Tiger Head" + icon_state = "tiger" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/tiger_chest + name = "Tiger Chest" + icon_state = "tiger" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_TORSO, BP_GROIN) + +/datum/sprite_accessory/marking/ch/tiger_arms + name = "Tiger Arms" + icon_state = "tiger" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_ARM, BP_R_HAND, BP_L_ARM, BP_L_HAND) + +/datum/sprite_accessory/marking/ch/tiger_legs + name = "Tiger Legs" + icon_state = "tiger" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT,BP_L_LEG,BP_L_FOOT) + digitigrade_acceptance = MARKING_ALL_LEGS + +/datum/sprite_accessory/marking/ch/gradient_arms + name = "Gradient Arms" + icon_state = "gradient" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_ARM, BP_R_HAND, BP_L_ARM, BP_L_HAND) + +/datum/sprite_accessory/marking/ch/gradient_legs + name = "Gradient Legs" + icon_state = "gradient" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT,BP_L_LEG,BP_L_FOOT) + digitigrade_acceptance = MARKING_ALL_LEGS + +/datum/sprite_accessory/marking/ch/hawk_talons + name = "Hawk Talons (Legs)" + icon_state = "hawktalon" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT,BP_L_LEG,BP_L_FOOT) + digitigrade_acceptance = MARKING_ALL_LEGS + +/datum/sprite_accessory/marking/ch/deer_hooves + name = "Deer Hooves" + icon_state = "deerhoof" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_FOOT, BP_L_FOOT) + digitigrade_acceptance = MARKING_ALL_LEGS + +/datum/sprite_accessory/marking/ch/frills_simple + name = "Frills (Simple)" + icon_state = "frills_simple" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/frills_short + name = "Frills (Short)" + icon_state = "frills_short" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/ch/frills_aquatic + name = "Frills (Aquatic)" + icon_state = "frills_aqua" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + /datum/sprite_accessory/marking/ch/guilmonhead - name = "Guilmon head" - icon_state = "guilmon_head" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_HEAD) + name = "Guilmon head" + icon_state = "guilmon_head" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) /datum/sprite_accessory/marking/ch/guilmonchest - name = "Guilmon Chest" - icon_state = "guilmon_chest" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_TORSO) + name = "Guilmon Chest" + icon_state = "guilmon_chest" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_TORSO) /datum/sprite_accessory/marking/ch/guilmonchestmarking - name = "Guilmon Chest Markings" - icon_state = "guilmon_marking" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_TORSO) + name = "Guilmon Chest Markings" + icon_state = "guilmon_marking" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_TORSO) /datum/sprite_accessory/marking/ch/guilmonarms - name = "Guilmon arms" - icon_state = "guilmon" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_R_ARM,BP_L_ARM,BP_R_HAND,BP_L_HAND) + name = "Guilmon arms" + icon_state = "guilmon" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_ARM,BP_L_ARM,BP_R_HAND,BP_L_HAND) /datum/sprite_accessory/marking/ch/guilmonRLeg - name = "Guilmon Right leg" - icon_state = "guilmon" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_R_LEG) + name = "Guilmon Right leg" + icon_state = "guilmon" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG) /datum/sprite_accessory/marking/ch/guilmonLleg - name = "Guilmon Left leg" - icon_state = "guilmon" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_L_LEG) + name = "Guilmon Left leg" + icon_state = "guilmon" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG) /datum/sprite_accessory/marking/ch/guilmondigiRleg1 - name = "Guilmon digigrade right leg 1" - icon_state = "guilmon_digitigrade_1" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_R_LEG) + name = "Guilmon digigrade right leg 1" + icon_state = "guilmon_digitigrade_1" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG) /datum/sprite_accessory/marking/ch/guilmondigiLleg1 - name = "Guilmon digigrade left leg 1" - icon_state = "guilmon_digitigrade_1" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_L_LEG) + name = "Guilmon digigrade left leg 1" + icon_state = "guilmon_digitigrade_1" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG) /datum/sprite_accessory/marking/ch/guilmondigiRleg2 - name = "Guilmon digigrade right leg 2" - icon_state = "guilmon_digitigrade_2" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_R_LEG) + name = "Guilmon digigrade right leg 2" + icon_state = "guilmon_digitigrade_2" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG) /datum/sprite_accessory/marking/ch/guilmondigiLleg2 - name = "Guilmon digigrade left leg 2" - icon_state = "guilmon_digitigrade_2" - color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_L_LEG) + name = "Guilmon digigrade left leg 2" + icon_state = "guilmon_digitigrade_2" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG) /datum/sprite_accessory/tail/special/orca_tail name = "Orca Tail" @@ -332,6 +467,7 @@ //Digitigrade markings /datum/sprite_accessory/marking/digi icon = 'icons/mob/human_races/markings_digi_ch.dmi' + digitigrade_acceptance = MARKING_DIGITIGRADE_ONLY /datum/sprite_accessory/marking/digi/fullleft name = "Digitigrade Full Left Leg(Only works with digitigrade legs)" diff --git a/code/modules/mob/new_player/sprite_accessories_tail_ch.dm b/code/modules/mob/new_player/sprite_accessories_tail_ch.dm index 8ffb4054c4..a1f1e1734b 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_ch.dm @@ -22,6 +22,17 @@ icon = 'icons/mob/vore/tails_ch.dmi' icon_state = "zorgoia" extra_overlay = "zorgoia_fluff" + extra_overlay2 = "zorgoia_fluff_top" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/leopard + name = "Leopard tail, dual-color (vwag)" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "leopard" + ani_state = "leopard_w" + extra_overlay = "leopard_spots" + extra_overlay_w = "leopard_spots_w" do_colouration = 1 color_blend_mode = ICON_MULTIPLY @@ -144,17 +155,17 @@ extra_overlay = "bigringtail_markings" /datum/sprite_accessory/tail/longtail/desert_nightstalker - name = "Desert Nightstalker Tail (vwag)" - icon = 'icons/mob/vore/taurs_ch.dmi' - icon_state = "nightstalker_desert" - ani_state = "nightstalker_desert_w" - do_colouration = 0 // We're not coloring this, these are pre-colored - color_blend_mode = ICON_ADD + name = "Desert Nightstalker Tail (vwag)" + icon = 'icons/mob/vore/taurs_ch.dmi' + icon_state = "nightstalker_desert" + ani_state = "nightstalker_desert_w" + do_colouration = 0 // We're not coloring this, these are pre-colored + color_blend_mode = ICON_ADD /datum/sprite_accessory/tail/longtail/diamondback_nightstalker - name = "Diamondback Nightstalker Tail (dual-color, vwag)" - icon = 'icons/mob/vore/taurs_ch.dmi' - icon_state = "nightstalker_diamondback" - ani_state = "nightstalker_diamondback_w" - extra_overlay = "nightstalker_diamondback_markings" - extra_overlay_w = "nightstalker_diamondback_markings_w" \ No newline at end of file + name = "Diamondback Nightstalker Tail (dual-color, vwag)" + icon = 'icons/mob/vore/taurs_ch.dmi' + icon_state = "nightstalker_diamondback" + ani_state = "nightstalker_diamondback_w" + extra_overlay = "nightstalker_diamondback_markings" + extra_overlay_w = "nightstalker_diamondback_markings_w" diff --git a/icons/mob/human_races/markings_ch.dmi b/icons/mob/human_races/markings_ch.dmi index 267bcb7bf9..f2600bce01 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 dbe633fac4..39ccb6a945 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/vore/ears_ch.dmi b/icons/mob/vore/ears_ch.dmi index 08497fe609..ff8ff0b410 100644 Binary files a/icons/mob/vore/ears_ch.dmi and b/icons/mob/vore/ears_ch.dmi differ diff --git a/icons/mob/vore/tails_ch.dmi b/icons/mob/vore/tails_ch.dmi index 4d16a9e2dd..7cd1d55711 100644 Binary files a/icons/mob/vore/tails_ch.dmi and b/icons/mob/vore/tails_ch.dmi differ diff --git a/modular_chomp/code/modules/organs/organ_icon.dm b/modular_chomp/code/modules/organs/organ_icon.dm index 339a45a4f6..6088084a06 100644 --- a/modular_chomp/code/modules/organs/organ_icon.dm +++ b/modular_chomp/code/modules/organs/organ_icon.dm @@ -4,10 +4,11 @@ // 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 = owner.digitigrade && (istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot)) + digitigrade = check_digi && owner.digitigrade else if(dna) - digitigrade = dna.digitigrade && (istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot)) + digitigrade = check_digi && dna.digitigrade var/robotic_digi = prosthetic_digi && digitigrade //could make it so the prosthetic digi var is more of a "does this limb have a custom digitigrade sprite for its robospriting" but this is fine for now @@ -57,13 +58,15 @@ if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !robotic_digi)) || (model && owner && owner.synth_markings)) 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"]]" + 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(!limb_icon_cache[cache_key]) diff --git a/vorestation.dme b/vorestation.dme index 7745fa01f2..b05548e693 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -71,6 +71,7 @@ #include "code\__defines\misc_ch.dm" #include "code\__defines\misc_vr.dm" #include "code\__defines\mobs.dm" +#include "code\__defines\mobs_ch.dm" #include "code\__defines\mobs_vr.dm" #include "code\__defines\mobs_yw.dm" #include "code\__defines\nifsoft.dm"