diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 9af86653f4..c1db343448 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -396,7 +396,7 @@ SUBSYSTEM_DEF(ticker)
SSjob.EquipRank(N, player.mind.assigned_role, 0)
if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character))
SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N)
- N.client.prefs.post_copy_to(player)
+ N.client.prefs.post_copy_to(player, initial_spawn = TRUE)
CHECK_TICK
if(captainless)
for(var/mob/dead/new_player/N in GLOB.player_list)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 44567a0306..2156f8a01d 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -434,7 +434,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(modified_limbs[modification][1] == LOADOUT_LIMB_PROSTHETIC)
dat += "[modification]: prosthetic - [modified_limbs[modification][2]]
"
else
- dat += "[modification]: [modified_limbs[modification]]
"
+ dat += "[modification]: [modified_limbs[modification][1]]
"
dat += "
"
dat += "Species:[pref_species.name]
"
dat += "Custom Species Name:[custom_species ? custom_species : "None"]
"
@@ -2496,7 +2496,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
ShowChoices(user)
return 1
-/datum/preferences/proc/copy_to(mob/living/carbon/human/character, icon_updates = 1, roundstart_checks = TRUE)
+/datum/preferences/proc/copy_to(mob/living/carbon/human/character, icon_updates = 1, roundstart_checks = TRUE, initial_spawn = FALSE)
if(be_random_name)
real_name = pref_species.random_name(gender)
@@ -2591,28 +2591,32 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(custom_speech_verb != "default")
character.dna.species.say_mod = custom_speech_verb
- //limb stuff
- character.regenerate_limbs() //possible optimisation: check for changes before regenerating?
- for(var/modified_limb in modified_limbs)
- var/modification = modified_limbs[modified_limb][1]
- var/obj/item/bodypart/old_part = character.get_bodypart(modified_limb)
- if(modification == LOADOUT_LIMB_PROSTHETIC)
- var/obj/item/bodypart/new_limb
- switch(modified_limb)
- if(BODY_ZONE_L_ARM)
- new_limb = new/obj/item/bodypart/l_arm/robot/surplus(character)
- if(BODY_ZONE_R_ARM)
- new_limb = new/obj/item/bodypart/r_arm/robot/surplus(character)
- if(BODY_ZONE_L_LEG)
- new_limb = new/obj/item/bodypart/l_leg/robot/surplus(character)
- if(BODY_ZONE_R_LEG)
- new_limb = new/obj/item/bodypart/r_leg/robot/surplus(character)
- var/prosthetic_type = modified_limbs[modified_limb][2]
- if(prosthetic_type != "old_prosthetic") //lets just leave the old sprites as they are
- new_limb.icon = 'icons/mob/augmentation/customized_prosthetics.dmi'
- new_limb.icon_state = "[prosthetic_type]_[modified_limb]"
- new_limb.replace_limb(character)
- qdel(old_part)
+ //limb stuff, only done when initially spawning in
+ if(initial_spawn)
+ //delete any existing prosthetic limbs to make sure no remnant prosthetics are left over
+ for(var/obj/item/bodypart/part in character.bodyparts)
+ if(part.status == BODYPART_ROBOTIC)
+ qdel(part)
+ character.regenerate_limbs() //regenerate limbs so now you only have normal limbs
+ for(var/modified_limb in modified_limbs)
+ var/modification = modified_limbs[modified_limb][1]
+ var/obj/item/bodypart/old_part = character.get_bodypart(modified_limb)
+ if(modification == LOADOUT_LIMB_PROSTHETIC)
+ var/obj/item/bodypart/new_limb
+ switch(modified_limb)
+ if(BODY_ZONE_L_ARM)
+ new_limb = new/obj/item/bodypart/l_arm/robot/surplus(character)
+ if(BODY_ZONE_R_ARM)
+ new_limb = new/obj/item/bodypart/r_arm/robot/surplus(character)
+ if(BODY_ZONE_L_LEG)
+ new_limb = new/obj/item/bodypart/l_leg/robot/surplus(character)
+ if(BODY_ZONE_R_LEG)
+ new_limb = new/obj/item/bodypart/r_leg/robot/surplus(character)
+ var/prosthetic_type = modified_limbs[modified_limb][2]
+ if(prosthetic_type != "old_prosthetic") //lets just leave the old sprites as they are
+ new_limb.icon = file("icons/mob/augmentation/cosmetic_prosthetic/[prosthetic_type].dmi")
+ new_limb.replace_limb(character)
+ qdel(old_part)
if(length(modified_limbs))
character.regenerate_icons()
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 7cbdd3afb6..bd2c03ea6f 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -415,7 +415,7 @@
if(GLOB.curse_of_madness_triggered)
give_madness(humanc, GLOB.curse_of_madness_triggered)
if(humanc.client)
- humanc.client.prefs.post_copy_to(humanc)
+ humanc.client.prefs.post_copy_to(humanc, initial_spawn = TRUE)
GLOB.joined_player_list += character.ckey
GLOB.latejoiners += character
diff --git a/icons/mob/augmentation/cosmetic_prosthetic/bishop.dmi b/icons/mob/augmentation/cosmetic_prosthetic/bishop.dmi
new file mode 100644
index 0000000000..8641ef2d3c
Binary files /dev/null and b/icons/mob/augmentation/cosmetic_prosthetic/bishop.dmi differ
diff --git a/icons/mob/augmentation/cosmetic_prosthetic/cybersolutions.dmi b/icons/mob/augmentation/cosmetic_prosthetic/cybersolutions.dmi
new file mode 100644
index 0000000000..eeed0d0c01
Binary files /dev/null and b/icons/mob/augmentation/cosmetic_prosthetic/cybersolutions.dmi differ
diff --git a/icons/mob/augmentation/cosmetic_prosthetic/grayson.dmi b/icons/mob/augmentation/cosmetic_prosthetic/grayson.dmi
new file mode 100644
index 0000000000..9ed6c5f06f
Binary files /dev/null and b/icons/mob/augmentation/cosmetic_prosthetic/grayson.dmi differ
diff --git a/icons/mob/augmentation/cosmetic_prosthetic/hephaestus.dmi b/icons/mob/augmentation/cosmetic_prosthetic/hephaestus.dmi
new file mode 100644
index 0000000000..4bb6b72fd0
Binary files /dev/null and b/icons/mob/augmentation/cosmetic_prosthetic/hephaestus.dmi differ
diff --git a/icons/mob/augmentation/cosmetic_prosthetic/nanotrasen.dmi b/icons/mob/augmentation/cosmetic_prosthetic/nanotrasen.dmi
new file mode 100644
index 0000000000..18c7738ba3
Binary files /dev/null and b/icons/mob/augmentation/cosmetic_prosthetic/nanotrasen.dmi differ
diff --git a/icons/mob/augmentation/cosmetic_prosthetic/talon.dmi b/icons/mob/augmentation/cosmetic_prosthetic/talon.dmi
new file mode 100644
index 0000000000..9e4b93fb54
Binary files /dev/null and b/icons/mob/augmentation/cosmetic_prosthetic/talon.dmi differ
diff --git a/icons/mob/augmentation/cosmetic_prosthetic/ward.dmi b/icons/mob/augmentation/cosmetic_prosthetic/ward.dmi
new file mode 100644
index 0000000000..b2622ef6a1
Binary files /dev/null and b/icons/mob/augmentation/cosmetic_prosthetic/ward.dmi differ
diff --git a/icons/mob/augmentation/cosmetic_prosthetic/xion.dmi b/icons/mob/augmentation/cosmetic_prosthetic/xion.dmi
new file mode 100644
index 0000000000..823205742a
Binary files /dev/null and b/icons/mob/augmentation/cosmetic_prosthetic/xion.dmi differ
diff --git a/icons/mob/augmentation/customized_prosthetics.dmi b/icons/mob/augmentation/customized_prosthetics.dmi
deleted file mode 100644
index ee5e74b93f..0000000000
Binary files a/icons/mob/augmentation/customized_prosthetics.dmi and /dev/null differ