diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm
index 16d651ab1dfcc..ae86c12261ae4 100644
--- a/code/__DEFINES/jobs.dm
+++ b/code/__DEFINES/jobs.dm
@@ -103,30 +103,33 @@
#define ROLE_ERT "Emergency Response Team"
#define ROLE_VALHALLA "Valhalla"
-GLOBAL_LIST_EMPTY(jobs_command)
-GLOBAL_LIST_INIT(jobs_officers, list(CAPTAIN, FIELD_COMMANDER, STAFF_OFFICER, PILOT_OFFICER, MECH_PILOT, CORPORATE_LIAISON, SYNTHETIC, SILICON_AI))
+//RUTGMC EDIT BEGIN
+GLOBAL_LIST_INIT(jobs_command, list(CAPTAIN, FIELD_COMMANDER, STAFF_OFFICER, SQUAD_LEADER))
+GLOBAL_LIST_INIT(jobs_officers, list(CAPTAIN, FIELD_COMMANDER, STAFF_OFFICER, PILOT_OFFICER, MECH_PILOT, CORPORATE_LIAISON, SYNTHETIC, SILICON_AI, SQUAD_LEADER, CHIEF_MEDICAL_OFFICER, CHIEF_SHIP_ENGINEER, REQUISITIONS_OFFICER))
GLOBAL_LIST_INIT(jobs_support, list(PILOT_OFFICER, MECH_PILOT, REQUISITIONS_OFFICER, SYNTHETIC, SILICON_AI))
-GLOBAL_LIST_INIT(jobs_engineering, list(CHIEF_SHIP_ENGINEER, SHIP_TECH))
+GLOBAL_LIST_INIT(jobs_engineering, list(CHIEF_SHIP_ENGINEER, SHIP_TECH, SQUAD_ENGINEER))
GLOBAL_LIST_INIT(jobs_requisitions, list(REQUISITIONS_OFFICER))
-GLOBAL_LIST_INIT(jobs_medical, list(CHIEF_MEDICAL_OFFICER, MEDICAL_DOCTOR, MEDICAL_RESEARCHER))
+GLOBAL_LIST_INIT(jobs_medical, list(CHIEF_MEDICAL_OFFICER, MEDICAL_DOCTOR, MEDICAL_RESEARCHER, SQUAD_CORPSMAN))
GLOBAL_LIST_INIT(jobs_marines, list(SQUAD_LEADER, SQUAD_SMARTGUNNER, SQUAD_CORPSMAN, SQUAD_ENGINEER, SQUAD_MARINE))
-GLOBAL_LIST_INIT(jobs_som, list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN, SOM_SQUAD_ENGINEER, SOM_SQUAD_CORPSMAN, SOM_SQUAD_LEADER))
+GLOBAL_LIST_INIT(jobs_robots, list(SYNTHETIC, SILICON_AI))
+GLOBAL_LIST_INIT(jobs_civilian, list(CORPORATE_LIAISON))
GLOBAL_LIST_INIT(jobs_regular_all, list(CAPTAIN, FIELD_COMMANDER, STAFF_OFFICER, PILOT_OFFICER, MECH_PILOT, REQUISITIONS_OFFICER, CHIEF_SHIP_ENGINEER, \
CHIEF_MEDICAL_OFFICER, SYNTHETIC, SILICON_AI, CORPORATE_LIAISON, SHIP_TECH, \
-MEDICAL_DOCTOR, MEDICAL_RESEARCHER, SQUAD_LEADER, SQUAD_SMARTGUNNER, SQUAD_CORPSMAN, SQUAD_ENGINEER, SQUAD_MARINE, \
-SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN, SOM_SQUAD_ENGINEER, SOM_SQUAD_CORPSMAN, SOM_SQUAD_LEADER))
-//GLOBAL_LIST_INIT(jobs_xenos, list(ROLE_XENOMORPH, ROLE_XENO_QUEEN)) //RUTGMC EDIT: Moved to modular_RUtgmc\code\__DEFINES\jobs.dm
-GLOBAL_LIST_INIT(jobs_fallen_marine, typecacheof(list(/datum/job/fallen/marine), TRUE))
+MEDICAL_DOCTOR, MEDICAL_RESEARCHER, SQUAD_LEADER, SQUAD_SMARTGUNNER, SQUAD_CORPSMAN, SQUAD_ENGINEER, SQUAD_MARINE, SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN, SOM_SQUAD_ENGINEER, SOM_SQUAD_CORPSMAN, SOM_SQUAD_LEADER))
+GLOBAL_LIST_INIT(jobs_som, list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN, SOM_SQUAD_ENGINEER, SOM_SQUAD_CORPSMAN, SOM_SQUAD_LEADER))
//Playtime tracking system, see jobs_exp.dm
#define EXP_TYPE_LIVING "Living"
-#define EXP_TYPE_REGULAR_ALL "Any"
+#define EXP_TYPE_ALL "Any"
+#define EXP_TYPE_REGULAR_ALL "Any TMGC"
#define EXP_TYPE_COMMAND "Command"
+#define EXP_TYPE_OFFICERS "Officers"
#define EXP_TYPE_ENGINEERING "Engineering"
#define EXP_TYPE_MEDICAL "Medical"
#define EXP_TYPE_MARINES "Marines"
#define EXP_TYPE_REQUISITIONS "Requisitions"
#define EXP_TYPE_SILICON "Silicon"
+#define EXP_TYPE_XENO "Xeno"
#define EXP_TYPE_SPECIAL "Special"
#define EXP_TYPE_GHOST "Ghost"
#define EXP_TYPE_ADMIN "Admin"
@@ -140,11 +143,19 @@ GLOBAL_LIST_INIT(jobs_fallen_marine, typecacheof(list(/datum/job/fallen/marine),
#define CRYO_CHARLIE "Charlie Squad"
#define CRYO_DELTA "Delta Squad"
-
+/* //ORIGINAL
#define XP_REQ_UNSEASONED 60
#define XP_REQ_INTERMEDIATE 180
#define XP_REQ_EXPERIENCED 600
#define XP_REQ_EXPERT 900
+*/
+#define XP_REQ_NOVICE 300
+#define XP_REQ_UNSEASONED 300
+#define XP_REQ_INTERMEDIATE 600
+#define XP_REQ_EXPERIENCED 2400
+#define XP_REQ_EXPERT 2400
+#define XP_REQ_SURVIVOR 3600
+//RUTGMC EDIT END
// how much a job is going to contribute towards burrowed larva. see config for points required to larva. old balance was 1 larva per 3 humans.
#define LARVA_POINTS_SHIPSIDE 1
diff --git a/code/__DEFINES/~RUtgmc_defines/jobs.dm b/code/__DEFINES/~RUtgmc_defines/jobs.dm
index c4d4abc77ce91..b0446eae4f9fd 100644
--- a/code/__DEFINES/~RUtgmc_defines/jobs.dm
+++ b/code/__DEFINES/~RUtgmc_defines/jobs.dm
@@ -1,3 +1,7 @@
#define ROLE_XENO_HUGGER "Xeno Facehugger"
GLOBAL_LIST_INIT(jobs_xenos, list(ROLE_XENOMORPH, ROLE_XENO_QUEEN, ROLE_XENO_HUGGER))
+GLOBAL_LIST_INIT(jobs_xeno, list(ROLE_XENOMORPH, ROLE_XENO_QUEEN, ROLE_XENO_HUGGER))
+GLOBAL_LIST_INIT(jobs_all, list(CAPTAIN, FIELD_COMMANDER, STAFF_OFFICER, PILOT_OFFICER, REQUISITIONS_OFFICER, CHIEF_SHIP_ENGINEER, CHIEF_MEDICAL_OFFICER, SYNTHETIC, SILICON_AI, CORPORATE_LIAISON, SHIP_TECH,
+MEDICAL_DOCTOR, MEDICAL_RESEARCHER, SQUAD_LEADER, SQUAD_SMARTGUNNER, SQUAD_CORPSMAN, SQUAD_ENGINEER, SQUAD_MARINE, ROLE_XENOMORPH, ROLE_XENO_QUEEN, ROLE_XENO_HUGGER))
+GLOBAL_LIST_INIT(jobs_fallen_marine, typecacheof(list(/datum/job/fallen/marine)))
diff --git a/code/datums/jobs/job/job_exp.dm b/code/datums/jobs/job/job_exp.dm
index bb2193435cdaf..d22afd4231f49 100644
--- a/code/datums/jobs/job/job_exp.dm
+++ b/code/datums/jobs/job/job_exp.dm
@@ -7,22 +7,35 @@ GLOBAL_PROTECT(exp_to_update)
return FALSE
if(!CONFIG_GET(flag/use_exp_tracking))
return FALSE
+ //RUTGMC EDIT BEGIN
+ if(!CONFIG_GET(flag/use_exp_restrictions)) //ADDITION
+ return FALSE //ADDITION
+ //RUTGMC EDIT END
if(!SSdbcore.Connect())
return FALSE
if(!exp_requirements || !exp_type)
return FALSE
+ //RUTGMC EDIT BEGIN
+ /*
if(!job_is_xp_locked(src))
return FALSE
+ */
if(CONFIG_GET(flag/use_exp_restrictions_admin_bypass) && check_other_rights(C, R_ADMIN, FALSE))
return FALSE
+ /* //ORIGINAL
var/my_exp = C.calc_exp_type(get_exp_req_type())
var/job_requirement = get_exp_req_amount()
+ */
+
+ // Calc client exp and how much do we need
+ var/my_exp = C.calc_exp_type(exp_type)
+ var/job_requirement = exp_requirements
if(my_exp >= job_requirement)
return FALSE
else
return (job_requirement - my_exp)
-
+/*
/datum/job/proc/get_exp_req_amount()
if(job_flags & JOB_FLAG_ISCOMMAND)
var/uerhh = CONFIG_GET(number/use_exp_restrictions_command_hours)
@@ -44,7 +57,8 @@ GLOBAL_PROTECT(exp_to_update)
if(!CONFIG_GET(flag/use_exp_restrictions_other) && !(job.job_flags & JOB_FLAG_ISCOMMAND))
return FALSE
return TRUE
-
+*/
+//RUTGMC EDIT END
/client/proc/calc_exp_type(exptype)
var/list/explist = prefs.exp.Copy()
@@ -115,13 +129,22 @@ GLOBAL_PROTECT(exp_to_update)
for(var/j in SSjob.joinable_occupations)
var/datum/job/job = j
if(job.exp_requirements && job.exp_type)
+ //RUTGMC EDIT BEGIN
+ /*
if(!job_is_xp_locked(job))
continue
else if(!job.required_playtime_remaining(mob.client))
+ */
+ if(!job.required_playtime_remaining(mob.client))
jobs_unlocked += job.title
else
+ /* ORIGINAL
var/xp_req = job.get_exp_req_amount()
jobs_locked += "[job.title] [get_exp_format(text2num(calc_exp_type(job.get_exp_req_type())))] / [get_exp_format(xp_req)] as [job.get_exp_req_type()])"
+ */
+ var/xp_req = job.exp_requirements
+ jobs_locked += "[job.title] [get_exp_format(text2num(calc_exp_type(job.exp_type)))] / [get_exp_format(xp_req)] as [job.exp_type])"
+ //RUTGMC EDIT END
if(length(jobs_unlocked))
return_text += "
Jobs Unlocked: