diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm
index fcdb163ac79..f8dad2c4d36 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm
@@ -12,6 +12,7 @@
/datum/artifact_effect/cold/DoEffectTouch(var/mob/user)
if(holder)
+ user << "\blue A chill passes up your spine!"
var/datum/gas_mixture/env = holder.loc.return_air()
if(env)
env.temperature = max(env.temperature - rand(5,50), 0)
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm
index 2e57907b507..1244f802cc6 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm
@@ -41,7 +41,8 @@
/datum/artifact_effect/badfeeling/DoEffectAura()
if(holder)
- for (var/mob/living/carbon/human/H in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(prob(5))
if(prob(75))
H << "[pick(messages)]"
@@ -54,7 +55,8 @@
/datum/artifact_effect/badfeeling/DoEffectPulse()
if(holder)
- for (var/mob/living/carbon/human/H in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(prob(50))
if(prob(95))
H << "[pick(drastic_messages)]"
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm
index 5105628cfe3..d7ff967c2d0 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm
@@ -15,7 +15,8 @@
/datum/artifact_effect/cellcharge/DoEffectAura()
if(holder)
- for (var/obj/machinery/power/apc/C in range(200, holder))
+ var/turf/T = get_turf(holder)
+ for (var/obj/machinery/power/apc/C in range(200, T))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge += 25
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
@@ -28,7 +29,8 @@
/datum/artifact_effect/cellcharge/DoEffectPulse()
if(holder)
- for (var/obj/machinery/power/apc/C in range(200, holder))
+ var/turf/T = get_turf(holder)
+ for (var/obj/machinery/power/apc/C in range(200, T))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge += rand() * 100
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm
index 550b49b0686..8af61035d49 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm
@@ -17,7 +17,8 @@
/datum/artifact_effect/celldrain/DoEffectAura()
if(holder)
- for (var/obj/machinery/power/apc/C in range(200, holder))
+ var/turf/T = get_turf(holder)
+ for (var/obj/machinery/power/apc/C in range(200, T))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge = max(B.charge - 50,0)
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
@@ -30,7 +31,8 @@
/datum/artifact_effect/celldrain/DoEffectPulse()
if(holder)
- for (var/obj/machinery/power/apc/C in range(200, holder))
+ var/turf/T = get_turf(holder)
+ for (var/obj/machinery/power/apc/C in range(200, T))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge = max(B.charge - rand() * 150,0)
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm
index cff708b0c3d..b74ab88a9a1 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm
@@ -30,7 +30,8 @@
/datum/artifact_effect/dnaswitch/DoEffectAura()
if(holder)
- for(var/mob/living/carbon/human/H in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for(var/mob/living/carbon/human/H in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
if(prob(30))
@@ -48,7 +49,8 @@
/datum/artifact_effect/dnaswitch/DoEffectPulse()
if(holder)
- for(var/mob/living/carbon/human/H in range(200, holder))
+ var/turf/T = get_turf(holder)
+ for(var/mob/living/carbon/human/H in range(200, T))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
if(prob(75))
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_emp.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_emp.dm
index aeafa6387df..18165cf0d41 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_emp.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_emp.dm
@@ -9,5 +9,6 @@
/datum/artifact_effect/emp/DoEffectPulse()
if(holder)
- empulse(get_turf(holder), effectrange/2, effectrange)
+ var/turf/T = get_turf(holder)
+ empulse(T, effectrange/2, effectrange)
return 1
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm
index 752aa61ce06..bc45260b2cc 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm
@@ -39,7 +39,8 @@
/datum/artifact_effect/goodfeeling/DoEffectAura()
if(holder)
- for (var/mob/living/carbon/human/H in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(prob(5))
if(prob(75))
H << "[pick(messages)]"
@@ -52,7 +53,8 @@
/datum/artifact_effect/goodfeeling/DoEffectPulse()
if(holder)
- for (var/mob/living/carbon/human/H in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(prob(50))
if(prob(95))
H << "[pick(drastic_messages)]"
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm
index 8b927844244..d1d3937c972 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm
@@ -36,7 +36,8 @@
/datum/artifact_effect/heal/DoEffectAura()
//todo: check over this properly
if(holder)
- for (var/mob/living/carbon/C in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/C in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
if(prob(10))
@@ -51,7 +52,8 @@
/datum/artifact_effect/heal/DoEffectPulse()
//todo: check over this properly
if(holder)
- for (var/mob/living/carbon/C in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/C in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
C << "\blue A wave of energy invigorates you."
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm
index da59078a1b9..21304df4082 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm
@@ -15,6 +15,7 @@
/datum/artifact_effect/heat/DoEffectTouch(var/mob/user)
if(holder)
+ user << "\red You feel a wave of heat travel up your spine!"
var/datum/gas_mixture/env = holder.loc.return_air()
if(env)
env.temperature += rand(5,50)
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm
index 466c9565da8..b1a22b6bd11 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm
@@ -21,7 +21,8 @@
/datum/artifact_effect/hurt/DoEffectAura()
if(holder)
- for (var/mob/living/carbon/C in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/C in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
if(prob(10))
@@ -35,7 +36,8 @@
/datum/artifact_effect/hurt/DoEffectPulse()
if(holder)
- for (var/mob/living/carbon/C in range(effectrange, holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/C in range(effectrange, T))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
C << "\red A wave of painful energy strikes you!"
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_radiate.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_radiate.dm
index e6c49c96ce1..4310ffb2e71 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_radiate.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_radiate.dm
@@ -16,14 +16,16 @@
/datum/artifact_effect/radiate/DoEffectAura()
if(holder)
- for (var/mob/living/M in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/M in range(src.effectrange,T))
M.apply_effect(radiation_amount,IRRADIATE,0)
M.updatehealth()
return 1
/datum/artifact_effect/radiate/DoEffectPulse()
if(holder)
- for (var/mob/living/M in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/M in range(src.effectrange,T))
M.apply_effect(radiation_amount * 25,IRRADIATE,0)
M.updatehealth()
return 1
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm
index 8e154f0b66d..a1a89e42cf2 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm
@@ -17,7 +17,8 @@
/datum/artifact_effect/roboheal/DoEffectAura()
if(holder)
- for (var/mob/living/silicon/robot/M in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
if(prob(10))
M << "\blue SYSTEM ALERT: Beneficial energy field detected!"
M.adjustBruteLoss(-1)
@@ -27,7 +28,8 @@
/datum/artifact_effect/roboheal/DoEffectPulse()
if(holder)
- for (var/mob/living/silicon/robot/M in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!"
M.adjustBruteLoss(-10)
M.adjustFireLoss(-10)
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm
index b230efa33ec..bc55a76cef7 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm
@@ -17,7 +17,8 @@
/datum/artifact_effect/robohurt/DoEffectAura()
if(holder)
- for (var/mob/living/silicon/robot/M in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
if(prob(10)) M << "\red SYSTEM ALERT: Harmful energy field detected!"
M.adjustBruteLoss(1)
M.adjustFireLoss(1)
@@ -26,7 +27,8 @@
/datum/artifact_effect/robohurt/DoEffectPulse()
if(holder)
- for (var/mob/living/silicon/robot/M in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!"
M.adjustBruteLoss(10)
M.adjustFireLoss(10)
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm
index 1da02ceaa92..61979c5f69d 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm
@@ -22,7 +22,8 @@
/datum/artifact_effect/sleepy/DoEffectAura()
if(holder)
- for (var/mob/living/carbon/human/H in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/human/H in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
if(prob(10))
@@ -35,7 +36,8 @@
/datum/artifact_effect/sleepy/DoEffectPulse()
if(holder)
- for(var/mob/living/carbon/human/H in range(src.effectrange, holder))
+ var/turf/T = get_turf(holder)
+ for(var/mob/living/carbon/human/H in range(src.effectrange, T))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
H << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm
index b37862eb0c7..b7b2864de41 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm
@@ -9,33 +9,35 @@
/datum/artifact_effect/stun/DoEffectTouch(var/mob/toucher)
if(toucher && iscarbon(toucher))
var/mob/living/carbon/C = toucher
- var/weakness = GetAnomalySusceptibility(C)
- if(prob(weakness * 100))
+ var/susceptibility = GetAnomalySusceptibility(C)
+ if(prob(susceptibility * 100))
C << "\red A powerful force overwhelms your consciousness."
- C.weakened += 45 * weakness
- C.stuttering += 45 * weakness
- C.stunned += rand(1,10) * weakness
+ C.Weaken(rand(1,10) * susceptibility)
+ C.stuttering += 30 * susceptibility
+ C.Stun(rand(1,10) * susceptibility)
/datum/artifact_effect/stun/DoEffectAura()
if(holder)
- for (var/mob/living/carbon/C in range(src.effectrange,holder))
- var/weakness = GetAnomalySusceptibility(C)
- if(prob(10 * weakness))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/C in range(src.effectrange,T))
+ var/susceptibility = GetAnomalySusceptibility(C)
+ if(prob(10 * susceptibility))
C << "\red Your body goes numb for a moment."
- C.weakened += 2
+ C.Weaken(2)
C.stuttering += 2
if(prob(10))
- C.stunned += 1
+ C.Stun(1)
else if(prob(10))
C << "\red You feel numb."
/datum/artifact_effect/stun/DoEffectPulse()
if(holder)
- for (var/mob/living/carbon/C in range(src.effectrange,holder))
- var/weakness = GetAnomalySusceptibility(C)
- if(prob(100 * weakness))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/carbon/C in range(src.effectrange,T))
+ var/susceptibility = GetAnomalySusceptibility(C)
+ if(prob(100 * susceptibility))
C << "\red A wave of energy overwhelms your senses!"
- C.weakened += 4 * weakness
- C.stuttering += 4 * weakness
+ C.SetWeakened(4 * susceptibility)
+ C.stuttering = 4 * susceptibility
if(prob(10))
- C.stunned += 1 * weakness
+ C.SetStunned(1 * susceptibility)
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm
index e1580e20738..254be3f3d09 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm
@@ -6,60 +6,53 @@
/datum/artifact_effect/teleport/DoEffectTouch(var/mob/user)
var/weakness = GetAnomalySusceptibility(user)
if(prob(100 * weakness))
- var/list/randomturfs = new/list()
- for(var/turf/simulated/floor/T in orange(user, 50))
- randomturfs.Add(T)
- if(randomturfs.len > 0)
- user << "\red You are suddenly zapped away elsewhere!"
- if (user.buckled)
- user.buckled.unbuckle()
+ user << "\red You are suddenly zapped away elsewhere!"
+ if (user.buckled)
+ user.buckled.unbuckle()
- var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
- sparks.set_up(3, 0, get_turf(user))
- sparks.start()
- user.loc = pick(randomturfs)
- sparks = new /datum/effect/effect/system/spark_spread()
- sparks.set_up(3, 0, get_turf(user))
- sparks.start()
+ var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
+ sparks.set_up(3, 0, get_turf(user))
+ sparks.start()
+ //
+ user.loc = pick(orange(get_turf(holder), 50))
+ sparks = new /datum/effect/effect/system/spark_spread()
+ sparks.set_up(3, 0, get_turf(user))
+ sparks.start()
/datum/artifact_effect/teleport/DoEffectAura()
if(holder)
- for (var/mob/living/M in range(src.effectrange,holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/M in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(M)
if(prob(100 * weakness))
- var/list/randomturfs = new/list()
- for(var/turf/simulated/floor/T in orange(M, 30))
- randomturfs.Add(T)
- if(randomturfs.len > 0)
- M << "\red You are displaced by a strange force!"
- if(M.buckled)
- M.buckled.unbuckle()
+ M << "\red You are displaced by a strange force!"
+ if(M.buckled)
+ M.buckled.unbuckle()
- var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
- sparks.set_up(3, 0, get_turf(M))
- sparks.start()
- M.loc = pick(randomturfs)
- sparks = new /datum/effect/effect/system/spark_spread()
- sparks.set_up(3, 0, get_turf(M))
- sparks.start()
+ var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
+ sparks.set_up(3, 0, get_turf(M))
+ sparks.start()
+ //
+ M.loc = pick(orange(get_turf(T), 50))
+ sparks = new /datum/effect/effect/system/spark_spread()
+ sparks.set_up(3, 0, get_turf(M))
+ sparks.start()
/datum/artifact_effect/teleport/DoEffectPulse()
if(holder)
- for (var/mob/living/M in range(src.effectrange, holder))
+ var/turf/T = get_turf(holder)
+ for (var/mob/living/M in range(src.effectrange, T))
var/weakness = GetAnomalySusceptibility(M)
if(prob(100 * weakness))
- var/list/randomturfs = new/list()
- for(var/turf/simulated/floor/T in orange(M, 15))
- randomturfs.Add(T)
- if(randomturfs.len > 0)
- M << "\red You are displaced by a strange force!"
+ M << "\red You are displaced by a strange force!"
+ if(M.buckled)
+ M.buckled.unbuckle()
- var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
- sparks.set_up(3, 0, get_turf(M))
- sparks.start()
- if(M.buckled)
- M.buckled.unbuckle()
- M.loc = pick(randomturfs)
- sparks = new /datum/effect/effect/system/spark_spread()
- sparks.set_up(3, 0, get_turf(M))
- sparks.start()
+ var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
+ sparks.set_up(3, 0, get_turf(M))
+ sparks.start()
+ //
+ M.loc = pick(orange(get_turf(T), 50))
+ sparks = new /datum/effect/effect/system/spark_spread()
+ sparks.set_up(3, 0, get_turf(M))
+ sparks.start()
diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
index 117be557daf..501fabaa402 100644
--- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
+++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
@@ -12,6 +12,7 @@
var/obj/item/weapon/anobattery/inserted_battery
var/obj/machinery/artifact/cur_artifact
var/obj/machinery/artifact_scanpad/owned_scanner = null
+ var/last_process = 0
/obj/machinery/artifact_harvester/New()
..()
@@ -74,8 +75,9 @@
return
if(harvesting > 0)
- //gain a bit of charge
- inserted_battery.stored_charge += 0.5
+ //charge at 33% consumption rate
+ inserted_battery.stored_charge += (last_process - last_process) / 3
+ last_process = world.time
//check if we've finished
if(inserted_battery.stored_charge >= inserted_battery.capacity)
@@ -135,7 +137,7 @@
mundane++
break
- if(analysed.being_used)
+ if(analysed && analysed.being_used)
var/message = "[src] states, \"Cannot harvest. Too much interference.\""
src.visible_message(message)
else if(articount == 1 && !mundane)
@@ -162,6 +164,7 @@
icon_state = "incubator_on"
var/message = "[src] states, \"Beginning artifact energy harvesting.\""
src.visible_message(message)
+ last_process = world.time
//duplicate the artifact's effect datum
if(!inserted_battery.battery_effect)
diff --git a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
index 893f4efc60b..9bbd3420640 100644
--- a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
+++ b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "anobattery0"
var/datum/artifact_effect/battery_effect
- var/capacity = 200
+ var/capacity = 300
var/stored_charge = 0
var/effect_id = ""
@@ -20,13 +20,15 @@
name = "Anomaly power utilizer"
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "anodev"
- var/cooldown = 0
var/activated = 0
- var/timing = 0
- var/time = 50
- var/archived_time = 50
+ var/duration = 0
+ var/interval = 0
+ var/time_end = 0
+ var/last_activation = 0
+ var/last_process = 0
var/obj/item/weapon/anobattery/inserted_battery
var/turf/archived_loc
+ var/energy_consumed_on_touch = 100
/obj/item/weapon/anodevice/New()
..()
@@ -47,54 +49,35 @@
return src.interact(user)
/obj/item/weapon/anodevice/interact(var/mob/user)
- user.set_machine(src)
var/dat = "Anomalous Materials Energy Utiliser
"
if(inserted_battery)
- if(cooldown)
- dat += "Cooldown in progress, please wait.
"
- else if(activated)
- if(timing)
- dat += "Device active.
"
- else
- dat += "Device active in timed mode.
"
+ if(activated)
+ dat += "Device active.
"
dat += "[inserted_battery] inserted, anomaly ID: [inserted_battery.battery_effect.artifact_id ? inserted_battery.battery_effect.artifact_id : "NA"]
"
- dat += "Total Power: [inserted_battery.stored_charge]/[inserted_battery.capacity]
"
- dat += "Timed activation: -- - [time >= 1000 ? "[time/10]" : time >= 100 ? " [time/10]" : " [time/10]" ] + ++
"
- if(cooldown)
- dat += "Cooldown in progress.
"
- dat += "
"
- else if(!activated)
- dat += "Start
"
- dat += "Start in timed mode
"
+ dat += "Charge: [inserted_battery.stored_charge] / [inserted_battery.capacity]
"
+ dat += "Time left activated: [round(max((time_end - last_process) / 10, 0))]
"
+ if(activated)
+ dat += "Shutdown
"
else
- dat += "Shutdown emission
"
- dat += "
"
+ dat += "Start
"
+ dat += "
"
+
+ dat += "Activate duration (sec): -- - [duration/10] + ++
"
+ dat += "Activate interval (sec): -- - [interval/10] + ++
"
+ dat += "
"
dat += "Eject battery
"
else
dat += "Please insert battery
"
- dat += "
"
- dat += "
"
- dat += "
"
-
- dat += "
"
- dat += "
"
- dat += "
"
-
dat += "