diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql
index f9ede329474..826e47878c6 100644
--- a/SQL/paradise_schema.sql
+++ b/SQL/paradise_schema.sql
@@ -264,6 +264,7 @@ CREATE TABLE `player` (
`windowflashing` smallint(4) DEFAULT '1',
`ghost_anonsay` tinyint(1) NOT NULL DEFAULT '0',
`exp` mediumtext,
+ `clientfps` smallint(4) DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
) ENGINE=InnoDB AUTO_INCREMENT=32446 DEFAULT CHARSET=latin1;
diff --git a/SQL/paradise_schema_prefixed.sql b/SQL/paradise_schema_prefixed.sql
index 8de204cfe3e..e0056474db3 100644
--- a/SQL/paradise_schema_prefixed.sql
+++ b/SQL/paradise_schema_prefixed.sql
@@ -263,6 +263,7 @@ CREATE TABLE `SS13_player` (
`windowflashing` smallint(4) DEFAULT '1',
`ghost_anonsay` tinyint(1) NOT NULL DEFAULT '0',
`exp` mediumtext,
+ `clientfps` smallint(4) DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
) ENGINE=InnoDB AUTO_INCREMENT=32446 DEFAULT CHARSET=latin1;
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index 2720f8086d0..9e731953ce5 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -418,6 +418,8 @@
preferences_datums[ckey] = prefs
prefs.last_ip = address //these are gonna be used for banning
prefs.last_id = computer_id //these are gonna be used for banning
+ if(world.byond_version >= 511 && byond_version >= 511 && prefs.clientfps)
+ fps = prefs.clientfps
spawn() // Goonchat does some non-instant checks in start()
chatOutput.start()
diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm
index a351d3f5032..7d9603566d9 100644
--- a/code/modules/client/preference/preferences.dm
+++ b/code/modules/client/preference/preferences.dm
@@ -68,6 +68,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
#define TAB_GEAR 2
/datum/preferences
+ var/client/parent
//doohickeys for savefiles
// var/path
var/default_slot = 1 //Holder so it doesn't default to slot 1, rather the last one used
@@ -94,6 +95,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
var/UI_style_color = "#ffffff"
var/UI_style_alpha = 255
var/windowflashing = TRUE
+ var/clientfps = 0
//ghostly preferences
var/ghost_anonsay = 0
@@ -203,6 +205,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
var/gear_tab = "General"
/datum/preferences/New(client/C)
+ parent = C
b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
max_gear_slots = config.max_loadout_points
@@ -448,7 +451,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "Ghost sight: [(toggles & CHAT_GHOSTSIGHT) ? "Nearest Creatures" : "All Emotes"]
"
dat += "Ghost radio: [(toggles & CHAT_GHOSTRADIO) ? "Nearest Speakers" : "All Chatter"]
"
dat += "Deadchat anonymity: [ghost_anonsay ? "Anonymous" : "Not Anonymous"]
"
-
+ dat += "FPS: [clientfps]
"
dat += "