mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
vanity copy to
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)]"
|
||||
|
||||
@@ -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
|
||||
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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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, "<span class='notify'>You begin to reform. You will need to remain still.</span>")
|
||||
visible_message("<span class='notify'>[src] rapidly contorts and shifts!</span>", "<span class='danger'>You begin to reform.</span>")
|
||||
if (do_after(src, 40,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
if (client?.prefs)
|
||||
client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, FALSE)
|
||||
visible_message("<span class='notify'>[src] adopts a new form!</span>", "<span class='danger'>You have reformed.</span>")
|
||||
@@ -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("<span class='notify'>[caller] adopts a new form!</span>", "<span class='danger'>You have reassembled.</span>")
|
||||
|
||||
@@ -237,7 +237,7 @@
|
||||
to_chat(src,"<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user