diff --git a/code/__HELPERS/radio.dm b/code/__HELPERS/radio.dm
index 84b354b6cd..c55fb8095d 100644
--- a/code/__HELPERS/radio.dm
+++ b/code/__HELPERS/radio.dm
@@ -12,3 +12,8 @@
/proc/format_frequency(frequency)
frequency = text2num(frequency)
return "[round(frequency / 10)].[frequency % 10]"
+
+//Opposite of format, returns as a number
+/proc/unformat_frequency(frequency)
+ frequency = text2num(frequency)
+ return frequency * 10
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 8959029b9b..8ba703d7fa 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -58,18 +58,12 @@
Send Signal
Frequency/Code for signaler:
Frequency:
--
--
[format_frequency(src.frequency)]
-+
-+
+Set
Code:
--
--
[src.code]
-+
-+
+Set
[t1]
"}
user << browse(dat, "window=radio")
@@ -85,17 +79,23 @@ Code:
onclose(usr, "radio")
return
- if (href_list["freq"])
- var/new_frequency = (frequency + text2num(href_list["freq"]))
- if(new_frequency < MIN_FREE_FREQ || new_frequency > MAX_FREE_FREQ)
- new_frequency = sanitize_frequency(new_frequency)
- set_frequency(new_frequency)
+ if (href_list["set"])
- if(href_list["code"])
- src.code += text2num(href_list["code"])
- src.code = round(src.code)
- src.code = min(100, src.code)
- src.code = max(1, src.code)
+ if(href_list["set"] == "freq")
+ var/new_freq = input(usr, "Input a new signalling frequency", "Remote Signaller Frequency", format_frequency(frequency)) as num|null
+ if(!usr.canUseTopic(src, BE_CLOSE))
+ return
+ new_freq = unformat_frequency(new_freq)
+ new_freq = sanitize_frequency(new_freq, TRUE)
+ set_frequency(new_freq)
+
+ if(href_list["set"] == "code")
+ var/new_code = input(usr, "Input a new signalling code", "Remote Signaller Code", code) as num|null
+ if(!usr.canUseTopic(src, BE_CLOSE))
+ return
+ new_code = round(new_code)
+ new_code = CLAMP(new_code, 1, 100)
+ code = new_code
if(href_list["send"])
spawn( 0 )
@@ -206,4 +206,4 @@ Code:
/obj/item/assembly/signaler/cyborg/attackby(obj/item/W, mob/user, params)
return
/obj/item/assembly/signaler/cyborg/screwdriver_act(mob/living/user, obj/item/I)
- return
+ return
\ No newline at end of file