diff --git a/code/modules/research/artifact_analysis.dm b/code/modules/research/artifact_analysis.dm
index 554a846cfec..16b4c0c1568 100644
--- a/code/modules/research/artifact_analysis.dm
+++ b/code/modules/research/artifact_analysis.dm
@@ -214,25 +214,31 @@
findarti++
cur_artifact = A
if (findarti == 1)
- cur_artifact.anchored = 1
- src.working = 1
- src.icon_state = "analyser_processing"
- var/time = rand(30,50) + max(0, 300 - scan_num * 10)
- /*for(var/i = artifact_research.starting_tier, i <= artifact_research.max_tiers, i++)
- for(var/datum/artiresearch/R in artifact_research.researched_items[i])
- if (R.bonustype == "analyser") time -= R.bonusTime*/
- time *= 10
- var/message = "[src] states, \"Commencing analysis.\""
- src.visible_message(message, message)
- spawn(time)
- src.working = 0
- icon_state = "analyser"
- cur_artifact.anchored = 0
- if(cur_artifact.loc == pad_turf)
- AA_Analyse()
- scan_num++
- message = "[src] states, \"Analysis complete.\""
- src.visible_message(message, message)
+ if(cur_artifact.being_used)
+ var/message = "[src] states, \"Cannot analyse. Excess energy drain is disrupting signal.\""
+ src.visible_message(message, message)
+ else
+ cur_artifact.anchored = 1
+ cur_artifact.being_used = 1
+ src.working = 1
+ src.icon_state = "analyser_processing"
+ var/time = rand(30,50) + max(0, 300 - scan_num * 10)
+ /*for(var/i = artifact_research.starting_tier, i <= artifact_research.max_tiers, i++)
+ for(var/datum/artiresearch/R in artifact_research.researched_items[i])
+ if (R.bonustype == "analyser") time -= R.bonusTime*/
+ time *= 10
+ var/message = "[src] states, \"Commencing analysis.\""
+ src.visible_message(message, message)
+ spawn(time)
+ src.working = 0
+ icon_state = "analyser"
+ cur_artifact.anchored = 0
+ cur_artifact.being_used = 0
+ if(cur_artifact.loc == pad_turf)
+ AA_Analyse()
+ scan_num++
+ message = "[src] states, \"Analysis complete.\""
+ src.visible_message(message, message)
else if (findarti > 1)
var/message = "[src] states, \"Cannot analyse. Too many artifacts on pad.\""
src.visible_message(message, message)
diff --git a/code/modules/research/artifact_harvester.dm b/code/modules/research/artifact_harvester.dm
index 595ea22f852..84839dfb768 100644
--- a/code/modules/research/artifact_harvester.dm
+++ b/code/modules/research/artifact_harvester.dm
@@ -43,6 +43,7 @@
inserted_battery.stored_charge = inserted_battery.capacity
harvesting = 0
cur_artifact.anchored = 0
+ cur_artifact.being_used = 0
src.visible_message("[name] states, \"Battery is full.\"")
icon_state = "incubator"
return
@@ -102,6 +103,9 @@
else if(!articount)
var/message = "[src] states, \"Cannot harvest. No artifact found.\""
src.visible_message(message, message)
+ else if (cur_artifact.being_used)
+ var/message = "[src] states, \"Cannot harvest. Too much interferance from energy scan.\""
+ src.visible_message(message, message)
else
cur_artifact = analysed
//check to see if the battery is compatible
@@ -109,6 +113,7 @@
if(inserted_battery.battery_effect.artifact_id == cur_artifact.my_effect.artifact_id || inserted_battery.stored_charge == 0)
harvesting = 1
cur_artifact.anchored = 1
+ cur_artifact.being_used = 1
icon_state = "incubator_on"
var/message = "[src] states, \"Beginning artifact energy harvesting.\""
src.visible_message(message, message)
@@ -125,6 +130,7 @@
if(harvesting)
harvesting = 0
cur_artifact.anchored = 0
+ cur_artifact.being_used = 0
src.visible_message("[name] states, \"Harvesting interrupted.\"")
icon_state = "incubator"
diff --git a/code/modules/research/artifacts.dm b/code/modules/research/artifacts.dm
index a043880dcca..d79222b3f21 100644
--- a/code/modules/research/artifacts.dm
+++ b/code/modules/research/artifacts.dm
@@ -15,6 +15,7 @@
var/recharge = 5 // How long does it take this artifact to recharge?
var/display_id = "" // Artifact ID to display once successfully scanned
var/datum/artifact_effect/my_effect = null
+ var/being_used = 0
/obj/machinery/artifact/New()
..()