diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm
index 802bd738e9..39107d8e65 100644
--- a/code/modules/mob/living/simple_animal/shade.dm
+++ b/code/modules/mob/living/simple_animal/shade.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
/mob/living/simple_animal/shade
name = "Shade"
real_name = "Shade"
@@ -64,3 +65,71 @@
SS.transfer_soul("SHADE", src, user)
else
..()
+=======
+/mob/living/simple_animal/shade
+ name = "Shade"
+ real_name = "Shade"
+ desc = "A bound spirit"
+ gender = PLURAL
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "shade"
+ icon_living = "shade"
+ maxHealth = 50
+ health = 50
+ healable = 0
+ speak_emote = list("hisses")
+ emote_hear = list("wails.","screeches.")
+ response_help = "puts their hand through"
+ response_disarm = "flails at"
+ response_harm = "punches"
+ speak_chance = 1
+ melee_damage_lower = 5
+ melee_damage_upper = 15
+ attacktext = "metaphysically strikes"
+ minbodytemp = 0
+ maxbodytemp = INFINITY
+ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
+ speed = -1
+ stop_automated_movement = 1
+ status_flags = 0
+ faction = list("cult")
+ status_flags = CANPUSH
+ movement_type = FLYING
+ loot = list(/obj/item/ectoplasm)
+ del_on_death = TRUE
+ initial_language_holder = /datum/language_holder/construct
+
+/mob/living/simple_animal/shade/death()
+ deathmessage = "lets out a contented sigh as [p_their()] form unwinds."
+ ..()
+
+/mob/living/simple_animal/shade/canSuicide()
+ if(istype(loc, /obj/item/device/soulstone)) //do not suicide inside the soulstone
+ return 0
+ return ..()
+
+/mob/living/simple_animal/shade/Process_Spacemove(movement_dir = 0)
+ return TRUE //this doesn't make much sense; you'd thing TRUE would mean it'd process spacemove but it means it doesn't
+
+/mob/living/simple_animal/shade/attack_animal(mob/living/simple_animal/M)
+ if(isconstruct(M))
+ var/mob/living/simple_animal/hostile/construct/C = M
+ if(!C.can_repair_constructs)
+ return
+ if(health < maxHealth)
+ adjustHealth(-25)
+ Beam(M,icon_state="sendbeam",time=4)
+ M.visible_message("[M] heals \the [src].", \
+ "You heal [src], leaving [src] at [health]/[maxHealth] health.")
+ else
+ to_chat(M, "You cannot heal [src], as [p_they()] [p_are()] unharmed!")
+ else if(src != M)
+ return ..()
+
+/mob/living/simple_animal/shade/attackby(obj/item/O, mob/user, params) //Marker -Agouri
+ if(istype(O, /obj/item/device/soulstone))
+ var/obj/item/device/soulstone/SS = O
+ SS.transfer_soul("SHADE", src, user)
+ else
+ . = ..()
+>>>>>>> 2ddc4aa... Merge pull request #31085 from AnturK/shadefix