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