Reverts Slime/IPC Imitation Cosmetics (#28695)

* Initial commit

* Removes unused define

* oops
This commit is contained in:
Burzah
2025-04-03 10:17:35 -07:00
committed by GitHub
parent c3765a3db0
commit b642a271e1
29 changed files with 182 additions and 507 deletions
+34 -72
View File
@@ -37,8 +37,6 @@
var/e_colour = "#000000" //Eye color
var/alt_head = "None" //Alt head style.
var/species = "Human"
/// Used for DNA species to allow select species to imitate / morph into different species.
var/species_subtype = "None"
var/language = "None" //Secondary language
var/autohiss_mode = AUTOHISS_OFF //Species autohiss level. OFF, BASIC, FULL.
/// If a spawned cyborg should have an MMI, a positronic, or a robobrain. MMI by default
@@ -204,8 +202,7 @@
runechat_color=:runechat_color,
cyborg_brain_type=:cyborg_brain_type,
body_type=:body_type,
pda_ringtone=:pda_ringtone,
species_subtype=:species_subtype
pda_ringtone=:pda_ringtone
WHERE ckey=:ckey
AND slot=:slot"}, list(
// OH GOD SO MANY PARAMETERS
@@ -269,7 +266,6 @@
"runechat_color" = runechat_color,
"cyborg_brain_type" = cyborg_brain_type,
"pda_ringtone" = pda_ringtone,
"species_subtype" = species_subtype,
"ckey" = C.ckey,
"slot" = slot_number
))
@@ -310,7 +306,7 @@
player_alt_titles,
disabilities, organ_data, rlimb_data, nanotrasen_relation, physique, height, speciesprefs,
socks, body_accessory, gear, autohiss,
hair_gradient, hair_gradient_offset, hair_gradient_colour, hair_gradient_alpha, custom_emotes, runechat_color, cyborg_brain_type, body_type, pda_ringtone, species_subtype)
hair_gradient, hair_gradient_offset, hair_gradient_colour, hair_gradient_alpha, custom_emotes, runechat_color, cyborg_brain_type, body_type, pda_ringtone)
VALUES
(:ckey, :slot, :metadata, :name, :be_random_name, :gender,
:age, :species, :language,
@@ -337,7 +333,7 @@
:playertitlelist,
:disabilities, :organ_list, :rlimb_list, :nanotrasen_relation, :physique, :height, :speciesprefs,
:socks, :body_accessory, :gearlist, :autohiss_mode,
:h_grad_style, :h_grad_offset, :h_grad_colour, :h_grad_alpha, :custom_emotes, :runechat_color, :cyborg_brain_type, :body_type, :pda_ringtone, :species_subtype)
:h_grad_style, :h_grad_offset, :h_grad_colour, :h_grad_alpha, :custom_emotes, :runechat_color, :cyborg_brain_type, :body_type, :pda_ringtone)
"}, list(
// This has too many params for anyone to look at this without going insae
"ckey" = C.ckey,
@@ -401,8 +397,7 @@
"custom_emotes" = json_encode(custom_emotes),
"runechat_color" = runechat_color,
"cyborg_brain_type" = cyborg_brain_type,
"pda_ringtone" = pda_ringtone,
"species_subtype" = species_subtype
"pda_ringtone" = pda_ringtone
))
if(!query.warn_execute())
@@ -497,7 +492,7 @@
cyborg_brain_type = query.item[59]
body_type = query.item[60]
pda_ringtone = query.item[61]
species_subtype = query.item[62]
//Sanitize
var/datum/species/SP = GLOB.all_species[species]
if(!SP)
@@ -511,9 +506,6 @@
species = "Human"
stack_trace("Character doesn't have a species, character name is [real_name]. Defaulting to human.")
if(isnull(species_subtype))
species_subtype = "None"
if(isnull(language))
language = "None"
@@ -833,74 +825,60 @@
var/icon/icobase
var/datum/species/current_species = GLOB.all_species[species]
var/will_slimify = FALSE
//Icon-based species colour.
var/coloured_tail
if(current_species)
var/mob/living/carbon/human/fake/H = new
H.dna.species = current_species
if(species_subtype != "None" && current_species.bodyflags & HAS_SPECIES_SUBTYPE)
var/datum/species/subtype_species = GLOB.all_species[species_subtype]
if(subtype_species) // Take certain attributes from our subtype to apply to our current species.
H.dna.species.updatespeciessubtype(H, subtype_species)
current_species = H.dna.species
icobase = current_species.icobase
else if(current_species.bodyflags & HAS_ICON_SKIN_TONE) //Handling species-specific icon-based skin tones by flagged race.
if(current_species.bodyflags & HAS_ICON_SKIN_TONE) //Handling species-specific icon-based skin tones by flagged race.
var/mob/living/carbon/human/fake/H = new
H.dna.species = current_species
H.s_tone = s_tone
H.dna.species.updatespeciescolor(H, 0) //The mob's species wasn't set, so it's almost certainly different than the character's species at the moment. Thus, we need to be owner-insensitive.
var/obj/item/organ/external/chest/C = H.get_organ("chest")
icobase = C.icobase ? C.icobase : C.dna.species.icobase
if(H.dna.species.bodyflags & HAS_TAIL)
coloured_tail = H.tail ? H.tail : H.dna.species.tail
qdel(H)
else
icobase = current_species.icobase
will_slimify = (istype(current_species, /datum/species/slime) && current_species.species_subtype != "None")
qdel(H)
else
icobase = 'icons/mob/human_races/r_human.dmi'
preview_icon = new /icon(icobase, "torso_[g]")
preview_icon.Blend(new /icon(icobase, "groin_[g]"), ICON_OVERLAY)
var/head = "head"
if(alt_head && current_species.bodyflags & HAS_ALT_HEADS)
var/datum/sprite_accessory/alt_heads/H = GLOB.alt_heads_list[alt_head]
if(H.icon_state)
head = H.icon_state
preview_icon.Blend(new /icon(icobase, "[head]_[g]"), ICON_OVERLAY)
for(var/name in list("chest", "groin", "head", "r_arm", "r_hand", "r_leg", "r_foot", "l_leg", "l_foot", "l_arm", "l_hand"))
if(organ_data[name] == "amputated")
continue
var/icon/bodypart = new /icon(icobase, "[name]")
if(name == "head") // Head nonsense.
var/head = "head"
if(alt_head && current_species.bodyflags & HAS_ALT_HEADS)
var/datum/sprite_accessory/alt_heads/H = GLOB.alt_heads_list[alt_head]
if(H.icon_state)
head = H.icon_state
bodypart = new /icon(icobase, "[head]_[g]") // head_state _ gender
if(name in list("chest", "groin")) // Groin and Chest nonsense
if(name == "chest")
name = "torso"
bodypart = new /icon(icobase, "[name]_[g]") // groin/torso _ gender
if(organ_data[name] == "cyborg") // Robotic limbs.
if(organ_data[name] == "cyborg")
var/datum/robolimb/R
if(rlimb_data[name]) R = GLOB.all_robolimbs[rlimb_data[name]]
if(!R) R = GLOB.basic_robolimb
if(rlimb_data[name])
R = GLOB.all_robolimbs[rlimb_data[name]]
if(!R)
R = GLOB.basic_robolimb
if(name == "chest")
name = "torso"
if(length(R.sprite_sheets) && R.sprite_sheets[current_species.sprite_sheet_name]) // Species specific augmented limbs
R.icon = R.sprite_sheets[current_species.sprite_sheet_name]
bodypart.Blend(new /icon(R.icon, "[name]"), ICON_OVERLAY)
preview_icon.Blend(bodypart, ICON_OVERLAY)
preview_icon.Blend(icon(R.icon, "[name]"), ICON_OVERLAY) // This doesn't check gendered_icon. Not an issue while only limbs can be robotic.
continue
if(will_slimify) // Applies to limbs that are not robotic.
bodypart.slimify(s_colour, "A0")
preview_icon.Blend(new /icon(icobase, "[name]"), ICON_OVERLAY)
// Skin color
if(current_species && (current_species.bodyflags & HAS_SKIN_COLOR))
preview_icon.Blend(s_colour, ICON_ADD)
// Skin tone
if(current_species && (current_species.bodyflags & HAS_SKIN_TONE))
if(s_tone >= 0)
preview_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
else
// Skin color
if(current_species && (current_species.bodyflags & HAS_SKIN_COLOR))
bodypart.Blend(s_colour, ICON_ADD)
// Skin tone
if(current_species && (current_species.bodyflags & HAS_SKIN_TONE))
if(s_tone >= 0)
bodypart.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
else
bodypart.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
preview_icon.Blend(bodypart, ICON_OVERLAY)
preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
// Body accessory
if(current_species && (current_species.bodyflags & HAS_BODY_ACCESSORY))
@@ -941,10 +919,6 @@
t_marking_s.Blend(m_colours["tail"], ICON_ADD)
temp.Blend(t_marking_s, ICON_OVERLAY)
if(will_slimify)
temp.slimify(s_colour, "A0")
if(underlay)
underlay.slimify(s_colour, "A0")
// Body accessory has an underlay, add it too.
if(underlay)
ICON_SHIFT_XY(underlay, offset_x, offset_y)
@@ -961,8 +935,6 @@
if(body_marking_style && body_marking_style.species_allowed)
var/icon/b_marking_s = new/icon("icon" = body_marking_style.icon, "icon_state" = "[body_marking_style.icon_state]_s")
b_marking_s.Blend(m_colours["body"], ICON_ADD)
if(will_slimify)
b_marking_s.slimify(s_colour, "A0")
preview_icon.Blend(b_marking_s, ICON_OVERLAY)
if(current_species.bodyflags & HAS_HEAD_MARKINGS) //Head markings.
var/head_marking = m_styles["head"]
@@ -970,8 +942,6 @@
if(head_marking_style && head_marking_style.species_allowed)
var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s")
h_marking_s.Blend(m_colours["head"], ICON_ADD)
if(will_slimify)
h_marking_s.slimify(s_colour, "A0")
preview_icon.Blend(h_marking_s, ICON_OVERLAY)
var/icon/hands_icon = icon(preview_icon)
@@ -1018,8 +988,6 @@
if(head_accessory_style && head_accessory_style.species_allowed)
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
head_accessory_s.Blend(hacc_colour, ICON_ADD)
if(will_slimify)
head_accessory_s.slimify(s_colour, "A0")
face_s.Blend(head_accessory_s, ICON_OVERLAY)
var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[f_style]
@@ -1880,16 +1848,10 @@
/datum/character_save/proc/copy_to(mob/living/carbon/human/character)
var/datum/species/S = GLOB.all_species[species]
character.set_species(S.type, delay_icon_update = TRUE) // Yell at me if this causes everything to melt
var/datum/species/subtype = GLOB.all_species[species_subtype]
if(!isnull(subtype))
character.dna.species.updatespeciessubtype(character, new subtype.type(), TRUE, FALSE)
else
character.species_subtype = "None"
if(be_random_name)
real_name = random_name(gender, species)
character.add_language(language)
character.real_name = real_name
character.dna.real_name = real_name
character.name = character.real_name