diff --git a/code/modules/xenoarcheaology/effects/cellcharge.dm b/code/modules/xenoarcheaology/effects/cellcharge.dm
index d543ac2411a..a7561478a4e 100644
--- a/code/modules/xenoarcheaology/effects/cellcharge.dm
+++ b/code/modules/xenoarcheaology/effects/cellcharge.dm
@@ -4,6 +4,7 @@
effect_color = "#ffee06"
var/last_message
+<<<<<<< HEAD
/datum/artifact_effect/cellcharge/DoEffectTouch(var/mob/living/user)
if(user)
@@ -15,12 +16,16 @@
/datum/artifact_effect/cellcharge/DoEffectAura()
+=======
+/datum/artifact_effect/uncommon/cellcharge/proc/charge_cells(var/amount = 25)
+>>>>>>> 318bc4daa5b... Fix various anomaly bugs and oversights. (#8941)
var/atom/holder = get_master_holder()
if(!holder)
return
var/turf/turf = get_turf(holder)
if(!turf)
return
+<<<<<<< HEAD
for (var/obj/machinery/power/apc/apc as anything in GLOB.apcs)
if(get_dist(turf, apc) <= 200)
for (var/obj/item/weapon/cell/cell in apc.contents)
@@ -39,9 +44,38 @@
to_chat(robot, "SYSTEM ALERT: Energy boost detected!")
charged_robots = TRUE
if(charged_robots)
+=======
+
+ var/messaged_robots
+ for(var/atom/movable/AM in range(effectrange, turf))
+ if(isliving(AM))
+ var/mob/living/L = AM
+ var/obj/item/cell/C = L.get_cell()
+
+ if(C)
+ if(issilicon(L) && ((last_message + (1 MINUTE)) < world.time))
+ messaged_robots = TRUE
+ to_chat(L, SPAN_NOTICE("SYSTEM ALERT: Energy boost detected!"))
+ C.charge = min(C.maxcharge, C.charge + amount)
+ continue
+
+ var/obj/item/cell/C = AM.get_cell()
+ if(C)
+ C.charge = min(C.maxcharge, C.charge + amount)
+
+ if(messaged_robots)
+>>>>>>> 318bc4daa5b... Fix various anomaly bugs and oversights. (#8941)
last_message = world.time
+/datum/artifact_effect/uncommon/cellcharge/DoEffectTouch(mob/living/user)
+ if(!user)
+ return
+ charge_cells(100)
+/datum/artifact_effect/uncommon/cellcharge/DoEffectAura()
+ charge_cells()
+
+<<<<<<< HEAD
/datum/artifact_effect/cellcharge/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
@@ -57,3 +91,7 @@
if(world.time - last_message > 200)
to_chat(M, "SYSTEM ALERT: Energy boost detected!")
last_message = world.time
+=======
+/datum/artifact_effect/uncommon/cellcharge/DoEffectPulse()
+ charge_cells(50)
+>>>>>>> 318bc4daa5b... Fix various anomaly bugs and oversights. (#8941)
diff --git a/code/modules/xenoarcheaology/effects/celldrain.dm b/code/modules/xenoarcheaology/effects/celldrain.dm
index c8a270c0595..b57b7f3b17b 100644
--- a/code/modules/xenoarcheaology/effects/celldrain.dm
+++ b/code/modules/xenoarcheaology/effects/celldrain.dm
@@ -4,6 +4,7 @@
effect_type = EFFECT_ELECTRO
var/last_message
+<<<<<<< HEAD
effect_state = "pulsing"
effect_color = "#fbff02"
@@ -75,3 +76,43 @@
to_chat(M, "SYSTEM ALERT: Energy drain detected!")
last_message = world.time
return 1
+=======
+/datum/artifact_effect/uncommon/celldrain/proc/drain_cells(var/amount = 25)
+ var/atom/holder = get_master_holder()
+ if (!holder)
+ return
+ var/turf/turf = get_turf(holder)
+ if (!turf)
+ return
+
+ var/messaged_robots
+ for(var/atom/movable/AM in range(effectrange, turf))
+ if(isliving(AM))
+ var/mob/living/L = AM
+ var/obj/item/cell/C = L.get_cell()
+
+ if(C)
+ if(issilicon(L) && ((last_message + (1 MINUTE)) < world.time))
+ messaged_robots = TRUE
+ to_chat(L, SPAN_WARNING("SYSTEM ALERT: Energy drain detected!"))
+ C.charge = min(C.maxcharge, C.charge - amount)
+ continue
+
+ var/obj/item/cell/C = AM.get_cell()
+ if(C)
+ C.charge = min(C.maxcharge, C.charge - amount)
+
+ if(messaged_robots)
+ last_message = world.time
+
+/datum/artifact_effect/uncommon/celldrain/DoEffectTouch(mob/living/user)
+ if(!user)
+ return
+ drain_cells(100)
+
+/datum/artifact_effect/uncommon/celldrain/DoEffectAura()
+ drain_cells()
+
+/datum/artifact_effect/uncommon/celldrain/DoEffectPulse()
+ drain_cells(50)
+>>>>>>> 318bc4daa5b... Fix various anomaly bugs and oversights. (#8941)
diff --git a/code/modules/xenoarcheaology/effects/robohurt.dm b/code/modules/xenoarcheaology/effects/robohurt.dm
index 8b93e04ead4..6f7c6ab811a 100644
--- a/code/modules/xenoarcheaology/effects/robohurt.dm
+++ b/code/modules/xenoarcheaology/effects/robohurt.dm
@@ -8,8 +8,14 @@
..()
effect_type = pick(EFFECT_ELECTRO, EFFECT_PARTICLE)
+<<<<<<< HEAD
/datum/artifact_effect/robohurt/DoEffectTouch(var/mob/user)
if(user)
+=======
+
+/datum/artifact_effect/uncommon/robohurt/DoEffectTouch(mob/living/user)
+ if (user)
+>>>>>>> 318bc4daa5b... Fix various anomaly bugs and oversights. (#8941)
if (istype(user, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = user
to_chat(R, "Your systems report severe damage has been inflicted!")
diff --git a/code/modules/xenoarcheaology/effects/sleepy.dm b/code/modules/xenoarcheaology/effects/sleepy.dm
index 244814a1da7..6426296057a 100644
--- a/code/modules/xenoarcheaology/effects/sleepy.dm
+++ b/code/modules/xenoarcheaology/effects/sleepy.dm
@@ -3,7 +3,12 @@
name = "sleepy"
effect_color = "#a36fa1"
+<<<<<<< HEAD
/datum/artifact_effect/sleepy/New()
+=======
+
+/datum/artifact_effect/uncommon/sleepy/New()
+>>>>>>> 318bc4daa5b... Fix various anomaly bugs and oversights. (#8941)
..()
effect_type = pick(EFFECT_PSIONIC, EFFECT_ORGANIC)
diff --git a/code/modules/xenoarcheaology/effects/sweating_reagents.dm b/code/modules/xenoarcheaology/effects/sweating_reagents.dm
new file mode 100644
index 00000000000..a87afb0d30b
--- /dev/null
+++ b/code/modules/xenoarcheaology/effects/sweating_reagents.dm
@@ -0,0 +1,72 @@
+/datum/artifact_effect/common/sweating
+ name = "sweating"
+ var/list/reagents = list()
+ effect_type = EFFECT_ORGANIC
+ effect_state = "oozes"
+
+
+/datum/artifact_effect/common/sweating/New(datum/component/artifact_master/newmaster)
+ reagents += list(list(pick(SSchemistry.chemical_reagents), 0.4, list()))
+ if(prob(33))
+ reagents += list(list("blood",
+ 0.6,
+ list("blood_colour" = rgb(rand(1,255),rand(1,255),rand(1,255)))))
+
+ // Sample the color of the combined reagents
+ var/datum/reagents/R = new(120)
+ for(var/list/chem in reagents)
+ R.add_reagent(chem[1], chem[2], chem[3])
+ effect_color = R.get_color()
+ qdel(R)
+
+ ..()
+ effect = EFFECT_TOUCH
+
+
+/datum/artifact_effect/common/sweating/proc/disgorge(var/turf/T, var/min_chargelevel = 0.25)
+ if(chargelevel < chargelevelmax * min_chargelevel)
+ return
+ spawn()
+ var/obj/effect/vfx/water/splash = new(T)
+ splash.create_reagents(15)
+ splash.reagents.add_reagent("blood", 10, list("blood_colour" = effect_color))
+ splash.set_color()
+
+ splash.set_up(T, 2, 3)
+
+ var/obj/effect/decal/cleanable/chemcoating/blood = locate() in T
+ if(!istype(blood))
+ blood = new(T)
+ for(var/list/chem in reagents)
+ blood.reagents.add_reagent(chem[1], chem[2] * chargelevel, LAZYLEN(chem) > 2 ? chem[3] : null)
+ blood.update_icon()
+ chargelevel = round(0.8 * chargelevel)
+
+
+// Leave a trail of "disgusting ooze"
+/datum/artifact_effect/common/sweating/UpdateMove(var/turf/old_loc)
+ disgorge(old_loc)
+
+
+/datum/artifact_effect/common/sweating/DoEffectTouch(mob/living/carbon/human/user)
+ if(ishuman(user))
+ user.bloody_hands()
+ if(chargelevel >= 40 && prob(20))
+ user.visible_message(
+ "\The [get_master_holder()] shudders at \the [user]'s touch, before spraying a disgusting ooze everywhere.",
+ "\The [get_master_holder()] shudders at your touch, before spraying a disgusting ooze all over you!",
+ "A spray of liquid is followed by a fleshy slop hitting the ground.")
+ if(ishuman(user))
+ user.bloody_body()
+ disgorge(get_turf(user), 0)
+
+
+/datum/artifact_effect/common/sweating/attackby(mob/living/user, obj/item/I)
+ if(I.is_open_container())
+ to_chat(user, "You hold \the [I] against \the [get_master_holder()], and a disgusting pus dribbles into \the [I].")
+ for(var/list/chem in reagents)
+ I.reagents.add_reagent(chem[0], chem[1] * chargelevel, LAZYLEN(chem) > 2 ? chem[2] : null)
+ return TRUE
+ else
+ I.add_blood(src)
+ return FALSE