From 9e83e30c023991539bcfb4cee7933635e70513d2 Mon Sep 17 00:00:00 2001 From: dj-34 Date: Sat, 2 Dec 2023 05:41:17 +0500 Subject: [PATCH 1/6] Refactor: Sechailer dispatch --- modular_ss220/sechailer/code/sechailer.dm | 68 +++++++++++++++-------- 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/modular_ss220/sechailer/code/sechailer.dm b/modular_ss220/sechailer/code/sechailer.dm index 217f009b64aa..87465ead33f3 100644 --- a/modular_ss220/sechailer/code/sechailer.dm +++ b/modular_ss220/sechailer/code/sechailer.dm @@ -1,32 +1,30 @@ GLOBAL_LIST_EMPTY(sechailers) /datum/action/item_action/dispatch - name = "Signal dispatch" - desc = "Opens up a quick select wheel for reporting crimes, including your current location, to your fellow security officers." + name = "Signal Dispatch" + desc = "Открывает колесо быстрого выбора для сообщения о преступлениях, включая ваше текущее местоположение." button_icon_state = "dispatch" icon_icon = 'modular_ss220/sechailer/icons/sechailer.dmi' use_itemicon = FALSE /obj/item/clothing/mask/gas/sechailer - name = "\improper security gas mask" - var/obj/item/radio/radio //For engineering alerts. - var/dispatch_cooldown = 250 - var/last_dispatch = 0 + var/obj/item/radio/radio // For engineering alerts. + var/dispatch_cooldown = 25 SECONDS + var/is_on_cooldown = FALSE + var/is_emped = FALSE actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/adjust, /datum/action/item_action/selectphrase) /obj/item/clothing/mask/gas/sechailer/hos - name = "\improper head of security's SWAT mask" - actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/adjust, /datum/action/item_action/selectphrase) + actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/selectphrase) /obj/item/clothing/mask/gas/sechailer/warden - name = "\improper warden's SWAT mask" - actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/adjust, /datum/action/item_action/selectphrase) + actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/selectphrase) /obj/item/clothing/mask/gas/sechailer/swat - actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/adjust, /datum/action/item_action/selectphrase) + actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/selectphrase) /obj/item/clothing/mask/gas/sechailer/blue - actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/adjust, /datum/action/item_action/selectphrase) + actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/selectphrase) /obj/item/clothing/mask/gas/sechailer/Destroy() qdel(radio) @@ -41,25 +39,51 @@ GLOBAL_LIST_EMPTY(sechailers) radio.config(list("Security" = 0)) radio.follow_target = src - /obj/item/clothing/mask/gas/sechailer/proc/dispatch(mob/user) - var/area/A = get_area(src) - if(world.time < last_dispatch + dispatch_cooldown) - to_chat(user, "Dispatch radio broadcasting systems are recharging.") - return FALSE + var/area/A = get_location_name(src, TRUE) // get_location_name works better as affected says var/list/options = list() - for(var/option in list("502 (Убийство)", "101 (Сопротивление Аресту)", "308 (Вторжение)", "305 (Мятеж)", "402 (Нападение на Офицера)")) //Just hardcoded for now! + // Just hardcoded for now! + for(var/option in list( + "502 (Убийство)", + "101 (Сопротивление Аресту)", + "308 (Вторжение)", + "305 (Мятеж)", + "402 (Нападение на Офицера)" + )) options[option] = image(icon = 'modular_ss220/sechailer/icons/menu.dmi', icon_state = option) var/message = show_radial_menu(user, src, options) + if(!message) - return FALSE - radio.autosay("Диспетчер, [user], код [message] в [A], запрашивается помощь.", src, "Security", list(z)) - last_dispatch = world.time + return + if(is_on_cooldown == TRUE && is_emped == FALSE) // If on cooldown + to_chat(user, span_notice("Ожидайте. Система оповещения перезаряжается, примерное время восстановления: [dispatch_cooldown / 10] секунд.")) + return + if(is_on_cooldown == TRUE && is_emped == TRUE) // If emped + to_chat(user, span_notice("Ожидайте. Система оповещения в защитном режиме, примерное время восстановления: [dispatch_cooldown / 10] секунд.")) + return + + radio.autosay("Центр, Код [message], офицер [user] запрашивает помощь в [A].", "Система Оповещения", "Security", list(z)) + is_on_cooldown = TRUE + addtimer(CALLBACK(src, PROC_REF(reboot)), dispatch_cooldown) for(var/atom/movable/hailer in GLOB.sechailers) if(hailer.loc && ismob(hailer.loc)) - playsound(hailer.loc, "modular_ss220/sechailer/sound/dispatch_please_respond.ogg", 55, FALSE) + playsound(hailer.loc, 'modular_ss220/sechailer/sound/dispatch_please_respond.ogg', 55, FALSE) + +/obj/item/clothing/mask/gas/sechailer/proc/reboot() + is_on_cooldown = FALSE + is_emped = FALSE /obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, actiontype) . = ..() if(actiontype == /datum/action/item_action/dispatch) dispatch(user) + +/obj/item/clothing/mask/gas/sechailer/emp_act(severity) + if(is_on_cooldown) + return + is_on_cooldown = TRUE + is_emped = TRUE + addtimer(CALLBACK(src, PROC_REF(reboot)), dispatch_cooldown) + if(ishuman(loc)) + var/mob/living/carbon/human/user = loc + to_chat(user, span_userdanger("Обнаружен электромагнитный импульс, система оповещения отключена для сохранения работоспособности...")) From ef45d8bee2cf77becd334e516fdd6635fc90e407 Mon Sep 17 00:00:00 2001 From: dj-34 Date: Sun, 3 Dec 2023 12:30:03 +0500 Subject: [PATCH 2/6] Refactor update --- modular_ss220/sechailer/code/sechailer.dm | 37 +++++++++++++----- .../sechailer/sound/radio_static.ogg | Bin 0 -> 32040 bytes 2 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 modular_ss220/sechailer/sound/radio_static.ogg diff --git a/modular_ss220/sechailer/code/sechailer.dm b/modular_ss220/sechailer/code/sechailer.dm index 87465ead33f3..47b5084c7f4c 100644 --- a/modular_ss220/sechailer/code/sechailer.dm +++ b/modular_ss220/sechailer/code/sechailer.dm @@ -8,7 +8,7 @@ GLOBAL_LIST_EMPTY(sechailers) use_itemicon = FALSE /obj/item/clothing/mask/gas/sechailer - var/obj/item/radio/radio // For engineering alerts. + var/obj/item/radio/radio // For dispatch to work var/dispatch_cooldown = 25 SECONDS var/is_on_cooldown = FALSE var/is_emped = FALSE @@ -40,9 +40,9 @@ GLOBAL_LIST_EMPTY(sechailers) radio.follow_target = src /obj/item/clothing/mask/gas/sechailer/proc/dispatch(mob/user) - var/area/A = get_location_name(src, TRUE) // get_location_name works better as affected says + var/area/A = get_location_name(src, TRUE) // get_location_name works better as Affected says var/list/options = list() - // Just hardcoded for now! + // Just hardcoded for now (never will be updated, lol) for(var/option in list( "502 (Убийство)", "101 (Сопротивление Аресту)", @@ -55,19 +55,38 @@ GLOBAL_LIST_EMPTY(sechailers) if(!message) return - if(is_on_cooldown == TRUE && is_emped == FALSE) // If on cooldown - to_chat(user, span_notice("Ожидайте. Система оповещения перезаряжается, примерное время восстановления: [dispatch_cooldown / 10] секунд.")) - return - if(is_on_cooldown == TRUE && is_emped == TRUE) // If emped - to_chat(user, span_notice("Ожидайте. Система оповещения в защитном режиме, примерное время восстановления: [dispatch_cooldown / 10] секунд.")) + if(is_on_cooldown) + var/cooldown_info = "Ожидайте. Система оповещения " + if(is_emped) + cooldown_info += "в защитном режиме, " + else + cooldown_info += "перезаряжается, " + // Cooldown not updating realtime, and i don't want to rewrite it just for the sake of it + cooldown_info += "примерное время восстановления: [dispatch_cooldown / 10] секунд." + to_chat(user, span_notice(cooldown_info)) return radio.autosay("Центр, Код [message], офицер [user] запрашивает помощь в [A].", "Система Оповещения", "Security", list(z)) is_on_cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(reboot)), dispatch_cooldown) + // This code if fucking hell, but it works as intended for(var/atom/movable/hailer in GLOB.sechailers) + var/security_channel_found = FALSE if(hailer.loc && ismob(hailer.loc)) - playsound(hailer.loc, 'modular_ss220/sechailer/sound/dispatch_please_respond.ogg', 55, FALSE) + // Check if mob has a radio, then check if the radio has the right channels + for(var/obj/item/radio/my_radio in user.contents) + for(var/chan in 1 to length(my_radio.channels)) + var/channel_name = my_radio.channels[chan] + if(channel_name == "Security") + security_channel_found = TRUE + break + + if(security_channel_found) + playsound(hailer.loc, 'modular_ss220/sechailer/sound/dispatch_please_respond.ogg', 55, FALSE) + break + else + to_chat(user, span_warning("Внимание: Невозможно установить соединение с каналом службы безопасности, требуется подключение!")) + playsound(hailer.loc, 'modular_ss220/sechailer/sound/radio_static.ogg', 30, TRUE) /obj/item/clothing/mask/gas/sechailer/proc/reboot() is_on_cooldown = FALSE diff --git a/modular_ss220/sechailer/sound/radio_static.ogg b/modular_ss220/sechailer/sound/radio_static.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8bc2eebb26f1c4ef84fe33dba0795e88919bc848 GIT binary patch literal 32040 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 Q=LYxjsNmu$Tp-~80C%@hj{pDw literal 0 HcmV?d00001 From a6dcdfa020473db0a3078901ea62d26a6fb28cea Mon Sep 17 00:00:00 2001 From: dj-34 Date: Tue, 5 Dec 2023 15:06:37 +0500 Subject: [PATCH 3/6] =?UTF-8?q?=D0=B0=D0=BF=D0=B4=D0=B5=D0=B9=D1=82=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=80=D0=B5=D0=BA=D0=B2=D0=B5=D1=81=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/sechailer/code/sechailer.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_ss220/sechailer/code/sechailer.dm b/modular_ss220/sechailer/code/sechailer.dm index 47b5084c7f4c..6854a9d0971c 100644 --- a/modular_ss220/sechailer/code/sechailer.dm +++ b/modular_ss220/sechailer/code/sechailer.dm @@ -66,7 +66,6 @@ GLOBAL_LIST_EMPTY(sechailers) to_chat(user, span_notice(cooldown_info)) return - radio.autosay("Центр, Код [message], офицер [user] запрашивает помощь в [A].", "Система Оповещения", "Security", list(z)) is_on_cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(reboot)), dispatch_cooldown) // This code if fucking hell, but it works as intended @@ -77,11 +76,12 @@ GLOBAL_LIST_EMPTY(sechailers) for(var/obj/item/radio/my_radio in user.contents) for(var/chan in 1 to length(my_radio.channels)) var/channel_name = my_radio.channels[chan] - if(channel_name == "Security") + if(channel_name == DEPARTMENT_SECURITY) security_channel_found = TRUE break if(security_channel_found) + radio.autosay("Центр, Код [message], офицер [user] запрашивает помощь в [A].", "Система Оповещения", DEPARTMENT_SECURITY, list(z)) playsound(hailer.loc, 'modular_ss220/sechailer/sound/dispatch_please_respond.ogg', 55, FALSE) break else From 16f084529ede93bc2a39efa64cf66db1d76671d0 Mon Sep 17 00:00:00 2001 From: dj-34 Date: Sun, 10 Dec 2023 19:00:41 +0500 Subject: [PATCH 4/6] =?UTF-8?q?=D0=B0=D0=BF=D0=B4=D0=B5=D0=B9=D1=82=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E=20=D0=B3=D0=B0?= =?UTF-8?q?=D1=85=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/sechailer/code/sechailer.dm | 54 +++++++++++------------ 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/modular_ss220/sechailer/code/sechailer.dm b/modular_ss220/sechailer/code/sechailer.dm index 6854a9d0971c..f393d10a6e1c 100644 --- a/modular_ss220/sechailer/code/sechailer.dm +++ b/modular_ss220/sechailer/code/sechailer.dm @@ -12,6 +12,12 @@ GLOBAL_LIST_EMPTY(sechailers) var/dispatch_cooldown = 25 SECONDS var/is_on_cooldown = FALSE var/is_emped = FALSE + var/static/list/available_dispatch_messages = list( + "502 (Убийство)", + "101 (Сопротивление Аресту)", + "308 (Вторжение)", + "305 (Мятеж)", + "402 (Нападение на Офицера)") actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/adjust, /datum/action/item_action/selectphrase) /obj/item/clothing/mask/gas/sechailer/hos @@ -40,18 +46,10 @@ GLOBAL_LIST_EMPTY(sechailers) radio.follow_target = src /obj/item/clothing/mask/gas/sechailer/proc/dispatch(mob/user) - var/area/A = get_location_name(src, TRUE) // get_location_name works better as Affected says - var/list/options = list() - // Just hardcoded for now (never will be updated, lol) - for(var/option in list( - "502 (Убийство)", - "101 (Сопротивление Аресту)", - "308 (Вторжение)", - "305 (Мятеж)", - "402 (Нападение на Офицера)" - )) - options[option] = image(icon = 'modular_ss220/sechailer/icons/menu.dmi', icon_state = option) - var/message = show_radial_menu(user, src, options) + for(var/option in available_dispatch_messages) + available_dispatch_messages[option] = image(icon = 'modular_ss220/sechailer/icons/menu.dmi', icon_state = option) + var/message = show_radial_menu(user, src, available_dispatch_messages) + var/location_name = get_location_name(src, TRUE) // get_location_name works better as Affected says if(!message) return @@ -71,22 +69,22 @@ GLOBAL_LIST_EMPTY(sechailers) // This code if fucking hell, but it works as intended for(var/atom/movable/hailer in GLOB.sechailers) var/security_channel_found = FALSE - if(hailer.loc && ismob(hailer.loc)) - // Check if mob has a radio, then check if the radio has the right channels - for(var/obj/item/radio/my_radio in user.contents) - for(var/chan in 1 to length(my_radio.channels)) - var/channel_name = my_radio.channels[chan] - if(channel_name == DEPARTMENT_SECURITY) - security_channel_found = TRUE - break - - if(security_channel_found) - radio.autosay("Центр, Код [message], офицер [user] запрашивает помощь в [A].", "Система Оповещения", DEPARTMENT_SECURITY, list(z)) - playsound(hailer.loc, 'modular_ss220/sechailer/sound/dispatch_please_respond.ogg', 55, FALSE) - break - else - to_chat(user, span_warning("Внимание: Невозможно установить соединение с каналом службы безопасности, требуется подключение!")) - playsound(hailer.loc, 'modular_ss220/sechailer/sound/radio_static.ogg', 30, TRUE) + if(!hailer.loc || !ismob(hailer.loc)) + continue + // Check if mob has a radio, then check if the radio has the right channels + for(var/obj/item/radio/my_radio in user) + for(var/chan in 1 to length(my_radio.channels)) + var/channel_name = my_radio.channels[chan] + if(channel_name == DEPARTMENT_SECURITY) + security_channel_found = TRUE + break + if(security_channel_found) + radio.autosay("Центр, Код [message], офицер [user] запрашивает помощь в [location_name].", "Система Оповещения", DEPARTMENT_SECURITY, list(z)) + playsound(hailer.loc, 'modular_ss220/sechailer/sound/dispatch_please_respond.ogg', 55, FALSE) + break + else + to_chat(user, span_warning("Внимание: Невозможно установить соединение с каналом службы безопасности, требуется подключение!")) + playsound(hailer.loc, 'modular_ss220/sechailer/sound/radio_static.ogg', 30, TRUE) /obj/item/clothing/mask/gas/sechailer/proc/reboot() is_on_cooldown = FALSE From e6ad8926d26db797b7516be05393ad3d3e99a909 Mon Sep 17 00:00:00 2001 From: dj-34 Date: Sun, 10 Dec 2023 21:12:01 +0500 Subject: [PATCH 5/6] =?UTF-8?q?=D0=B0=D0=BF=D0=B4=D0=B5=D0=B9=D1=82=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E=20=D0=B3=D0=B0?= =?UTF-8?q?=D1=85=D0=B5=D1=80=D0=B0=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/sechailer/code/sechailer.dm | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/modular_ss220/sechailer/code/sechailer.dm b/modular_ss220/sechailer/code/sechailer.dm index f393d10a6e1c..96c793d66509 100644 --- a/modular_ss220/sechailer/code/sechailer.dm +++ b/modular_ss220/sechailer/code/sechailer.dm @@ -10,8 +10,8 @@ GLOBAL_LIST_EMPTY(sechailers) /obj/item/clothing/mask/gas/sechailer var/obj/item/radio/radio // For dispatch to work var/dispatch_cooldown = 25 SECONDS - var/is_on_cooldown = FALSE - var/is_emped = FALSE + var/on_cooldown = FALSE + var/emped = FALSE var/static/list/available_dispatch_messages = list( "502 (Убийство)", "101 (Сопротивление Аресту)", @@ -53,18 +53,18 @@ GLOBAL_LIST_EMPTY(sechailers) if(!message) return - if(is_on_cooldown) - var/cooldown_info = "Ожидайте. Система оповещения " - if(is_emped) + if(on_cooldown) + var/list/cooldown_info = list("Ожидайте. Система оповещения ") + if(emped) cooldown_info += "в защитном режиме, " else cooldown_info += "перезаряжается, " // Cooldown not updating realtime, and i don't want to rewrite it just for the sake of it cooldown_info += "примерное время восстановления: [dispatch_cooldown / 10] секунд." - to_chat(user, span_notice(cooldown_info)) + to_chat(user, span_notice(cooldown_info.Join())) return - is_on_cooldown = TRUE + on_cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(reboot)), dispatch_cooldown) // This code if fucking hell, but it works as intended for(var/atom/movable/hailer in GLOB.sechailers) @@ -87,8 +87,8 @@ GLOBAL_LIST_EMPTY(sechailers) playsound(hailer.loc, 'modular_ss220/sechailer/sound/radio_static.ogg', 30, TRUE) /obj/item/clothing/mask/gas/sechailer/proc/reboot() - is_on_cooldown = FALSE - is_emped = FALSE + on_cooldown = FALSE + emped = FALSE /obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, actiontype) . = ..() @@ -96,10 +96,10 @@ GLOBAL_LIST_EMPTY(sechailers) dispatch(user) /obj/item/clothing/mask/gas/sechailer/emp_act(severity) - if(is_on_cooldown) + if(on_cooldown) return - is_on_cooldown = TRUE - is_emped = TRUE + on_cooldown = TRUE + emped = TRUE addtimer(CALLBACK(src, PROC_REF(reboot)), dispatch_cooldown) if(ishuman(loc)) var/mob/living/carbon/human/user = loc From 1c26140e91600f1be04d8009a58af83e78eccfc4 Mon Sep 17 00:00:00 2001 From: dj-34 Date: Sun, 10 Dec 2023 22:12:55 +0500 Subject: [PATCH 6/6] fix linter --- modular_ss220/sechailer/code/sechailer.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modular_ss220/sechailer/code/sechailer.dm b/modular_ss220/sechailer/code/sechailer.dm index 96c793d66509..102f95e1b3b4 100644 --- a/modular_ss220/sechailer/code/sechailer.dm +++ b/modular_ss220/sechailer/code/sechailer.dm @@ -13,11 +13,11 @@ GLOBAL_LIST_EMPTY(sechailers) var/on_cooldown = FALSE var/emped = FALSE var/static/list/available_dispatch_messages = list( - "502 (Убийство)", - "101 (Сопротивление Аресту)", - "308 (Вторжение)", - "305 (Мятеж)", - "402 (Нападение на Офицера)") + "502 (Убийство)", + "101 (Сопротивление Аресту)", + "308 (Вторжение)", + "305 (Мятеж)", + "402 (Нападение на Офицера)") actions_types = list(/datum/action/item_action/dispatch, /datum/action/item_action/halt, /datum/action/item_action/adjust, /datum/action/item_action/selectphrase) /obj/item/clothing/mask/gas/sechailer/hos