diff --git a/baystation12.dme b/baystation12.dme
index 49e1fe9bcb4..bae35c729bc 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -140,7 +140,6 @@
#include "code\controllers\Processes\turf.dm"
#include "code\controllers\Processes\vote.dm"
#include "code\controllers\Processes\wireless.dm"
-#include "code\controllers\ProcessScheduler\core\_define.dm"
#include "code\controllers\ProcessScheduler\core\_stubs.dm"
#include "code\controllers\ProcessScheduler\core\process.dm"
#include "code\controllers\ProcessScheduler\core\processScheduler.dm"
diff --git a/code/controllers/Processes/wireless.dm b/code/controllers/Processes/wireless.dm
index 9db8cb9b550..cc3338a198f 100644
--- a/code/controllers/Processes/wireless.dm
+++ b/code/controllers/Processes/wireless.dm
@@ -46,4 +46,4 @@ var/datum/controller/process/wireless/wirelessProcess
input_queue -= C
if(!target_found)
output_queue += C
- scheck()
+ SCHECK
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 63af5844e70..381d2768bc5 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -9,19 +9,19 @@
use_power = 1
idle_power_usage = 2
active_power_usage = 4
-
var/_wifi_id
+ var/_wifi_toggle = 0
var/datum/wifi/sender/button/wifi_sender
/obj/machinery/button/initialize()
..()
+ update_icon()
if(_wifi_id)
- wifi_sender = new(_wifi_id)
+ wifi_sender = new(_wifi_id, src)
/obj/machinery/button/Destroy()
- if(wifi_sender)
- qdel(wifi_sender)
- wifi_sender = null
+ qdel(wifi_sender)
+ wifi_sender = null
return..()
/obj/machinery/button/attack_ai(mob/user as mob)
@@ -31,5 +31,37 @@
/obj/machinery/button/attack_hand(mob/living/user)
..()
- if(wifi_sender)
+
+ if(!wifi_sender)
+ return
+
+ use_power(5)
+
+ if(_wifi_toggle)
+ active = !active
+ if(active)
+ wifi_sender.activate(user)
+ else
+ wifi_sender.deactivate(user)
+ update_icon()
+ else
+ active = 1
+ update_icon()
wifi_sender.activate(user)
+ sleep(10)
+ active = 0
+ update_icon()
+
+/obj/machinery/button/update_icon()
+ if(active)
+ icon_state = "launcheract"
+ else
+ icon_state = "launcherbtt"
+
+/obj/machinery/button/toggle
+ icon = 'icons/obj/power.dmi'
+ icon_state = "light0"
+ _wifi_toggle = 1
+
+/obj/machinery/button/toggle/update_icon()
+ icon_state = "light[active]"
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index e6fb41193cb..bea0c443a74 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -15,6 +15,8 @@
use_power = 1
idle_power_usage = 2
flags = PROXMOVE
+ var/_wifi_id
+ var/datum/wifi/receiver/button/flasher/wifi_receiver
/obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored
name = "portable flasher"
@@ -25,6 +27,16 @@
base_state = "pflash"
density = 1
+/obj/machinery/flasher/initialize()
+ ..()
+ if(_wifi_id)
+ wifi_receiver = new(_wifi_id, src)
+
+/obj/machinery/flasher/Destroy()
+ qdel(wifi_receiver)
+ wifi_receiver = null
+ return ..()
+
/obj/machinery/flasher/power_change()
..()
if ( !(stat & NOPOWER) )
diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm
index 63198710227..69f12726342 100644
--- a/code/game/machinery/holosign.dm
+++ b/code/game/machinery/holosign.dm
@@ -12,6 +12,18 @@
var/lit = 0
var/id = null
var/on_icon = "sign_on"
+ var/_wifi_id
+ var/datum/wifi/receiver/button/holosign/wifi_receiver
+
+/obj/machinery/holosign/initialize()
+ ..()
+ if(_wifi_id)
+ wifi_receiver = new(_wifi_id, src)
+
+/obj/machinery/holosign/Destroy()
+ qdel(wifi_receiver)
+ wifi_receiver = null
+ return ..()
/obj/machinery/holosign/proc/toggle()
if (stat & (BROKEN|NOPOWER))
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 98d4b928a42..8a9e29a0da2 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -186,7 +186,6 @@
var/cremating = 0
var/id = 1
var/locked = 0
-
var/_wifi_id
var/datum/wifi/receiver/button/crematorium/wifi_receiver
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 3a8441f0188..084f9ef55f2 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -49,9 +49,8 @@
message_admins("Emitter deleted at ([x],[y],[z] - JMP)",0,1)
log_game("Emitter deleted at ([x],[y],[z])")
investigate_log("deleted at ([x],[y],[z])","singulo")
- if(wifi_receiver)
- qdel(wifi_receiver)
- wifi_receiver = null
+ qdel(wifi_receiver)
+ wifi_receiver = null
..()
/obj/machinery/power/emitter/update_icon()
diff --git a/code/modules/wireless/devices.dm b/code/modules/wireless/devices.dm
index 40a293c17de..96400eb9941 100644
--- a/code/modules/wireless/devices.dm
+++ b/code/modules/wireless/devices.dm
@@ -1,31 +1,32 @@
-/datum/wifi/receiver/button
- var/obj/parent
-
-/datum/wifi/receiver/button/New(var/new_id, var/obj/O)
- id = new_id
- if(istype(O))
- parent = O
- ..()
-
-/datum/wifi/receiver/button/Destroy()
- parent = null
- return ..()
-
+//-------------------------------
+// Buttons
+//-------------------------------
/datum/wifi/receiver/button/proc/activate(mob/living/user)
+/datum/wifi/receiver/button/proc/deactivate(mob/living/user)
/datum/wifi/sender/button/proc/activate(mob/living/user)
for(var/datum/wifi/receiver/button/B in connected_devices)
B.activate(user)
+/datum/wifi/sender/button/proc/deactivate(mob/living/user)
+ for(var/datum/wifi/receiver/button/B in connected_devices)
+ B.deactivate(user)
+
//-------------------------------
// Emitter
//-------------------------------
/datum/wifi/receiver/button/emitter/activate(mob/living/user)
..()
var/obj/machinery/power/emitter/E = parent
- if(istype(E))
- E.activate(user)
+ if(istype(E) && !E.active)
+ E.activate(user) //if the emitter is not active, trigger the activate proc to toggle it
+
+/datum/wifi/receiver/button/emitter/deactivate(mob/living/user)
+ ..()
+ var/obj/machinery/power/emitter/E = parent
+ if(istype(E) && E.active)
+ E.activate(user) //if the emitter is active, trigger the activate proc to toggle it
//-------------------------------
// Crematorium
@@ -35,3 +36,27 @@
var/obj/structure/crematorium/C = parent
if(istype(C))
C.cremate(user)
+
+//-------------------------------
+// Mounted Flash
+//-------------------------------
+/datum/wifi/receiver/button/flasher/activate(mob/living/user)
+ ..()
+ var/obj/machinery/flasher/F = parent
+ if(istype(F))
+ F.flash()
+
+//-------------------------------
+// Holosign
+//-------------------------------
+/datum/wifi/receiver/button/holosign/activate(mob/living/user)
+ ..()
+ var/obj/machinery/holosign/H = parent
+ if(istype(H) && !H.lit)
+ H.toggle()
+
+/datum/wifi/receiver/button/holosign/deactivate(mob/living/user)
+ ..()
+ var/obj/machinery/holosign/H = parent
+ if(istype(H) && H.lit)
+ H.toggle()
diff --git a/code/modules/wireless/interfaces.dm b/code/modules/wireless/interfaces.dm
index 22dfa92e149..5afd379063a 100644
--- a/code/modules/wireless/interfaces.dm
+++ b/code/modules/wireless/interfaces.dm
@@ -1,10 +1,17 @@
+//-------------------------------
+// Wifi
+//-------------------------------
/datum/wifi
+ var/obj/parent
var/list/connected_devices
-/datum/wifi/New()
+/datum/wifi/New(var/obj/O)
connected_devices = new()
+ if(istype(O))
+ parent = O
/datum/wifi/Destroy(var/wifi/device)
+ parent = null
for(var/datum/wifi/D in connected_devices)
D.disconnect_device(src)
disconnect_device(D)
@@ -17,12 +24,14 @@
connected_devices -= device
-
+//-------------------------------
+// Receiver
+//-------------------------------
/datum/wifi/receiver
var/id
-/datum/wifi/receiver/New(var/new_id)
- ..()
+/datum/wifi/receiver/New(var/new_id, var/obj/O)
+ ..(O)
id = new_id
wirelessProcess.add_device(src)
@@ -31,11 +40,14 @@
return ..()
+//-------------------------------
+// Sender
+//-------------------------------
/datum/wifi/sender
var/target
-/datum/wifi/sender/New(var/new_target)
- ..()
+/datum/wifi/sender/New(var/new_target, var/obj/O)
+ ..(O)
target = new_target
send_connection_request()
@@ -47,7 +59,9 @@
wirelessProcess.add_request(C)
-
+//-------------------------------
+// Connection request
+//-------------------------------
/datum/connection_request
var/datum/wifi/sender/source //wifi_sender object creating the request
var/target //id tag of the target device to try to connect to
@@ -57,6 +71,9 @@
target = receiver
+//-------------------------------
+// Wireless tool (temp)
+//-------------------------------
/obj/item/device/wireless_tool
name = "wireless tool"
desc = "Used for connecting machinery to controls for remote operation."