FaxBond app for bonding with your fax (fax message subscription app) (#96467)

## About The Pull Request
Adds an up that allows you to subscribe to any fax. Heads start with one
by default and they are subscribed to their office fax upon joining.
Later part involved creation of fax subtype specific to a head. So i
decided to also make those as a required map item for the purposes of
CI.

<details>
<summary>UI</summary>
<img width="435" height="552" alt="изображение"
src="https://github.com/user-attachments/assets/73b814d5-3009-4c76-a829-c01f021aecf4"
/>

</details>

its pretty simplistic, but i am not a UI designer, sorry
## Why It's Good For The Game

It really sucks when you wait for someones message but they never
respond to it because apparently they never visit their office and never
saw a paper over their fax if even if they responded, by the time you
get an answer you already forgot about it anyway. In general, it makes
paperwork experience relating to faxes more enjoyable (probably)
## Changelog
🆑
add: added a FaxBond app. Everyone can download it and use it on a fax
of their choice to be notified when it receives a message. Heads of
staff come with it preinstalled and automatically subscribed to a fax
inside their office.
/🆑
This commit is contained in:
Iajret
2026-06-19 15:52:44 -06:00
committed by GitHub
parent 1ec8ce5f52
commit fa56a10149
14 changed files with 310 additions and 196 deletions
@@ -7,11 +7,15 @@
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#67A364#a92323"
max_capacity = parent_type::max_capacity * 2
/// Fax type for a relevant head's tp connect their PDA to (for use with fax notification app)
var/fax_type = null
var/static/list/datum/computer_file/head_programs = list(
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/faxbond,
)
/obj/item/modular_computer/pda/heads/Initialize(mapload)
@@ -20,12 +24,19 @@
var/datum/computer_file/program/program_type = new programs
store_file(program_type)
if (ispath(fax_type, /obj/machinery/fax))
var/datum/computer_file/program/faxbond/fax_notifier = locate() in stored_files
var/list/faxes_list = SSmachines.get_machines_by_type(fax_type)
var/obj/machinery/fax/heads_fax = length(faxes_list) ? pick(faxes_list) : null //there really shouldnt be more than one
fax_notifier.connect_fax(heads_fax)
/obj/item/modular_computer/pda/heads/captain
name = "captain PDA"
icon_state = "/obj/item/modular_computer/pda/heads/captain"
greyscale_config = /datum/greyscale_config/tablet/captain
greyscale_colors = "#2C7CB2#FF0000#FFFFFF#FFD55B"
inserted_item = /obj/item/pen/fountain/captain
fax_type = /obj/machinery/fax/heads/captain
/obj/item/modular_computer/pda/heads/captain/Initialize(mapload)
. = ..()
@@ -42,6 +53,7 @@
icon_state = "/obj/item/modular_computer/pda/heads/hop"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#374f7e#a52f29#a52f29"
fax_type = /obj/machinery/fax/heads/hop
starting_programs = list(
/datum/computer_file/program/records/security,
/datum/computer_file/program/job_management,
@@ -53,6 +65,7 @@
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#EA3232#0000CC"
inserted_item = /obj/item/pen/red/security
fax_type = /obj/machinery/fax/heads/hos
starting_programs = list(
/datum/computer_file/program/records/security,
)
@@ -62,6 +75,7 @@
icon_state = "/obj/item/modular_computer/pda/heads/ce"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#D99A2E#69DBF3#FAFAFA"
fax_type = /obj/machinery/fax/heads/ce
starting_programs = list(
/datum/computer_file/program/atmosscan,
/datum/computer_file/program/alarm_monitor,
@@ -73,6 +87,7 @@
icon_state = "/obj/item/modular_computer/pda/heads/cmo"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#3F96CC"
fax_type = /obj/machinery/fax/heads/cmo
starting_programs = list(
/datum/computer_file/program/maintenance/phys_scanner,
/datum/computer_file/program/records/medical,
@@ -84,6 +99,7 @@
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#B347BC"
inserted_item = /obj/item/pen/fountain
fax_type = /obj/machinery/fax/heads/rd
starting_programs = list(
/datum/computer_file/program/borg_monitor,
/datum/computer_file/program/scipaper_program,
@@ -97,6 +113,7 @@
greyscale_colors = "#c4b787#18191e#8b4c31"
inserted_item = /obj/item/pen/survival
stored_paper = 20
fax_type = /obj/machinery/fax/heads/qm
starting_programs = list(
/datum/computer_file/program/shipping,
/datum/computer_file/program/restock_tracker,