diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 2b046c2b49..b464ea130c 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -1,5 +1,5 @@ /* - These defines are specific to the atom/flags bitmask + These defines are specific to the atom/flags_1 bitmask */ #define ALL ~0 //For convenience. #define NONE 0 @@ -7,58 +7,58 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768)) //FLAGS BITMASK -#define STOPSPRESSUREDMAGE 1 //This flag is used on the flags variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere +#define STOPSPRESSUREDMAGE_1 1 //This flag is used on the flags_1 variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere //To successfully stop you taking all pressure damage you must have both a suit and head item with this flag. -#define NODROP 2 // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. -#define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() -#define MASKINTERNALS 8 // mask allows internals -#define HEAR 16 // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. -#define CHECK_RICOCHET 32 // Projectiels will check ricochet on things impacted that have this. -#define CONDUCT 64 // conducts electricity (metal etc.) -#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way -#define NODECONSTRUCT 128 // For machines and structures that should not break into parts, eg, holodeck stuff -#define OVERLAY_QUEUED 256 //atom queued to SSoverlay -#define ON_BORDER 512 // item has priority to check when entering or leaving +#define NODROP_1 2 // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. +#define NOBLUDGEON_1 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() +#define MASKINTERNALS_1 8 // mask allows internals +#define HEAR_1 16 // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. +#define CHECK_RICOCHET_1 32 // Projectiels will check ricochet on things impacted that have this. +#define CONDUCT_1 64 // conducts electricity (metal etc.) +#define ABSTRACT_1 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way +#define NODECONSTRUCT_1 128 // For machines and structures that should not break into parts, eg, holodeck stuff +#define OVERLAY_QUEUED_1 256 // atom queued to SSoverlay +#define ON_BORDER_1 512 // item has priority to check when entering or leaving -#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc -#define CLEAN_ON_MOVE 2048 +#define NOSLIP_1 1024 //prevents from slipping on wet floors, in space etc +#define CLEAN_ON_MOVE_1 2048 -// BLOCK_GAS_SMOKE_EFFECT only used in masks at the moment. -#define BLOCK_GAS_SMOKE_EFFECT 4096 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! -#define THICKMATERIAL 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. -#define DROPDEL 16384 // When dropped, it calls qdel on itself -#define PREVENT_CLICK_UNDER 32768 //Prevent clicking things below it on the same turf eg. doors/ fulltile windows +// BLOCK_GAS_SMOKE_EFFECT_1 only used in masks at the moment. +#define BLOCK_GAS_SMOKE_EFFECT_1 4096 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! +#define THICKMATERIAL_1 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. +#define DROPDEL_1 16384 // When dropped, it calls qdel on itself +#define PREVENT_CLICK_UNDER_1 32768 //Prevent clicking things below it on the same turf eg. doors/ fulltile windows -/* Secondary atom flags, access using the SECONDARY_FLAG macros */ +/* Secondary atom flags, for the flags_2 var, denoted with a _2 */ -#define SLOWS_WHILE_IN_HAND "slows_while_in_hand" -#define NO_EMP_WIRES "no_emp_wires" -#define HOLOGRAM "hologram" -#define FROZEN "frozen" -#define STATIONLOVING "stationloving" -#define INFORM_ADMINS_ON_RELOCATE "inform_admins_on_relocate" -#define BANG_PROTECT "bang_protect" +#define SLOWS_WHILE_IN_HAND_2 1 +#define NO_EMP_WIRES_2 2 +#define HOLOGRAM_2 4 +#define FROZEN_2 8 +#define STATIONLOVING_2 16 +#define INFORM_ADMINS_ON_RELOCATE_2 32 +#define BANG_PROTECT_2 64 // An item worn in the ear slot with HEALS_EARS will heal your ears each // Life() tick, even if normally your ears would be too damaged to heal. -#define HEALS_EARS "heals_ears" +#define HEALS_EARS_2 128 // A mob with OMNITONGUE has no restriction in the ability to speak // languages that they know. So even if they wouldn't normally be able to // through mob or tongue restrictions, this flag allows them to ignore // those restrictions. -#define OMNITONGUE "omnitongue" +#define OMNITONGUE_2 256 // TESLA_IGNORE grants immunity from being targeted by tesla-style electricity -#define TESLA_IGNORE "tesla_ignore" +#define TESLA_IGNORE_2 512 //turf-only flags -#define NOJAUNT 1 -#define UNUSED_TRANSIT_TURF 2 -#define CAN_BE_DIRTY 4 //If a turf can be made dirty at roundstart. This is also used in areas. -#define NO_DEATHRATTLE 16 // Do not notify deadchat about any deaths that occur on this turf. -//#define CHECK_RICOCHET 32 //Same thing as atom flag. +#define NOJAUNT_1 1 +#define UNUSED_TRANSIT_TURF_1 2 +#define CAN_BE_DIRTY_1 4 // If a turf can be made dirty at roundstart. This is also used in areas. +#define NO_DEATHRATTLE_1 16 // Do not notify deadchat about any deaths that occur on this turf. +//#define CHECK_RICOCHET_1 32 //Same thing as atom flag. /* These defines are used specifically with the atom/pass_flags bitmask @@ -90,5 +90,3 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define ACID_PROOF 32 //acid stuck on it doesn't melt it. #define INDESTRUCTIBLE 64 //doesn't take damage #define FREEZE_PROOF 128 //can't be frozen - -// language secondary flags for atoms diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index b43fddadb5..9e17719e76 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -2,10 +2,10 @@ #define LIQUID 2 #define GAS 3 -#define INJECTABLE 1024 //Makes reagents addable through droppers and syringes -#define DRAWABLE 2048 //If a syringe can draw from it -#define OPENCONTAINER 4096 //Is an open container for chemistry purposes -#define TRANSPARENT 8192 //Used for non-open containers which you still want to be able to see the reagents off. +#define INJECTABLE_1 1024 //Makes reagents addable through droppers and syringes +#define DRAWABLE_1 2048 //If a syringe can draw from it +#define OPENCONTAINER_1 4096 //Is an open container for chemistry purposes +#define TRANSPARENT_1 8192 //Used for non-open containers which you still want to be able to see the reagents off. #define TOUCH 1 //splashing #define INGEST 2 //ingestion diff --git a/code/__HELPERS/flags.dm b/code/__HELPERS/flags.dm deleted file mode 100644 index 5a6c1f3ab4..0000000000 --- a/code/__HELPERS/flags.dm +++ /dev/null @@ -1,4 +0,0 @@ -#define HAS_SECONDARY_FLAG(atom, sflag) (atom.secondary_flags ? atom.secondary_flags[sflag] : FALSE) -#define SET_SECONDARY_FLAG(atom, sflag) if(!atom.secondary_flags) { atom.secondary_flags = list(); } atom.secondary_flags[sflag] = TRUE; -#define CLEAR_SECONDARY_FLAG(atom, sflag) if(atom.secondary_flags) atom.secondary_flags[sflag] = null -#define TOGGLE_SECONDARY_FLAG(atom, sflag) if(HAS_SECONDARY_FLAG(atom, sflag)) { CLEAR_SECONDARY_FLAG(atom, sflag); } else {SET_SECONDARY_FLAG(atom, sflag) ; } diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 9b1507771a..d1d330fb01 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -164,7 +164,7 @@ . = list() while(processing_list.len) var/atom/A = processing_list[1] - if(A.flags & HEAR) + if(A.flags_1 & HEAR_1) . += A processing_list.Cut(1, 2) processing_list += A.contents diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index b245b1f146..9b16644b4c 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -978,19 +978,19 @@ GLOBAL_LIST_EMPTY(friendly_animal_types) // Used to make the frozen item visuals for Freon. if(resistance_flags & FREEZE_PROOF) return - if(!HAS_SECONDARY_FLAG(src, FROZEN)) + if(!(flags_2 & FROZEN_2)) name = "frozen [name]" add_atom_colour(list(FROZEN_RED_COLOR, FROZEN_GREEN_COLOR, FROZEN_BLUE_COLOR, rgb(0,0,0)), TEMPORARY_COLOUR_PRIORITY) alpha -= 25 - SET_SECONDARY_FLAG(src, FROZEN) + flags_2 |= FROZEN_2 //Assumes already frozed /obj/proc/make_unfrozen() - if(HAS_SECONDARY_FLAG(src, FROZEN)) + if(flags_2 & FROZEN_2) name = replacetext(name, "frozen ", "") remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, list(FROZEN_RED_COLOR, FROZEN_GREEN_COLOR, FROZEN_BLUE_COLOR, rgb(0,0,0))) alpha += 25 - CLEAR_SECONDARY_FLAG(src, FROZEN) + flags_2 &= ~FROZEN_2 #undef FROZEN_RED_COLOR #undef FROZEN_GREEN_COLOR diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index eaa6525203..765e659c32 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -85,7 +85,7 @@ /* This checks if you there is uninterrupted airspace between that turf and this one. - This is defined as any dense ON_BORDER object, or any dense object without LETPASSTHROW. + This is defined as any dense ON_BORDER_1 object, or any dense object without LETPASSTHROW. The border_only flag allows you to not objects (for source and destination squares) */ /turf/proc/ClickCross(target_dir, border_only, target_atom = null, atom/movable/mover = null) @@ -95,7 +95,7 @@ if(O == target_atom || (O.pass_flags & LETPASSTHROW)) //check if there's a dense object present on the turf continue // LETPASSTHROW is used for anything you can click through (or the firedoor special case, see above) - if( O.flags&ON_BORDER) // windows are on border, check them first + if( O.flags_1&ON_BORDER_1) // windows are on border, check them first if( O.dir & target_dir || O.dir & (O.dir-1) ) // full tile windows are just diagonals mechanically return 0 //O.dir&(O.dir-1) is false for any cardinal direction, but true for diagonal ones diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 7e38d59998..079873030d 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -144,7 +144,7 @@ else RangedAttack(A,params) -//Is the atom obscured by a PREVENT_CLICK_UNDER object above it +//Is the atom obscured by a PREVENT_CLICK_UNDER_1 object above it /atom/proc/IsObscured() if(!isturf(loc)) //This only makes sense for things directly on turfs for now return FALSE @@ -152,13 +152,13 @@ if(!T) return FALSE for(var/atom/movable/AM in T) - if(AM.flags & PREVENT_CLICK_UNDER && AM.density && AM.layer > layer) + if(AM.flags_1 & PREVENT_CLICK_UNDER_1 && AM.density && AM.layer > layer) return TRUE return FALSE /turf/IsObscured() for(var/atom/movable/AM in src) - if(AM.flags & PREVENT_CLICK_UNDER && AM.density) + if(AM.flags_1 & PREVENT_CLICK_UNDER_1 && AM.density) return TRUE return FALSE diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 14b7323ce3..01b163f8da 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -258,7 +258,7 @@ var/obj/item/clothing/mask/M = C.wear_mask if(M.mask_adjusted) // if mask on face but pushed down M.adjustmask(C) // adjust it back - if( !(M.flags & MASKINTERNALS) ) + if( !(M.flags_1 & MASKINTERNALS_1) ) to_chat(C, "You are not wearing an internals mask!") return diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 43569dca0c..f1ac1af1af 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -35,7 +35,7 @@ /obj/item/proc/attack(mob/living/M, mob/living/user) - if(flags & NOBLUDGEON) + if(flags_1 & NOBLUDGEON_1) return if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) @@ -54,7 +54,7 @@ //the equivalent of the standard version of attack() but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) - if(flags & NOBLUDGEON) + if(flags_1 & NOBLUDGEON_1) return user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(O) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 89803baef6..b0ab260d63 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -68,7 +68,7 @@ desc = "Magic" icon = 'icons/obj/magic.dmi'//Needs sprites icon_state = "2" - flags = NOBLUDGEON | ABSTRACT | DROPDEL + flags_1 = NOBLUDGEON_1 | ABSTRACT_1 | DROPDEL_1 //item_state = null w_class = WEIGHT_CLASS_GIGANTIC layer = ABOVE_HUD_LAYER diff --git a/code/controllers/subsystem/processing/overlays.dm b/code/controllers/subsystem/processing/overlays.dm index 589bf667af..fba4ebcaf0 100644 --- a/code/controllers/subsystem/processing/overlays.dm +++ b/code/controllers/subsystem/processing/overlays.dm @@ -55,7 +55,7 @@ PROCESSING_SUBSYSTEM_DEF(overlays) overlays = po else overlays.Cut() - flags &= ~OVERLAY_QUEUED + flags_1 &= ~OVERLAY_QUEUED_1 /proc/iconstate2appearance(icon, iconstate) var/static/image/stringbro = new() @@ -102,8 +102,8 @@ PROCESSING_SUBSYSTEM_DEF(overlays) new_overlays[i] = appearance_bro.appearance return new_overlays -#define NOT_QUEUED_ALREADY (!(flags & OVERLAY_QUEUED)) -#define QUEUE_FOR_COMPILE flags |= OVERLAY_QUEUED; SSoverlays.processing += src; +#define NOT_QUEUED_ALREADY (!(flags_1 & OVERLAY_QUEUED_1)) +#define QUEUE_FOR_COMPILE flags_1 |= OVERLAY_QUEUED_1; SSoverlays.processing += src; /atom/proc/cut_overlays(priority = FALSE) var/list/cached_overlays = our_overlays var/list/cached_priority = priority_overlays diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index d88d788d37..ea91e8a688 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -84,7 +84,7 @@ SUBSYSTEM_DEF(shuttle) var/turf/T = i T.ChangeTurf(/turf/open/space) transit_turfs += T - T.flags |= UNUSED_TRANSIT_TURF + T.flags_1 |= UNUSED_TRANSIT_TURF_1 #ifdef HIGHLIGHT_DYNAMIC_TRANSIT /datum/controller/subsystem/shuttle/proc/color_space() @@ -412,13 +412,13 @@ SUBSYSTEM_DEF(shuttle) for(var/i in transit_turfs) CHECK_TICK var/turf/topleft = i - if(!(topleft.flags & UNUSED_TRANSIT_TURF)) + if(!(topleft.flags_1 & UNUSED_TRANSIT_TURF_1)) continue var/turf/bottomright = locate(topleft.x + transit_width, topleft.y + transit_height, topleft.z) if(!bottomright) continue - if(!(bottomright.flags & UNUSED_TRANSIT_TURF)) + if(!(bottomright.flags_1 & UNUSED_TRANSIT_TURF_1)) continue proposed_zone = block(topleft, bottomright) @@ -428,7 +428,7 @@ SUBSYSTEM_DEF(shuttle) var/turf/T = j if(!T) continue base - if(!(T.flags & UNUSED_TRANSIT_TURF)) + if(!(T.flags_1 & UNUSED_TRANSIT_TURF_1)) continue base //to_chat(world, "[COORD(topleft)] and [COORD(bottomright)]") break base @@ -500,7 +500,7 @@ SUBSYSTEM_DEF(shuttle) for(var/i in new_transit_dock.assigned_turfs) var/turf/T = i T.ChangeTurf(transit_path) - T.flags &= ~(UNUSED_TRANSIT_TURF) + T.flags_1 &= ~(UNUSED_TRANSIT_TURF_1) M.assigned_transit = new_transit_dock return TRUE diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index d91d91de72..f245b0766c 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -135,6 +135,6 @@ SUBSYSTEM_DEF(throwing) var/atom/movable/AM = thing if (AM == thrownthing) continue - if (AM.density && !(AM.pass_flags & LETPASSTHROW) && !(AM.flags & ON_BORDER)) + if (AM.density && !(AM.pass_flags & LETPASSTHROW) && !(AM.flags_1 & ON_BORDER_1)) finalize(hit=TRUE, target=AM) return TRUE diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index a6eb01f7b6..df7249c9c3 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -19,7 +19,7 @@ to_chat(affected_mob, "You feel a slight shock course through your body.") if(prob(2)) for(var/obj/M in orange(2,affected_mob)) - if(!M.anchored && (M.flags & CONDUCT)) + if(!M.anchored && (M.flags_1 & CONDUCT_1)) step_towards(M,affected_mob) for(var/mob/living/silicon/S in orange(2,affected_mob)) if(isAI(S)) @@ -32,7 +32,7 @@ to_chat(affected_mob, "You feel like clowning around.") if(prob(4)) for(var/obj/M in orange(4,affected_mob)) - if(!M.anchored && (M.flags & CONDUCT)) + if(!M.anchored && (M.flags_1 & CONDUCT_1)) var/i var/iter = rand(1,2) for(i=0,iYou query upon the nature of miracles.") if(prob(8)) for(var/obj/M in orange(6,affected_mob)) - if(!M.anchored && (M.flags & CONDUCT)) + if(!M.anchored && (M.flags_1 & CONDUCT_1)) var/i var/iter = rand(1,3) for(i=0,i