From 561eb99561dcadeac189211994359ca293293a54 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 16 Jul 2014 13:20:47 +0400 Subject: [PATCH 1/6] Fixes #5647 Fixes #5646 --- .../xenoarchaeology/tools/ano_device_battery.dm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm index 3886f6fec0..89226554f0 100644 --- a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm +++ b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm @@ -16,6 +16,9 @@ p = min(p, 100) icon_state = "anobattery[round(p,25)]" +/obj/item/weapon/anobattery/proc/use_power(var/amount) + stored_charge = max(0, stored_charge - amount) + /obj/item/weapon/anodevice name = "Anomaly power utilizer" icon = 'icons/obj/xenoarchaeology.dmi' @@ -106,20 +109,20 @@ inserted_battery.battery_effect.DoEffectTouch(holder) //consume power - inserted_battery.stored_charge -= energy_consumed_on_touch + inserted_battery.use_power(energy_consumed_on_touch) else //consume power equal to time passed - inserted_battery.stored_charge -= world.time - last_process + inserted_battery.use_power(world.time - last_process) else if(inserted_battery.battery_effect.effect == EFFECT_PULSE) inserted_battery.battery_effect.chargelevel = inserted_battery.battery_effect.chargelevelmax //consume power relative to the time the artifact takes to charge and the effect range - inserted_battery.stored_charge -= inserted_battery.battery_effect.effectrange * inserted_battery.battery_effect.effectrange * inserted_battery.battery_effect.chargelevelmax + inserted_battery.use_power(inserted_battery.battery_effect.effectrange * inserted_battery.battery_effect.effectrange * inserted_battery.battery_effect.chargelevelmax) else //consume power equal to time passed - inserted_battery.stored_charge -= world.time - last_process + inserted_battery.use_power(world.time - last_process) last_activation = world.time @@ -196,7 +199,7 @@ if(activated && inserted_battery.battery_effect.effect == EFFECT_TOUCH && !isnull(inserted_battery)) inserted_battery.battery_effect.DoEffectTouch(M) - inserted_battery.stored_charge -= energy_consumed_on_touch + inserted_battery.use_power(energy_consumed_on_touch) user.visible_message("\blue [user] taps [M] with [src], and it shudders on contact.") else user.visible_message("\blue [user] taps [M] with [src], but nothing happens.") From d1687dc50ec3661aef5ba06f5e841bb9a0cba695 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 16 Jul 2014 13:39:56 +0400 Subject: [PATCH 2/6] Fixes #5648 Now scanner will just give warning if clicked too fast, instead of giving obsolete data. Also moved code from New() to initalize(), since it depends on all things already being there and a master controller existing. --- .../xenoarchaeology/tools/tools_anoscanner.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm index 257c7389cc..acc6d56a73 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm @@ -13,22 +13,23 @@ var/last_scan_time = 0 var/scan_delay = 25 -/obj/item/device/ano_scanner/New() - ..() - spawn(0) - scan() +/obj/item/device/ano_scanner/initialize() + scan() /obj/item/device/ano_scanner/attack_self(var/mob/user as mob) return src.interact(user) /obj/item/device/ano_scanner/interact(var/mob/user as mob) var/message = "Background radiation levels detected." - if(nearest_artifact_distance >= 0) - message = "Exotic energy detected on wavelength '[nearest_artifact_id]' in a radius of [nearest_artifact_distance]m" - user << "[message]" if(world.time - last_scan_time >= scan_delay) spawn(0) scan() + if(nearest_artifact_distance >= 0) + message = "Exotic energy detected on wavelength '[nearest_artifact_id]' in a radius of [nearest_artifact_distance]m" + else + message = "Scanning array is recharging." + + user << "[message]" /obj/item/device/ano_scanner/proc/scan() set background = 1 From 5018330a5a71569caf3da362306f1c4bb5feeeed Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 16 Jul 2014 14:37:12 +0400 Subject: [PATCH 3/6] Fixes #5650 Fixes #5649 Removed that mundane objects check as I couldn't think of why would that even be a thing. --- .../machinery/artifact_harvester.dm | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm index 495d393766..80abfd7b0f 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm @@ -129,6 +129,7 @@ var/articount = 0 var/obj/machinery/artifact/analysed for(var/obj/machinery/artifact/A in get_turf(owned_scanner)) + testing("Found an artifact - [A]") analysed = A articount++ @@ -140,27 +141,13 @@ src.visible_message("[src] states, \"Cannot harvest. Source already being harvested.\"") else - var/mundane = 0 - for(var/obj/O in get_turf(owned_scanner)) - if(O.invisibility) - continue - if(!istype(O, /obj/machinery/artifact) && !istype(O, /obj/machinery/artifact_scanpad)) - mundane++ - break - for(var/mob/O in get_turf(owned_scanner)) - if(O.invisibility) - continue - mundane++ - break - - if(articount > 1 || mundane) - var/message = "[src] states, \"Cannot harvest. Too many artifacts on the pad.\"" - src.visible_message(message) - else + if(articount > 1) + state("Cannot harvest. Too many artifacts on the pad.") + else if(analyzed) cur_artifact = analysed //if both effects are active, we can't harvest either - if(cur_artifact.my_effect.activated && cur_artifact.secondary_effect.activated) + if(cur_artifact.my_effect && cur_artifact.my_effect.activated && cur_artifact.secondary_effect.activated) src.visible_message("[src] states, \"Cannot harvest. Source is emitting conflicting energy signatures.\"") else if(!cur_artifact.my_effect.activated && !cur_artifact.secondary_effect.activated) src.visible_message("[src] states, \"Cannot harvest. No energy emitting from source.\"") From 61f87139412c9c5826cdd4b8010f093019491e01 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 16 Jul 2014 14:48:39 +0400 Subject: [PATCH 4/6] Possible fix for #5645 I think issue is that harvester won't forget what artifact it is using until harvesting process is started. --- .../research/xenoarchaeology/machinery/artifact_harvester.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm index 80abfd7b0f..776d91751c 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm @@ -85,6 +85,7 @@ harvesting = 0 cur_artifact.anchored = 0 cur_artifact.being_used = 0 + cur_artifact = null src.visible_message("[name] states, \"Battery is full.\"") icon_state = "incubator" @@ -129,7 +130,6 @@ var/articount = 0 var/obj/machinery/artifact/analysed for(var/obj/machinery/artifact/A in get_turf(owned_scanner)) - testing("Found an artifact - [A]") analysed = A articount++ @@ -143,7 +143,7 @@ else if(articount > 1) state("Cannot harvest. Too many artifacts on the pad.") - else if(analyzed) + else if(analysed) cur_artifact = analysed //if both effects are active, we can't harvest either @@ -220,6 +220,7 @@ harvesting = 0 cur_artifact.anchored = 0 cur_artifact.being_used = 0 + cur_artifact = null src.visible_message("[name] states, \"Energy harvesting interrupted.\"") icon_state = "incubator" From 9d3a87115ab7e4b5578cd318c4374efb946333c1 Mon Sep 17 00:00:00 2001 From: Walter0o Date: Wed, 16 Jul 2014 15:13:13 +0200 Subject: [PATCH 5/6] missing power check people could still use this without any charge --- .../research/xenoarchaeology/tools/ano_device_battery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm index 89226554f0..6c62263a07 100644 --- a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm +++ b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm @@ -81,7 +81,7 @@ /obj/item/weapon/anodevice/process() if(activated) - if(inserted_battery && inserted_battery.battery_effect) + if(inserted_battery && inserted_battery.battery_effect && (inserted_battery.stored_charge > 0) ) //make sure the effect is active if(!inserted_battery.battery_effect.activated) inserted_battery.battery_effect.ToggleActivate(1) From 8baf6e46611088b43ac195d6a2407ecb062f5d49 Mon Sep 17 00:00:00 2001 From: Walter0o Date: Wed, 16 Jul 2014 15:20:23 +0200 Subject: [PATCH 6/6] another missing battery check --- .../xenoarchaeology/tools/ano_device_battery.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm index 6c62263a07..c189273bd5 100644 --- a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm +++ b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm @@ -162,11 +162,12 @@ //max 10 sec interval interval = min(max(interval, 0), 100) if(href_list["startup"]) - activated = 1 - src.visible_message("\blue \icon[src] [src] whirrs.", "\icon[src]\blue You hear something whirr.") - if(!inserted_battery.battery_effect.activated) - inserted_battery.battery_effect.ToggleActivate(1) - time_end = world.time + duration + if(inserted_battery && inserted_battery.battery_effect && (inserted_battery.stored_charge > 0) ) + activated = 1 + src.visible_message("\blue \icon[src] [src] whirrs.", "\icon[src]\blue You hear something whirr.") + if(!inserted_battery.battery_effect.activated) + inserted_battery.battery_effect.ToggleActivate(1) + time_end = world.time + duration if(href_list["shutdown"]) activated = 0 if(href_list["ejectbattery"])