diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index 7def0b2ac20..dda446f81f1 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -177,8 +177,12 @@ GLOBAL_LIST_INIT(jumpsuitlist, list(PREF_SUIT, PREF_SKIRT))
#define UPLINK_PDA "PDA"
#define UPLINK_RADIO "Radio"
#define UPLINK_PEN "Pen" //like a real spy!
-#define UPLINK_IMPLANT "Implant"
-GLOBAL_LIST_INIT(uplink_spawn_loc_list, list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN, UPLINK_IMPLANT))
+#define UPLINK_IMPLANT "Implant"
+#define UPLINK_IMPLANT_WITH_PRICE "[UPLINK_IMPLANT] (-[UPLINK_IMPLANT_TELECRYSTAL_COST] TC)"
+// What we show to the user
+GLOBAL_LIST_INIT(uplink_spawn_loc_list, list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN, UPLINK_IMPLANT_WITH_PRICE))
+// What is actually saved; if the uplink implant price changes, it won't affect save files then
+GLOBAL_LIST_INIT(uplink_spawn_loc_list_save, list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN, UPLINK_IMPLANT))
//Female Uniforms
GLOBAL_LIST_EMPTY(female_clothing_icons)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index f65fb208e57..d0570db0953 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -315,7 +315,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "
Temporal Scarring:
[(persistent_scars) ? "Enabled" : "Disabled"]"
dat += "Clear scar slots"
- dat += "
Uplink Spawn Location:
[uplink_spawn_loc]
"
+ dat += "
Uplink Spawn Location:
[uplink_spawn_loc == UPLINK_IMPLANT ? UPLINK_IMPLANT_WITH_PRICE : uplink_spawn_loc]
"
if (user.client.get_exp_living(TRUE) >= PLAYTIME_VETERAN)
dat += "
Don The Ultimate Gamer Cloak?:
[(playtime_reward_cloak) ? "Enabled" : "Disabled"]
"
var/use_skintones = pref_species.use_skintones
@@ -1509,7 +1509,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("uplink_loc")
var/new_loc = input(user, "Choose your character's traitor uplink spawn location:", "Character Preference") as null|anything in GLOB.uplink_spawn_loc_list
if(new_loc)
- uplink_spawn_loc = new_loc
+ // This is done to prevent affecting saves
+ uplink_spawn_loc = new_loc == UPLINK_IMPLANT_WITH_PRICE ? UPLINK_IMPLANT : uplink_spawn_loc
if("playtime_reward_cloak")
if (user.client.get_exp_living(TRUE) >= PLAYTIME_VETERAN)
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 4c0a5b45be1..9ed59872c3e 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -489,7 +489,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones)
backpack = sanitize_inlist(backpack, GLOB.backpacklist, initial(backpack))
jumpsuit_style = sanitize_inlist(jumpsuit_style, GLOB.jumpsuitlist, initial(jumpsuit_style))
- uplink_spawn_loc = sanitize_inlist(uplink_spawn_loc, GLOB.uplink_spawn_loc_list, initial(uplink_spawn_loc))
+ uplink_spawn_loc = sanitize_inlist(uplink_spawn_loc, GLOB.uplink_spawn_loc_list_save, initial(uplink_spawn_loc))
playtime_reward_cloak = sanitize_integer(playtime_reward_cloak)
features["mcolor"] = sanitize_hexcolor(features["mcolor"], 3, 0)
features["ethcolor"] = copytext_char(features["ethcolor"], 1, 7)