From 0f23e5592737b348ea4836205520302cb3b5e901 Mon Sep 17 00:00:00 2001 From: arsserpentarium <32496644+arsserpentarium@users.noreply.github.com> Date: Wed, 11 Apr 2018 12:23:09 +0200 Subject: [PATCH 1/2] Fix logic circuits runtime (#37044) * 1011101 fix fix fix xif xif xif 1011101 * Update logic.dm --- .../integrated_electronics/subtypes/logic.dm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/code/modules/integrated_electronics/subtypes/logic.dm b/code/modules/integrated_electronics/subtypes/logic.dm index 702ab588c5..7769dc8218 100644 --- a/code/modules/integrated_electronics/subtypes/logic.dm +++ b/code/modules/integrated_electronics/subtypes/logic.dm @@ -30,6 +30,9 @@ /obj/item/integrated_circuit/logic/binary/proc/do_compare(var/datum/integrated_io/A, var/datum/integrated_io/B) return FALSE +/obj/item/integrated_circuit/logic/binary/proc/comparable(var/datum/integrated_io/A, var/datum/integrated_io/B) + return (isnum(A.data) && isnum(B.data)) || (istext(A.data) && istext(B.data)) + /obj/item/integrated_circuit/logic/unary inputs = list("A") activators = list("compare" = IC_PINTYPE_PULSE_IN, "on compare" = IC_PINTYPE_PULSE_OUT) @@ -176,7 +179,8 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/logic/binary/less_than/do_compare(var/datum/integrated_io/A, var/datum/integrated_io/B) - return A.data < B.data + if(comparable(A, B)) + return A.data < B.data /obj/item/integrated_circuit/logic/binary/less_than_or_equal name = "less than or equal gate" @@ -185,7 +189,8 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/logic/binary/less_than_or_equal/do_compare(var/datum/integrated_io/A, var/datum/integrated_io/B) - return A.data <= B.data + if(comparable(A, B)) + return A.data <= B.data /obj/item/integrated_circuit/logic/binary/greater_than name = "greater than gate" @@ -194,7 +199,8 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/logic/binary/greater_than/do_compare(var/datum/integrated_io/A, var/datum/integrated_io/B) - return A.data > B.data + if(comparable(A, B)) + return A.data > B.data /obj/item/integrated_circuit/logic/binary/greater_than_or_equal name = "greater_than or equal gate" @@ -203,7 +209,8 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/logic/binary/greater_than_or_equal/do_compare(var/datum/integrated_io/A, var/datum/integrated_io/B) - return A.data >= B.data + if(comparable(A, B)) + return A.data >= B.data /obj/item/integrated_circuit/logic/unary/not name = "not gate"