diff --git a/code/__DEFINES/MC.dm b/code/__DEFINES/MC.dm index cbcf2c1dd9..97ce6ef6fd 100644 --- a/code/__DEFINES/MC.dm +++ b/code/__DEFINES/MC.dm @@ -19,8 +19,8 @@ #define NEW_SS_GLOBAL(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;} -#define START_PROCESSING(Processor, Datum) if (!Datum.isprocessing) {Datum.isprocessing = TRUE;Processor.processing += Datum} -#define STOP_PROCESSING(Processor, Datum) Datum.isprocessing = FALSE;Processor.processing -= Datum +#define START_PROCESSING(Processor, Datum) if (!(Datum.datum_flags & DF_ISPROCESSING)) {Datum.datum_flags |= DF_ISPROCESSING;Processor.processing += Datum} +#define STOP_PROCESSING(Processor, Datum) Datum.datum_flags &= ~DF_ISPROCESSING;Processor.processing -= Datum //SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 61249cb60a..f566492ec3 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -9,6 +9,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 // for /datum/var/datum_flags #define DF_USE_TAG (1<<0) #define DF_VAR_EDITED (1<<1) +#define DF_ISPROCESSING (1<<2) //FLAGS BITMASK diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 6113e11eef..5ef8dc6d1b 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -35,7 +35,8 @@ GLOBAL_LIST_INIT(bitfields, list( ), "datum_flags" = list( "DF_USE_TAG" = DF_USE_TAG, - "DF_VAR_EDITED" = DF_VAR_EDITED + "DF_VAR_EDITED" = DF_VAR_EDITED, + "DF_ISPROCESSING" = DF_ISPROCESSING, ), "item_flags" = list( "BEING_REMOVED" = BEING_REMOVED, diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index eab61d4ef9..6d5d64fe6c 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -45,7 +45,7 @@ SUBSYSTEM_DEF(machines) else processing -= thing if (!QDELETED(thing)) - thing.isprocessing = FALSE + thing.datum_flags &= ~DF_ISPROCESSING if (MC_TICK_CHECK) return diff --git a/code/controllers/subsystem/processing/processing.dm b/code/controllers/subsystem/processing/processing.dm index f6d45ebff2..ef2a0f72e6 100644 --- a/code/controllers/subsystem/processing/processing.dm +++ b/code/controllers/subsystem/processing/processing.dm @@ -27,7 +27,6 @@ SUBSYSTEM_DEF(processing) if (MC_TICK_CHECK) return -/datum/var/isprocessing = FALSE /datum/proc/process() set waitfor = 0 STOP_PROCESSING(SSobj, src) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 93b8635dc5..498416f73f 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -385,7 +385,7 @@ turns = 0 if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return - if(!isprocessing) + if(!(datum_flags & DF_ISPROCESSING)) user.visible_message("[user] spins [src] around, and Ratvarian technology keeps it spinning FOREVER.", \ "Automated spinny chairs. The pinnacle of Ratvarian technology.") START_PROCESSING(SSfastprocess, src) diff --git a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm index 41292f818d..f5ed91ac15 100644 --- a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm +++ b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm @@ -12,7 +12,7 @@ return if(!is_servant_of_ratvar(user)) return - if(!isprocessing) + if(!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprocessing, src) to_chat(user, "You activate [src].") icon_state = "[icon_state]_on" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index b0dc498bfa..4ee1363853 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -356,7 +356,7 @@ fired = TRUE if(hitscan) process_hitscan() - if(!isprocessing) + if(!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprojectiles, src) pixel_move(1) //move it now!