diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index ea8237e679d..afda9ad877b 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -165,6 +165,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_NAIVE "naive"
#define TRAIT_PRIMITIVE "primitive"
#define TRAIT_GUNFLIP "gunflip"
+#define TRAIT_BLOODCRAWL_EAT "bloodcrawl_eat"
//non-mob traits
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm
index 1b38a810f7b..c486bb96bf5 100644
--- a/code/_globalvars/traits.dm
+++ b/code/_globalvars/traits.dm
@@ -99,7 +99,8 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE,
"TRAIT_NAIVE" = TRAIT_NAIVE,
"TRAIT_PRIMITIVE" = TRAIT_PRIMITIVE, //unable to use mechs. Given to Ash Walkers
- "TRAIT_GUNFLIP" = TRAIT_GUNFLIP
+ "TRAIT_GUNFLIP" = TRAIT_GUNFLIP,
+ "TRAIT_BLOODCRAWL_EAT" = TRAIT_BLOODCRAWL_EAT,
),
/obj/item/bodypart = list(
"TRAIT_PARALYSIS" = TRAIT_PARALYSIS
diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm
index 7f1d8b4f77f..8ca84d0775a 100644
--- a/code/modules/antagonists/devil/imp/imp.dm
+++ b/code/modules/antagonists/devil/imp/imp.dm
@@ -41,7 +41,6 @@
deathmessage = "screams in agony as it sublimates into a sulfurous smoke."
deathsound = 'sound/magic/demon_dies.ogg'
var/boost = 0
- bloodcrawl = BLOODCRAWL_EAT
var/list/consumed_mobs = list()
var/playstyle_string = "You are an imp, a mischievous creature from hell. You are the lowest rank on the hellish totem pole \
Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \
@@ -49,6 +48,7 @@
/mob/living/simple_animal/imp/Initialize()
. = ..()
+ ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate")
set_varspeed(1)
addtimer(CALLBACK(src, /mob/living/simple_animal/proc/set_varspeed, 0), 30)
diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm
index 8cb12cb897a..1cd3053eb2f 100644
--- a/code/modules/antagonists/slaughter/slaughter.dm
+++ b/code/modules/antagonists/slaughter/slaughter.dm
@@ -38,7 +38,6 @@
melee_damage_upper = 30
see_in_dark = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
- bloodcrawl = BLOODCRAWL_EAT
var/playstyle_string = "You are a slaughter demon, a terrible creature from another realm. You have a single desire: To kill. \
You may use the \"Blood Crawl\" ability near blood pools to travel through them, appearing and disappearing from the station at will. \
Pulling a dead or unconscious mob while you enter a pool will pull them in with you, allowing you to feast and regain your health. \
@@ -52,6 +51,7 @@
/mob/living/simple_animal/slaughter/Initialize()
..()
+ ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate")
var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new
AddSpell(bloodspell)
if(istype(loc, /obj/effect/dummy/phased_mob/slaughter))
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index 7df2586ec45..75ee9c53c25 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -60,7 +60,7 @@
forceMove(holder)
// if we're not pulling anyone, or we can't eat anyone
- if(!pullee || bloodcrawl != BLOODCRAWL_EAT)
+ if(!pullee || !HAS_TRAIT(src, TRAIT_BLOODCRAWL_EAT))
notransform = FALSE
return
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 22ec966267b..14b4427433d 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -59,10 +59,9 @@
var/on_fire = 0 ///The "Are we on fire?" var
var/fire_stacks = 0 ///Tracks how many stacks of fire we have on, max is usually 20
- var/bloodcrawl = 0 ///0 No blood crawling, [BLOODCRAWL] for bloodcrawling, [BLOODCRAWL_EAT] for crawling+mob devour
- var/holder = null ///The holder for blood crawling
- var/ventcrawler = 0 ///0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always
- var/limb_destroyer = 0 ///1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack.
+ var/holder = null //The holder for blood crawling
+ var/ventcrawler = 0 //0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always
+ var/limb_destroyer = 0 //1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack.
var/mob_size = MOB_SIZE_HUMAN
var/mob_biotypes = MOB_ORGANIC
@@ -128,10 +127,10 @@
var/list/ownedSoullinks //soullinks we are the owner of
var/list/sharedSoullinks //soullinks we are a/the sharer of
-
+
/// List of changes to body temperature, used by desease symtoms like fever
var/list/body_temp_changes = list()
-
+
//this stuff is here to make it simple for admins to mess with custom held sprites
var/icon/held_lh = 'icons/mob/pets_held_lh.dmi'//icons for holding mobs
var/icon/held_rh = 'icons/mob/pets_held_rh.dmi'