diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm index 59d64d2019..3e7ab6f035 100644 --- a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm +++ b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm @@ -16,7 +16,7 @@ var/list/wrapped_species_by_ref = list() //var/default_form = SPECIES_HUMAN //VOREStation edit /datum/species/shapeshifter/get_valid_shapeshifter_forms(var/mob/living/carbon/human/H) - return valid_transform_species + return list(vanity_base_fit)|valid_transform_species //CHOMPEdit /datum/species/shapeshifter/get_icobase(var/mob/living/carbon/human/H, var/get_deform) if(!H) return ..(null, get_deform) diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm index 2d8dfc0050..675265bb5d 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm @@ -34,6 +34,7 @@ /mob/living/carbon/human/proc/prommie_blobform, /mob/living/proc/set_size, /mob/living/carbon/human/proc/promethean_select_opaqueness, + /mob/living/carbon/human/proc/shapeshifter_reassemble //CHOMPEdit: reform verb ) /mob/living/carbon/human/proc/prommie_blobform() 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 5239589931..7f730d6b58 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 @@ -27,8 +27,9 @@ /mob/living/carbon/human/proc/reconstitute_form, /mob/living/carbon/human/proc/sonar_ping, /mob/living/carbon/human/proc/tie_hair, - /mob/living/carbon/human/proc/lick_wounds) //Xenochimera get all the special verbs since they can't select traits. - // CHOMPEdit: Lick Wounds Verb + /mob/living/carbon/human/proc/lick_wounds, + /mob/living/carbon/human/proc/shapeshifter_reassemble) //Xenochimera get all the special verbs since they can't select traits. + // CHOMPEdit: Lick Wounds Verb, reform verb virus_immune = 1 // They practically ARE one. min_age = 18 @@ -445,7 +446,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/vulpkanin) - spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE//Whitelisted as restricted is broken. ChompEdit;renable + spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE//Whitelisted as restricted is broken. ChompEdit;renable appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_EYE_COLOR flesh_color = "#AFA59E" diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c521e4dfe2..d43b309631 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1139,7 +1139,7 @@ Note that amputating the affected organ does in fact remove the infection from t force_icon = R.icon brute_mod *= R.robo_brute_mod burn_mod *= R.robo_burn_mod - prosthetic_digi = R.can_be_digitigrade //CHOMPStation edit + skip_robo_icon = R.no_icon //CHOMPStation edit if(R.lifelike) robotic = ORGAN_LIFELIKE name = "[initial(name)]" diff --git a/code/modules/organs/robolimbs_ch.dm b/code/modules/organs/robolimbs_ch.dm index d882d3ba96..d4a5b35320 100644 --- a/code/modules/organs/robolimbs_ch.dm +++ b/code/modules/organs/robolimbs_ch.dm @@ -1,5 +1,10 @@ +GLOBAL_LIST_INIT(dsi_to_species, list(SPECIES_TAJARAN = "DSI - Tajaran", SPECIES_UNATHI = "DSI - Lizard", SPECIES_SERGAL = "DSI - Sergal", SPECIES_NEVREAN = "DSI - Nevrean", \ + SPECIES_VULPKANIN = "DSI - Vulpkanin", SPECIES_AKULA = "DSI - Akula", SPECIES_VASILISSAN = "DSI - Vasilissan", SPECIES_ZORREN = "DSI - Zorren",\ + SPECIES_TESHARI = "DSI - Teshari", SPECIES_FENNEC = "DSI - Fennec")) + /datum/robolimb - var/can_be_digitigrade = FALSE //maybe move this over into more of a "does this have a custom digitigrade sprite, and if so, what is its icon file/icon name in the limb's file" when someone can be bothered making them + var/no_icon = FALSE //specifically for DSI things, makes it so it doesn't override the species icons + //var/has_digitigrade_icon = FALSE //make this a thing /datum/robolimb/valehoundhead company = "VALE Hound- Head" @@ -9,32 +14,45 @@ parts = list(BP_HEAD) /datum/robolimb/dsi_tajaran - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_lizard - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_sergal - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_nevrean - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_vulpkanin - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_akula - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_spider - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_zorren - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_fennec - can_be_digitigrade = TRUE + no_icon = TRUE + +/datum/robolimb/dsi_teshari + no_icon = TRUE /datum/robolimb/dsi_teshari/New() . = ..() - species_cannot_use -= SPECIES_PROTEAN \ No newline at end of file + species_cannot_use -= SPECIES_PROTEAN + + +/datum/robolimb/dsi_other + company = "DSI - Synthetic" + desc = "This limb has a realistic design and squish. By Darkside Incorperated." + blood_color = "#ffe2ff" + lifelike = 1 + unavailable_to_build = 1 + skin_tone = 1 + no_icon = TRUE diff --git a/modular_chomp/code/modules/client/preferences.dm b/modular_chomp/code/modules/client/preferences.dm index 76dea00a76..6c9af02123 100644 --- a/modular_chomp/code/modules/client/preferences.dm +++ b/modular_chomp/code/modules/client/preferences.dm @@ -34,3 +34,235 @@ SScharacter_setup.queue_preferences_save(prefs) feedback_add_details("admin_verb","TAutoTranscore") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/datum/preferences/proc/vanity_copy_to(var/mob/living/carbon/human/character, var/copy_name, var/copy_flavour = TRUE, var/copy_ooc_notes = FALSE, var/convert_to_prosthetics = FALSE) + //snowflake copy_to, does not copy anything but the vanity things + //does not check if the name is the same, do that in any proc that calls this proc + /* + name, nickname, flavour, OOC notes + gender, sex + custom species name, custom bodytype, weight, scale, scaling center, sound type, sound freq + custom say verbs + ears, wings, tail, hair, facial hair + ears colors, wings colors, tail colors + body color, prosthetics (if they're a protean) (convert to DSI if protean and not prosthetic), eye color, hair color etc + markings + custom synth markings toggle, custom synth color toggle + digitigrade + blood color + */ + if (copy_name) + if(config.humans_need_surnames) + var/firstspace = findtext(real_name, " ") + var/name_length = length(real_name) + if(!firstspace) //we need a surname + real_name += " [pick(last_names)]" + else if(firstspace == name_length) + real_name += "[pick(last_names)]" + character.real_name = real_name + character.name = character.real_name + if(character.dna) + character.dna.real_name = character.real_name + character.nickname = nickname + character.gender = biological_gender + character.identifying_gender = identifying_gender + + character.r_eyes = r_eyes + character.g_eyes = g_eyes + character.b_eyes = b_eyes + character.h_style = h_style + character.r_hair = r_hair + character.g_hair = g_hair + character.b_hair = b_hair + character.r_grad = r_grad + character.g_grad = g_grad + character.b_grad = b_grad + character.f_style = f_style + character.r_facial = r_facial + character.g_facial = g_facial + character.b_facial = b_facial + character.r_skin = r_skin + character.g_skin = g_skin + character.b_skin = b_skin + character.s_tone = s_tone + character.h_style = h_style + character.grad_style= grad_style + character.f_style = f_style + character.grad_style= grad_style + character.b_type = b_type + character.synth_color = synth_color + character.r_synth = r_synth + character.g_synth = g_synth + character.b_synth = b_synth + character.synth_markings = synth_markings + + var/list/ear_styles = get_available_styles(global.ear_styles_list) + character.ear_style = ear_styles[ear_style] + character.r_ears = r_ears + character.b_ears = b_ears + character.g_ears = g_ears + character.r_ears2 = r_ears2 + character.b_ears2 = b_ears2 + character.g_ears2 = g_ears2 + character.r_ears3 = r_ears3 + character.b_ears3 = b_ears3 + character.g_ears3 = g_ears3 + + var/list/tail_styles = get_available_styles(global.tail_styles_list) + character.tail_style = tail_styles[tail_style] + character.r_tail = r_tail + character.b_tail = b_tail + character.g_tail = g_tail + character.r_tail2 = r_tail2 + character.b_tail2 = b_tail2 + character.g_tail2 = g_tail2 + character.r_tail3 = r_tail3 + character.b_tail3 = b_tail3 + character.g_tail3 = g_tail3 + + var/list/wing_styles = get_available_styles(global.wing_styles_list) + character.wing_style = wing_styles[wing_style] + character.r_wing = r_wing + character.b_wing = b_wing + character.g_wing = g_wing + character.r_wing2 = r_wing2 + character.b_wing2 = b_wing2 + character.g_wing2 = g_wing2 + character.r_wing3 = r_wing3 + character.b_wing3 = b_wing3 + character.g_wing3 = g_wing3 + + character.set_gender(biological_gender) + + // Destroy/cyborgize organs and limbs. + if (convert_to_prosthetics) //should only really be run for proteans + for(var/name in BP_ALL) + var/status = organ_data[name] + var/obj/item/organ/external/O = character.organs_by_name[name] + if(O) + if(status == "amputated") + continue + else if(status == "cyborg") + O.robotize(rlimb_data[name]) + else + var/bodytype + var/datum/species/selected_species = GLOB.all_species[species] + if(selected_species.selects_bodytype) + bodytype = custom_base + else + bodytype = selected_species.get_bodytype() + var/dsi_company = GLOB.dsi_to_species[bodytype] + if (!dsi_company) + dsi_company = "DSI - Synthetic" + O.robotize(dsi_company) + + for(var/N in character.organs_by_name) + var/obj/item/organ/external/O = character.organs_by_name[N] + O.markings.Cut() + + var/priority = 0 + for(var/M in body_markings) + priority += 1 + var/datum/sprite_accessory/marking/mark_datum = body_marking_styles_list[M] + var/mark_color = "[body_markings[M]]" + + for(var/BP in mark_datum.body_parts) + var/obj/item/organ/external/O = character.organs_by_name[BP] + if(O) + O.markings[M] = list("color" = mark_color, "datum" = mark_datum, "priority" = priority) + character.markings_len = priority + + var/list/last_descriptors = list() + if(islist(body_descriptors)) + last_descriptors = body_descriptors.Copy() + body_descriptors = list() + + var/datum/species/mob_species = GLOB.all_species[species] + if(LAZYLEN(mob_species.descriptors)) + for(var/entry in mob_species.descriptors) + var/datum/mob_descriptor/descriptor = mob_species.descriptors[entry] + if(istype(descriptor)) + if(isnull(last_descriptors[entry])) + body_descriptors[entry] = descriptor.default_value // Species datums have initial default value. + else + body_descriptors[entry] = CLAMP(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors)) + + if (copy_flavour) + character.flavor_texts["general"] = flavor_texts["general"] + character.flavor_texts["head"] = flavor_texts["head"] + character.flavor_texts["face"] = flavor_texts["face"] + character.flavor_texts["eyes"] = flavor_texts["eyes"] + character.flavor_texts["torso"] = flavor_texts["torso"] + character.flavor_texts["arms"] = flavor_texts["arms"] + character.flavor_texts["hands"] = flavor_texts["hands"] + character.flavor_texts["legs"] = flavor_texts["legs"] + character.flavor_texts["feet"] = flavor_texts["feet"] + if (copy_ooc_notes) + character.ooc_notes = metadata + + character.weight = weight_vr + character.weight_gain = weight_gain + character.weight_loss = weight_loss + character.fuzzy = fuzzy + character.offset_override = offset_override //CHOMPEdit + character.voice_freq = voice_freq + character.resize(size_multiplier, animate = FALSE, ignore_prefs = TRUE) + if(!voice_sound) + character.voice_sounds_list = talk_sound + else + switch(voice_sound) + if("beep-boop") + character.voice_sounds_list = talk_sound + if("goon speak 1") + character.voice_sounds_list = goon_speak_one_sound + if("goon speak 2") + character.voice_sounds_list = goon_speak_two_sound + if("goon speak 3") + character.voice_sounds_list = goon_speak_three_sound + if("goon speak 4") + character.voice_sounds_list = goon_speak_four_sound + if("goon speak blub") + character.voice_sounds_list = goon_speak_blub_sound + if("goon speak bottalk") + character.voice_sounds_list = goon_speak_bottalk_sound + if("goon speak buwoo") + character.voice_sounds_list = goon_speak_buwoo_sound + if("goon speak cow") + character.voice_sounds_list = goon_speak_cow_sound + if("goon speak lizard") + character.voice_sounds_list = goon_speak_lizard_sound + if("goon speak pug") + character.voice_sounds_list = goon_speak_pug_sound + if("goon speak pugg") + character.voice_sounds_list = goon_speak_pugg_sound + if("goon speak roach") + character.voice_sounds_list = goon_speak_roach_sound + if("goon speak skelly") + character.voice_sounds_list = goon_speak_skelly_sound + + character.species?.blood_color = blood_color + + var/datum/species/selected_species = GLOB.all_species[species] + var/bodytype_selected + if(selected_species.selects_bodytype) + bodytype_selected = custom_base + else + bodytype_selected = selected_species.get_bodytype(character) + + character.dna.base_species = bodytype_selected + character.species.base_species = bodytype_selected + character.species.vanity_base_fit = bodytype_selected + if (istype(character.species, /datum/species/shapeshifter)) + wrapped_species_by_ref["\ref[character]"] = bodytype_selected + + character.custom_species = custom_species + character.custom_say = lowertext(trim(custom_say)) + character.custom_ask = lowertext(trim(custom_ask)) + character.custom_whisper = lowertext(trim(custom_whisper)) + character.custom_exclaim = lowertext(trim(custom_exclaim)) + + character.digitigrade = selected_species.digi_allowed ? digitigrade : 0 + + character.dna.ResetUIFrom(character) + character.force_update_limbs() + character.regenerate_icons() diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm index 70eb1876a6..597f95bac5 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm @@ -17,6 +17,7 @@ var/mudking = FALSE var/icodigi = 'modular_chomp/icons/mob/human_races/r_digi.dmi' var/digi_allowed = FALSE + var/vanity_base_fit //when shapeshifting using vanity_copy_to, this allows you to have add something so they can go back to their original species fit // Handles non-standard eyes when using a species that utilizes a custom base icon set. // Eye data is stored in the head organ, and this needs to be handled specially. diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/species_shapeshift_ch.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/species_shapeshift_ch.dm new file mode 100644 index 0000000000..6141d17e22 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/species_shapeshift_ch.dm @@ -0,0 +1,31 @@ +/mob/living/carbon/human/proc/shapeshifter_reassemble() + + set name = "Complete Reform" + set category = "Abilities" + + if(stat || world.time < last_special) + return + + last_special = world.time + 50 + + if (tgui_alert(src, "Are you sure you want to reform yourself? This will reset you to what you look like in your current preferences slot.", "Reform", list("Yes","Cancel")) != "Yes") + return + + var/input = tgui_alert(src,{"Include Flavourtext?"},"Reformation",list("Yes","No","Cancel")) + if(input == "Cancel" || !input) + return + var/flavour = 0 + if(input == "Yes") + flavour = 1 + input = tgui_alert(src,{"Include OOC notes?"},"Reformation",list("Yes","No","Cancel")) + if(input == "Cancel" || !input) + return + var/oocnotes = 0 + if(input == "Yes") + oocnotes = 1 + to_chat(src, "You begin to reform. You will need to remain still.") + visible_message("[src] rapidly contorts and shifts!", "You begin to reform.") + if (do_after(src, 40,exclusive = TASK_ALL_EXCLUSIVE)) + if (client?.prefs) + client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, FALSE) + visible_message("[src] adopts a new form!", "You have reformed.") diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index d7a904fa83..77a0cdbc2b 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -132,7 +132,7 @@ if(do_after(caller, 40,exclusive = TASK_ALL_EXCLUSIVE)) if(client.prefs) //Make sure we didn't d/c var/obj/item/weapon/rig/protean/Rig = species?:OurRig - GetAppearanceFromPrefs(flavour, oocnotes) + caller.client.prefs.vanity_copy_to(caller, FALSE, flavour, oocnotes, TRUE) species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling caller.visible_message("[caller] adopts a new form!", "You have reassembled.") @@ -237,7 +237,7 @@ to_chat(src,"You must be awake and standing to perform this action!") return - var/new_species = tgui_input_list(usr, "Please select a species to emulate.", "Shapeshifter Body", GLOB.playable_species) + var/new_species = tgui_input_list(usr, "Please select a species to emulate.", "Shapeshifter Body", list(species?.vanity_base_fit)|GLOB.playable_species) if(new_species) species?.base_species = new_species // Really though you better have a species regenerate_icons() //Expensive, but we need to recrunch all the icons we're wearing diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index b7bea74148..e94b767e84 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -136,14 +136,53 @@ if(saved_nif) saved_nif.quick_implant(H) +/datum/species/protean/get_race_key() + var/datum/species/real = GLOB.all_species[base_species] + return real.race_key + /datum/species/protean/get_bodytype(var/mob/living/carbon/human/H) if(!H || base_species == name) return ..() var/datum/species/S = GLOB.all_species[base_species] return S.get_bodytype(H) +/datum/species/protean/get_icobase(var/mob/living/carbon/human/H, var/get_deform) + if(!H || base_species == name) return ..(null, get_deform) + var/datum/species/S = GLOB.all_species[base_species] + return S.get_icobase(H, get_deform) + /datum/species/protean/get_valid_shapeshifter_forms(var/mob/living/carbon/human/H) return GLOB.playable_species +/datum/species/protean/get_tail(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail(H) + +/datum/species/protean/get_tail_animation(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail_animation(H) + +/datum/species/protean/get_tail_hair(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail_hair(H) + +/datum/species/protean/get_blood_mask(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_blood_mask(H) + +/datum/species/protean/get_damage_mask(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_damage_mask(H) + +/datum/species/protean/get_damage_overlays(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_damage_overlays(H) + /datum/species/protean/handle_post_spawn(var/mob/living/carbon/human/H) ..() H.synth_color = TRUE diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_special_ch.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_special_ch.dm new file mode 100644 index 0000000000..5a9a0e0810 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_special_ch.dm @@ -0,0 +1,39 @@ +/datum/species/xenochimera/get_bodytype(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_bodytype(H) + +/datum/species/xenochimera/get_icobase(var/mob/living/carbon/human/H, var/get_deform) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_icobase(H, get_deform) + +/datum/species/xenochimera/get_tail(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail(H) + +/datum/species/xenochimera/get_tail_animation(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail_animation(H) + +/datum/species/xenochimera/get_tail_hair(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail_hair(H) + +/datum/species/xenochimera/get_blood_mask(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_blood_mask(H) + +/datum/species/xenochimera/get_damage_mask(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_damage_mask(H) + +/datum/species/xenochimera/get_damage_overlays(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_damage_overlays(H) diff --git a/modular_chomp/code/modules/organs/organ_external.dm b/modular_chomp/code/modules/organs/organ_external.dm index 73e00426c0..02c7d19170 100644 --- a/modular_chomp/code/modules/organs/organ_external.dm +++ b/modular_chomp/code/modules/organs/organ_external.dm @@ -1,5 +1,5 @@ /obj/item/organ/external - var/prosthetic_digi = FALSE //CHOMPStation edit - when it's prosthetic, can it be a digitigrade + var/skip_robo_icon = FALSE //CHOMPStation edit - to force it to use the normal species icon //new function to check for markings /obj/item/organ/external/proc/is_hidden_by_markings() diff --git a/modular_chomp/code/modules/organs/organ_icon.dm b/modular_chomp/code/modules/organs/organ_icon.dm index 339a45a4f6..36b004674a 100644 --- a/modular_chomp/code/modules/organs/organ_icon.dm +++ b/modular_chomp/code/modules/organs/organ_icon.dm @@ -9,8 +9,6 @@ else if(dna) digitigrade = dna.digitigrade && (istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot)) - 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 - var/gender = "m" if(owner && owner.gender == FEMALE) gender = "f" @@ -20,7 +18,7 @@ else icon_cache_key = "[icon_name]_[force_icon_key]" - if(force_icon && !robotic_digi) + if(force_icon && !skip_robo_icon) mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") else if(!dna) @@ -37,7 +35,7 @@ if(skeletal) mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]") - else if (robotic >= ORGAN_ROBOT && !robotic_digi) + else if (robotic >= ORGAN_ROBOT && !skip_robo_icon) mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) else @@ -48,13 +46,13 @@ mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) - if (model && !robotic_digi) + if (model && !skip_robo_icon) icon_cache_key += "_model_[model]" 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 && !robotic_digi)) || (model && owner && owner.synth_markings)) + if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !skip_robo_icon)) || (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) @@ -73,7 +71,7 @@ mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) // VOREStation edit start - if(nail_polish && (force_icon && !robotic_digi)) + if(nail_polish && !(force_icon && !skip_robo_icon)) var/icon/I = new(nail_polish.icon, nail_polish.icon_state) I.Blend(nail_polish.color, ICON_MULTIPLY) add_overlay(I) diff --git a/vorestation.dme b/vorestation.dme index 08ba683e78..bf3e245c88 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4559,9 +4559,11 @@ #include "modular_chomp\code\modules\mob\living\carbon\human\human_defines.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\update_icons.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\species.dm" +#include "modular_chomp\code\modules\mob\living\carbon\human\species\species_shapeshift_ch.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\outsider\vox.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\prommie_blob.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station.dm" +#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station_special_ch.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\teshari.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\_protean_defines.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_blob.dm"