From c406f0f85142c9e01b5ef0c133a3c9231a7e338d Mon Sep 17 00:00:00 2001 From: Kyep Date: Fri, 14 Aug 2020 13:23:22 -0700 Subject: [PATCH] EXP system minor refactor --- code/controllers/subsystem/jobs.dm | 2 +- code/game/jobs/job_exp.dm | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm index ef89317d0f5..0295dcc8c9a 100644 --- a/code/controllers/subsystem/jobs.dm +++ b/code/controllers/subsystem/jobs.dm @@ -27,7 +27,7 @@ SUBSYSTEM_DEF(jobs) /datum/controller/subsystem/jobs/fire() if(!config.sql_enabled || !config.use_exp_tracking) return - update_exp(5,0) + INVOKE_ASYNC(update_exp(5, 0)) /datum/controller/subsystem/jobs/proc/SetupOccupations(var/list/faction = list("Station")) occupations = list() diff --git a/code/game/jobs/job_exp.dm b/code/game/jobs/job_exp.dm index f0e6f9bff42..aa9114c2963 100644 --- a/code/game/jobs/job_exp.dm +++ b/code/game/jobs/job_exp.dm @@ -224,19 +224,17 @@ GLOBAL_LIST_INIT(role_playtime_requirements, list( else return "none" -/proc/update_exp(var/mins, var/ann = 0) - if(!establish_db_connection()) - return -1 - spawn(0) - for(var/client/L in GLOB.clients) - if(L.inactivity >= (10 MINUTES)) - continue - spawn(0) - L.update_exp_client(mins, ann) - sleep(10) +/proc/update_exp(mins = 0, ann = 0) + if(!GLOB.dbcon.IsConnected()) + return + for(var/client/L in GLOB.clients) + if(L.inactivity >= (10 MINUTES)) + continue + L.update_exp_client(mins, ann) + CHECK_TICK -/client/proc/update_exp_client(var/minutes, var/announce_changes = 0) - if(!src ||!ckey) +/client/proc/update_exp_client(minutes = 0, announce_changes = 0) + if(!src || !ckey || !GLOB.dbcon.IsConnected()) return var/DBQuery/exp_read = GLOB.dbcon.NewQuery("SELECT exp FROM [format_table_name("player")] WHERE ckey='[ckey]'") if(!exp_read.Execute())