diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index c47fa3a190..881eb95abb 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -426,43 +426,6 @@
log_and_message_admins("has opened [S]'s law manager.")
feedback_add_details("admin_verb","MSL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/change_human_appearance_admin()
- set name = "Change Mob Appearance - Admin"
- set desc = "Allows you to change the mob appearance"
- set category = "Admin"
-
- if(!check_rights(R_FUN)) return
-
- var/mob/living/carbon/human/H = input("Select mob.", "Change Mob Appearance - Admin") as null|anything in human_mob_list
- if(!H) return
-
- log_and_message_admins("is altering the appearance of [H].")
- H.change_appearance(APPEARANCE_ALL, usr, usr, check_species_whitelist = 0, state = admin_state)
- feedback_add_details("admin_verb","CHAA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-
-/client/proc/change_human_appearance_self()
- set name = "Change Mob Appearance - Self"
- set desc = "Allows the mob to change its appearance"
- set category = "Admin"
-
- if(!check_rights(R_FUN)) return
-
- var/mob/living/carbon/human/H = input("Select mob.", "Change Mob Appearance - Self") as null|anything in human_mob_list
- if(!H) return
-
- if(!H.client)
- to_chat(usr, " Only mobs with clients can alter their own appearance.")
- return
- var/datum/gender/T = gender_datums[H.get_visible_gender()]
- switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel"))
- if("Yes")
- log_and_message_admins("has allowed [H] to change [T.his] appearance, without whitelisting of races.")
- H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0)
- if("No")
- log_and_message_admins("has allowed [H] to change [T.his] appearance, with whitelisting of races.")
- H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1)
- feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-
/client/proc/change_security_level()
set name = "Set security level"
set desc = "Sets the station security level"
@@ -485,74 +448,6 @@
// feedback_add_details("admin_verb","MP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
-/client/proc/editappear()
- set name = "Edit Appearance"
- set category = "Fun"
-
- if(!check_rights(R_FUN)) return
-
- var/mob/living/carbon/human/M = input("Select mob.", "Edit Appearance") as null|anything in human_mob_list
-
- if(!istype(M, /mob/living/carbon/human))
- to_chat(usr, "You can only do this to humans!")
- return
- switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Tajaran can result in unintended consequences.",,"Yes","No"))
- if("No")
- return
- var/new_facial = input("Please select facial hair color.", "Character Generation") as color
- if(new_facial)
- M.r_facial = hex2num(copytext(new_facial, 2, 4))
- M.g_facial = hex2num(copytext(new_facial, 4, 6))
- M.b_facial = hex2num(copytext(new_facial, 6, 8))
-
- var/new_hair = input("Please select hair color.", "Character Generation") as color
- if(new_facial)
- M.r_hair = hex2num(copytext(new_hair, 2, 4))
- M.g_hair = hex2num(copytext(new_hair, 4, 6))
- M.b_hair = hex2num(copytext(new_hair, 6, 8))
-
- var/new_eyes = input("Please select eye color.", "Character Generation") as color
- if(new_eyes)
- M.r_eyes = hex2num(copytext(new_eyes, 2, 4))
- M.g_eyes = hex2num(copytext(new_eyes, 4, 6))
- M.b_eyes = hex2num(copytext(new_eyes, 6, 8))
- M.update_eyes()
-
- var/new_skin = input("Please select body color. This is for Tajaran, Unathi, and Skrell only!", "Character Generation") as color
- if(new_skin)
- M.r_skin = hex2num(copytext(new_skin, 2, 4))
- M.g_skin = hex2num(copytext(new_skin, 4, 6))
- M.b_skin = hex2num(copytext(new_skin, 6, 8))
-
- var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
-
- if (new_tone)
- M.s_tone = max(min(round(text2num(new_tone)), 220), 1)
- M.s_tone = -M.s_tone + 35
-
- // hair
- var/new_hstyle = input(usr, "Select a hair style", "Grooming") as null|anything in hair_styles_list
- if(new_hstyle)
- M.h_style = new_hstyle
-
- // facial hair
- var/new_fstyle = input(usr, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list
- if(new_fstyle)
- M.f_style = new_fstyle
-
- var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female", "Neuter")
- if (new_gender)
- if(new_gender == "Male")
- M.gender = MALE
- else if (new_gender == "Female")
- M.gender = FEMALE
- else
- M.gender = NEUTER
-
- M.update_hair(FALSE)
- M.update_icons_body()
- M.check_dna(M)
-
/client/proc/playernotes()
set name = "Show Player Info"
set category = "Admin"
diff --git a/code/modules/admin/verbs/change_appearance.dm b/code/modules/admin/verbs/change_appearance.dm
new file mode 100644
index 0000000000..e547d03f84
--- /dev/null
+++ b/code/modules/admin/verbs/change_appearance.dm
@@ -0,0 +1,107 @@
+/client/proc/change_human_appearance_admin()
+ set name = "Change Mob Appearance - Admin"
+ set desc = "Allows you to change the mob appearance"
+ set category = "Admin"
+
+ if(!check_rights(R_FUN)) return
+
+ var/mob/living/carbon/human/H = input("Select mob.", "Change Mob Appearance - Admin") as null|anything in human_mob_list
+ if(!H) return
+
+ log_and_message_admins("is altering the appearance of [H].")
+ H.change_appearance(APPEARANCE_ALL, usr, usr, check_species_whitelist = 0, state = admin_state)
+ feedback_add_details("admin_verb","CHAA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+/client/proc/change_human_appearance_self()
+ set name = "Change Mob Appearance - Self"
+ set desc = "Allows the mob to change its appearance"
+ set category = "Admin"
+
+ if(!check_rights(R_FUN)) return
+
+ var/mob/living/carbon/human/H = input("Select mob.", "Change Mob Appearance - Self") as null|anything in human_mob_list
+ if(!H) return
+
+ if(!H.client)
+ to_chat(usr, " Only mobs with clients can alter their own appearance.")
+ return
+ var/datum/gender/T = gender_datums[H.get_visible_gender()]
+ switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel"))
+ if("Yes")
+ log_and_message_admins("has allowed [H] to change [T.his] appearance, without whitelisting of races.")
+ H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0)
+ if("No")
+ log_and_message_admins("has allowed [H] to change [T.his] appearance, with whitelisting of races.")
+ H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1)
+ feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+/client/proc/editappear()
+ set name = "Edit Appearance"
+ set category = "Fun"
+
+ if(!check_rights(R_FUN)) return
+
+ var/mob/living/carbon/human/M = input("Select mob.", "Edit Appearance") as null|anything in human_mob_list
+
+ if(!istype(M, /mob/living/carbon/human))
+ to_chat(usr, "You can only do this to humans!")
+ return
+ switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Tajaran can result in unintended consequences.",,"Yes","No"))
+ if("No")
+ return
+ var/new_facial = input("Please select facial hair color.", "Character Generation") as color
+ if(new_facial)
+ M.r_facial = hex2num(copytext(new_facial, 2, 4))
+ M.g_facial = hex2num(copytext(new_facial, 4, 6))
+ M.b_facial = hex2num(copytext(new_facial, 6, 8))
+
+ var/new_hair = input("Please select hair color.", "Character Generation") as color
+ if(new_facial)
+ M.r_hair = hex2num(copytext(new_hair, 2, 4))
+ M.g_hair = hex2num(copytext(new_hair, 4, 6))
+ M.b_hair = hex2num(copytext(new_hair, 6, 8))
+
+ var/new_eyes = input("Please select eye color.", "Character Generation") as color
+ if(new_eyes)
+ M.r_eyes = hex2num(copytext(new_eyes, 2, 4))
+ M.g_eyes = hex2num(copytext(new_eyes, 4, 6))
+ M.b_eyes = hex2num(copytext(new_eyes, 6, 8))
+ M.update_eyes()
+
+ var/new_skin = input("Please select body color. This is for Tajaran, Unathi, and Skrell only!", "Character Generation") as color
+ if(new_skin)
+ M.r_skin = hex2num(copytext(new_skin, 2, 4))
+ M.g_skin = hex2num(copytext(new_skin, 4, 6))
+ M.b_skin = hex2num(copytext(new_skin, 6, 8))
+
+ var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
+
+ if (new_tone)
+ M.s_tone = max(min(round(text2num(new_tone)), 220), 1)
+ M.s_tone = -M.s_tone + 35
+
+ // hair
+ var/new_hstyle = input(usr, "Select a hair style", "Grooming") as null|anything in hair_styles_list
+ if(new_hstyle)
+ M.h_style = new_hstyle
+
+ // facial hair
+ var/new_fstyle = input(usr, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list
+ if(new_fstyle)
+ M.f_style = new_fstyle
+
+ var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female", "Neuter")
+ if (new_gender)
+ if(new_gender == "Male")
+ M.gender = MALE
+ M.dna.SetUIState(DNA_UI_GENDER, FALSE)
+ else if (new_gender == "Female")
+ M.gender = FEMALE
+ M.dna.SetUIState(DNA_UI_GENDER, TRUE)
+ else
+ M.gender = NEUTER
+ M.dna.SetUIState(DNA_UI_GENDER, FALSE)
+
+ M.update_dna(M)
+ M.update_hair(FALSE)
+ M.update_icons_body()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm
index afc9e704a2..239c42c982 100644
--- a/code/modules/mob/living/carbon/human/appearance.dm
+++ b/code/modules/mob/living/carbon/human/appearance.dm
@@ -22,9 +22,14 @@
return
src.gender = gender
+<<<<<<< HEAD
//reset_hair() //VOREStation Remove - Don't just randomize hair on gender swaps for prometheans.
update_icons_body()
+=======
+ reset_hair()
+>>>>>>> 46b6bd1... Edit Appearance and Change Appearance update icon sex (#7193)
update_dna()
+ update_icons_body()
return 1
/mob/living/carbon/human/proc/change_gender_identity(var/identifying_gender)
@@ -141,6 +146,8 @@
/mob/living/carbon/human/proc/update_dna()
check_dna()
dna.ready_dna(src)
+ for(var/obj/item/organ/O in organs)
+ O.dna = dna // Update all of those because apparently they're separate, and icons won't update properly
/mob/living/carbon/human/proc/generate_valid_species(var/check_whitelist = 1, var/list/whitelist = list(), var/list/blacklist = list())
var/list/valid_species = new()
diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm
index 1a79b2b14a..221767b15b 100644
--- a/code/modules/organs/organ_icon.dm
+++ b/code/modules/organs/organ_icon.dm
@@ -131,9 +131,9 @@ var/global/list/limb_icon_cache = list()
/obj/item/organ/external/proc/get_icon(var/skeletal)
- var/gender = "f"
- if(owner && owner.gender == MALE)
- gender = "m"
+ var/gender = "m"
+ if(owner && owner.gender == FEMALE)
+ gender = "f"
icon_cache_key = "[icon_name]_[species ? species.get_bodytype() : SPECIES_HUMAN]" //VOREStation Edit
diff --git a/vorestation.dme b/vorestation.dme
index 0d4628499f..c8e238816a 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1588,6 +1588,7 @@
#include "code\modules\admin\verbs\atmosdebug.dm"
#include "code\modules\admin\verbs\BrokenInhands.dm"
#include "code\modules\admin\verbs\buildmode.dm"
+#include "code\modules\admin\verbs\change_appearance.dm"
#include "code\modules\admin\verbs\check_customitem_activity.dm"
#include "code\modules\admin\verbs\cinematic.dm"
#include "code\modules\admin\verbs\custom_event.dm"