Refactors signallers, assemblies, electropacks (#18689)

* Refactors signalers, assemblies, electropacks

* Update code/game/objects/items/devices/radio/electropack.dm

Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>

Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>
This commit is contained in:
AffectedArc07
2022-08-15 16:36:34 +01:00
committed by GitHub
co-authored by Sirryan2002 Charlie
parent 98a143afb6
commit aba452f785
27 changed files with 413 additions and 422 deletions
+118 -108
View File
@@ -6,6 +6,9 @@
item_state = "electronic"
w_class = WEIGHT_CLASS_TINY
/// Integrated signaler for captain, science & generic signaler cartridge
var/obj/item/assembly/signaler/integ_signaler
var/obj/item/integrated_radio/radio = null
var/charges = 0
@@ -24,6 +27,7 @@
for(var/A in programs)
var/datum/data/pda/P = A
P.pda = pda
for(var/A in messenger_plugins)
var/datum/data/pda/messenger_plugin/P = A
P.pda = pda
@@ -32,32 +36,39 @@
name = "Power-ON Cartridge"
icon_state = "cart-e"
programs = list(
new/datum/data/pda/app/power,
new/datum/data/pda/utility/scanmode/halogen)
new /datum/data/pda/app/power,
new /datum/data/pda/utility/scanmode/halogen
)
/obj/item/cartridge/atmos
name = "BreatheDeep Cartridge"
icon_state = "cart-a"
programs = list(new/datum/data/pda/utility/scanmode/gas)
programs = list(
new /datum/data/pda/utility/scanmode/gas
)
/obj/item/cartridge/medical
name = "Med-U Cartridge"
icon_state = "cart-m"
programs = list(
new/datum/data/pda/app/crew_records/medical,
new/datum/data/pda/utility/scanmode/medical)
new /datum/data/pda/app/crew_records/medical,
new /datum/data/pda/utility/scanmode/medical
)
/obj/item/cartridge/chemistry
name = "ChemWhiz Cartridge"
icon_state = "cart-chem"
programs = list(new/datum/data/pda/utility/scanmode/reagent)
programs = list(
new /datum/data/pda/utility/scanmode/reagent
)
/obj/item/cartridge/security
name = "R.O.B.U.S.T. Cartridge"
icon_state = "cart-s"
programs = list(
new/datum/data/pda/app/crew_records/security,
new/datum/data/pda/app/secbot_control)
new /datum/data/pda/app/crew_records/security,
new /datum/data/pda/app/secbot_control
)
/obj/item/cartridge/security/Initialize(mapload)
. = ..()
@@ -67,70 +78,75 @@
name = "D.E.T.E.C.T. Cartridge"
icon_state = "cart-s"
programs = list(
new/datum/data/pda/app/crew_records/medical,
new/datum/data/pda/utility/scanmode/medical,
new/datum/data/pda/app/crew_records/security)
new /datum/data/pda/app/crew_records/medical,
new /datum/data/pda/utility/scanmode/medical,
new /datum/data/pda/app/crew_records/security
)
/obj/item/cartridge/janitor
name = "CustodiPRO Cartridge"
desc = "The ultimate in clean-room design."
icon_state = "cart-j"
programs = list(new/datum/data/pda/app/janitor)
programs = list(
new /datum/data/pda/app/janitor
)
/obj/item/cartridge/lawyer
name = "P.R.O.V.E. Cartridge"
icon_state = "cart-s"
programs = list(new/datum/data/pda/app/crew_records/security)
programs = list(
new /datum/data/pda/app/crew_records/security
)
/obj/item/cartridge/clown
name = "Honkworks 5.0"
icon_state = "cart-clown"
charges = 5
programs = list(new/datum/data/pda/utility/honk)
messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/clown)
programs = list(
new /datum/data/pda/utility/honk
)
messenger_plugins = list(
new /datum/data/pda/messenger_plugin/virus/clown
)
/obj/item/cartridge/mime
name = "Gestur-O 1000"
icon_state = "cart-mi"
charges = 5
messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/mime)
/*
/obj/item/cartridge/botanist
name = "Green Thumb v4.20"
icon_state = "cart-b"
access_flora = 1
*/
messenger_plugins = list(
new /datum/data/pda/messenger_plugin/virus/mime
)
/obj/item/cartridge/signal
name = "generic signaler cartridge"
desc = "A data cartridge with an integrated radio signaler module."
programs = list(new/datum/data/pda/app/signaller)
programs = list(
new /datum/data/pda/app/signaller
)
/obj/item/cartridge/signal/Initialize(mapload)
. = ..()
radio = new /obj/item/integrated_radio/signal(src)
integ_signaler = new /obj/item/assembly/signaler(src)
/obj/item/cartridge/signal/toxins
name = "Signal Ace 2"
desc = "Complete with integrated radio signaler!"
icon_state = "cart-tox"
programs = list(
new/datum/data/pda/utility/scanmode/gas,
new/datum/data/pda/utility/scanmode/reagent,
new/datum/data/pda/app/signaller)
new /datum/data/pda/utility/scanmode/gas,
new /datum/data/pda/utility/scanmode/reagent,
new /datum/data/pda/app/signaller
)
/obj/item/cartridge/quartermaster
name = "Space Parts & Space Vendors Cartridge"
desc = "Perfect for the Quartermaster on the go!"
icon_state = "cart-q"
programs = list(
new/datum/data/pda/app/supply,
new/datum/data/pda/app/mule_control)
new /datum/data/pda/app/supply,
new /datum/data/pda/app/mule_control
)
/obj/item/cartridge/quartermaster/Initialize(mapload)
. = ..()
@@ -139,20 +155,20 @@
/obj/item/cartridge/head
name = "Easy-Record DELUXE"
icon_state = "cart-h"
programs = list(new/datum/data/pda/app/status_display)
programs = list(
new /datum/data/pda/app/status_display
)
/obj/item/cartridge/hop
name = "HumanResources9001"
icon_state = "cart-h"
programs = list(
new/datum/data/pda/app/crew_records/security,
new/datum/data/pda/app/janitor,
new/datum/data/pda/app/supply,
new/datum/data/pda/app/mule_control,
new/datum/data/pda/app/status_display)
new /datum/data/pda/app/crew_records/security,
new /datum/data/pda/app/janitor,
new /datum/data/pda/app/supply,
new /datum/data/pda/app/mule_control,
new /datum/data/pda/app/status_display
)
/obj/item/cartridge/hop/Initialize(mapload)
. = ..()
@@ -162,10 +178,10 @@
name = "R.O.B.U.S.T. DELUXE"
icon_state = "cart-hos"
programs = list(
new/datum/data/pda/app/crew_records/security,
new/datum/data/pda/app/secbot_control,
new/datum/data/pda/app/status_display)
new /datum/data/pda/app/crew_records/security,
new /datum/data/pda/app/secbot_control,
new /datum/data/pda/app/status_display
)
/obj/item/cartridge/hos/Initialize(mapload)
. = ..()
@@ -175,99 +191,85 @@
name = "Power-On DELUXE"
icon_state = "cart-ce"
programs = list(
new/datum/data/pda/app/power,
new/datum/data/pda/utility/scanmode/halogen,
new/datum/data/pda/utility/scanmode/gas,
new/datum/data/pda/app/status_display)
new /datum/data/pda/app/power,
new /datum/data/pda/utility/scanmode/halogen,
new /datum/data/pda/utility/scanmode/gas,
new /datum/data/pda/app/status_display
)
/obj/item/cartridge/cmo
name = "Med-U DELUXE"
icon_state = "cart-cmo"
programs = list(
new/datum/data/pda/app/crew_records/medical,
new/datum/data/pda/utility/scanmode/medical,
new/datum/data/pda/utility/scanmode/reagent,
new/datum/data/pda/app/status_display)
new /datum/data/pda/app/crew_records/medical,
new /datum/data/pda/utility/scanmode/medical,
new /datum/data/pda/utility/scanmode/reagent,
new /datum/data/pda/app/status_display
)
/obj/item/cartridge/rd
name = "Signal Ace DELUXE"
icon_state = "cart-rd"
programs = list(
new/datum/data/pda/utility/scanmode/gas,
new/datum/data/pda/utility/scanmode/reagent,
new/datum/data/pda/app/signaller,
new/datum/data/pda/app/status_display)
new /datum/data/pda/utility/scanmode/gas,
new /datum/data/pda/utility/scanmode/reagent,
new /datum/data/pda/app/signaller,
new /datum/data/pda/app/status_display
)
/obj/item/cartridge/rd/Initialize(mapload)
. = ..()
radio = new /obj/item/integrated_radio/signal(src)
integ_signaler = new /obj/item/assembly/signaler(src)
/obj/item/cartridge/captain
name = "Value-PAK Cartridge"
desc = "Now with 200% more value!"
icon_state = "cart-c"
programs = list(
new/datum/data/pda/app/power,
new/datum/data/pda/utility/scanmode/halogen,
new/datum/data/pda/utility/scanmode/gas,
new/datum/data/pda/app/crew_records/medical,
new/datum/data/pda/utility/scanmode/medical,
new/datum/data/pda/utility/scanmode/reagent,
new/datum/data/pda/app/crew_records/security,
new/datum/data/pda/app/secbot_control,
new/datum/data/pda/app/janitor,
new/datum/data/pda/app/supply,
new/datum/data/pda/app/status_display)
new /datum/data/pda/app/power,
new /datum/data/pda/utility/scanmode/halogen,
new /datum/data/pda/utility/scanmode/gas,
new /datum/data/pda/app/crew_records/medical,
new /datum/data/pda/utility/scanmode/medical,
new /datum/data/pda/utility/scanmode/reagent,
new /datum/data/pda/app/crew_records/security,
new /datum/data/pda/app/secbot_control,
new /datum/data/pda/app/janitor,
new /datum/data/pda/app/supply,
new /datum/data/pda/app/status_display,
new /datum/data/pda/app/signaller
)
/obj/item/cartridge/captain/Initialize(mapload)
. = ..()
radio = new /obj/item/integrated_radio/beepsky(src)
integ_signaler = new /obj/item/assembly/signaler(src)
/obj/item/cartridge/supervisor
name = "Easy-Record DELUXE"
icon_state = "cart-h"
programs = list(
new/datum/data/pda/app/crew_records/security,
new/datum/data/pda/app/status_display)
new /datum/data/pda/app/crew_records/security,
new /datum/data/pda/app/status_display
)
/obj/item/cartridge/centcom
name = "Value-PAK Cartridge"
desc = "Now with 200% more value!"
icon_state = "cart-c"
programs = list(
new/datum/data/pda/app/power,
new/datum/data/pda/utility/scanmode/halogen,
new/datum/data/pda/utility/scanmode/gas,
new/datum/data/pda/app/crew_records/medical,
new/datum/data/pda/utility/scanmode/medical,
new/datum/data/pda/utility/scanmode/reagent,
new/datum/data/pda/app/crew_records/security,
new/datum/data/pda/app/secbot_control,
new/datum/data/pda/app/janitor,
new/datum/data/pda/app/supply,
new/datum/data/pda/app/status_display)
new /datum/data/pda/app/power,
new /datum/data/pda/utility/scanmode/halogen,
new /datum/data/pda/utility/scanmode/gas,
new /datum/data/pda/app/crew_records/medical,
new /datum/data/pda/utility/scanmode/medical,
new /datum/data/pda/utility/scanmode/reagent,
new /datum/data/pda/app/crew_records/security,
new /datum/data/pda/app/secbot_control,
new /datum/data/pda/app/janitor,
new /datum/data/pda/app/supply,
new /datum/data/pda/app/status_display
)
/obj/item/cartridge/centcom/Initialize(mapload)
. = ..()
@@ -283,7 +285,9 @@
name = "Nuclear Agent Detomatix Cartridge"
desc = "The same reliable Detomatix program except with the added ability of remotely toggling your nuclear shuttle airlock from your PDA"
var/initial_remote_door_id = "smindicate" //Make sure this matches the syndicate shuttle's shield/door id!! //don't ask about the name, testing.
programs = list(new/datum/data/pda/utility/toggle_door)
programs = list(
new /datum/data/pda/utility/toggle_door
)
/obj/item/cartridge/syndicate/nuclear/Initialize(mapload)
. = ..()
@@ -296,13 +300,17 @@
icon_state = "cart"
charges = 5
var/telecrystals = 0
messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/frame)
messenger_plugins = list(
new /datum/data/pda/messenger_plugin/virus/frame
)
/obj/item/cartridge/mob_hunt_game
name = "Nano-Mob Hunter GO! Cartridge"
desc = "The hit new PDA game that lets you track down and capture your favorite Nano-Mobs living in your world!"
icon_state = "cart-eye"
programs = list(new/datum/data/pda/app/mob_hunter_game)
programs = list(
new /datum/data/pda/app/mob_hunter_game
)
/obj/item/cartridge/mob_hunt_game/detailed_examine_antag()
if(emagged)
@@ -312,11 +320,13 @@
if(istype(O, /obj/item/nanomob_card))
var/obj/item/nanomob_card/card = O
var/datum/data/pda/app/mob_hunter_game/my_game = programs[1]
if(my_game.register_capture(card.mob_data))
to_chat(user, "<span class='notice'>Transfer successful!</span>")
qdel(card)
else
to_chat(user, "<span class='warning'>Transfer failed. Could not read mob data from card.</span>")
else
..()
+9 -11
View File
@@ -68,10 +68,10 @@
category = "Utilities"
/datum/data/pda/app/signaller/update_ui(mob/user as mob, list/data)
if(pda.cartridge && istype(pda.cartridge.radio, /obj/item/integrated_radio/signal))
var/obj/item/integrated_radio/signal/R = pda.cartridge.radio
data["frequency"] = R.frequency
data["code"] = R.code
if(pda?.cartridge?.integ_signaler)
var/obj/item/assembly/signaler/S = pda.cartridge.integ_signaler // Simpler access
data["frequency"] = S.frequency
data["code"] = S.code
data["minFrequency"] = PUBLIC_LOW_FREQ
data["maxFrequency"] = PUBLIC_HIGH_FREQ
@@ -84,20 +84,18 @@
if(!pda.silent)
playsound(pda, 'sound/machines/terminal_select.ogg', 15, TRUE)
if(pda.cartridge && istype(pda.cartridge.radio, /obj/item/integrated_radio/signal))
var/obj/item/integrated_radio/signal/R = pda.cartridge.radio
if(pda?.cartridge?.integ_signaler)
var/obj/item/assembly/signaler/S = pda.cartridge.integ_signaler // Simpler access
switch(action)
if("signal")
spawn(0)
R.send_signal("ACTIVATE")
S.activate()
if("freq")
var/new_frequency = sanitize_frequency(text2num(params["freq"]) * 10)
R.set_frequency(new_frequency)
S.frequency = sanitize_frequency(text2num(params["freq"]) * 10)
if("code")
R.code = clamp(text2num(params["code"]), 1, 100)
S.code = clamp(text2num(params["code"]), 1, 100)
/datum/data/pda/app/power
name = "Power Monitor"
-51
View File
@@ -143,54 +143,3 @@
post_signal(control_freq, "command", "autopick", "active", active, "value", 1, s_filter = RADIO_MULEBOT)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_MULEBOT)
/*
* Radio Cartridge, essentially a signaler.
*/
/obj/item/integrated_radio/signal
var/frequency = RSD_FREQ
var/code = 30.0
var/last_transmission
var/datum/radio_frequency/radio_connection
/obj/item/integrated_radio/signal/Destroy()
if(SSradio)
SSradio.remove_object(src, frequency)
radio_connection = null
return ..()
/obj/item/integrated_radio/signal/Initialize(mapload)
. = ..()
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/integrated_radio/signal/proc/set_frequency(new_frequency)
SSradio.remove_object(src, frequency)
frequency = new_frequency
radio_connection = SSradio.add_object(src, frequency)
/obj/item/integrated_radio/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)
GLOB.lastsignalers.Add("[time] <B>:</B> [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) <B>:</B> [format_frequency(frequency)]/[code]")
var/datum/signal/signal = new
signal.source = src
signal.encryption = code
signal.data["message"] = message
spawn(0)
radio_connection.post_signal(src, signal)