diff --git a/code/__defines/radio.dm b/code/__defines/radio.dm
index 2fd45c22ed8..f3f63f7c8da 100644
--- a/code/__defines/radio.dm
+++ b/code/__defines/radio.dm
@@ -1,16 +1,16 @@
-var/const/RADIO_LOW_FREQ = 1200
-var/const/PUBLIC_LOW_FREQ = 1441
-var/const/PUBLIC_HIGH_FREQ = 1489
-var/const/RADIO_HIGH_FREQ = 1600
+#define RADIO_LOW_FREQ 1200
+#define PUBLIC_LOW_FREQ 1441
+#define PUBLIC_HIGH_FREQ 1489
+#define RADIO_HIGH_FREQ 1600
-var/const/BOT_FREQ = 1447
-var/const/COMM_FREQ = 1353
-var/const/ERT_FREQ = 1345
-var/const/AI_FREQ = 1343
-var/const/DTH_FREQ = 1341
-var/const/SYND_FREQ = 1213
-var/const/RAID_FREQ = 1277
-var/const/ENT_FREQ = 1461 //entertainment frequency. This is not a diona exclusive frequency.
+#define BOT_FREQ 1447
+#define COMM_FREQ 1353
+#define ERT_FREQ 1345
+#define AI_FREQ 1343
+#define DTH_FREQ 1341
+#define SYND_FREQ 1213
+#define RAID_FREQ 1277
+#define ENT_FREQ 1461 //entertainment frequency. This is not a diona exclusive frequency.
// department channels
var/const/PUB_FREQ = 1459
@@ -22,8 +22,8 @@ var/const/SRV_FREQ = 1349
var/const/SUP_FREQ = 1347
// internal department channels
-var/const/MED_I_FREQ = 1485
-var/const/SEC_I_FREQ = 1475
+#define MED_I_FREQ 1485
+#define SEC_I_FREQ 1475
var/list/radiochannels = list(
"Common" = PUB_FREQ,
@@ -40,18 +40,58 @@ var/list/radiochannels = list(
"Service" = SRV_FREQ,
"AI Private" = AI_FREQ,
"Entertainment" = ENT_FREQ,
- "Medical(I)" = MED_I_FREQ,
- "Security(I)" = SEC_I_FREQ
+ "Medical (I)" = MED_I_FREQ,
+ "Security (I)" = SEC_I_FREQ
)
+// The assoc variants are separate lists because they need the keys to be strings, but some code expects numbers.
+
// central command channels, i.e deathsquid & response teams
-var/list/CENT_FREQS = list(ERT_FREQ, DTH_FREQ)
+var/list/CENT_FREQS = list(
+ ERT_FREQ,
+ DTH_FREQ
+)
+
+var/list/CENT_FREQS_ASSOC = list(
+ "[ERT_FREQ]" = TRUE,
+ "[DTH_FREQ]" = TRUE
+)
// Antag channels, i.e. Syndicate
-var/list/ANTAG_FREQS = list(SYND_FREQ, RAID_FREQ)
+var/list/ANTAG_FREQS = list(
+ SYND_FREQ,
+ RAID_FREQ
+)
+
+var/list/ANTAG_FREQS_ASSOC = list(
+ "[SYND_FREQ]" = TRUE,
+ "[RAID_FREQ]" = TRUE
+)
//Department channels, arranged lexically
-var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, MED_FREQ, SEC_FREQ, SCI_FREQ, SRV_FREQ, SUP_FREQ, ENT_FREQ)
+var/list/DEPT_FREQS = list(
+ AI_FREQ,
+ COMM_FREQ,
+ ENG_FREQ,
+ MED_FREQ,
+ SEC_FREQ,
+ SCI_FREQ,
+ SRV_FREQ,
+ SUP_FREQ,
+ ENT_FREQ
+)
+
+var/list/DEPT_FREQS_ASSOC = list(
+ "[AI_FREQ]" = TRUE,
+ "[COMM_FREQ]" = TRUE,
+ "[ENG_FREQ]" = TRUE,
+ "[MED_FREQ]" = TRUE,
+ "[SEC_FREQ]" = TRUE,
+ "[SCI_FREQ]" = TRUE,
+ "[SRV_FREQ]" = TRUE,
+ "[SUP_FREQ]" = TRUE,
+ "[ENT_FREQ]" = TRUE
+)
#define TRANSMISSION_WIRE 0
#define TRANSMISSION_RADIO 1
@@ -62,15 +102,15 @@ var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, MED_FREQ, SEC_FREQ, SCI
//This is done for performance, so we don't send signals to lots of machines unnecessarily.
//This filter is special because devices belonging to default also recieve signals sent to any other filter.
-var/const/RADIO_DEFAULT = "radio_default"
+#define RADIO_DEFAULT "radio_default"
-var/const/RADIO_TO_AIRALARM = "radio_airalarm" //air alarms
-var/const/RADIO_FROM_AIRALARM = "radio_airalarm_rcvr" //devices interested in recieving signals from air alarms
-var/const/RADIO_CHAT = "radio_telecoms"
-var/const/RADIO_ATMOSIA = "radio_atmos"
-var/const/RADIO_NAVBEACONS = "radio_navbeacon"
-var/const/RADIO_AIRLOCK = "radio_airlock"
-var/const/RADIO_SECBOT = "radio_secbot"
-var/const/RADIO_MULEBOT = "radio_mulebot"
-var/const/RADIO_MAGNETS = "radio_magnet"
-var/const/RADIO_ARRIVALS = "radio_arrvl"
+#define RADIO_TO_AIRALARM "radio_airalarm" //air alarms
+#define RADIO_FROM_AIRALARM "radio_airalarm_rcvr" //devices interested in recieving signals from air alarms
+#define RADIO_CHAT "radio_telecoms"
+#define RADIO_ATMOSIA "radio_atmos"
+#define RADIO_NAVBEACONS "radio_navbeacon"
+#define RADIO_AIRLOCK "radio_airlock"
+#define RADIO_SECBOT "radio_secbot"
+#define RADIO_MULEBOT "radio_mulebot"
+#define RADIO_MAGNETS "radio_magnet"
+#define RADIO_ARRIVALS "radio_arrvl"
diff --git a/code/controllers/subsystems/explosives.dm b/code/controllers/subsystems/explosives.dm
index 1e70e0ee0ea..67e3b56abaf 100644
--- a/code/controllers/subsystems/explosives.dm
+++ b/code/controllers/subsystems/explosives.dm
@@ -82,9 +82,9 @@ var/datum/controller/subsystem/explosives/SSexplosives
// Handles recursive propagation of explosions.
if(devastation_range > 2 || heavy_impact_range > 2)
if(HasAbove(epicenter.z) && z_transfer & UP)
- explosion(GetAbove(epicenter), max(0, devastation_range - 2), max(0, heavy_impact_range - 2), max(0, light_impact_range - 2), max(0, flash_range - 2), 0, UP)
+ global.explosion(GetAbove(epicenter), max(0, devastation_range - 2), max(0, heavy_impact_range - 2), max(0, light_impact_range - 2), max(0, flash_range - 2), 0, UP)
if(HasBelow(epicenter.z) && z_transfer & DOWN)
- explosion(GetAbove(epicenter), max(0, devastation_range - 2), max(0, heavy_impact_range - 2), max(0, light_impact_range - 2), max(0, flash_range - 2), 0, DOWN)
+ global.explosion(GetAbove(epicenter), max(0, devastation_range - 2), max(0, heavy_impact_range - 2), max(0, light_impact_range - 2), max(0, flash_range - 2), 0, DOWN)
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flash_range)
diff --git a/code/controllers/subsystems/garbage-debug.dm b/code/controllers/subsystems/garbage-debug.dm
index 2b8471e5780..7c0f2f521e5 100644
--- a/code/controllers/subsystems/garbage-debug.dm
+++ b/code/controllers/subsystems/garbage-debug.dm
@@ -366,9 +366,6 @@
SearchVar(panic_targets_data_loss)
SearchVar(Failsafe)
SearchVar(Master)
- SearchVar(MC_restart_clear)
- SearchVar(MC_restart_timeout)
- SearchVar(MC_restart_count)
SearchVar(CURRENT_TICKLIMIT)
SearchVar(SSalarm)
SearchVar(SSchemistry)
@@ -658,8 +655,6 @@
SearchVar(uristrune_cache)
SearchVar(slot_flags_enumeration)
SearchVar(BUMP_TELEPORTERS)
- SearchVar(splatter_cache)
- SearchVar(fluidtrack_cache)
SearchVar(active_radio_jammers)
SearchVar(default_uplink_selection)
SearchVar(chatrooms)
@@ -680,9 +675,7 @@
SearchVar(stool_cache)
SearchVar(enterloopsanity)
SearchVar(flooring_types)
- SearchVar(floor_decals)
SearchVar(random_junk)
- SearchVar(flooring_cache)
SearchVar(js_byjax)
SearchVar(js_dropdowns)
SearchVar(BSACooldown)
@@ -705,7 +698,6 @@
SearchVar(admin_verbs_mod)
SearchVar(admin_verbs_dev)
SearchVar(admin_verbs_cciaa)
- SearchVar(jobban_runonce)
SearchVar(jobban_keylist)
SearchVar(admin_datums)
SearchVar(CMinutes)
@@ -771,7 +763,6 @@
SearchVar(admin_verbs_lighting)
SearchVar(liquid_delay)
SearchVar(puddles)
- SearchVar(maploader)
SearchVar(_preloader)
SearchVar(swapmaps_iconcache)
SearchVar(SWAPMAPS_SAV)
@@ -807,9 +798,6 @@
SearchVar(diona_banned_languages)
SearchVar(alcohol_clumsy)
SearchVar(sparring_attack_cache)
- SearchVar(human_icon_cache)
- SearchVar(tail_icon_cache)
- SearchVar(light_overlay_cache)
SearchVar(damage_icon_parts)
SearchVar(MAXIMUM_MEME_POINTS)
SearchVar(host_brain)
@@ -822,7 +810,6 @@
SearchVar(pai_emotions)
SearchVar(robot_custom_icons)
SearchVar(robot_modules)
- SearchVar(mob_hat_cache)
SearchVar(protected_objects)
SearchVar(SKILL_NONE)
SearchVar(SKILL_BASIC)
@@ -849,7 +836,6 @@
SearchVar(BLOOD_VOLUME_BAD)
SearchVar(BLOOD_VOLUME_SURVIVE)
SearchVar(organ_cache)
- SearchVar(limb_icon_cache)
SearchVar(all_robolimbs)
SearchVar(chargen_robolimbs)
SearchVar(basic_robolimb)
diff --git a/code/controllers/subsystems/radio.dm b/code/controllers/subsystems/radio.dm
index d995c4bb68c..ba8fdcf335d 100644
--- a/code/controllers/subsystems/radio.dm
+++ b/code/controllers/subsystems/radio.dm
@@ -155,34 +155,36 @@ var/datum/controller/subsystem/radio/SSradio
return null
/proc/frequency_span_class(var/frequency)
+ . = "radio"
+ var/fstr = "[frequency]"
// Antags!
- if (frequency in ANTAG_FREQS)
+ if (ANTAG_FREQS_ASSOC[fstr])
return "syndradio"
- // centcomm channels (deathsquid and ert)
- if(frequency in CENT_FREQS)
- return "centradio"
- // command channel
- if(frequency == COMM_FREQ)
- return "comradio"
- // AI private channel
- if(frequency == AI_FREQ)
- return "airadio"
- // department radio formatting (poorly optimized, ugh)
- if(frequency == SEC_FREQ)
- return "secradio"
- if (frequency == ENG_FREQ)
- return "engradio"
- if(frequency == SCI_FREQ)
- return "sciradio"
- if(frequency == MED_FREQ)
- return "medradio"
- if(frequency == SUP_FREQ) // cargo
- return "supradio"
- if(frequency == SRV_FREQ) // service
- return "srvradio"
- if(frequency == ENT_FREQ) //entertainment
- return "entradio"
- if(frequency in DEPT_FREQS)
- return "deptradio"
- return "radio"
+ // centcomm channels (deathsquid and ert)
+ if(CENT_FREQS_ASSOC[fstr])
+ return "centradio"
+
+ // department radio formatting
+ switch (frequency)
+ if (COMM_FREQ) // command
+ . = "comradio"
+ if (AI_FREQ) // AI Private
+ . = "airadio"
+ if (SEC_FREQ,SEC_I_FREQ)
+ . = "secradio"
+ if (ENG_FREQ)
+ . = "engradio"
+ if (SCI_FREQ)
+ . = "sciradio"
+ if (MED_FREQ,MED_I_FREQ)
+ . = "medradio"
+ if (SUP_FREQ) // cargo
+ . = "supradio"
+ if (SRV_FREQ) // service
+ . = "srvradio"
+ if (ENT_FREQ) //entertainment
+ . = "entradio"
+ else
+ if(DEPT_FREQS_ASSOC[fstr])
+ . = "deptradio"
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 5a3d567f44d..7bef4ecce71 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -1415,6 +1415,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
PDAs -= src
if (src.id && prob(90)) //IDs are kept in 90% of the cases
src.id.loc = get_turf(src.loc)
+ QDEL_NULL(pen)
return ..()
/obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery.
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index f95d341577d..32595ebf2bc 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -33,6 +33,10 @@
var/message2
var/list/stored_data = list()
+/obj/item/weapon/cartridge/Destroy()
+ QDEL_NULL(radio)
+ return ..()
+
/obj/item/weapon/cartridge/engineering
name = "\improper Power-ON cartridge"
icon_state = "cart-e"
@@ -101,7 +105,6 @@
/obj/item/weapon/cartridge/signal
name = "generic signaler cartridge"
desc = "A data cartridge with an integrated radio signaler module."
- var/qdeled = 0
/obj/item/weapon/cartridge/signal/science
name = "\improper Signal Ace 2 cartridge"
@@ -114,10 +117,6 @@
. = ..()
radio = new /obj/item/radio/integrated/signal(src)
-/obj/item/weapon/cartridge/signal/Destroy()
- qdel(radio)
- return ..()
-
/obj/item/weapon/cartridge/quartermaster
name = "\improper Space Parts & Space Vendors cartridge"
desc = "Perfect for the Quartermaster on the go!"
diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm
index 2d521db062a..67b4138cf4c 100644
--- a/code/game/objects/items/devices/PDA/radio.dm
+++ b/code/game/objects/items/devices/PDA/radio.dm
@@ -8,32 +8,36 @@
var/on = 0 //Are we currently active??
var/menu_message = ""
- New()
- ..()
- if (istype(loc.loc, /obj/item/device/pda))
- hostpda = loc.loc
+/obj/item/radio/integrated/Initialize()
+ . = ..()
+ if (istype(loc.loc, /obj/item/device/pda))
+ hostpda = loc.loc
- proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3, s_filter)
+/obj/item/radio/integrated/Destroy()
+ hostpda = null
+ return ..()
- //world << "Post: [freq]: [key]=[value], [key2]=[value2]"
- var/datum/radio_frequency/frequency = SSradio.return_frequency(freq)
+/obj/item/radio/integrated/proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3, s_filter)
- if(!frequency) return
+ //world << "Post: [freq]: [key]=[value], [key2]=[value2]"
+ var/datum/radio_frequency/frequency = SSradio.return_frequency(freq)
- var/datum/signal/signal = new()
- signal.source = src
- signal.transmission_method = 1
- signal.data[key] = value
- if(key2)
- signal.data[key2] = value2
- if(key3)
- signal.data[key3] = value3
+ if(!frequency) return
- frequency.post_signal(src, signal, filter = s_filter)
+ var/datum/signal/signal = new()
+ signal.source = src
+ signal.transmission_method = 1
+ signal.data[key] = value
+ if(key2)
+ signal.data[key2] = value2
+ if(key3)
+ signal.data[key3] = value3
- return
+ frequency.post_signal(src, signal, filter = s_filter)
- proc/generate_menu()
+ return
+
+/obj/item/radio/integrated/proc/generate_menu()
/obj/item/radio/integrated/beepsky
var/list/botlist = null // list of bots
@@ -43,66 +47,63 @@
var/control_freq = BOT_FREQ
// create a new QM cartridge, and register to receive bot control & beacon message
- New()
- ..()
- spawn(5)
- if(SSradio)
- SSradio.add_object(src, control_freq, filter = RADIO_SECBOT)
+/obj/item/radio/integrated/beepsky/Initialize()
+ . = ..()
+ SSradio.add_object(src, control_freq, filter = RADIO_SECBOT)
// receive radio signals
// can detect bot status signals
// create/populate list as they are recvd
- receive_signal(datum/signal/signal)
+/obj/item/radio/integrated/beepsky/receive_signal(datum/signal/signal)
// var/obj/item/device/pda/P = src.loc
- /*
- world << "recvd:[P] : [signal.source]"
- for(var/d in signal.data)
- world << "- [d] = [signal.data[d]]"
- */
- if (signal.data["type"] == "secbot")
- if(!botlist)
- botlist = new()
+ /*
+ world << "recvd:[P] : [signal.source]"
+ for(var/d in signal.data)
+ world << "- [d] = [signal.data[d]]"
+ */
+ if (signal.data["type"] == "secbot")
+ if(!botlist)
+ botlist = new()
- if(!(signal.source in botlist))
- botlist += signal.source
+ if(!(signal.source in botlist))
+ botlist += signal.source
- if(active == signal.source)
- var/list/b = signal.data
- botstatus = b.Copy()
+ if(active == signal.source)
+ var/list/b = signal.data
+ botstatus = b.Copy()
// if (istype(P)) P.updateSelfDialog()
- Topic(href, href_list)
- ..()
- var/obj/item/device/pda/PDA = src.hostpda
+/obj/item/radio/integrated/beepsky/Topic(href, href_list)
+ ..()
+ var/obj/item/device/pda/PDA = src.hostpda
- switch(href_list["op"])
+ switch(href_list["op"])
- if("control")
- active = locate(href_list["bot"])
- post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
+ if("control")
+ active = locate(href_list["bot"])
+ post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
- if("scanbots") // find all bots
- botlist = null
- post_signal(control_freq, "command", "bot_status", s_filter = RADIO_SECBOT)
+ if("scanbots") // find all bots
+ botlist = null
+ post_signal(control_freq, "command", "bot_status", s_filter = RADIO_SECBOT)
- if("botlist")
- active = null
+ if("botlist")
+ active = null
- if("stop", "go")
- post_signal(control_freq, "command", href_list["op"], "active", active, s_filter = RADIO_SECBOT)
- post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
+ if("stop", "go")
+ post_signal(control_freq, "command", href_list["op"], "active", active, s_filter = RADIO_SECBOT)
+ post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
- if("summon")
- post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) , s_filter = RADIO_SECBOT)
- post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
+ if("summon")
+ post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) , s_filter = RADIO_SECBOT)
+ post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
/obj/item/radio/integrated/beepsky/Destroy()
- if(SSradio)
- SSradio.remove_object(src, control_freq)
+ SSradio.remove_object(src, control_freq)
return ..()
/obj/item/radio/integrated/mule
@@ -115,94 +116,99 @@
var/control_freq = BOT_FREQ
// create a new QM cartridge, and register to receive bot control & beacon message
- New()
- ..()
- spawn(5)
- if(SSradio)
- SSradio.add_object(src, control_freq, filter = RADIO_MULEBOT)
- SSradio.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
- spawn(10)
- post_signal(beacon_freq, "findbeacon", "delivery", s_filter = RADIO_NAVBEACONS)
+/obj/item/radio/integrated/mule/Initialize()
+ ..()
+ SSradio.add_object(src, control_freq, filter = RADIO_MULEBOT)
+ SSradio.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
+ return INITIALIZE_HINT_LATELOAD
+
+/obj/item/radio/integrated/mule/LateInitialize()
+ post_signal(beacon_freq, "findbeacon", "delivery", s_filter = RADIO_NAVBEACONS)
+
+/obj/item/radio/integrated/mule/Destroy()
+ SSradio.remove_object(src, control_freq)
+ SSradio.remove_object(src, beacon_freq)
+ return ..()
// receive radio signals
// can detect bot status signals
// and beacon locations
// create/populate lists as they are recvd
- receive_signal(datum/signal/signal)
+/obj/item/radio/integrated/mule/receive_signal(datum/signal/signal)
// var/obj/item/device/pda/P = src.loc
- /*
- world << "recvd:[P] : [signal.source]"
- for(var/d in signal.data)
- world << "- [d] = [signal.data[d]]"
- */
- if(signal.data["type"] == "mulebot")
- if(!botlist)
- botlist = new()
+ /*
+ world << "recvd:[P] : [signal.source]"
+ for(var/d in signal.data)
+ world << "- [d] = [signal.data[d]]"
+ */
+ if(signal.data["type"] == "mulebot")
+ if(!botlist)
+ botlist = new()
- if(!(signal.source in botlist))
- botlist += signal.source
+ if(!(signal.source in botlist))
+ botlist += signal.source
- if(active == signal.source)
- var/list/b = signal.data
- botstatus = b.Copy()
+ if(active == signal.source)
+ var/list/b = signal.data
+ botstatus = b.Copy()
- else if(signal.data["beacon"])
- if(!beacons)
- beacons = new()
+ else if(signal.data["beacon"])
+ if(!beacons)
+ beacons = new()
- beacons[signal.data["beacon"] ] = signal.source
+ beacons[signal.data["beacon"] ] = signal.source
// if(istype(P)) P.updateSelfDialog()
- Topic(href, href_list)
- ..()
- var/cmd = "command"
- if(active) cmd = "command [active.suffix]"
+/obj/item/radio/integrated/mule/Topic(href, href_list)
+ ..()
+ var/cmd = "command"
+ if(active) cmd = "command [active.suffix]"
- switch(href_list["op"])
+ switch(href_list["op"])
- if("control")
- active = locate(href_list["bot"])
- post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
+ if("control")
+ active = locate(href_list["bot"])
+ post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
- if("scanbots") // find all bots
- botlist = null
- post_signal(control_freq, "command", "bot_status", s_filter = RADIO_MULEBOT)
+ if("scanbots") // find all bots
+ botlist = null
+ post_signal(control_freq, "command", "bot_status", s_filter = RADIO_MULEBOT)
- if("botlist")
- active = null
+ if("botlist")
+ active = null
- if("unload")
- post_signal(control_freq, cmd, "unload", s_filter = RADIO_MULEBOT)
- post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
- if("setdest")
- if(beacons)
- var/dest = input("Select Bot Destination", "Mulebot [active.suffix] Interlink", active.destination) as null|anything in beacons
- if(dest)
- post_signal(control_freq, cmd, "target", "destination", dest, s_filter = RADIO_MULEBOT)
- post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
+ if("unload")
+ post_signal(control_freq, cmd, "unload", s_filter = RADIO_MULEBOT)
+ post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
+ if("setdest")
+ if(beacons)
+ var/dest = input("Select Bot Destination", "Mulebot [active.suffix] Interlink", active.destination) as null|anything in beacons
+ if(dest)
+ post_signal(control_freq, cmd, "target", "destination", dest, s_filter = RADIO_MULEBOT)
+ post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
- if("retoff")
- post_signal(control_freq, cmd, "autoret", "value", 0, s_filter = RADIO_MULEBOT)
- post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
- if("reton")
- post_signal(control_freq, cmd, "autoret", "value", 1, s_filter = RADIO_MULEBOT)
- post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
+ if("retoff")
+ post_signal(control_freq, cmd, "autoret", "value", 0, s_filter = RADIO_MULEBOT)
+ post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
+ if("reton")
+ post_signal(control_freq, cmd, "autoret", "value", 1, s_filter = RADIO_MULEBOT)
+ post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
- if("pickoff")
- post_signal(control_freq, cmd, "autopick", "value", 0, s_filter = RADIO_MULEBOT)
- post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
- if("pickon")
- post_signal(control_freq, cmd, "autopick", "value", 1, s_filter = RADIO_MULEBOT)
- post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
+ if("pickoff")
+ post_signal(control_freq, cmd, "autopick", "value", 0, s_filter = RADIO_MULEBOT)
+ post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
+ if("pickon")
+ post_signal(control_freq, cmd, "autopick", "value", 1, s_filter = RADIO_MULEBOT)
+ post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
- if("stop", "go", "home")
- post_signal(control_freq, cmd, href_list["op"], s_filter = RADIO_MULEBOT)
- post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
+ if("stop", "go", "home")
+ post_signal(control_freq, cmd, href_list["op"], s_filter = RADIO_MULEBOT)
+ post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
@@ -217,41 +223,37 @@
var/last_transmission
var/datum/radio_frequency/radio_connection
- Initialize()
- . = ..()
- if(!SSradio)
- return
-
- if (src.frequency < PUBLIC_LOW_FREQ || src.frequency > PUBLIC_HIGH_FREQ)
- src.frequency = sanitize_frequency(src.frequency)
-
- set_frequency(frequency)
-
- proc/set_frequency(new_frequency)
- SSradio.remove_object(src, frequency)
- frequency = new_frequency
- radio_connection = SSradio.add_object(src, frequency)
-
- proc/send_signal(message="ACTIVATE")
-
- if(last_transmission && world.time < (last_transmission + 5))
- return
- last_transmission = world.time
-
- var/time = time2text(world.realtime,"hh:mm:ss")
- var/turf/T = get_turf(src)
- lastsignalers.Add("[time] : [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) : [format_frequency(frequency)]/[code]")
-
- var/datum/signal/signal = new
- signal.source = src
- signal.encryption = code
- signal.data["message"] = message
-
- radio_connection.post_signal(src, signal)
-
+/obj/item/radio/integrated/signal/Initialize()
+ . = ..()
+ if(!SSradio)
return
+ if (src.frequency < PUBLIC_LOW_FREQ || src.frequency > PUBLIC_HIGH_FREQ)
+ src.frequency = sanitize_frequency(src.frequency)
+
+ set_frequency(frequency)
+
+/obj/item/radio/integrated/signal/proc/set_frequency(new_frequency)
+ SSradio.remove_object(src, frequency)
+ frequency = new_frequency
+ radio_connection = SSradio.add_object(src, frequency)
+
+/obj/item/radio/integrated/signal/proc/send_signal(message="ACTIVATE")
+ if(last_transmission && world.time < (last_transmission + 5))
+ return
+ last_transmission = world.time
+
+ var/time = time2text(world.realtime,"hh:mm:ss")
+ var/turf/T = get_turf(src)
+ lastsignalers.Add("[time] : [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) : [format_frequency(frequency)]/[code]")
+
+ var/datum/signal/signal = new
+ signal.source = src
+ signal.encryption = code
+ signal.data["message"] = message
+
+ radio_connection.post_signal(src, signal)
+
/obj/item/radio/integrated/signal/Destroy()
- if(SSradio)
- SSradio.remove_object(src, frequency)
+ SSradio.remove_object(src, frequency)
return ..()
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 5be20e10e09..87977b38461 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -159,6 +159,10 @@
return -1 //Transciever Disabled.
return ..(freq, level, 1)
+/obj/item/device/radio/headset/heads/ai_integrated/Destroy()
+ myAi = null
+ return ..()
+
/obj/item/device/radio/headset/heads/rd
name = "research director's headset"
desc = "Headset of the researching God."
diff --git a/code/modules/clothing/suits/hoodies.dm b/code/modules/clothing/suits/hoodies.dm
index b8dc70f4e38..a330699fb2c 100644
--- a/code/modules/clothing/suits/hoodies.dm
+++ b/code/modules/clothing/suits/hoodies.dm
@@ -6,18 +6,17 @@
var/suittoggled = 0
var/hooded = 0
-/obj/item/clothing/suit/storage/hooded/New()
+/obj/item/clothing/suit/storage/hooded/Initialize()
+ . = ..()
MakeHood()
- ..()
/obj/item/clothing/suit/storage/hooded/Destroy()
- qdel(hood)
+ QDEL_NULL(hood)
return ..()
/obj/item/clothing/suit/storage/hooded/proc/MakeHood()
if(!hood)
- var/obj/item/clothing/head/winterhood/W = new hoodtype(src)
- hood = W
+ hood = new hoodtype(src)
/obj/item/clothing/suit/storage/hooded/equipped(mob/user, slot)
if(slot != slot_wear_suit)
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 63ba78e7357..f29e84e9ea3 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -716,7 +716,6 @@
if(prob(25) && has_resources)
var/list/ore = list()
for(var/metal in resources)
-
switch(metal)
if("silicates")
ore += /obj/item/weapon/ore/glass
@@ -753,9 +752,10 @@
ore += /obj/item/weapon/ore/glass
else
ore += /obj/item/weapon/ore/glass
- var/ore_path = pick(ore)
- if(ore)
- new ore_path(src)
+ if (ore.len)
+ var/ore_path = pick(ore)
+ if(ore)
+ new ore_path(src)
if(dug <= 10)
dug += 1