diff --git a/code/modules/integrated_electronics/subtypes/logic.dm b/code/modules/integrated_electronics/subtypes/logic.dm index 5ca10106c6..41917f2a44 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" = IC_PINTYPE_ANY) 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"