diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 63fddee3745..60c0c6fda0f 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -14,6 +14,7 @@ #define NODECONSTRUCT (1<<9) #define EARBANGPROTECT (1<<10) #define HEADBANGPROTECT (1<<11) +#define SKIP_TRANSFORM_REEQUIP (1<<15) // This flag makes items be skipped when a user transforms species. #define BLOCK_GAS_SMOKE_EFFECT (1<<12) // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! #define THICKMATERIAL (1<<12) //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. (NOTE: flag shared with BLOCK_GAS_SMOKE_EFFECT) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 3f1de6a67fd..1ff22342168 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -101,6 +101,7 @@ DEFINE_BITFIELD(flags, list( "HANDSLOW" = HANDSLOW, "CONDUCT" = CONDUCT, "ABSTRACT" = ABSTRACT, + "SKIP_TRANSFORM_REEQUIP" = SKIP_TRANSFORM_REEQUIP, "ON_BORDER" = ON_BORDER, "PREVENT_CLICK_UNDER" = PREVENT_CLICK_UNDER, "NODECONSTRUCT" = NODECONSTRUCT, diff --git a/code/datums/components/two_handed.dm b/code/datums/components/two_handed.dm index 64532dfb2e8..d89713bf8d5 100644 --- a/code/datums/components/two_handed.dm +++ b/code/datums/components/two_handed.dm @@ -410,7 +410,7 @@ name = "offhand" icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE - flags = ABSTRACT | NODROP + flags = ABSTRACT | NODROP | SKIP_TRANSFORM_REEQUIP resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/wielded = FALSE // Off Hand tracking of wielded status diff --git a/code/modules/mob/living/carbon/human/human_mob.dm b/code/modules/mob/living/carbon/human/human_mob.dm index f1a6f746103..f5a81e128fe 100644 --- a/code/modules/mob/living/carbon/human/human_mob.dm +++ b/code/modules/mob/living/carbon/human/human_mob.dm @@ -1185,6 +1185,8 @@ for(var/thing in thing_to_check) var/obj/item/I = get_item_by_slot(thing) if(I) + if(I.flags & SKIP_TRANSFORM_REEQUIP) + continue kept_items[I] = thing item_flags[I] = I.flags I.flags = 0 // Temporary set the flags to 0